This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+4 more
Summary
AI summaryUpdates 1.71.0, Bug Fixes, and https://github.com/DialmasterOrg/Youtarr/issues/144 across a mixed release.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| 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
About Youtarr
Self-hosted web app that automates downloading, organizing, and scheduling YouTube channel content with support for Plex, Kodi, Emby and Jellyfin
Related context
Related tools
Beta — feedback welcome: [email protected]