Releases: DialmasterOrg/Youtarr
Release v1.20.0
What's Changed
1.20.0 (2025-09-18)
Features
- set downloaded video timestamps to original YouTube upload date (40d360c)
Bug Fixes
- Do not write unused playlist-metafiles for channels (4661cde)
- Lint fix, remove unneccesary line (f302394)
Documentation
- add SSH tunneling instructions for headless server setup (00946df)
- update CHANGELOG for v1.19.0 (cc7cc40)
Docker Image
docker pull dialmaster/youtarr:v1.20.0Or use latest:
docker pull dialmaster/youtarr:latestFull Changelog
Full Changelog: vv1.19.0...v1.20.0
Release v1.19.0
What's Changed
1.19.0 (2025-09-16)
Features
- add advanced manual download UI with video validation and custom settings (0802b45)
- add dynamic workflow and job names for dry run clarity (efbb640)
Bug Fixes
- enable new channels properly and add loading states to channel manager (98fba9d)
Documentation
- add ISC license and update README with standalone functionality (92dc88d)
- update CHANGELOG for v1.18.1 (f219b15)
- update documentation for accuracy and clarity (24aac9d)
- Update README with new download UI changes (b4d958f)
Docker Image
docker pull dialmaster/youtarr:v1.19.0Or use latest:
docker pull dialmaster/youtarr:latestFull Changelog
Full Changelog: vv1.18.1...v1.19.0
Release v1.18.1
What's Changed
1.18.1 (2025-09-14)
Bug Fixes
- update package versions before Docker build and optimize CI triggers (78394c5)
Documentation
- update CHANGELOG for v1.18.0 (f526a80)
Docker Image
docker pull dialmaster/youtarr:v1.18.1Or use latest:
docker pull dialmaster/youtarr:latestFull Changelog
Full Changelog: vv1.18.0...v1.18.1
Release v1.18.0
What's Changed
1.18.0 (2025-09-14)
Features
- Create Release workflow enhancement (2bfbbf0)
Docker Image
docker pull dialmaster/youtarr:v1.18.0Or use latest:
docker pull dialmaster/youtarr:latestFull Changelog
Full Changelog: v1.17.31...v1.18.0
DB-backed channel management with smarter yt-dlp fetching, storage status UX, daily backfill, and CI + tests.
This release moves channel management from a flat file to the database (with an enabled flag), makes video discovery more reliable by using canonical channel IDs and explicit “Videos” tab selection, adds a storage status indicator in the UI, and introduces a daily job to backfill metadata from your download archive. It also adds GitHub Actions CI and expands both backend and frontend tests, improving reliability and visibility.
Changes
- Database/migrations
- Add enabled BOOLEAN NOT NULL DEFAULT false to channels.
- Migration seeds enabled=true using config/channels.list, trims URL CRs, and backups the list file; marked irreversible.
- server/models/channel.js: add enabled field.
- Backend
- New server/modules/archiveModule.js to read config/complete.list.
- Channel pipeline refactor in channelModule.js:
- Canonicalize channel URLs from channel_id (UU→UC), normalize handle URLs.
- Prefer “Videos” tab entries; exclude Shorts; dynamic fetch size based on recency.
- Upsert channels by channel_id, backfill legacy rows found by URL.
- Generate temp channels file from DB for yt-dlp auto-downloads.
- Better caching, error handling, and thumbnail processing.
- downloadModule.js: use DB-generated channel list, cleanup temp files, add --extractor-args youtubetab:tab=videos;sort=dd.
- jobModule.js: daily scheduled backfill from complete.list + jobs/info/*.info.json; upsert to channelvideos when saving jobs.
- videosModule.js: use LEFT JOIN and COALESCE to sort items without job rows.
- configModule.js: add getStorageStatus() via df -B 1 on /usr/src/app/data.
- server.js routes:
- GET /getchannels -> reads enabled channels from DB.
- POST /updatechannels -> enables/disables channels.
- POST /addchannelinfo -> normalizes + stores new channel.
- GET /storage-status -> returns disk usage.
- GET /getchannelvideos/:channelId -> returns richer response with cache/yt_dlp source, lastFetched.
- Frontend
- New StorageStatus chip in App.tsx header; mobile/desktop behavior with tooltip/snackbar.
- Channel Manager: confirm deletes, scrolling, non-mutating sorts, normalized URL handling, better testability (ids), and layout improvements.
- Channel Videos: remove client-side Shorts filter (now server-side), freshness chip, clearer loading state, “Download Selected” label.
- Videos Page: error alert on fetch failure; filter menu test ids; stable behavior in mobile/desktop.
- Remove unused PLexAuth.tsx.
- CI and testing
- Add .github/workflows/ci.yml: lint, backend/frontend tests, coverage artifacts, PR comment.
- Jest config/setup at root for backend; CRA tests for client; scripts for npm test, split runs, and coverage.
- Add server module tests (channel, archive, config) and client tests (ChannelManager, LocalLogin, VideosPage).
- Add client testing libs and root dev deps (jest, supertest, types).
v1.17.30
What's Changed
This release introduces a major app overhaul, replacing the mandatory Plex OAuth requirement with a flexible local authentication system, while also improving video handling and filtering capabilities. It also removes the requirement to use a Youtube API Key and makes the app work just fine without a Plex integration, plus additional small UI improvements and video handling improvements.
Authentication Changes
New local authentication system with username/password and session management
Plex OAuth now optional - only required for library integration features
Initial setup flow for creating admin accounts on first run
Security improvements including proper session tracking and logout functionality
Prevents legacy auth bypass during initial setup by clearing all tokens when setup is required
Video Handling Improvements
Members-only content filtering - Show when videos are subscribers-only in channel display and automatically skips subscriber-only videos to prevent failed downloads
Accurate video timestamps - fixes issue where videos showed today's date instead of actual publish date
YouTube Shorts filtering - excludes videos under 70 seconds from automatic downloads
Removed YouTube API dependency - now uses yt-dlp exclusively for all video fetching
UI/UX Enhancements
Simplified Configuration UI with improved Plex testing and setup support
Added support for multiple channel formats when adding new channels
Added data freshness indicators for channel videos
New initial setup wizard for first-time users
Seamless migration path for existing users with backward compatibility
Documentation & DevEx
Comprehensive documentation updates with dedicated setup and troubleshooting guides
Enhanced setup scripts with better validation and error messages
Improved development scripts for easier local development
Database Changes
Added sessions table for managing user sessions
Added availability to channelvideos table in order to show and restrict subscriber-only videos
Database migrations included for smooth upgrades
This update makes the application more self-contained and user-friendly by removing external service dependencies while maintaining optional integrations for users who want them.
- Add local authentication system and improve video handling by @dialmaster in #98
Full Changelog: v1.17.29...v1.17.30
v1.17.29
What's Changed
- feat: implement full UTF-8 (utf8mb4) support for database and migrations by @overcookedpanda in #95
New Contributors
- @overcookedpanda made their first contribution in #95
Full Changelog: v1.17.28...v1.17.29
v1.17.28
What's Changed
- feat: upgrade to Node 20 and other fixes by @dialmaster in #92
- refactor: migrate to docker-compose with separate DB container by @dialmaster in #93
- feat: add configurable video download resolution by @dialmaster in #94
Full Changelog: v1.17.23...v1.17.28