Releases: thejudge22/youtube-watcher
v2026-05-08 - QuickPlay and API keys
What's New
QuickPlay Integration
- QuickPlay tab — A new dedicated tab in the main app for fast access to your oldest unwatched content. Shows the oldest 50 saved videos and oldest 50 saved shorts side-by-side with one-click playlist buttons.
- Standalone QuickPlay client — A self-contained
quickplay.htmlfile that can be copied to your desktop and opened directly in a browser. Uses API key auth and opens oldest saved content as YouTube playlists.
Authentication
- API key support — Protected endpoints now accept
X-API-Keyheader for programmatic access. Generate keys via./scripts/generate-api-key.sh. - CORS configuration — New
CORS_ORIGINSenv var to enable cross-origin access when needed (e.g. for the standalone QuickPlay client).
Developer Experience
- Version numbering switched to date-based format (
vYYYY-MM-DD) for clearer release tracking. - Health endpoint now includes
versionandapi_versionfields. - workflow_dispatch trigger added to the Docker build action for manual image builds.
Upgrade Notes
- Add
API_KEYto your.envif you want to use the standalone QuickPlay client or other API key integrations. - If opening
quickplay.htmldirectly viafile://, setCORS_ORIGINS=nullin your.env.
v2026-04-20: Updated Shorts Support
This release includes updates to the shorts detection system, correcting a longstanding bug. Options also included to detect shorts automatically upon refresh of feeds. Allows sorting shorts from other long-form videos.
Closes issue #55
Note about versions: I'm moving from numbered releases to date releases. I never liked version numbers anyway.
Full Changelog: v1.13.0...v2026-04-20
v1.13.0 - Auto-Refresh & Inbox Improvements
What's New in v1.13.0
This release adds automatic scheduled feed refresh so you never miss new videos, an inbox count badge for quick visibility, and several dependency updates and fixes.
🚀 Major Features
Automatic Feed Refresh (#54)
Automatically check your channels for new videos on a schedule
Inbox Count Badge (#54)
See your unread video count at a glance
🐛 Bug Fixes
- Fixed adding channels by handle only (without full URL) (#49)
- Removed 100-video limit on Inbox page (#50)
Full Changelog: v1.12.0...v1.13.0
v1.12.0 - PWA Support, Authentication & Dark Mode
What's New in v1.12.0
This release brings major new features including Progressive Web App (PWA) support, optional authentication, dark/light mode theming, and several UI improvements.
NOTE: This release is the first to have the .env file for configuration. Previous versions set variables inside of the docker compose, but these have been moved to the .env file. Look at the .env.example file for reference.
🚀 Major Features
Progressive Web App (PWA) Support (#40)
YouTube-Watcher can now be installed as a Progressive Web App on desktop and mobile devices.
Optional Authentication (#41)
Secure your instance when exposing to public networks:
- JWT-based authentication with 14-day token expiry
- PBKDF2-SHA256 password hashing with Base64 encoding
- Login page with dark/light mode support
- Logout button in header when auth is enabled
- New helper script:
scripts/generate-password-hash.sh
Dark/Light Mode Toggle (#43)
Choose your preferred theme:
- Theme toggle with animated sun/moon icons
- Persistent preference stored in localStorage
- Full theme support for all UI components
- Proper contrast ratios for both themes
🐛 Bug Fixes
- Fixed EU cookie consent blocking channel additions for EU users
- Fixed compact mode video card clickability issues
- Fixed channel groups jumping around when saving videos
📝 Changes
- Updated Docker Compose files to support
.envconfiguration
Full Changelog: v1.11.0...v1.12.0
v1.11.0 - UI Refresh and Mobile Improvements
✨ New Features
Modernized User Interface
- Complete visual refresh with glassmorphism header effects and backdrop blur
Enhanced Video Cards
- Play button overlay on thumbnail hover for quick access
- Shimmer loading animation while thumbnails load
Improved Channel Cards
- Actions now appear on hover for cleaner interface
- Added online indicator with green status dot
- Better typography and spacing
Navigation Enhancements
- Added icons to all navigation items
- Animated active state indicator with gradient underline
- Smooth hover transitions
🐛 Bug Fixes
Mobile Touch Selection
- Fixed touch selection issues on mobile devices by partitioning cards into select zone (left) and scroll zone (right)
- Prevents accidental selections while scrolling on touch devices
🔧 Changes
Settings Page
- Removed "Remove All Saved Videos" button for safety
Full Changelog: v1.10.0...v1.11.0
v1.10.0 Playlist Import and Mobile Device Improvements
What's New
🎥 YouTube Playlist Import
Import videos directly from YouTube playlists! This new feature allows you to quickly add all videos from a playlist to your saved collection.
How to use:
- Go to Settings → Import/Export
- Click "Import from Playlist"
- Paste a YouTube playlist URL
- All videos from the playlist will be imported
🖱️ Touch Drag Selection (Mobile Support)
Mobile users can now select multiple videos using touch drag gestures!
How to use:
- Enable selection mode on mobile
- Touch and drag across videos to select multiple at once
- Visual preview shows which videos will be selected
- Release to complete selection
Other updates
Desktop users can now select a range of videos using shift-click!
Selection mode now persists after playing videos from playlists!
Updated Docker configuration files for improved deployment.
Upgrade Notes
Database
No database migrations required for this release.
Breaking Changes
None.
Configuration
No new configuration changes required.
Full Changelog: v1.9.0...v1.10.0
v1.9.0: Automated Docker Builds
Automated docker builds are now working. Rebuilds on every push. Stable versions are available with a tag based on the release number.
Bug Fixes:
781d983 - Fix #33: Use stable alphabetical sort for Inbox channel groups
Ensures consistent ordering of channels in the inbox view
dfb4d30 - Fix #34: Use case-insensitive sorting for channel names
Improves user experience by sorting channel names regardless of letter case
e9aa1cc - Fix #35: Display user-friendly message when adding duplicate channel
Provides clear feedback when attempting to add a channel that's already being tracked
Full Changelog: v1.8.0...v1.9.0
v1.8.0 - Bug Fixes and Pagination
Saved Videos Pagination (Issue #32)
What's Changed
This release adds pagination to the Saved Videos page, allowing you to browse collections larger than 100 videos.
Bug Fixes
- Fixed video imports to process in batches of 10 to allow for video metadata processing.
Full Changelog: v1.7.0...v1.8.0
v1.7.0 - Main Features Complete
I'm considering the application "Baseline" feature complete. All the basic features that I want are implemented. I'm not done with maintaining it, but all the features are in place for now. Feel free to open issues / PR if you want to see a specific feature in place.
What's Changed
Issue #8: YouTube Shorts Separation
- Shorts Detection: Automatically detect YouTube Shorts based on the URL.
Issue #12: Scheduled Backups
- Automatic Backups: Configure daily, weekly, or monthly scheduled backups
Issue #14: Saved Videos / Channels Separation
- Independent Entities: Saved videos and channels are now separate
- Flexible Saving: Save videos without requiring channel association
Technical Improvements
- Added
mappers.pyfor video data transformation - Enhanced RSS parser with channel information extraction
- New
video_service.pyfor video-related business logic
Full Changelog: v1.6.1...v1.7.0
v1.6.1 - More Backend Updates
What's New
This release focuses on technical debt resolution, improving code quality, infrastructure, and operational capabilities.
🔧 Tech-Debt Improvements
Separate Test Dependencies (#21)
- Removed pytest dependencies from production requirements
- Created
backend/requirements-dev.txtfor development dependencies - Updated
Dockerfile.devto install development dependencies - Added test running instructions to README.md
- Benefit: Production Docker images are now smaller and build faster without test dependencies
YouTube Video ID Index (#17)
- Added explicit
index=Truetoyoutube_video_idcolumn in Video model - Generated and applied Alembic migration for explicit index
- Documented indexing strategy with explanatory comments
- Benefit: Improved query performance and code clarity for video lookups by YouTube ID
Enhanced Health Check Endpoint (#22)
- Updated
/api/healthendpoint to verify database connectivity - Added
SELECT 1query to test database connection - Returns
{"status":"ok","database":"connected"}on success - Returns HTTP 503 with error details on database failure
- Benefit: Better monitoring, observability, and container orchestration support (Docker health checks, Kubernetes probes)
🧪 Test Improvements
- Fixed 10 pre-existing test failures
- Updated error response format assertions to match structured
ErrorResponseformat - Updated path parameter tests to use valid UUID formats
- Result: All 47 tests now pass with 0 failures
📦 Files Changed
Modified:
backend/requirements.txt- Removed test dependenciesDockerfile.dev- Updated to use requirements-dev.txtREADME.md- Added test running instructionsbackend/app/models/video.py- Added explicit index to youtube_video_idbackend/app/main.py- Enhanced health check endpointbackend/tests/test_api_channels.py- Fixed 4 testsbackend/tests/test_api_videos.py- Fixed 6 tests
Created:
backend/requirements-dev.txt- Development dependencies filebackend/alembic/versions/20260119_2214_63e6b77c0da0_add_explicit_index_to_youtube_video_id.py- Database migration
🔗 Related
Full Changelog: v1.6.0...v1.6.1
What's Changed
- Tech-Debt Resolution: Issues #17, #21, #22 by @thejudge22 in #31
Full Changelog: v1.6.0...v1.6.1