Skip to content

Youtarr

v1.71.0 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

automation emby jellyfin kodi plex plex-media-server
+4 more
scheduler self-hosted youtube-downloader yt-dlp

Summary

AI summary

Updates 1.71.0, Bug Fixes, and https://github.com/DialmasterOrg/Youtarr/issues/144 across a mixed release.

Changes in this release

Feature Medium

Adds playlist support with auto-download toggle and UI enhancements.

Adds playlist support with auto-download toggle and UI enhancements.

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds Jellyfin and Emby connection fields to configuration.

Adds Jellyfin and Emby connection fields to configuration.

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds new database tables: playlist, playlistvideo, playlist_sync_state.

Adds new database tables: playlist, playlistvideo, playlist_sync_state.

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds playlist visibility scope control for Plex.

Adds playlist visibility scope control for Plex.

Source: llm_adapter@2026-06-15

Confidence: high

Feature Medium

Adds /api/mediaservers and /api/playlists REST routes.

Adds /api/mediaservers and /api/playlists REST routes.

Source: llm_adapter@2026-06-15

Confidence: low

Feature Low

Seeds new channels with min_duration, max_duration, title_filter_regex, audio_format.

Seeds new channels with min_duration, max_duration, title_filter_regex, audio_format.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Reserves 'playlists' as a subfolder name in channel settings.

Reserves 'playlists' as a subfolder name in channel settings.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Improves Jellyfin/Emby user picker UI.

Improves Jellyfin/Emby user picker UI.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Runs playlistAutoDownload after channelAutoDownload in cron jobs.

Runs playlistAutoDownload after channelAutoDownload in cron jobs.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Introduces doPlaylistDownloads entry point in download module.

Introduces doPlaylistDownloads entry point in download module.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Includes playlists in channel download runs.

Includes playlists in channel download runs.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Makes public playlists server-global for Emby.

Makes public playlists server-global for Emby.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Adds generatePlaylistM3U function with relative paths.

Adds generatePlaylistM3U function with relative paths.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Adds aggregator index to media servers module.

Adds aggregator index to media servers module.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Introduces baseAdapter interface for media server adapters.

Introduces baseAdapter interface for media server adapters.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Implements embyAdapter for Emby integration.

Implements embyAdapter for Emby integration.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Implements jellyfinAdapter for Jellyfin integration.

Implements jellyfinAdapter for Jellyfin integration.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Adds plexAdapter for Plex integration.

Adds plexAdapter for Plex integration.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Adds serverRegistry to manage media server instances.

Adds serverRegistry to manage media server instances.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Creates Playlist, PlaylistVideo, and PlaylistSyncState Sequelize models.

Creates Playlist, PlaylistVideo, and PlaylistSyncState Sequelize models.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Registers Playlist models and their associations in the ORM.

Registers Playlist models and their associations in the ORM.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Adds getPlaylistInfo function with yt‑dlp metadata fetch to playlist module.

Adds getPlaylistInfo function with yt‑dlp metadata fetch to playlist module.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Adds download settings controls to playlist dialog UI.

Adds download settings controls to playlist dialog UI.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Provides a help modal on the playlists tab.

Provides a help modal on the playlists tab.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Allows per‑video download configuration within playlists.

Allows per‑video download configuration within playlists.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Enables downloading selected videos from a playlist.

Enables downloading selected videos from a playlist.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Sorts playlist items newest‑first and implements load‑more pagination.

Sorts playlist items newest‑first and implements load‑more pagination.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Regroups playlist detail header into action groups for better UX.

Regroups playlist detail header into action groups for better UX.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Allows optional plexPlaylistToken override for controlling playlist scope in PlexAdapter.

Allows optional plexPlaylistToken override for controlling playlist scope in PlexAdapter.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Introduces /api/mediaservers REST endpoints.

Introduces /api/mediaservers REST endpoints.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Feature Low

Introduces /api/playlists REST endpoints.

Introduces /api/playlists REST endpoints.

Source: granite4.1:30b@2026-06-15-audit

Confidence: low

Bugfix Medium

Fixes playlist video channel backfill on download.

Fixes playlist video channel backfill on download.

Source: llm_adapter@2026-06-15

Confidence: low

Bugfix Medium

Fixes handling of missing videos by re‑downloading them.

Fixes handling of missing videos by re‑downloading them.

Source: llm_adapter@2026-06-15

Confidence: low

Bugfix Medium

Fixes aggregation of channel and playlist totals in download dialog.

Fixes aggregation of channel and playlist totals in download dialog.

Source: llm_adapter@2026-06-15

Confidence: low

Bugfix Medium

Fixes cross‑platform basename extraction for Plex on Windows.

Fixes cross‑platform basename extraction for Plex on Windows.

Source: llm_adapter@2026-06-15

Confidence: low

Bugfix Medium

Fixes media‑server sync to stop retrying when the server is down.

Fixes media‑server sync to stop retrying when the server is down.

Source: llm_adapter@2026-06-15

Confidence: low

Full changelog

What's Changed

1.71.0 (2026-06-14)

Features

  • channelModule: seed min_duration, max_duration, title_filter_regex, audio_format on new channel insert (565a686)
  • channelSettings: reserve 'playlists' as a subfolder name (5adc508)
  • config: improve Jellyfin/Emby user picker UI (4e75b50), closes #144
  • config: register Jellyfin and Emby connection fields (7ca409d)
  • cron: run playlistAutoDownload after channelAutoDownload (0466f02)
  • db: add playlist, playlistvideo, playlist_sync_state tables (b8604a5)
  • downloadModule: add doPlaylistDownloads entry point (a752a3c)
  • downloads: include playlists in channel runs (e39baa0), closes #144
  • emby: make public playlists server-global (bd710f2), closes #144
  • m3uGenerator: add generatePlaylistM3U with relative paths (97074d4)
  • mediaServers: add aggregator index (2b0a47b)
  • mediaServers: add baseAdapter interface (17cd0ee)
  • mediaServers: add embyAdapter (9818505)
  • mediaServers: add jellyfinAdapter (785b2e2)
  • mediaServers: add mediaServerSync orchestrator (9f07399)
  • mediaServers: add plexAdapter (b5a4d28)
  • mediaServers: add serverRegistry (ca1ba9e)
  • models: add Playlist Sequelize model (99d058d)
  • models: add PlaylistSyncState Sequelize model (98fd51b)
  • models: add PlaylistVideo Sequelize model (4c750ed)
  • models: register Playlist models and associations (9cc092b)
  • playlistModule: add getPlaylistInfo with yt-dlp metadata fetch (d5b4228)
  • playlists: add auto-download toggle (331dad5), closes #144
  • playlists: add download settings to dialog (d992574), closes #144
  • playlists: add help modal to playlists tab (b8ec821), closes #144
  • playlists: add per-video download settings (e84e8e5), closes #144
  • playlists: download selected playlist videos (f88437c), closes #144
  • playlists: newest-first sort + load-more (a37a5b1), closes #144
  • playlists: regroup detail header into action groups (29fd4b9), closes #144
  • playlists: WIP playlist page, media server settings, and rename ChannelManager -> Subscriptions (ef5eb86)
  • plex: add playlist visibility scope control (835df1d), closes #144
  • plexAdapter: optional plexPlaylistToken override for playlist scope (bb516d4)
  • routes: add /api/mediaservers routes (c8070fb)
  • routes: add /api/playlists routes (453b46f)
  • routes: add POST /api/playlists/:playlistId/download (ecb2e0d)
  • routes: wire playlist + mediaservers routes (7db92f8)
  • subscriptions: back button on detail pages (e66c938), closes #144
  • subscriptions: context-sensitive add bar (e3ac30f), closes #144

Bug Fixes

  • downloadModule: wrap doPlaylistDownloads urls in body shape for doSpecificDownloads (db3982e)
  • downloads: aggregate channel+playlist total (3813bf2), closes #144
  • downloads: show per-channel quality in dialog (964a8c8), closes #144
  • mediaServers: cross-platform basename extraction for Plex-on-Windows (c9fa3a6)
  • mediaServers: Emby create uses query params; recover from prior-failure state (ab5c6b5)
  • mediaServers: Jellyfin/Emby replace = delete playlist and recreate (bddf01c)
  • mediaServers: match item paths by basename, not strict equality (bf1348b)
  • mediaServers: resolve Plex URL via plexModule.getBaseUrl (e5ef1b9)
  • mediaServers: skip playlist creation when no items resolve yet (350dadd)
  • mediaServers: tolerate stale server_playlist_id in replacePlaylistItems (eae455a)
  • playlistModule: pass "id" shape to upsertChannel and synthesize channel URL (acbcfdf)
  • playlistModule: seed auto-created channels with GLOBAL_DEFAULT_SENTINEL (209ae02)
  • allow restoring soft-deleted channels (297ec55), closes #144
  • backfill playlist video channels on download (dc86dbe), closes #144
  • correct published dates on channel videos (34ee615)
  • correct subscription import result counts (19c6f92), closes #144
  • default new channels to global subfolder (f9dc4e5), closes #144
  • don't mark clean downloads with warnings (86a54db), closes #144
  • exclude private videos from playlist sync (b2828f2), closes #144
  • re-download handling for missing videos (8397911), closes #144
  • route downloads by owning channel (525ade5), closes #144
  • send prefixed field keys in media server test (98d4c0e), closes #144
  • stop retrying media-server sync when down (2c91fb7), closes #144
  • update channels nav dropdown labels (1f59dc1)
  • write .ignore marker in playlists folder (9b180f9), closes #144
  • playlists: harden media server sync (041008c), closes #144

Documentation

  • add reverse proxy websocket troubleshooting (3e9d217)
  • document playlist support across user guides (acae0fb), closes #144
  • explain where Plex shared playlists appear (73c6cd3), closes #144
  • update CHANGELOG for v1.70.0 [skip ci] (f193ffd)

Code Refactoring

  • plexAdapter: use "UNCLAIMED_SERVER" sentinel for anonymous mode (e49cb8b)
  • break up downloadExecutor doDownload (708bf11), closes #645
  • split doDownload into focused modules (af70884), closes #645

Docker Image

docker pull dialmaster/youtarr:v1.71.0

Or use latest:

docker pull dialmaster/youtarr:latest

Full Changelog

Full Changelog: https://github.com/DialmasterOrg/Youtarr/compare/vv1.70.0...v1.71.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Youtarr

Get notified when new releases ship.

Sign up free

About Youtarr

Self-hosted web app that automates downloading, organizing, and scheduling YouTube channel content with support for Plex, Kodi, Emby and Jellyfin

All releases →

Related context

Beta — feedback welcome: [email protected]