About this project
Already Watched is a local-first Chrome extension for reducing repetition in the YouTube feed. It detects video cards across Home, sidebar/recommendations, Search, Subscriptions, related grids, and supported Shorts layouts. Playback is tracked from actual unique segments; seeks and replaying the same segment do not inflate progress. When observed segments reach a configurable threshold, a video is marked watched. The default display mode is Badge + Dim at 70% watched, with watched cards still clickable and restored on hover or keyboard focus. Options include hiding watched cards entirely, optionally refilling a sparse feed, hiding Playables and topic-suggestion sections, hiding Shorts shelves/cards on Home, and hiding playlist and Mix collection cards. Playables/topic and playlist/Mix filters are reversible, work with display modes, and are scoped so individual videos inside playlists and normal video URLs remain available.
Manual controls include thumbnail buttons to mark watched or unwatched, Chrome context-menu commands for video links or the current watch page, and actions inside YouTube's native three-dot video menus. A scan command imports qualifying progress bars from cards currently rendered in the active tab without scrolling, fetching account history, or using a YouTube API. Statistics distinguish stored watched records, total marks, filtered today, and filtered all-time; duplicate cards, re-renders, SPA navigation, and repeated observer events are deduplicated. Clearing history removes video records, partial playback, overrides, and statistics but preserves settings.
The extension is built as Manifest V3 with scoped permissions for storage, contextMenus, and host access to youtube.com. It uses chrome.storage.local for settings, per-video records, stats, and history revision data; history clearing temporarily uses chrome.storage.session. The README states there are no analytics, no backend, no YouTube API, no Google account access, no browsing-history or cookies permission, and no Chrome sync. Content scripts run in Chrome's isolated world; React is bundled only for the popup/options UI. All scripts, styles, and icons ship locally with no CDN or runtime code download.
Development requires Node.js 20.19+ (Node 22 LTS recommended), npm, and Chrome 114+. npm ci and npm run check build the loadable extension into dist/. The README documents tests for unit, DOM, storage concurrency, player regressions, typechecking, build, dev watch, and a local preview server. Known limitations include YouTube layout experiments, mobile and embedded players outside v1 scope, conservative ad/live heuristics, possible unobserved playback gaps, and best-effort refilling when YouTube offers no supported continuation. The project is MIT licensed.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.