Skip to content

Commit 94df020

Browse files
BUMP: v3.2.7 Category Filters + Quick Block Hover Cross + Mobile 3 Dot UI & Quick Cross Block Support
1 parent 04d595c commit 94df020

36 files changed

Lines changed: 6922 additions & 630 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ collab_on_homepage.html
3838
collab_in_playlist_mix.html
3939
WHITELIST_background.js
4040
WHITELIST_content.js
41+
yt_kids_latest.json
4142
YT_KIDS.json
4243
YT_MAIN_NEXT_RESPONSE_COMMENT.json
4344
YT_MAIN_next?prettyPrint.json

CHANGELOG.md

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

3+
## Version 3.2.7
4+
5+
### Category Filters + Quick Block Hover Cross
6+
7+
- **Quick Block default ON (one-time migration)**: `showQuickBlockButton` now defaults to enabled in v3.2.7, while still allowing users to disable it anytime.
8+
- **Safe migration behavior**: Added a one-time migration marker (`quickBlockDefaultV327Applied`) so this default is applied once and not re-forced on future updates.
9+
- **Quick block card action hardening**: Improved card anchoring and hover lifecycle so the quick cross stays visible on complex YouTube surfaces.
10+
- **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.
11+
12+
### Blocking Stability Fixes
13+
14+
- **Comment block isolation**: Comment-origin block actions are now context-isolated from watch/playlist card logic.
15+
- **Playlist autoplay regression fix**: Blocking from comment menus no longer triggers unintended playlist row hide/next-video transitions.
16+
- **Context-safe identity path**: Comment-origin actions skip video-card prefetch/identity merge paths that could leak currently-playing card identity.
17+
18+
### Release Notes + What’s New
19+
20+
- **v3.2.7 release note refreshed** in `data/release_notes.json` with short, feature-first highlights.
21+
22+
### Documentation Updates
23+
24+
- Updated quick-block behavior and reliability notes in:
25+
- `docs/FUNCTIONALITY.md`
26+
- `docs/ARCHITECTURE.md`
27+
- `docs/CODEMAP.md`
28+
- Added README feature note for the quick block cross and updated badge/version metadata.
29+
330
## Version 3.2.6
431

532
### UI/UX Beautification & Content-Based Filtering
@@ -422,4 +449,4 @@
422449
- Implemented channel blocking.
423450

424451
## Version 1.0.0
425-
- Initial release.
452+
- Initial release.

README.md

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,11 @@
22
<img src="https://github.com/varshneydevansh/FilterTube/blob/master/icons/icon-128.png" alt="FilterTube Icon">
33
<h1>FilterTube</h1>
44
<p>Peace of Mind for your Digital Space</p>
5+
6+
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/varshneydevansh/FilterTube) ![Version](https://img.shields.io/badge/version-3.2.7-blue.svg) ![License](https://img.shields.io/badge/license-MIT-green.svg) ![Lines of Code](https://img.shields.io/badge/total%20lines-68.0k-brightgreen.svg) ![JavaScript LoC](https://img.shields.io/badge/javascript-44.8k%20lines-yellow.svg) ![Top Language](https://img.shields.io/github/languages/top/varshneydevansh/FilterTube?color=f1e05a) ![Repo Size](https://img.shields.io/github/repo-size/varshneydevansh/FilterTube?color=orange)
7+
58
</div>
69

7-
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/varshneydevansh/FilterTube)
8-
9-
[![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/filtertube)
10-
11-
![Version](https://img.shields.io/badge/version-3.2.6-blue.svg)
12-
![License](https://img.shields.io/badge/license-MIT-green.svg)
13-
![Lines of Code](https://img.shields.io/badge/total%20lines-61.6k-brightgreen.svg)
14-
![JavaScript LoC](https://img.shields.io/badge/javascript-38.9k%20lines-yellow.svg)
15-
![Top Language](https://img.shields.io/badge/language-JavaScript-f1e05a.svg)
16-
![Repo Size](https://img.shields.io/github/repo-size/varshneydevansh/FilterTube?color=orange)
17-
18-
[![Top Languages](https://github-readme-stats.vercel.app/api/top-langs/?username=varshneydevansh&repo=FilterTube&layout=compact&theme=default&hide_border=true)](https://github.com/varshneydevansh/FilterTube)
19-
2010
## Overview
2111

2212
FilterTube is a browser extension that gives you control over your YouTube feed. Filter videos, shorts, channels, and comments using keywords and smart rules—all processing happens privately on your device.
@@ -30,6 +20,7 @@ FilterTube is a browser extension that gives you control over your YouTube feed.
3020
- **Hide Shorts**: Optional toggle to remove every Shorts shelf and player hand-off.
3121
- **Smart Matching**: Choose partial or whole-word matching to stay strict or flexible.
3222
- **Shelf & Playlist Cleanup**: Refilters shelves and playlists so blocked creators stay gone even after navigation.
23+
- **Quick Block Cross (v3.2.7)**: One-tap hover cross on cards to block instantly (enabled by default, can be disabled).
3324
- **Content-Based Filters (v3.2.6)**:
3425
- Filter by video duration (longer/shorter/between specific lengths)
3526
- Filter by upload date (newer/older/between specific dates)
@@ -231,7 +222,7 @@ FilterTube uses a robust hybrid blocking mechanism for YouTube Shorts.
231222
232223
Found a bug or have a feature request? [Open an issue on GitHub](https://github.com/varshneydevansh/FilterTube/issues).
233224
234-
Want to support the project? You can donate on Ko-fi: [ko-fi.com/filtertube](https://ko-fi.com/filtertube)
225+
Want to support the project? You can donate on Ko-fi: [![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/filtertube)
235226
236227
## License
237228

build.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ main().catch(err => {
5151
});
5252

5353
async function main() {
54+
console.log('\n📊 Updating README badges with latest stats...');
55+
await updateReadmeBadges(VERSION);
56+
5457
// Clean and create dist directory
5558
// Only clean if we are building everything, otherwise we wipe previous specific builds
5659
if (!targetBrowser && fs.existsSync('dist')) {
@@ -193,10 +196,6 @@ async function maybePromptRelease(version, zipPaths) {
193196
return;
194197
}
195198

196-
// Update README badges with latest LoC stats
197-
console.log('\n📊 Updating README badges with latest stats...');
198-
await updateReadmeBadges(version);
199-
200199
const token = process.env.GITHUB_TOKEN;
201200
if (!token) {
202201
console.error('❌ GITHUB_TOKEN is not set; cannot publish release.');
@@ -493,4 +492,4 @@ async function updateReadmeBadges(version) {
493492
} catch (err) {
494493
console.warn('⚠️ Failed to update README badges:', err.message);
495494
}
496-
}
495+
}

css/components.css

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -855,6 +855,22 @@ html[data-theme="dark"] input:checked+.slider:before {
855855
background-color: white;
856856
}
857857

858+
.ft-kids-sub-toggle-row {
859+
padding-left: 12px;
860+
border-left: 3px solid rgba(168, 85, 247, 0.55);
861+
background: rgba(168, 85, 247, 0.06);
862+
}
863+
864+
html[data-theme="dark"] .ft-kids-sub-toggle-row {
865+
border-left-color: rgba(216, 180, 254, 0.55);
866+
background: rgba(168, 85, 247, 0.12);
867+
}
868+
869+
.ft-kids-sub-toggle-row .toggle-title {
870+
color: var(--ft-color-text-secondary);
871+
font-size: 13px;
872+
}
873+
858874

859875
/* --- Lists (Keywords/Channels) --- */
860876
.advanced-list {

css/popup.css

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -895,6 +895,13 @@ html[data-theme="dark"] .stat-card {
895895
color: var(--ft-color-text-primary);
896896
}
897897

898+
.ft-topbar-list-mode .exact-toggle {
899+
font-size: 11px;
900+
line-height: 1;
901+
padding: 6px 10px;
902+
white-space: nowrap;
903+
}
904+
898905
.video-filter-range {
899906
display: flex;
900907
align-items: center;
@@ -925,7 +932,76 @@ html[data-theme="dark"] .stat-card {
925932
border-radius: 10px;
926933
padding: 6px 10px;
927934
font-size: 12px;
935+
}
936+
937+
.video-filters-manage:hover {
938+
border-color: var(--ft-color-primary);
939+
color: var(--ft-color-primary);
940+
}
941+
942+
.ft-category-options {
943+
display: flex;
944+
flex-wrap: wrap;
945+
gap: 10px;
946+
max-height: 240px;
947+
overflow: auto;
948+
padding-right: 4px;
949+
}
950+
951+
.ft-category-pill {
952+
display: inline-flex;
953+
align-items: center;
954+
gap: 8px;
955+
padding: 6px 12px;
956+
border-radius: 99px;
957+
border: 1px solid var(--ft-category-color-border, var(--ft-color-sem-neutral-border));
958+
background: var(--ft-category-color-bg, var(--ft-color-bg-surface));
959+
color: var(--ft-color-text-secondary);
928960
cursor: pointer;
961+
font-size: 12px;
962+
font-weight: 500;
963+
transition: all 0.2s;
964+
user-select: none;
965+
text-align: left;
966+
min-height: 32px;
967+
}
968+
969+
.ft-category-pill:hover {
970+
border-color: var(--ft-category-color, var(--ft-color-brand-primary));
971+
background: var(--ft-category-color-bg-active, var(--ft-color-bg-surface));
972+
}
973+
974+
.ft-category-pill.active,
975+
.ft-category-pill[aria-pressed="true"] {
976+
background: var(--ft-category-color-bg-active, rgba(255, 241, 242, 0.9));
977+
border-color: var(--ft-category-color, var(--ft-color-brand-primary));
978+
color: var(--ft-color-text-primary);
979+
}
980+
981+
.ft-category-pill:focus-visible {
982+
outline: 2px solid var(--ft-category-color, var(--ft-color-brand-primary));
983+
outline-offset: 2px;
984+
}
985+
986+
.ft-category-swatch {
987+
width: 10px;
988+
height: 10px;
989+
border-radius: 999px;
990+
background: var(--ft-category-color, var(--ft-color-brand-primary));
991+
border: 1px solid rgba(0, 0, 0, 0.12);
992+
flex: 0 0 auto;
993+
}
994+
995+
.ft-category-label {
996+
font-size: 11px;
997+
font-weight: 600;
998+
letter-spacing: 0.03em;
999+
text-transform: uppercase;
1000+
color: var(--ft-color-text-primary);
1001+
}
1002+
1003+
html[data-theme="dark"] .ft-category-pill {
1004+
background: var(--ft-color-bg-elevated);
9291005
}
9301006

9311007
.video-filters-manage:hover {

css/tab-view.css

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1846,6 +1846,117 @@ html[data-theme="dark"] .video-filter-conditions-row {
18461846
background: transparent;
18471847
}
18481848

1849+
/* Category Filters Section Styles */
1850+
.category-filters-section {
1851+
margin-top: 20px;
1852+
border-top: 1px solid var(--ft-color-sem-neutral-border);
1853+
}
1854+
1855+
.category-filters-section .content-control-group__header {
1856+
padding: 12px 16px;
1857+
background: transparent;
1858+
}
1859+
1860+
.category-filters-section .content-control-group__title {
1861+
font-size: 14px;
1862+
font-weight: 600;
1863+
color: var(--ft-color-text-primary);
1864+
}
1865+
1866+
.ft-category-controls {
1867+
display: flex;
1868+
align-items: center;
1869+
gap: 12px;
1870+
}
1871+
1872+
.ft-category-controls .select-input {
1873+
min-width: 170px;
1874+
}
1875+
1876+
.ft-category-controls .ft-select-menu .ft-select-trigger {
1877+
min-width: 180px;
1878+
width: 210px;
1879+
padding: 6px 10px;
1880+
}
1881+
1882+
.ft-category-panel {
1883+
display: none;
1884+
padding: 12px 16px 16px;
1885+
}
1886+
1887+
.ft-category-search {
1888+
margin-bottom: 10px;
1889+
}
1890+
1891+
.ft-category-options {
1892+
display: flex;
1893+
flex-wrap: wrap;
1894+
gap: 10px;
1895+
max-height: 260px;
1896+
overflow: auto;
1897+
padding-right: 4px;
1898+
}
1899+
1900+
.ft-category-pill {
1901+
display: inline-flex;
1902+
align-items: center;
1903+
gap: 8px;
1904+
padding: 6px 12px;
1905+
border-radius: 99px;
1906+
border: 1px solid var(--ft-category-color-border, var(--ft-color-sem-neutral-border));
1907+
background: var(--ft-category-color-bg, var(--ft-color-bg-surface));
1908+
color: var(--ft-color-text-secondary);
1909+
cursor: pointer;
1910+
font-size: 12px;
1911+
font-weight: 500;
1912+
transition: all 0.2s;
1913+
user-select: none;
1914+
text-align: left;
1915+
min-height: 32px;
1916+
}
1917+
1918+
.ft-category-pill:hover {
1919+
border-color: var(--ft-category-color, var(--ft-color-brand-primary));
1920+
background: var(--ft-category-color-bg-active, var(--ft-color-bg-surface));
1921+
}
1922+
1923+
.ft-category-pill.active,
1924+
.ft-category-pill[aria-pressed="true"] {
1925+
background: var(--ft-category-color-bg-active, rgba(255, 241, 242, 0.9));
1926+
border-color: var(--ft-category-color, var(--ft-color-brand-primary));
1927+
color: var(--ft-color-text-primary);
1928+
}
1929+
1930+
.ft-category-pill:focus-visible {
1931+
outline: 2px solid var(--ft-category-color, var(--ft-color-brand-primary));
1932+
outline-offset: 2px;
1933+
}
1934+
1935+
.ft-category-swatch {
1936+
width: 10px;
1937+
height: 10px;
1938+
border-radius: 999px;
1939+
background: var(--ft-category-color, var(--ft-color-brand-primary));
1940+
border: 1px solid rgba(0, 0, 0, 0.12);
1941+
flex: 0 0 auto;
1942+
}
1943+
1944+
.ft-category-label {
1945+
font-size: 11px;
1946+
font-weight: 600;
1947+
letter-spacing: 0.03em;
1948+
text-transform: uppercase;
1949+
color: var(--ft-color-text-primary);
1950+
}
1951+
1952+
html[data-theme="dark"] .ft-category-option {
1953+
background: var(--ft-color-bg-elevated);
1954+
}
1955+
1956+
html[data-theme="dark"] .ft-category-pill {
1957+
background: var(--ft-color-bg-elevated);
1958+
}
1959+
18491960
html[data-theme="dark"] .video-filter-compact-label,
18501961
html[data-theme="dark"] .video-filter-compact-text {
18511962
color: var(--ft-color-text-secondary-dark);

data/release_notes.json

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,18 @@
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.2.7",
7+
"headline": "Category Filters + Quick Block Hover Cross + Mobile 3 Dot UI & Quick Cross Block Support",
8+
"summary": "New category filtering, one-tap quick cross block enabled by default",
9+
"bannerSummary": "Use new category filters and quick cross block from card hover; and better support for YT Mobile blocking.",
10+
"highlights": [
11+
"Category Filtering: Block or allow videos by YouTube category (Music, Gaming, Education, etc.)",
12+
"Quick Cross Block Default ON: `Show Quick Cross Block button` is enabled by default in v3.2.7 (users can still disable it)",
13+
"Mobile Blocking: Better support for YT Mobile blocking for 3 Dot UI & Quick Cross Block currently working on Home Page"
14+
],
15+
"detailsUrl": "https://github.com/varshneydevansh/FilterTube/releases/tag/v3.2.7"
16+
},
517
{
618
"version": "3.2.6",
719
"headline": "UI/UX Beautification & Content-Based Filtering",
@@ -229,4 +241,4 @@
229241
],
230242
"detailsUrl": "https://github.com/varshneydevansh/FilterTube/commit/076baa2ecb14a3e8f5bdf420caa1af7096548f15"
231243
}
232-
]
244+
]

0 commit comments

Comments
 (0)