Skip to content

Release v1.71.0

Latest

Choose a tag to compare

@youtarr-service youtarr-service released this 14 Jun 21:13
· 2 commits to main since this release

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: vv1.70.0...v1.71.0