- Accounts & Sync simplification:
Device Trust & Syncnow starts from three simpler paths:Send this profile once,Parent controls child, andMove full account. - Advanced controls moved behind disclosure: low-level relationship/scope/policy controls are still available, but they are no longer the first thing ordinary users see.
- Remote target profile flow: live sessions can target a specific remote profile more clearly, especially for parent -> child updates.
- Saved managed-link symmetry: when the receiving device saves a managed link on first approval, the sender now stores the matching trusted relationship too.
- Refresh/reconnect clarity: trusted links remain saved, but refresh still ends the live session; reconnect is a fresh live session, not hidden background sync.
- Same-device join protection: self-join/session-burn behavior is blocked more clearly in signaling and the desktop UI.
- Device label persistence: the preferred Nanah device label now survives page refresh.
- Locked-child parent update path: trusted parent/source links can update child replicas under a saved local child-side rule without sending the PIN.
- Unlocked child rule: unlocked child profiles may send their own scoped snapshot, but not full-account migration.
- Child-surface restriction hardening: child profiles now block more admin/account/import/export/trusted-link mutation paths in desktop UI surfaces.
- Nanah user guide added: a plain-language guide now lives in
docs/NANAH_USER_GUIDE.md. - Docs refreshed: README, Architecture, Technical, Functionality, Profiles & PIN, project plan, and the post-implementation concerns tracker now reflect the current Nanah desktop checkpoint.
- Help copy refreshed: the in-product Help page and Accounts & Sync wording now explain the relay as a meeting place and the real payload as device-to-device.
- YTM 3-dot/Quick Block rollout: Mobile YouTube home, watch-next, playlist, radio, and Mix-like cards now participate in the same menu/quick-block identity flow instead of falling back to incomplete single-channel handling.
- Watch-page collaboration recovery: Right-rail lockups, watch playlist rows, and watch-like menu surfaces can now recover the full collaborator roster from YouTube's dialog/sheet data instead of stopping at one visible uploader.
- Active menu refresh: If the 3-dot menu opens before collaborator enrichment finishes, the menu can now refresh in place once the full collaborator roster arrives.
- Mix/watch recovery hardening: Mix-like watch rows and fallback popovers now recover owner/collaborator context more consistently through watch-page data.
- False-positive collab guardrails: Plain single-channel names containing
&orandno longer become fake collaboration menus unless explicit collaborator evidence exists. - Optional 3-dot menu item: Added a new content-control toggle so users can hide FilterTube's injected 3-dot menu entry while keeping Quick Block enabled.
- Quick Block visibility fixes: Hover quick-block now stays above more desktop card overlays and no longer disappears behind complex YouTube surfaces.
- YTM mobile search safety: Quick Block now suppresses itself while mobile search suggestions are open, so it does not interfere with typing/search dropdown interaction.
- Mobile watch-next anchoring: Quick Block now positions more reliably on mobile watch-next cards instead of colliding with compact watch-side layouts.
- Watch/YTM renderer recovery: Restored and expanded YTM renderer handling across DOM extraction and fallback filtering so more mobile cards resolve identity and hide correctly.
- Cross-browser import hardening: Subscribed-channel import now keeps recent real browse responses, prefers active page-driven
/feed/channelsgrowth, and handles Chrome/Edge differences more safely. /feed/channelsexemption: The All subscriptions page is treated as a management surface, so blocked channels remain visible there for audit/import purposes.- Creator-page whitelist improvements: Whitelist mode handles unresolved cards more safely on creator/channel pages while still respecting page identity.
- YTM whitelist correctness: Additional mobile renderers are now evaluated consistently in whitelist mode, reducing cases where unresolved cards leaked through on YTD/YTM feeds.
- Navigation/filter polish: The subscriptions guide section and the
Mixeschip now respect the related hide controls more consistently.
- Channel Management links: Channel rows can now open the live YouTube channel page using the best available identifier (
@handle, UCID, or custom URL). - Firefox encrypted export fix: Manual encrypted export now uses a safer Firefox fallback path instead of relying only on the downloads API route.
- Subscribed channels import: Added a Tab View flow that imports the active YouTube account's subscriptions into whitelist.
- YouTube tab startup hardening: The import now reuses or opens a YouTube tab, routes it to
/feed/channels, and waits for the FilterTube bridge before starting. - Whitelist semantics clarified:
Import Onlykeeps the current blocklist untouched, whileImport + Turn On Whitelistfollows the existing blocklist-to-whitelist migration behavior. - Documentation refresh: Added dedicated import docs plus updated architecture, technical, pipeline, renderer, and developer docs for the new flow.
- Scenic shell refresh: Popup and dashboard surfaces now share the calmer product shell with the local homepage hero video as ambient background media.
- Light + dark theme tuning: Dark mode now keeps the scenic background visible without the washed center glow, while light mode uses cleaner transparency and softer shell opacity.
- Popup UI refinement: The popup was tightened into a quicker control surface with better spacing, improved header balance, clearer enabled/disabled branding, and a more compact profile selector.
- Dashboard shell polish: Top bar, sidebar, cards, and view container were rebalanced to feel more app-like and closer to the website hero direction.
- Mobile/tab-view fit fixes: Filter surfaces, date/sort rows, stacked controls, and short-height sidebar layouts were adjusted for smaller screens and compressed-height devices.
- Profile dropdown behavior: The tab-view profile selector now opens as a viewport-positioned dropdown on mobile instead of clipping inside the header layout.
- View switching cleanup: Switching between Dashboard, Filters, Settings, Help, and other pages now resets scroll position instead of inheriting the previous page scroll.
- Help/Support layout pass: Desktop card placement was tightened so Help and Support sections read more evenly.
- Tint fixes: Enabled/disabled states, pill accents, and search/control surfaces were corrected to read properly across both themes.
- Import/export button polish:
Download JSON,Download Encrypted, andChoose JSONwere rebalanced for clearer tinting and more consistent sizing. - Dropdown + field consistency: Custom selects, date inputs, and profile dropdown sizing were normalized to better match the refreshed shell.
- Badge logic fix: README total line count now excludes binaries like local video assets and only counts tracked text/code files.
- Version sync: Package and browser manifests updated to
3.2.8. - Release metadata refresh: Added the
3.2.8entry indata/release_notes.jsonand UI/UX refresh docs underdocs/.
- Quick Block default ON (one-time migration):
showQuickBlockButtonnow defaults to enabled in v3.2.7, while still allowing users to disable it anytime. - Safe migration behavior: Added a one-time migration marker (
quickBlockDefaultV327Applied) so this default is applied once and not re-forced on future updates. - Quick block card action hardening: Improved card anchoring and hover lifecycle so the quick cross stays visible on complex YouTube surfaces.
- Search/Home Shorts hover retention fix: Pointer tracking now retains hover state while the pointer remains inside host/anchor bounds, reducing cross disappearance under overlay layers.
- Comment block isolation: Comment-origin block actions are now context-isolated from watch/playlist card logic.
- Playlist autoplay regression fix: Blocking from comment menus no longer triggers unintended playlist row hide/next-video transitions.
- Context-safe identity path: Comment-origin actions skip video-card prefetch/identity merge paths that could leak currently-playing card identity.
- v3.2.7 release note refreshed in
data/release_notes.jsonwith short, feature-first highlights.
- Updated quick-block behavior and reliability notes in:
docs/FUNCTIONALITY.mddocs/ARCHITECTURE.mddocs/CODEMAP.md
- Added README feature note for the quick block cross and updated badge/version metadata.
- Typography Overhaul: Complete redesign from serif to modern sans-serif system using Inter font family for improved readability and consistency.
- Font Scale Refinement: Tighter increments (12px-30px) with optimized line heights and letter spacing for better visual hierarchy.
- Content-Based Filters: Three new advanced filtering capabilities:
- Duration Filter: Hide videos by length (longer/shorter/between specific durations)
- Upload Date Filter: Filter by publish date (newer/older/between specific dates)
- Uppercase Filter: Detect and filter clickbait ALL CAPS titles (single_word/all_words/percentage modes)
- videoMetaMap System: Persistent storage of video metadata (duration, publish dates) with intelligent batching (75ms window, 1500 entry cap).
- Enhanced Dropdowns & Selects: 3px left accent borders, floating shadows, improved hover effects, and mobile responsiveness.
- Custom Date Inputs: Styled to match select components with consistent visual language.
- Button Improvements:
- Import button: Green accent for visual distinction
- Primary button: Forced white text in dark mode for readability
- Danger button: Improved contrast (#fca5a5)
- Toggle Switch Refinements: Better dark mode contrast with #e2e8f0 knob color.
- Brand Toggle Button: Visual extension status indicator with enabled/disabled states and 7px uppercase labels.
- Dark Mode Enhancements:
- Search input: Orange accent highlighting (rgba(217, 119, 6, 0.7))
- Card boundaries: Consistent #404040 borders across all cards
- Kids Mode Theming: Vibrant pink (#EC4899) and purple (#8B5CF6) gradient design system:
- Tab navigation with gradient backgrounds
- Input fields with gradient borders
- List items with gradient hover effects
- Sidebar navigation styling
- Dark mode adaptations with lighter shades
- Dashboard Improvements:
- Surface-specific stats tracking (separate for Main and Kids)
- Enhanced stat cards with larger values (2.25rem) and better spacing
- Donate promo card with gradient styling
- Advance Video Filters Section: Collapsible UI in popup with inline controls and full-width card-style radio options in tab view.
- ARCHITECTURE.md: Added videoMetaMap extraction flow, content filters architecture, and fixed broken mermaid diagram.
- TECHNICAL.md: Comprehensive typography system documentation and UI component styling guide (~800 lines).
- FUNCTIONALITY.md: Complete content filters documentation with examples and use cases (~450 lines).
- YOUTUBE_KIDS_INTEGRATION.md: Kids Mode theming documentation with accessibility considerations (~200 lines).
- CODEMAP.md: Updated to v3.2.5 with feature overview.
- README.md: Added content-based filters to features list.
- Promoted Whitelist Mode: Removed experimental labels; whitelist mode is now the primary allow-only path.
- 3-Dot Menu Cleanup: Disabled irrelevant "Block Channel" menus in whitelist mode to prevent user confusion.
- Search Secondary Handling: Added intelligent processing for right-rail watch cards on search pages.
- Enhanced Channel Extraction: Multi-source identity resolution with thumbnail anchors and parent containers.
- Mode-Aware State Tracking: Seamless switching between blocklist/whitelist with intelligent reprocessing.
- Bridge-Level Optimizations: Excluded search results from whitelist pending logic for better performance.
- UI Confirmation Dialogs: Added user confirmation when switching modes with intelligent transfer options.
- Seed.js Intelligence: Mode-aware search processing that skips unnecessary engine work in whitelist mode.
- Kids Mode Whitelist Support: Extended whitelist functionality to YouTube Kids profiles with zero-network architecture.
- Filter Logic Enhancements: Added chip renderer exclusion and watch page scaffolding protection.
- Playlist Stability: Selected rows stay visible; pending identities no longer unhide blocked rows.
- Performance Improvements: Selective processing and bridge-level exclusions reduce CPU usage.
- 3-Dot Menu Cleanup: Disabled irrelevant "Block Channel" menus in whitelist mode to prevent user confusion and improve interface clarity.
- Search Secondary Handling: Added intelligent processing for right-rail watch cards on search pages, preventing UI clutter in whitelist mode.
- Enhanced Channel Extraction: Improved multi-source channel identity resolution with thumbnail anchors and parent container data extraction.
- Mode-Aware State Tracking: Implemented seamless switching between blocklist/whitelist modes with intelligent reprocessing and state management.
- Bridge-Level Optimizations: Excluded search results from whitelist pending logic for better performance and reduced CPU usage.
- UI Confirmation Dialogs: Added user confirmation when switching modes to prevent accidental data loss, with intelligent transfer options.
- Seed.js Intelligence: Mode-aware search processing that skips unnecessary engine work in whitelist mode for better performance.
- Kids Mode Whitelist Support: Extended whitelist functionality to YouTube Kids profiles with zero-network architecture.
- Filter Logic Enhancements: Added chip renderer exclusion and watch page scaffolding protection for cleaner content filtering.
- Performance Optimizations: Selective processing and bridge-level exclusions improve overall extension performance.
- Enhanced Error Handling: Better fallback mechanisms for edge cases in whitelist mode processing.
- State Management: Improved mode switching state tracking prevents unnecessary DOM reprocessing.
- Dual Filtering Modes: Introduced experimental whitelist mode alongside traditional blocklist mode - whitelist mode hides all content except explicitly allowed channels/keywords.
- Mode-Aware UI Controls: Added list mode toggles in popup and tab view interfaces for switching between blocklist and whitelist modes.
- Staging Migration: Users can temporarily switch to blocklist mode to browse normally and collect channels, then merge blocklist into whitelist when switching back.
- Profile Storage Extension: Extended Profiles V4 schema to support
mode,whitelistChannels, andwhitelistKeywordsfields. - Mode-Aware Filtering Logic: Updated render engine and DOM fallback to respect current filtering mode in content visibility decisions.
- Watch Page Protection: Whitelist mode preserves watch page metadata (actions, channel row, description) to maintain video playback functionality.
- Search Page Optimization: Added indeterminate state handling for search results that render before channel identity is available, preventing page blanking.
- Homepage Duplicate Removal: Automatic duplicate content removal on homepage in whitelist mode to clean up mixed content feeds.
- Whitelist-Pending Processing: Optimized DOM fallback with
onlyWhitelistPendingoption for efficient re-evaluation of content awaiting channel identity. - Cross-World Mode Sync: Enhanced channel stamping with
data-filtertube-list-modeattributes for consistent mode awareness across execution worlds.
- Optimistic UI Updates: Added immediate visual feedback when blocking channels - content hides instantly with automatic restoration if blocking fails, eliminating user uncertainty.
- Enhanced Mobile Menu Support: Improved 3-dot menu injection for YouTube mobile (ytm-menu-popup-renderer) with proper renderer tags and scope handling.
- Debug Gated Logging: All console logs now gated behind
window.__filtertubeDebugflag to reduce noise in production while maintaining full debug capabilities. - Scroll Preservation: Enhanced DOM fallback processing to respect user scrolling during filtering operations, preventing jarring scroll position changes.
- Channel Enrichment Limits: Added per-session limits (10 enrichments) to prevent excessive background requests and improve performance.
- Idle-Scheduled Rendering: Channel list rendering now uses
requestIdleCallbackwith batching for smoother UI updates in large lists.
- External Reload Debouncing: Storage changes from other tabs now debounced with intelligent signature comparison to prevent unnecessary UI re-renders.
- Selective Notifications: External updates only trigger full 'load' events when channel signatures actually change, otherwise use lightweight 'externalUpdate' events.
- Bridge State Management: Improved script injection state tracking with globalThis-based shared state for better reliability.
- Async DOM Processing: Converted
applyDOMFallback()to async with main thread yielding every 30-60 elements, preventing browser freezing during heavy filtering operations. - Compiled Caching System: Added
compiledKeywordRegexCacheandcompiledChannelFilterIndexCachefor O(1) lookups, reducing CPU usage by 60-80%. - Batched Storage Updates: Channel map updates now batched with 250ms intervals, reducing storage I/O operations by 70-90%.
- Debounced Settings Refresh: Settings updates throttled to prevent excessive DOM reprocessing with 250ms minimum intervals.
- Run State Management: Prevents overlapping DOM processing executions and queues subsequent requests.
- Chromium-based Browsers (Chrome, Edge, Opera): ✅ Excellent performance - lag virtually eliminated (90%+ reduction)
- Firefox-based Browsers:
⚠️ Good improvements but less dramatic, needs ongoing optimization work
- Channel Map Caching: Background script now uses in-memory caching with async flush for better performance.
- Storage Optimization: Reduced storage listener triggers and improved batching logic.
- Error Handling: Enhanced safety checks for non-configurable properties in injector and seed scripts.
- Debug Control: Conditional logging based on
window.__filtertubeDebugflag.
- ARCHITECTURE.md: Added performance architecture section with Mermaid diagrams showing async processing, caching, and storage batching flows.
- TECHNICAL.md: Comprehensive technical documentation of all performance optimizations with code examples.
- CONTENT_HIDING_PLAYBOOK.md: Updated with DOM fallback processing flow and browser-specific performance notes.
- CODEMAP.md: Enhanced with performance optimization details for each affected file.
- NETWORK_REQUEST_PIPELINE.md: Added performance enhancement context.
- PROACTIVE_CHANNEL_IDENTITY.md: Updated with performance optimization benefits.
- Zero-delay blocking: 3-dot menus now show correct channel names instantly—no more "Fetching..." delays—thanks to proactive XHR interception that extracts channel identity before rendering.
- Network reduction: Most channel identity comes from intercepted YouTube JSON responses (
/youtubei/v1/next,/browse,/player), dramatically reducing the need for separate network fetches. - Zero-network Kids mode: YouTube Kids works entirely without network fetches, relying only on intercepted JSON for reliable blocking.
- Instant DOM stamping: Channel info is broadcast across worlds and stamped on DOM cards immediately, enabling instant hiding and menu updates.
- Post-block enrichment: Missing metadata (handle, logo, name) is filled in the background at a controlled rate (6-hour cooldown per channel) to avoid spamming YouTube.
- Topic channel handling: Special case for auto-generated Topic channels (e.g., "Music - Topic") that don't have @handles or custom URLs.
- New documentation: Added comprehensive docs for the proactive pipeline, including ASCII and Mermaid flow diagrams, surface-by-surface examples, and extension guides.
- Developer guide: Created detailed guide for extending XHR snapshot stashing and renderer extraction.
- Architecture updates: Documented cross-world messaging protocol and snapshot stashing architecture.
- Banner regression: Fixed missing "What's New" and refresh banners after extension updates—both now show correctly on open YouTube/Kids tabs.
- Message handlers: Restored background message handlers for release notes and first-run prompts that were accidentally removed.
- CHANNEL_BLOCKING_SYSTEM.md: Updated with proactive XHR interception, data source waterfall, and Topic channel details.
- PROACTIVE_CHANNEL_IDENTITY.md: New comprehensive guide explaining the proactive pipeline with ASCII and Mermaid diagrams.
- DEVELOPER_GUIDE.md: New guide for extending FilterTube to support new YouTube features.
- NETWORK_REQUEST_PIPELINE.md: Refactored to reflect XHR-first proactive strategy.
- ARCHITECTURE.md: Updated with cross-world messaging and snapshot stashing details.
- YOUTUBE_KIDS_INTEGRATION.md: Updated for zero-network operation.
- README.md: Added proactive model overview and links to new documentation.
- Website: Updated website for better rediability and listed new features.
- Auto-backup settings are now profile-aware: mode/format selectors disable when auto-backup is off or the profile is locked, and new profiles inherit auto-backup preferences correctly.
- Auto-backup scheduling triggers on profile creation and mode/format changes only when the active profile has auto-backup enabled, respecting per-profile PIN locks.
- Content-control toggles and auto-backup controls revert and stay disabled when a profile is locked, preventing unauthorized changes.
- Export scope UI enforces “Export active profile only” for non-master profiles; Master can toggle full exports.
- New Tab profile dropdown sits above the lock gate (z-index fix) so it stays clickable even when locked.
- Documentation updated to capture profile/PIN model, profile-scoped backups, and UI gating rules.
- Added a new Support page in the dashboard with Ko-fi embed.
- Auto-backups now overwrite a single rolling file:
Downloads/FilterTube Backup/FilterTube-Backup-Latest.json. - Auto-backup download URL handling is now cross-browser:
- Uses Blob URLs when available.
- Falls back to
data:URLs in Chrome MV3 service worker contexts whereURL.createObjectURLis unavailable.
- Fixed auto-backup failures in Chrome caused by
URL.createObjectURL is not a function. - Fixed download failures in Firefox caused by
data:URL download restrictions.
- Added complete Channel & Keyword based blocking on YT Kids it block channels by passive listening to 3 dot menu UI in YT Kids content card i.e. "Block this video" and "Block this channel".
- Added a Settings toggle to enable/disable auto backups.
- Auto backups now save into
Downloads/FilterTube Backup/. - Manual exports now download into
Downloads/FilterTube Export/.
- Hardened 3-dot menu channel-name labeling on watch Mix cards so Mix metadata strings don't replace channel names.
- Added a curated “What’s New” tab in the dashboard fed by
data/release_notes.json, sharing the same content as the release banner. - Release banner CTA now routes through the background script and lands inside
tab-view.html?view=whatsnew, so no chrome-extension:// links are blocked by content blockers. - Banner + dashboard documentation now lives in
/docs, including UI/UX guidance on when the CTA appears and which fields drive the cards.
- Documented the full import/export pipeline (including c/ChannelName normalization, merge rules, and adapters) with ASCII + Mermaid diagrams.
js/io_manager.jscentralizes sanitization helpers, making merge vs. replace imports reliable for UC IDs, @handles, and/c/slugvalues.- Added contextual comments throughout IO helpers so future schema changes remain self-documented.
- Watch-page sidebar now hides Shorts that are rendered as normal compact videos by checking
/shorts/hrefs, SHORTS overlays, and aria-label hints before cards render. - Members-only hiding hardened: detects via title aria-labels, badges, and UUMO membership playlists across compact/watch/sidebar/lockup renderers; shelves hide deterministically.
- Members-only toggle now persists correctly (StateManager save/broadcast path and background recompile) so UI selections stick across contexts.
- Added mobile-friendly tab view: hamburger nav toggle, overlay, tighter paddings, and responsive grids/inputs for smaller screens.
- Refined filter/search/input rows to wrap gracefully and keep buttons aligned on mobile.
- Tweaked toggle styling (lighter track, crisper borders, centered thumb) for better contrast in light/dark modes.
- Content control cards now use cleaner dividers/hover states and stronger headings while preserving per-group accents.
- Playlist hiding now excludes Mix/Radio items (start_radio=1) while keeping standard playlists hidden.
- Mix/Radio toggle now also hides the “Mixes” chip in the filter bar when enabled.
- UI toggle for “Hide Members-only videos” is temporarily hidden; functionality remains wired for future release.
- Aligned popup and tab search bars to full-width row sizing; added clearer pill/tooling docs in the Help page with accurate Exact/Comment/Filter All behavior and C/E chip samples.
- Popup content controls hide descriptions for a cleaner view; tab content controls now use title-only tooltips (not row-wide) for descriptions.
- Help legend updated to document badge tints (channel/comment/collab) and pill behaviors with matching colors/shapes.
- Autoplay now skips blocked playlist items by triggering a safe Next-click only when the immediate next playlist row is hidden.
- Watch-page playlist panel rows are sticky-hidden across reprocessing cycles when identity is temporarily unresolved (prevents restored blocked items becoming playable).
- Closing the YouTube 3-dot dropdown after blocking no longer closes/interrupts an active miniplayer.
- Watch-page playlist panel rows now hide deterministically for blocked channels (playlist items are enriched via
videoChannelMap). - Next/Prev navigation skips blocked playlist items without visible playback flash.
- Added a Help section in the dashboard (new tab UI) documenting all features/toggles.
- Improved channel identity convergence (handle/customUrl ↔ UC ID mapping) so blocking is resilient to
/@handle/aboutfailures.
- Documented that watch-page 3-dot menus now mirror Home/Search collaborator behavior and clarified the remaining single-channel label gap plus Shorts coverage (
docs/home_watch_collab_plan.md,docs/CHANNEL_BLOCKING_SYSTEM.md,docs/youtube_renderer_inventory.md). - Captured the outstanding playlist/mix regression (hidden rows reappearing after hard refresh) so it stays visible in watch-page plans.
- Version bump to keep manifests, build tooling, and UI footer aligned with the new release.
- 3-dot menu module split: Moved the dropdown observer/bootstrap logic into
js/content/block_channel.js(loaded beforecontent_bridge.js).
- Legacy observer removal: Removed the old/disabled dropdown observer code from
content_bridge.jsafter validating the newblock_channel.jsentry-point.
- Updated docs to reflect the new isolated-world module structure + load order.
- Expanded
docs/youtube_renderer_inventory.mdwith additional menu DOM variants used by the 3-dot injection pipeline.
-
404 Recovery Pipeline: Added a four-layer strategy (cache-first lookup, ytInitialData replay, Shorts helpers, DOM cache reset) so blocking always resolves a UC ID even when
/@handle/aboutfails. -
DOM Reprocessing: Cards now re-run the fallback when their
data-filtertube-last-processed-idchanges, preventing stale metadata from skipping new videos.
- Added
docs/handle-404-remediation.mdplaybook and updated architecture/tech docs to reflect the new recovery flow. - Expanded
CONTENT_HIDING_PLAYBOOK.mdandCHANNEL_BLOCKING_SYSTEM.mdwith channel identity guidance for Shorts/home surfaces.
- Posts Support: Added proper channel extraction for YouTube community posts
- "Block Channel" menu now works correctly on posts via 3-dot menu
- Extracts channel info from post author links and thumbnails
- Collaboration Videos: Added support for videos with multiple channel collaborators
- Detects and extracts all collaborating channels from
attributed-channel-nameelement - Blocks video if ANY collaborator is in your blocked channels list
- Menu shows "(Collab)" indicator for collaboration videos
- Blocking a collaboration video blocks ALL collaborators automatically
- Detects and extracts all collaborating channels from
- Updated
youtube_renderer_inventory.mdwith collaboration videos section - Marked posts as fully covered for menu blocking
- Fix: Fixed the Popup UI width for desktop and updated the website.
- Menu Injection: Fixed issue where "Block Channel" menu item would not appear on first click, requiring 2-3 clicks
- Added DOM verification before skipping injection to detect when YouTube clears menu items
- Prevents stale state tracking causing false "already injected" detections
- Focus Trap: Fixed scroll functionality after blocking a video via 3-dot menu
- Implemented 5-strategy dropdown closure (Escape key simulation, focus removal, YouTube close, force hide, simulated click)
- Page now immediately regains scroll control after blocking without requiring manual click
- Android Support: Made popup UI responsive for Firefox for Android
- Changed fixed width to fluid (100%, max-width: 400px, min-width: 320px)
- Added
gecko_androidmanifest support
- Feature: Enhanced Shorts blocking with immediate visual feedback (no more waiting).
- Fix: Resolved "blank space" issue where blocked Shorts left empty gaps in the grid.
- Fix: Improved channel extraction for handles with dots (e.g.,
@user.name). - Docs: Added detailed ASCII flowcharts for Shorts blocking architecture.
- Feature: Added "Block Channel" option to the 3-dot menu for YouTube Shorts, Posts, and Playlists.
- Fix: Resolved "ghost dropdown" issue where the menu remained visible after blocking.
- Fix: Fixed "Unable to block" error by implementing async channel fetching for Shorts.
- Fix: Silenced error logs for unsupported card types (Mixes/Playlists).
- UX: Immediate visual feedback (video hides instantly) when blocking via the menu.
- Architecture: Formalized the "Hybrid Filtering Architecture" combining Data Interception (Primary) with DOM Fallback (Secondary).
- Documentation: Major overhaul of
ARCHITECTURE.md,TECHNICAL.md, andCODEMAP.mdwith detailed ASCII diagrams. - Visuals: Added "Box-and-Line" ASCII diagrams for all major technical flows.
- Refinement: Improved code flow descriptions for non-technical accessibility.
- Core: Complete rewrite using
ytInitialDataandfetchinterception. - Performance: "Zero Flash" filtering by modifying data before rendering.
- UI: New Tab View interface for advanced filtering.
- Fixes: Resolved issues with YouTube Shorts and dynamic navigation.
- Added basic keyword filtering.
- Implemented channel blocking.
- Initial release.