a128babde044f87278c7394ec17cce7e49f7db7d
CI / test (pull_request) Successful in 24s
The root cause of repeated 'does not detect any videos' failures was that m3u8DeepProbeFn and scrapeFn were injected via chrome.scripting.executeScript in the isolated world (default). From the isolated world: - window.__goon_plugin_data (set by main-world interceptors) — NOT visible - window.Hls / Hls.cast (page's hls.js) — NOT visible - Player globals (PHPlayer, flowplayer, etc.) — NOT visible - Config globals (__NEXT_DATA__, appData, etc.) — NOT visible Only DOM properties like video._goon_hls_manifest cross the boundary, making the detection pipeline mostly blind on real HLS sites. Fix: set world: 'MAIN' on both executeScript calls so all 6 deep probe strategies and all 5 scrape priorities actually work. Chrome MV3 supports this since Chrome 108; our build targets chrome110.
Goon Plugin
A Chrome extension (Manifest V3) that finds videos on the current page and displays them in a 2x2 grid.
Features
- Click the extension icon → "Find Videos" to scan the current tab for all
<video>elements - Videos are listed in the popup for reference (clickable links, "Copy All URLs" button)
- Click "Open Viewer" to open a new window with videos in a 2x2 grid (autoplay muted)
- Click "Clear" to reset the stored video list
Getting started
# 1. Install deps
npm i
# 2. Run in watch mode
npm run dev
# 3. Build for distribution
npm run build
Loading in Chrome
- Open
chrome://extensions/ - Enable Developer mode (top-right)
- Click Load unpacked → select the project root folder (where
manifest.jsonis located)
Project structure
manifest.json — Extension manifest (MV3)
package.json — Dev tooling (Vite + Vitest + TS)
vite.config.ts — Build config
src/
background/ — Service worker (MV3 background)
content/ — Content script
viewer/ — Popup UI + video viewer
index.html — Popup (Find Videos, Open Viewer buttons)
index.js — Popup logic (scans current tab for videos)
index.css — Popup styles
viewer.html — Viewer page (2x2 video grid in new window)
viewer.js — Viewer logic (renders video panels)
viewer.css — Viewer grid styles
icons/ — Extension icons (place .png files here)
Recommended extensions (VS Code)
- Chrome Extension Developer (extension-list-viewer)
- ESLint
- Prettier
VS Code workspace
Open goon_plugin.code-workspace to get the project with recommended extensions pre-installed.