Skip to content

Releases: DialmasterOrg/Youtarr

Release v1.20.0

18 Sep 04:59

Choose a tag to compare

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.0

Or use latest:

docker pull dialmaster/youtarr:latest

Full Changelog

Full Changelog: vv1.19.0...v1.20.0

Release v1.19.0

16 Sep 01:00

Choose a tag to compare

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.0

Or use latest:

docker pull dialmaster/youtarr:latest

Full Changelog

Full Changelog: vv1.18.1...v1.19.0

Release v1.18.1

14 Sep 18:45

Choose a tag to compare

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.1

Or use latest:

docker pull dialmaster/youtarr:latest

Full Changelog

Full Changelog: vv1.18.0...v1.18.1

Release v1.18.0

14 Sep 18:23

Choose a tag to compare

What's Changed

1.18.0 (2025-09-14)

Features

  • Create Release workflow enhancement (2bfbbf0)

Docker Image

docker pull dialmaster/youtarr:v1.18.0

Or use latest:

docker pull dialmaster/youtarr:latest

Full 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.

14 Sep 16:13
b13311b

Choose a tag to compare

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

11 Sep 23:55
95d3b48

Choose a tag to compare

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

08 Sep 02:59
11bf645

Choose a tag to compare

What's Changed

  • feat: implement full UTF-8 (utf8mb4) support for database and migrations by @overcookedpanda in #95

New Contributors

Full Changelog: v1.17.28...v1.17.29

v1.17.28

07 Sep 03:43
36c4b53

Choose a tag to compare

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