Skip to content

Commit 18acffe

Browse files
BUMP: v3.1.7 YT Kids support & Auto Backup
1 parent 133ebd9 commit 18acffe

21 files changed

+823
-53
lines changed

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,20 @@
11
# Changelog
22

3+
## Version 3.1.7
4+
5+
### YouTube Kids & Backup support
6+
7+
- 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".
8+
- Added a Settings toggle to enable/disable auto backups.
9+
- Auto backups now save into `Downloads/FilterTube Backup/`.
10+
- Manual exports now download into `Downloads/FilterTube Export/`.
11+
12+
### Fixes
13+
14+
- Hardened 3-dot menu channel-name labeling on watch Mix cards so Mix metadata strings don't replace channel names.
15+
16+
---
17+
318
## Version 3.1.6
419

520
### Release Notes Experience
@@ -72,52 +87,69 @@
7287
## Version 3.1.1
7388

7489
### Watch Page (Playlists)
90+
7591
- Watch-page playlist panel rows now hide deterministically for blocked channels (playlist items are enriched via `videoChannelMap`).
7692
- Next/Prev navigation skips blocked playlist items without visible playback flash.
7793

7894
### UI
95+
7996
- Added a Help section in the dashboard (new tab UI) documenting all features/toggles.
8097

8198
### Identity & Robustness
99+
82100
- Improved channel identity convergence (handle/customUrl ↔ UC ID mapping) so blocking is resilient to `/@handle/about` failures.
83101

84102
---
85103

86104
## Version 3.1.0
87105

88106
### Watch Page & Docs
107+
89108
- 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`).
90109
- Captured the outstanding playlist/mix regression (hidden rows reappearing after hard refresh) so it stays visible in watch-page plans.
91110

92111
### Misc
112+
93113
- Version bump to keep manifests, build tooling, and UI footer aligned with the new release.
94114

115+
---
116+
95117
## Version 3.0.9
96118

97119
### Refactor
120+
98121
- **3-dot menu module split**: Moved the dropdown observer/bootstrap logic into `js/content/block_channel.js` (loaded before `content_bridge.js`).
99122

100123
### Cleanup
124+
101125
- **Legacy observer removal**: Removed the old/disabled dropdown observer code from `content_bridge.js` after validating the new `block_channel.js` entry-point.
102126

103127
### Documentation
128+
104129
- Updated docs to reflect the new isolated-world module structure + load order.
105130
- Expanded `docs/youtube_renderer_inventory.md` with additional menu DOM variants used by the 3-dot injection pipeline.
106131

132+
---
133+
107134
## Version 3.0.8
108135

109136
### Channel Blocking Hardening
137+
110138
- **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/about` fails.
111139

112140
- **DOM Reprocessing**: Cards now re-run the fallback when their `data-filtertube-last-processed-id` changes, preventing stale metadata from skipping new videos.
113141

114142
### Documentation
143+
115144
- Added `docs/handle-404-remediation.md` playbook and updated architecture/tech docs to reflect the new recovery flow.
116145
- Expanded `CONTENT_HIDING_PLAYBOOK.md` and `CHANNEL_BLOCKING_SYSTEM.md` with channel identity guidance for Shorts/home surfaces.
117146

147+
---
148+
118149
## Version 3.0.7
119150

120151
### New Features
152+
121153
- **Posts Support**: Added proper channel extraction for YouTube community posts
122154
- "Block Channel" menu now works correctly on posts via 3-dot menu
123155
- Extracts channel info from post author links and thumbnails

data/release_notes.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,19 @@
22
{
33
"_comment": "Shared release notes source for the dashboard What’s New tab and the YouTube release banner. Keep entries sorted newest-first by version."
44
},
5+
{
6+
"version": "3.1.7",
7+
"headline": "YT Kids + Auto-backup support",
8+
"summary": "Block channel based content on YT Kids & Auto backups can now be toggled on/off",
9+
"bannerSummary": "New setting: enable/disable auto backups. Exports now save into Downloads/FilterTube Export/.",
10+
"highlights": [
11+
"Added complete Channel & Keyword based blocking on YT Kids it block channels by passive listening to 3 dot menu UI in YT Kids",
12+
"Added a Settings toggle to enable/disable auto backups (best-effort; no Save As prompts).",
13+
"Auto backups save into Downloads/FilterTube Backup/ with rotation (latest files kept).",
14+
"Manual exports now download silently into Downloads/FilterTube Export/."
15+
],
16+
"detailsUrl": "https://github.com/varshneydevansh/FilterTube/releases/tag/v3.1.7"
17+
},
518
{
619
"version": "3.1.6",
720
"headline": "Import/Export support + Release banner",

docs/ARCHITECTURE.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# FilterTube v3.1.6 Architecture Documentation
1+
# FilterTube v3.1.7 Architecture Documentation
22

33
## Executive Summary
44

5-
FilterTube v3.1.6 implements a robust **Hybrid Filtering Architecture** that combines preemptive **Data Interception (Main World)** with a resilient **DOM Fallback (Isolated World)**. This dual-layer approach ensures comprehensive content filtering across all YouTube surfaces (Home, Search, Watch, Shorts) while maintaining high performance and a "Zero Flash" user experience when YouTube routes content through JSON.
5+
FilterTube v3.1.7 implements a robust **Hybrid Filtering Architecture** that combines preemptive **Data Interception (Main World)** with a resilient **DOM Fallback (Isolated World)**. This dual-layer approach ensures comprehensive content filtering across all YouTube surfaces (Home, Search, Watch, Shorts) while maintaining high performance and a "Zero Flash" user experience when YouTube routes content through JSON.
66

77
## Architecture Overview
88

docs/CHANNEL_BLOCKING_SYSTEM.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
# Channel Blocking System (v3.1.6)
1+
# Channel Blocking System (v3.1.7)
22

33
## 0. Goal & Non-Goals
44

@@ -132,7 +132,7 @@ This is most reliable "no-network" source when YouTube supplies browse endpoint.
132132
- It calls `content_bridge.js:injectFilterTubeMenuItem(dropdown, videoCard)` to render "Block channel" menu entry.
133133
- On click, `content_bridge.js:handleBlockChannelClick(channelInfo, ...)` runs.
134134

135-
### 4.2 Identity resolution pipeline (v3.1.6 enhanced)
135+
### 4.2 Identity resolution pipeline (v3.1.7 enhanced)
136136

137137
#### Initial extraction (synchronous):
138138
```javascript
@@ -233,7 +233,7 @@ DOM fallback must be careful about:
233233
- Separate storage namespace (`ftProfilesV3.kids`)
234234
- DOM fallback uses videoChannelMap mappings from Kids browse/search
235235
236-
### 5.4 3-Dot Menu Label Resolution (v3.1.6)
236+
### 5.4 3-Dot Menu Label Resolution (v3.1.7)
237237
238238
The 3-dot menu now intelligently upgrades placeholder labels to real channel names:
239239

docs/NETWORK_REQUEST_PIPELINE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Overview
44

5-
FilterTube v3.1.6 implements a sophisticated network request pipeline for channel identity resolution across both YouTube Main and YouTube Kids domains. This pipeline ensures accurate channel information is available for 3-dot menu labels and blocking actions.
5+
FilterTube v3.1.7 implements a sophisticated network request pipeline for channel identity resolution across both YouTube Main and YouTube Kids domains. This pipeline ensures accurate channel information is available for 3-dot menu labels and blocking actions.
66

77
## Architecture
88

docs/TECHNICAL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
# FilterTube v3.1.6 Technical Documentation
1+
# FilterTube v3.1.7 Technical Documentation
22

3-
This document provides a deep technical dive into implementation of FilterTube's hybrid filtering engine as of v3.1.6.
3+
This document provides a deep technical dive into implementation of FilterTube's hybrid filtering engine as of v3.1.7.
44

55
## Core Technologies
66

docs/THREE_DOT_MENU_IMPROVEMENTS.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
## Overview
44

5-
FilterTube v3.1.6 significantly improves the 3-dot menu experience across YouTube Main and YouTube Kids, ensuring accurate channel names are displayed and blocking actions work reliably for Shorts, Mixes, Playlists, and Watch page videos.
5+
FilterTube v3.1.7 significantly improves the 3-dot menu experience across YouTube Main and YouTube Kids, ensuring accurate channel names are displayed and blocking actions work reliably for Shorts, Mixes, Playlists, and Watch page videos.
66

77
## Problem Statement
88

9-
Prior to v3.1.6, users experienced:
9+
Prior to v3.1.7, users experienced:
1010
1. **UC IDs displayed**: 3-dot menu showed `UCxxxxxxxx...` instead of human-readable channel names
1111
2. **Mix titles as channel names**: Mix/playlist cards showed video titles instead of actual channel names
1212
3. **Metadata strings as names**: Watch right-pane showed strings like "Title • 1.2M views • 2 days ago"
@@ -379,7 +379,7 @@ Track label resolution performance:
379379
380380
### From Previous Versions
381381
382-
Users upgrading to v3.1.6 will see:
382+
Users upgrading to v3.1.7 will see:
383383
- Immediate improvement in Mix/playlist label accuracy
384384
- Better Shorts channel name resolution
385385
- More consistent behavior across all surfaces

docs/YOUTUBE_KIDS_INTEGRATION.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
## Overview
44

5-
FilterTube v3.1.6 introduces native integration with YouTube Kids, allowing users to block channels directly from Kids UI while maintaining the same filtering power available on YouTube Main.
5+
FilterTube v3.1.7 introduces native integration with YouTube Kids, allowing users to block channels directly from Kids UI while maintaining the same filtering power available on YouTube Main.
66

77
## Architecture
88

99
### Dual-Profile System
1010

11-
```
11+
```text
1212
┌─────────────────────────────────────────────────────────────────────┐
1313
│ FilterTube Extension │
1414
├─────────────────────────────────────────────────────────────────────┤
@@ -289,15 +289,15 @@ function enqueueVideoChannelMapUpdate(videoId, channelId) {
289289
290290
### CORS Limitations
291291
292-
YouTube Kids blocks cross-origin requests from www.youtube.com. FilterTube handles this by:
292+
YouTube Kids blocks cross-origin requests from https://www.youtube.com. FilterTube handles this by:
293293
294294
1. **Using Kids watch pages** when possible
295295
2. **Falling back to main-world extraction** from Kids page HTML
296296
3. **Leveraging videoChannelMap** for previously resolved identities
297297
298298
### Fallback Strategy
299299
300-
```
300+
```text
301301
Kids Native Block
302302
├── Context Capture (videoId, channelId, channelName)
303303
├── videoChannelMap Lookup (fast path)

html/tab-view.html

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@
111111
</ul>
112112

113113
<div class="sidebar-footer">
114-
<div class="version-info">v3.1.6</div>
114+
<div class="version-info">v3.1.7</div>
115115
</div>
116116
</nav>
117117

@@ -268,7 +268,7 @@ <h3>Import / Export</h3>
268268
Snapshot of channels, keywords, kids profiles, and themes.</br>
269269
</span>
270270
<span class="import-export-hint">
271-
Saved as <code>filtertube_backup_YYYY-MM-DD.json</code>
271+
Saved to <code>Downloads/FilterTube Export/</code>
272272
</span>
273273
<span class="info-hint" title="Download a portable JSON that includes every FilterTube list (channels, keywords, kids settings, design preferences, kids profiles, and more).">
274274
Details
@@ -305,6 +305,26 @@ <h3>Import / Export</h3>
305305
</div>
306306
</div>
307307

308+
<div class="card">
309+
<div class="card-header">
310+
<h3>Backups</h3>
311+
</div>
312+
<div class="card-body">
313+
<div class="toggle-row" title="When enabled, FilterTube will automatically save timestamped backups after you add/remove channels or keywords and after major settings changes.">
314+
<div class="toggle-info">
315+
<div class="toggle-title">Enable Auto Backup</div>
316+
</div>
317+
<label class="switch">
318+
<input id="setting_autoBackupEnabled" type="checkbox" data-ft-setting="autoBackupEnabled" />
319+
<span class="slider round"></span>
320+
</label>
321+
</div>
322+
<div class="import-export-hint" style="margin-top:10px;">
323+
Auto backups are saved to <code>Downloads/FilterTube Backup/</code>.
324+
</div>
325+
</div>
326+
</div>
327+
308328
</div>
309329

310330
<div id="whatsnewView" class="view-section">
@@ -493,7 +513,7 @@ <h3>Import &amp; Export backups</h3>
493513
<div class="help-item-body">
494514
<ul>
495515
<li>Click <strong>Download JSON</strong> to capture the latest channels, keywords, Kids settings, and theme choices.</li>
496-
<li>File name follows <code>filtertube_backup_YYYY-MM-DD.json</code> so you can keep multiple snapshots.</li>
516+
<li>Export is saved to <code>Downloads/FilterTube Export/</code> (file name follows <code>filtertube_export_v3_YYYY-MM-DD.json</code>).</li>
497517
<li>Store it anywhere private (cloud drive, USB) for quick restores.</li>
498518
</ul>
499519
</div>
@@ -512,6 +532,40 @@ <h3>Import &amp; Export backups</h3>
512532
</div>
513533
</div>
514534

535+
<div class="card">
536+
<div class="card-header">
537+
<h3>YouTube Kids Integration</h3>
538+
</div>
539+
<div class="card-body">
540+
<div class="help-list">
541+
<div class="help-item">
542+
<div class="help-item-title">Passive Listening on YouTube Kids</div>
543+
<div class="help-item-body">FilterTube provides complete Channel & Keyword based blocking on YouTube Kids by passively listening to the 3-dot menu UI in YT Kids content cards ("Block this video" and "Block this channel").</div>
544+
</div>
545+
<div class="help-item">
546+
<div class="help-item-title">YouTube's Native Blocking vs FilterTube</div>
547+
<div class="help-item-body">When parents block channels using YouTube Kids' native 3-dot menu, those blocks are managed by YouTube's system. FilterTube maintains its own separate blocklist for Kids Mode, giving you additional control and backup options.</div>
548+
</div>
549+
<div class="help-item">
550+
<div class="help-item-title">Understanding Channel Blocking Behavior</div>
551+
<div class="help-item-body">
552+
<p>Parents should understand YouTube's complex channel blocking system:</p>
553+
<ul style="margin: 8px 0; padding-left: 20px;">
554+
<li>Channels blocked via YouTube Kids' native UI are managed by YouTube's system</li>
555+
<li>FilterTube's passive listener creates entries in its own Kids Mode blocklist</li>
556+
<li>If a channel doesn't appear after removing from FilterTube's list, it may still be blocked by YouTube's native system</li>
557+
<li>Use YouTube's official unblocking process for native blocks: <a href="https://support.google.com/youtubekids/answer/7178746?hl=en#zippy=%2Cunblock-individual-channels-from-youtube-using-your-linked-parent-account" target="_blank" rel="noopener noreferrer">Unblock channels from YouTube using your linked parent account</a></li>
558+
</ul>
559+
</div>
560+
</div>
561+
<div class="help-item">
562+
<div class="help-item-title">Parent Account Integration</div>
563+
<div class="help-item-body">YouTube Kids blocking requires a verified parent account. Parents can block content from their child's YouTube Kids profile and share content from YouTube to their child's profile. See <a href="https://support.google.com/youtubekids/answer/7178746?hl=en" target="_blank" rel="noopener noreferrer">YouTube Kids Help Center</a> for complete details.</div>
564+
</div>
565+
</div>
566+
</div>
567+
</div>
568+
515569
<div class="card">
516570
<div class="card-header">
517571
<h3>Troubleshooting</h3>
@@ -520,7 +574,7 @@ <h3>Troubleshooting</h3>
520574
<div class="help-list">
521575
<div class="help-item">
522576
<div class="help-item-title">"Failed to fetch" while blocking</div>
523-
<div class="help-item-body">If FilterTube already knows the channel UC ID, it can still persist the block even if fetching the logo/name fails. Try reloading if the UI doesnt update immediately.</div>
577+
<div class="help-item-body">If FilterTube already knows the channel UC ID, it can still persist the block even if fetching the logo/name fails. Try reloading if the UI doesn't update immediately.</div>
524578
</div>
525579
<div class="help-item">
526580
<div class="help-item-title">Blocked channel still appears</div>

0 commit comments

Comments
 (0)