Skip to content

Commit 04d595c

Browse files
BUMP: v3.2.6 UI UX improvement and duration, date, uppercase control
1 parent a97f578 commit 04d595c

33 files changed

Lines changed: 5199 additions & 286 deletions

CHANGELOG.md

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

3+
## Version 3.2.6
4+
5+
### UI/UX Beautification & Content-Based Filtering
6+
7+
- **Typography Overhaul**: Complete redesign from serif to modern sans-serif system using Inter font family for improved readability and consistency.
8+
- **Font Scale Refinement**: Tighter increments (12px-30px) with optimized line heights and letter spacing for better visual hierarchy.
9+
- **Content-Based Filters**: Three new advanced filtering capabilities:
10+
- **Duration Filter**: Hide videos by length (longer/shorter/between specific durations)
11+
- **Upload Date Filter**: Filter by publish date (newer/older/between specific dates)
12+
- **Uppercase Filter**: Detect and filter clickbait ALL CAPS titles (single_word/all_words/percentage modes)
13+
- **videoMetaMap System**: Persistent storage of video metadata (duration, publish dates) with intelligent batching (75ms window, 1500 entry cap).
14+
- **Enhanced Dropdowns & Selects**: 3px left accent borders, floating shadows, improved hover effects, and mobile responsiveness.
15+
- **Custom Date Inputs**: Styled to match select components with consistent visual language.
16+
- **Button Improvements**:
17+
- Import button: Green accent for visual distinction
18+
- Primary button: Forced white text in dark mode for readability
19+
- Danger button: Improved contrast (#fca5a5)
20+
- **Toggle Switch Refinements**: Better dark mode contrast with #e2e8f0 knob color.
21+
- **Brand Toggle Button**: Visual extension status indicator with enabled/disabled states and 7px uppercase labels.
22+
- **Dark Mode Enhancements**:
23+
- Search input: Orange accent highlighting (rgba(217, 119, 6, 0.7))
24+
- Card boundaries: Consistent #404040 borders across all cards
25+
- **Kids Mode Theming**: Vibrant pink (#EC4899) and purple (#8B5CF6) gradient design system:
26+
- Tab navigation with gradient backgrounds
27+
- Input fields with gradient borders
28+
- List items with gradient hover effects
29+
- Sidebar navigation styling
30+
- Dark mode adaptations with lighter shades
31+
- **Dashboard Improvements**:
32+
- Surface-specific stats tracking (separate for Main and Kids)
33+
- Enhanced stat cards with larger values (2.25rem) and better spacing
34+
- Donate promo card with gradient styling
35+
- **Advance Video Filters Section**: Collapsible UI in popup with inline controls and full-width card-style radio options in tab view.
36+
37+
### Documentation Updates
38+
39+
- **ARCHITECTURE.md**: Added videoMetaMap extraction flow, content filters architecture, and fixed broken mermaid diagram.
40+
- **TECHNICAL.md**: Comprehensive typography system documentation and UI component styling guide (~800 lines).
41+
- **FUNCTIONALITY.md**: Complete content filters documentation with examples and use cases (~450 lines).
42+
- **YOUTUBE_KIDS_INTEGRATION.md**: Kids Mode theming documentation with accessibility considerations (~200 lines).
43+
- **CODEMAP.md**: Updated to v3.2.5 with feature overview.
44+
- **README.md**: Added content-based filters to features list.
45+
346
## Version 3.2.5
447

548
### Whitelist Mode Promoted + Stability

README.md

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,15 @@
88

99
[![Ko-fi](https://ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/filtertube)
1010

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+
1120
## Overview
1221

1322
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.
@@ -21,6 +30,10 @@ FilterTube is a browser extension that gives you control over your YouTube feed.
2130
- **Hide Shorts**: Optional toggle to remove every Shorts shelf and player hand-off.
2231
- **Smart Matching**: Choose partial or whole-word matching to stay strict or flexible.
2332
- **Shelf & Playlist Cleanup**: Refilters shelves and playlists so blocked creators stay gone even after navigation.
33+
- **Content-Based Filters (v3.2.6)**:
34+
- Filter by video duration (longer/shorter/between specific lengths)
35+
- Filter by upload date (newer/older/between specific dates)
36+
- Detect and filter clickbait ALL CAPS titles
2437

2538
### Channel & Data Management
2639

@@ -51,6 +64,7 @@ FilterTube is a browser extension that gives you control over your YouTube feed.
5164
- **Instant Blocking**: 3-dot menus show correct channel names immediately—no "Fetching..." delays.
5265
- **Network Reduction**: Most channel identity comes from intercepted JSON, not page fetches.
5366
- **100% Private**: No data leaves your browser. No analytics. No tracking.
67+
- **Modern UI/UX (v3.2.6)**: Clean typography, refined components, enhanced dark mode, and Kids Mode theming.
5468

5569
### Proactive Channel Identity (v3.2.2)
5670

build.js

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ const path = require('path');
2020
const archiver = require('archiver');
2121
const https = require('https');
2222
const readline = require('readline');
23+
const { execSync } = require('child_process');
2324
const { version: PACKAGE_VERSION } = require('./package.json');
2425

2526
// Configuration
@@ -192,6 +193,10 @@ async function maybePromptRelease(version, zipPaths) {
192193
return;
193194
}
194195

196+
// Update README badges with latest LoC stats
197+
console.log('\n📊 Updating README badges with latest stats...');
198+
await updateReadmeBadges(version);
199+
195200
const token = process.env.GITHUB_TOKEN;
196201
if (!token) {
197202
console.error('❌ GITHUB_TOKEN is not set; cannot publish release.');
@@ -428,4 +433,64 @@ function promptYesNo(question) {
428433
resolve(answer.trim().toLowerCase() === 'y');
429434
});
430435
});
436+
}
437+
438+
async function updateReadmeBadges(version) {
439+
try {
440+
// Calculate total lines of code
441+
const totalLinesRaw = execSync('git ls-files | xargs wc -l 2>/dev/null | tail -1', { encoding: 'utf8' });
442+
const totalLines = parseInt(totalLinesRaw.trim().split(/\s+/)[0], 10);
443+
444+
// Calculate JavaScript lines
445+
const jsLinesRaw = execSync("git ls-files | grep '\\.js$' | xargs wc -l 2>/dev/null | tail -1", { encoding: 'utf8' });
446+
const jsLines = parseInt(jsLinesRaw.trim().split(/\s+/)[0], 10);
447+
448+
if (!totalLines || !jsLines) {
449+
console.warn('⚠️ Could not calculate LoC stats; skipping badge update.');
450+
return;
451+
}
452+
453+
// Format numbers (e.g., 61617 -> "61.6k")
454+
const formatLoC = (num) => {
455+
if (num >= 1000) {
456+
return (num / 1000).toFixed(1) + 'k';
457+
}
458+
return num.toString();
459+
};
460+
461+
const totalFormatted = formatLoC(totalLines);
462+
const jsFormatted = formatLoC(jsLines);
463+
464+
console.log(` Total lines: ${totalLines.toLocaleString()} (${totalFormatted})`);
465+
console.log(` JavaScript: ${jsLines.toLocaleString()} (${jsFormatted})`);
466+
467+
// Read README
468+
const readmePath = 'README.md';
469+
let readme = fs.readFileSync(readmePath, 'utf8');
470+
471+
// Update version badge
472+
readme = readme.replace(
473+
/!\[Version\]\(https:\/\/img\.shields\.io\/badge\/version-[^)]+\)/,
474+
`![Version](https://img.shields.io/badge/version-${version}-blue.svg)`
475+
);
476+
477+
// Update total lines badge
478+
readme = readme.replace(
479+
/!\[Lines of Code\]\(https:\/\/img\.shields\.io\/badge\/total%20lines-[^)]+\)/,
480+
`![Lines of Code](https://img.shields.io/badge/total%20lines-${totalFormatted}-brightgreen.svg)`
481+
);
482+
483+
// Update JavaScript LoC badge
484+
readme = readme.replace(
485+
/!\[JavaScript LoC\]\(https:\/\/img\.shields\.io\/badge\/javascript-[^)]+\)/,
486+
`![JavaScript LoC](https://img.shields.io/badge/javascript-${jsFormatted}%20lines-yellow.svg)`
487+
);
488+
489+
// Write updated README
490+
fs.writeFileSync(readmePath, readme, 'utf8');
491+
console.log('✅ README.md badges updated successfully.');
492+
493+
} catch (err) {
494+
console.warn('⚠️ Failed to update README badges:', err.message);
495+
}
431496
}

0 commit comments

Comments
 (0)