Commit Graph
22 Commits
Author SHA1 Message Date
robot 3c7b563021 test: add config validation suite (43/43 tests)
CI / test (pull_request) Successful in 14s
Adds 4 regression tests:
- vite.config.ts entry modules must exist as source files
- content.js must NOT use inline script injection (textContent)
- interceptors.js must be a standalone IIFE file
- manifest.json content_scripts must reference content.js

Prevents future build-breaking phantom entry point errors
(the probeFn.js/scrapeFn.js issue kfj001 hit).
2026-08-11 08:10:18 +00:00
robot 0a74332af9 fix: remove non-existent probeFn.js and scrapeFn.js from Vite build entry points
CI / test (pull_request) Successful in 15s
These files were added as Rollup entry points but never created as actual
source files — probeFn and scrapeFn are defined inline in index.js.
The missing entry points caused "Could not resolve entry module" on build.
2026-08-11 07:23:05 +00:00
robot a621db9674 fix: use script.src for content.js interceptor injection to bypass CSP
CI / test (pull_request) Successful in 14s
The inline script.textContent injection in content.js violated the
strict CSP on sites like Pornhub ('script-src' without 'unsafe-inline').

Move interceptor code to a separate interceptors.js file and inject
via script.src = chrome.runtime.getURL('interceptors.js'). Chrome
treats extension-originated <script src> as content scripts — not
as page inline code — so the page's CSP does not apply.

- New src/inject/interceptors.js with all main-world interceptor code
- content.js now creates <script src> instead of <script textContent>
- Vite config updated to build interceptors.js to dist/
2026-08-11 06:43:54 +00:00
Hermes Agent 0d4b62c485 fix: guard video.play() for jsdom and fix Hls mock case mismatch
CI / test (pull_request) Successful in 16s
- Defensive null check on video.play() return value (jsdom returns undefined)
- Fix test mock: win.Hls (not win.HLS) to match viewer.js window.Hls reference
- All 39/39 tests now pass
2026-08-11 04:42:28 +00:00
Hermes Agent 23a2af6cad fix: scan main frame only, deep-probe HLS, always store mediaType/hlsManifest
- Run scrapeFn in main frame only to avoid iframe noise (23 thumbnails)
- Deep-walk player objects up to depth 5 for .m3u8 URLs
- Always include mediaType and hlsManifest in stored items
- When blob URL detected, substitute with HLS manifest from probe
- Add integration tests for storage pipeline and viewer rendering
- Add eslintignore for dist/
2026-08-11 04:29:08 +00:00
kfj001 7416ae8ff9 Merge pull request 'feat: add HLS playback support with hls.js' (#1) from robot/goon_plugin:master into master
CI / test (push) Successful in 24s
Reviewed-on: http://192.168.1.74:30008/kfj001/goon_plugin/pulls/1
2026-08-10 20:50:43 -07:00
robot c59c96ce19 fix: integrate child task improvements (poster rendering, HLS cleanup, hls.js dependency)
CI / test (pull_request) Canceled after 0s
2026-08-10 22:42:48 +00:00
hermes e17b228ee0 fix: redesign HLS detection with 6-strategy per-tab query
CI / test (pull_request) Canceled after 0s
- Query HLS data structures directly from page JS state per tab
- Strategies: video element HLS instances, window-level player vars,
  intercepted data, inline scripts, global config objects, content script
- Fixed merge logic: index.js now correctly processes interceptedManifests
  and hlsQueryResults instead of non-existent playerData
- Skip blob: URLs in DOM scan (HLS-internal, can't be played directly)
- Only attach HLS manifest when actually detected for that tab
2026-08-10 20:39:49 +00:00
hermes c22631d1f1 fix: real-time HLS interception via content script (architectural overhaul)
CI / test (pull_request) Canceled after 0s
Previous approach (DOM snapshot via executeScript) failed on Pornhub because:
- Video player loads asynchronously via JavaScript
- HLS manifest arrives via XHR/fetch AFTER page render
- <video> element only shows blob: URL, not the actual manifest

New approach:
- Content script injects interceptor into MAIN world at document_start
- Interceptor patches XMLHttpRequest and fetch() to capture .m3u8 URLs
- Periodic DOM scans detect HLS player instances on <video> elements
- Global config object scanning for embedded stream URLs
- Popup queries content script via chrome.tabs.sendMessage for real-time data
- If no DOM videos found but content script has data, create entries from intercepted sources

Changes:
- content.js: Full rewrite with main-world injection + XHR/fetch interception
- index.js: Query content scripts via messages, merge with DOM snapshot
- manifest.json: all_frames + document_start for early injection
2026-08-10 18:53:27 +00:00
hermes db52db7799 fix: add HLS manifest extraction to scrapeFn (3 strategies)
CI / test (pull_request) Canceled after 0s
- Strategy 1: scan inline <script> blocks for .m3u8 URLs (skip subtitles/captions)
- Strategy 2: check video element HLS player instances (hlsInstance, _hls)
- Strategy 3: probe common global config objects (hlsConfig, playerConfig, etc.)
- Storage items now include hlsManifest and mediaType fields
- When HLS detected and src is blob:/empty, promote manifest URL to primary
- Backward compatible: direct MP4 entries unaffected
2026-08-10 17:07:55 +00:00
hermes 90c3425200 feat: add HLS playback support with hls.js
CI / test (pull_request) Canceled after 0s
- viewer.js: dynamic hls.js loading, HLS-aware panel creation, error handling
- schema.json: hlsManifest and mediaType fields (optional, backward compatible)
- types.ts: VideoEntry interface with MediaType type
- isHls() null guard fix
- tests: 39 tests (schema, viewer units, data flow, integration)
- CI: GitHub/Gitea Actions workflow (npm test on push/PR)
- deps: ajv, ajv-formats, jsdom for testing
2026-08-10 06:18:27 +00:00
Your Name baa72a4c33 Fixes css reference issue 2026-07-17 22:37:47 +00:00
kfj001 72d0a2dfe4 Updated gitignore 2026-06-08 20:13:51 +00:00
kfj001andClaude Opus 4.8 6122f67df3 Untrack icons/ — they are build artifacts, not source
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-08 20:13:19 +00:00
kfj001 93879bc8f7 Updates extensions in workspace. Alters plugin to scrape for NxN tabs for videos to display in the matrix. 2026-06-08 08:40:06 +00:00
kfj001 d5eb687606 Additional claude permissions. Updated devcontainer. 2026-06-08 06:29:25 +00:00
kfj001 c575162437 attempting to get extension to also work on pornhub 2026-05-31 22:55:20 -07:00
kfj001 cf3803806d allow scanning all tabs instead of limiting to 4
- Remove the hardcoded 4-tab limit in the find-videos flow
- Add per-tab try/catch so inaccessible tabs are skipped gracefully
- Filter out tabs that produced no frames from the dedup pipeline
- Update button label and status messages accordingly
2026-05-31 21:06:31 -07:00
kfj001 65fa2bddad scrapes from all open tabs. 2026-05-31 20:20:55 -07:00
kfj001 4a39065d90 core functionality complete 2026-05-31 11:29:51 -07:00
kfj001 f47301c0e4 working state - adds missing resources for chrome load 2026-05-30 13:12:49 -07:00
kfj001 95f5fdd3ea initial commit 2026-05-30 18:51:10 +00:00