b19035ad2904d4c095ea110d0c6bc8047b223077
CI / test (pull_request) Successful in 22s
Bug fixes: - FRAG_LOADING: stop updating lastActivity and re-rendering during active playback. It fires continuously as hls.js proactively fetches future segments, causing overlay flickering between buffering/playing. - BUFFER_RESET: stop clearing segmentsLoaded. The event fires during quality switches when hls.js flushes and rebuilds the MediaSource buffer, but segments were already played. Clearing the counter made the overlay show '0 seg' mid-playback. - FRAG_BUFFERED: add bufferedAhead update immediately after a fragment is buffered, instead of waiting for the next 1s monitor tick. - LEVEL_SWITCHED: only set phase='switching' when buffer is low (< 2s). With meaningful buffer the switch is instant (already-buffered segments), so skip the intermediate state to avoid panels getting stuck. - Buffer monitor: add change-detection so renderPanelState only fires when phase, segments, or quality actually changed — not every second. - wireVideoEvents: add 'ended' event handler for completeness.
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.