WHAT'S
CHANGED
Every release, every fix, every improvement — in one place.
Seven-platform support, keyboard shortcut toggle, extension badge, universal presets, scoped MutationObserver, sync retry hardening, and multiple robustness fixes.
- –Seven platforms supported: YouTube, Reddit, X/Twitter, Twitch, Facebook, LinkedIn, and Kick — with per-site video detection and channel/account extraction.
- –Keyboard shortcut (Alt+Shift+R) to toggle the filter without opening the popup. Customizable via chrome://extensions/shortcuts.
- –Extension badge shows green "ON" when active — visible at a glance, auto-syncs across popup, shortcut, and content script.
- –Per-channel / per-source rules — set ALWAYS, ASK, or EXCLUDE for any YouTube channel, subreddit, X account, Twitch streamer, Facebook page, LinkedIn profile, or Kick creator.
- –Auto-detect clicky videos via title keyword matching (13 built-in topic categories) and real-time audio click frequency analysis.
- –Custom keyword input — add your own detection keywords from the popup.
- –Presets (LIGHT / MED / HEAVY / NUKE) now visible for all three engines, not just EQ.
- –MutationObserver scoped to site-specific containers (e.g., YouTube #content, Reddit shreddit-app, X main) instead of document.body — reduces CPU overhead on heavy pages.
- –Settings sync retry hardened — stops retrying after 3 consecutive failures when chrome.storage.sync quota is exceeded, preventing infinite loops.
- –crossOrigin attribute only set on videos before loading (readyState 0) — prevents visible video restart on non-YouTube platforms.
- –Corrupted WASM/model cache in IndexedDB is now auto-cleared on compile failure so the next attempt re-fetches from the extension bundle.
- –State loaded exclusively from chrome.storage instead of per-origin localStorage — consistent state across all 7 platforms.
- –sourceNode null-guard added to all three audio chain functions (EQ, RNNoise, DeepFilter) — prevents crash if video is detached during async connection.
- –Title detection guard expanded to all supported site names (reddit, twitch, facebook, linkedin, kick) — prevents false positives on homepage titles.
- –Feature request form removed from extension popup — moved to the website only.
Popup now works fully off YouTube/Reddit — download models, switch engines, and adjust intensity from any tab. Plus an in-popup update notifier.
- –All popup features (engine selection, intensity, power, model download/delete) now work on any browser tab — no YouTube or Reddit tab required.
- –Model download routes directly through the background service worker. Settings are stored in chrome.storage.local and synced to the content script on next YouTube or Reddit load.
- –In-popup update banner — checks GitHub releases on startup and shows a dismissible "v3.x.x available" notice when a newer version is found.
- –Status badge distinguishes OFFLINE (not on YouTube/Reddit, expected) from NO SCRIPT (on YouTube/Reddit but script not loaded).
- –DeepFilterNet3 assets staged in chrome.storage.local are imported into IndexedDB automatically on next YouTube or Reddit load — no re-download needed.
- –After model download, progress bar shows "Model loaded!" then smoothly fades out after 5 seconds.
- –Engine cards and intensity slider now retain their values when the popup is opened off YouTube/Reddit.
Complete rewrite with three AI engines, gamified engine cards with animated stat bars, a technical docs site, and a roadmap page.
- –EQ Lite engine — multi-band notch filters targeting 1–6 kHz click frequencies with a dynamics compressor. Zero download, instant.
- –RNNoise engine — Mozilla's 150 KB recurrent neural network bundled in the extension. Catches fan hum, room noise, and typing sounds.
- –DeepFilterNet3 engine — state-of-the-art deep-learning noise suppressor (~2 MB one-time download). Maximum possible clarity.
- –Animated progress bars per engine card with plain-English labels (Reaction Speed, Noise Removal, Battery Friendly, Setup Effort).
- –Vertical stacked engine card layout — full-width bars with grid labels, replacing the cramped 3-column layout.
- –Bug report button in footer — opens a pre-filled mailto with engine, intensity, and browser info.
- –Dark/light theme toggle in popup.
- –Website: technical docs page (/docs) with sticky TOC and 9 deep-dive sections.
- –Website: roadmap page (/roadmap) with shipped/in-progress/planned/future grouping.
- –Content script injection button — appears when script is missing so users can recover without refreshing.
- –CSP bypass architecture: background service worker proxies all CDN downloads, stores base64 in chrome.storage.local, content script decodes to IndexedDB.
- –Asset versioning — cached WASM and model are automatically evicted when CDN models change.
- –State persisted in both localStorage (YouTube page) and chrome.storage.local (cross-context).
Switched to Manifest v3. Added RNNoise ML engine as second option alongside the original EQ filters.
- –Manifest v3 service worker — replaces the MV2 background page.
- –RNNoise ML engine option added to the popup.
- –chrome.storage.local for settings — synced across all YouTube tabs.
- –EQ filter gains now scale linearly with the intensity slider (0–100%).
- –Compressor threshold adapts with intensity — more aggressive at higher settings.
- –Audio context sometimes stayed suspended after YouTube's autoplay policy fired.
- –Source node not released when navigating between YouTube videos.
Initial release. EQ-only noise filtering using multi-band notch filters targeting keyboard click frequencies.
- –Multi-band EQ targeting 1.4 kHz, 2.2 kHz, 3.5 kHz, 5 kHz, 7 kHz click resonances.
- –Dynamics compressor with 0.5 ms attack to catch click transients.
- –Intensity slider from 0–100%.
- –Power toggle with on/off state persisted in localStorage.
- –Auto-hooks into the YouTube video element via MutationObserver.
- –Reconnects after YouTube's client-side navigation.
OLDER HISTORY
Full commit history on GitHub.
Every change is documented in the git log.