Files
tunarr/CHANGELOG.md
2026-01-20 16:04:19 +00:00

167 KiB

Changelog

1.1.3 (2026-01-20)

Bug Fixes

  • prevent "sonic boom is not ready yet" errors on system settings change (ca8e393)

1.1.2 (2026-01-20)

Bug Fixes

  • fix smart collections to work with keywords and new search experience (#1603) (46ae9be)
  • properly persist tags while scanning (#1595) (2b04109)

1.1.1 (2026-01-17)

Bug Fixes

  • fix general settings form with invalid default logroll config (266464c)

1.1.0 (2026-01-16)

Features

Bug Fixes

  • extract audio title tag when probing local files (42659b7)
  • fix derivation of Plex collection subtype (9e9b005)
  • multiple fixes to NFO parsing to be more permissive (cdb1ba6)
  • passthrough color information from Plex (3755ecc)
  • remove video stream presence restriction for Jellyfin items (d59b1f2)
  • remove video stream restriction from Emby (ed7381a)
  • sort nested program queries by index (a0a13b3)

1.0.18 (2026-01-14)

1.0.18 (2026-01-14)

Bug Fixes

  • add audio volume filter back to ffmpeg pipeline (1e6a46c), closes #1582
  • be more permissive about deriving / accepting program hierarchies (8be211d)
  • correctly mint ContentPrograms for unsaved channel programming (b9143d2)
  • fix zero channel durations if detected at stream time (2bb4231)

1.0.17 (2026-01-09)

Bug Fixes

  • default experimental search index memory flag to false (271555c)
  • properly scan Emby episodes (f1978e8)
  • restore search index from snapshot when necessary (4a8fd4e)

1.0.16 (2026-01-08)

Bug Fixes

  • do not stop scanning seasons if one is unchanged (109a030)
  • strip leading "v" from version strings before building (6723eee)

1.0.15 (2026-01-06)

Bug Fixes

  • macos: create tunarr data directory on first run if not exists (a5271b4)

1.0.14 (2026-01-05)

Bug Fixes

  • add missing virtual field mappings for video / audio fields (49803be)
  • ensure invalid release date / years do not break API schema validation (3e0b1fc)
  • search for arch-specific meilisearch binary (bb81409), closes #1561

1.0.13 (2026-01-04)

Bug Fixes

  • add missing build dependency for meilisearch install (#1577) (a6933aa)
  • populate subtitle language metadata from ffprobe (#1579) (d129446)
  • use proper image URL for locally scanned libraries in EPG (d541cc5)

1.0.12 (2026-01-02)

Bug Fixes

  • do not run backup task immediately on server start (70b8974)
  • fix typo in MediaSourceSettingsPage description (#1575) (28ced48)
  • handle quotes in search values (53e1cdf), closes #1569

1.0.11 (2025-12-28)

Bug Fixes

  • properly set plot field when minting Program DAOs for movies (bacabac)
  • remove missing programs alert from slot scheduler (9404b31)

1.0.10 (2025-12-28)

Bug Fixes

  • make Plex scannedAt attribute optional (18f22c5)
  • more fixes to adding unscyned Jellyfin / Emby client (c524bad)
  • properly extract episode overview for Jellyfin and Emby programs (9f64746)
  • support plot and summary fields in XMLTV (61e30f3)

1.0.9 (2025-12-22)

Bug Fixes

  • fix block shuffle ordering for all program types (36d4603)

1.0.8 (2025-12-21)

Bug Fixes

  • ensure original program lineup is used each time block shuffle is generated before saving (19baad9)
  • ensure search state is cleared when navigating to media source views (579586f)
  • fix unsynced top-level Plex playlists view (4f42bfb)
  • revert api client timeout back to 60s (1c36dcc)
  • various fixes to Emby integration and API client (49150ab)

1.0.7 (2025-12-18)

Bug Fixes

  • allow quoted strings to contain search keywords (359cc9f)
  • allow selection of filler tab on slot editor dialog (a23be18)
  • only sort by date; items missing date will be excluded if we try to sort on it (5e50fbb)

1.0.6 (2025-12-17)

Bug Fixes

  • allow choosing local programs as filler (8a11e54)
  • explicitly sort on title for GetDocuments request (4a92c4a)
  • fix building external thumb URLs for unsynced libraries (5bfcf6b)

UI Changes

1.0.5 (2025-12-17)

Bug Fixes

  • disable slot editor validation check on save button (9416c37)
  • fix several form state issues in the slot dialog (345a6af)
  • return audio stream index for all streams (b7ab23b)

1.0.4 (2025-12-16)

Bug Fixes

  • add support for attributes in credit or director xml fields (#1540) (677b877), closes #1528
  • differntiate between persisted and ephemeral artwork in API (c5c55e5)
  • do not erroneously reset media source when changing libraries (9e58734)
  • fix destructure of undefnied when materializing slot schedules (6aaa43b)
  • generate proper order for shows in slot editors (fbf08c4)
  • properly index studios and make them searchable (2f043b9)
  • properly map "not in" queries to search requests after parsing (b80659f)
  • properly mint directors/writers for movie items (80eb15e)
  • select ETag explicitly from Emby (6912b3f)
  • use proxied /api/metadata/external endpoint for loading non-persisted artwork (c13e530)

Performance Improvements

  • substantially improve guide building performance while reducing memory usage (1363b88)

UI Changes

  • hide free text info box when query string is empty (b8b764b)

1.0.3 (2025-12-14)

Bug Fixes

  • ensure artwork is always generated for xmltv, not just for episodes (49e99d9)
  • properly map virtual search fields grandparent_genre and show_genre to grandparent.genres (078cc31)

1.0.2 (2025-12-13)

Bug Fixes

  • allow playing local program streams that have no subtitle streams (6dc2adc)
  • fix video_(height|width) virtual field mappings (4f38e37)
  • remove duplicate shuffle entry in smart collection slot editor dialog (b77f871)

UI Changes

  • fix typo in Slot editor (821c9f1)

1.0.1 (2025-12-12)

Bug Fixes

  • only use thumbnail paths directly if they are http/https (3e3a89c)

1.0.0 (2025-12-12)

⚠ BREAKING CHANGES

  • persist cast/crew and their artwork to the DB (#1448)
  • introduce smart collections (#1436)
  • implement local media libraries (#1406)

Features

  • media library scanner + full library search (4dd117c)
  • add parent directory as tag for other video libraries (7d6890f)
  • support negation of IN queries (63f23ac), closes #1514
  • add credits API and use it for credit thumbs (758fd64)
  • new program page (fde72a4)
  • implement emptying trash functionality (#1484) (a6360b0)
  • implement missing/trashed items (#1481) (18cdbcb)
  • add search server link to status page (9ff38ce)
  • allow manually purging dangling documents from search index (2ddf07e)
  • search parser overhaul (fa6db00)
  • add local media scanner for "other video" library type (#1474) (efff4b8)
  • expose max-indexing-threads advanced option for search (0b30a62)
  • hookup scanner cancellation and do it in graceful shutdown (de5ca88)
  • persist artwork and credits extracted from media source scanning (#1450) (9c82432)
  • persist cast/crew and their artwork to the DB (#1448) (b26a0ba)
  • add basic fallback metadata extraction for local media (45a9643), closes #1428
  • allow scheduling shows that are not part of channel lineup (#1440) (83bf854)
  • support smart collection slots in both slot editors (#1442) (2c6ef93)
  • add search bar to top bar (#1432) (de41188)
  • introduce smart collections (#1436) (5183eae)
  • adds new channel options button across pages (#1425) (1c9c99c)
  • add ability to randomly sort by whole show (#1415) (3fc743a)
  • allow basic configuration of library scan interval (b3af495)
  • allow configuring path replacements per-server (#1412) (8a0b8b8)
  • implement local media libraries (#1406) (a748408)
  • save program media versions to DB (#1379) (b7b9d91)
  • support for syncing / scanning Other Video libraries in Plex/Jellyfin (1ea6e8a)

Bug Fixes

  • allow parsing virtual show_* fields in search (0dcd7d7)
  • allow using non-synced sources in filler / custom-shows (6b27a07)
  • another fix for foreign keys migration; defer checking (9d8ff9c)
  • backfill program_grouping.media_source_id in fixer (f049a81)
  • do not mark missing items in local scanners when using pathFilter (d4ed522)
  • fix mediaSourceDB#setMediaSourceUserInfo early exit clause (71ef775)
  • fix migration splitting for broken migration (bcd72d7)
  • handle different language formats when parsing subtitle filenames (#1507) (b88fb47)
  • properly display thumbnails for non-synced sources (d1e66c5)
  • ensure search index snapshots are included in backups (af63a41)
  • ensure UI cannot unset 12/24 hour clock (49fa52b), closes #1504
  • only keep the last 3 DB copy migration backup files (a61de3b)
  • properly materialize smart collections with structured filters when scheudling slots (58b71a6)
  • simplify database copy migrations (9804863)
  • take search index snapshot during backup task (a3e885c)
  • fix missing item checking for local scanners (ecfb621)
  • standardize on artwork hooks on new program detail pages (2d0c112)
  • actually delete smart collections when requested (e285655)
  • allow viewing slot schedulers even with missing programming (7993bb5)
  • fix horizontal page scroll (#1497) (308bf3d)
  • lift 1k document restriction on structured queries (28279e8)
  • remove reliance on search index for program materialization (#1494) (c5d2118)
  • allow saving "free query" searches as smart collections (d55cdd9)
  • do not attempt to parse numbers from nfo files (41f1307)
  • fix stream duration calculation in StreamProgramCalculator (526417b)
  • run RefreshMediaSourceLibraries at startup; then once an hour afterwards (ba96b3f)
  • do not require canonicalId to return API program/grouping (b2ea9f9)
  • ensure all fields are properly updated when upserting grouping (b06f8e4)
  • fix macos bundle for meilisearch (62025c6)
  • ui: fix Force Scan toolip (434fe3b)
  • allow dumpless Meilisearch upgrades; bump to 1.27.0 (ab82009)
  • improve media source scanning UI state (dc67e9e)
  • make audio/subtitle language optional in nfo schemas (18cdbcb)
  • make various Plex item index fields optional (c198860)
  • return TerminalProgram type from /channels/:id/programs (d5405e0)
  • add missing RemoveDanglingProgramsFromSearchTask (96650ee)
  • delete items from search index when media source is deleted (de995c7)
  • ensure PlexApiClient uses dayjs from server impl (0dc0b60)
  • fix JF/Emby stream path building (db5e6bc)
  • index additional denormalized details (4ac97a5)
  • properly persist media source path replacements on save (2744ad0)
  • allow query from top search bar even if not a structured query (04cfe0c)
  • implement proper dirty checking in media source other video scanner (4fed159)
  • include child relations for program groupings in API (8c4634c)
  • pass relevant media source token when loading external images (7b65ff5), closes #1469
  • proper implementation of dirty checking during media source scanning (857f656)
  • add derivedtypes update - forgot to save this file (2f0c882)
  • allow 0 as a track number index (ff17084), closes #1462
  • always report input on API schema parse errors (5c20e72)
  • catch Jellyfin VideoRangeType parse error and default to Unknown (568594d), closes #1452
  • disable dataloader caching (95ff917)
  • disable music video libraries in Manage Libraries (4f952b6)
  • do not allow changing library enabled state if locked (8d417ba)
  • ensure artwork for programs is minted and saved (db5ec6a)
  • fix form state when switching between slot duration types (f02fb9b)
  • only show supported media library types (b348621)
  • populate parent entity when querying getProgramGroupingById (9ea53fb)
  • properly index "index" field for seasons/albums/tracks in search (f8f1989)
  • properly return index for season/album groupings from API (533971a), closes #1463
  • re-implement ChannelProgramGrid on new APIs (#1456) (86c305e)
  • remove Plex auto-channel updater (effcb18)
  • return all relations for program gropuings in search API (d217d82)
  • return full parent/grandparent details from getProgramById API (66c03b2)
  • return terminal program genres in /programs/:id endpoint (957f0ce), closes #1461
  • revert better-sqlite update (e0f7162)
  • allow for space between season / episode numbers (2d4be84)
  • fix season/episode regex regressions with fallback regex (0ab464f)
  • make actor.role optional when parsing nfo (5633933)
  • parse but ignore bin_data streams in with ffprobe (24b7fbb)
  • support parsing season/episode numbers in the form 4x03 (84979a6)
  • accept both string or number for aspect ratio in NFO files (eba9f89)
  • reset local media settings dialog state on close (6c614e8)
  • do not require episode nfo files to have the uniqueid field (6342a03)
  • make videodetails nfo parsing more persmissive (c611297)
  • do not crash if there is no stream-cache to migrate (abb708a)
  • make durationinseconds optional; we dont even use this field currently (46ceea1)
  • fix jellyfin and emby streaming (5bf3e84)
  • more permissive nfo parsing (66369b9)
  • remove dependency on sharp until we can figure out x-platform packaging (f4433f6)
  • fix binary release and bump node to 22.20.0 (6475f85)
  • fix adding music items for non-synced libraries (7a1f6f0)
  • fix db associations with scanned audio libraries (ea2edc5)
  • properly upsert program grouping external ids (8462143)
  • fix meilisearch grabber script to accept x64/x86_64 args for mac download (415121e)
  • streaming: convert to proper pixel format before cuda upload + scale (091e7bd)
  • streaming: do not apply hwdownload filter in cuda pipeline if not on hardware (5726d6e)
  • streaming: do not set sc_threshold to 0 for mpeg2video out (949efda)
  • streaming: properly pass disable hw decode/encode/filter to pipeline (70b3757)
  • streaming: use bitstream filter in CUDA pipeline to workaround green line (ff61f62), closes #1390
  • treat ffprobe format_long_name as optional (c656d24)
  • ui: allow viewing stream details of custom / filler programs (af87a17)
  • use proper generic other_video scanning type for inject (e44d55d)
  • allow querying of other/music video types in UI (dd494fc)
  • fix non-synced item enumeration when adding programming (5a8acb7)
  • search: make various stream metadata params filterable (f5590f4)
  • bundle and start meilisearch properly on macOS (32d2e23)
  • do not use github api to pull meilisearch releases (169503c)
  • ensure we do not save duplicate libraries by external_id (071be3b)
  • extract proper child counts for JF parent items (1261f22)
  • meilisearch windows build needs exe extension (13ffcd2)
  • ui: allow switching non-synced JF/Emby libraries (0d812ed)
  • ui: properly show selection state on imported items (fff1f6c)

UI Changes

  • add link to search page from smart collections page (dc3e932)
  • add warning for structured vs free queries (714982f)
  • consistent library page UX and always-visible drawer (2c59729)
  • cleaning up some mobile styling (#1405) (9a79146)

0.22.18 (2025-12-08)

Bug Fixes

  • fix stream duration calculation in StreamProgramCalculator (526417b)
  • only generate in range indexes (bcb7542)

0.22.17 (2025-11-26)

Bug Fixes

  • properly detect non-docker/podman container environments (f8a2a24), closes #1485

0.22.16 (2025-11-24)

Bug Fixes

  • dynamically calculate SAR when necessary (69c6947)
  • fix build with new sample aspect ratio fields (80fccd2)
  • fix tests after SAR changes (944039e)
  • make duration_ts option on video streams in ffprobe output (fe34da8)
  • streaming: properly set decoder thread count to 1 for hwaccel pipelines (72f128b)
  • ui: fix remaining time calculation and display in guide (3c5ea7a)

0.22.15 (2025-11-16)

Bug Fixes

  • do not pass exact duration to audio pad filter (289acf1)
  • fix bad form state in channel EPG settings (ec82018), closes #1468
  • more balanced cyclic shuffle implementation (0ceb5e3)
  • remove BackfillProgramGroupings fixer (f6cf17f)

0.22.14 (2025-11-10)

Bug Fixes

  • overhaul logs and system logs page (24b3213)

0.22.13 (2025-11-10)

Bug Fixes

  • disable time slot editor buttong when there are no slots (cc4f056)
  • fix sidear ASS subtitle download in Jellyfin (5784079), closes #1457

0.22.12 (2025-11-06)

Bug Fixes

  • fix form state when switching between slot duration types (f02fb9b)
  • remove Plex auto-channel updater (effcb18)

0.22.11 (2025-10-27)

Bug Fixes

  • allow playing remote media from Emby (8eaa68f)

0.22.10 (2025-10-27)

Bug Fixes

  • fix HLS direct playback in Jellyfin for MKV/MP4 output formats (85ea844)
  • fix lineupItemToChannelProgram override to account for undefined channel.programs (a87cf4a)
  • streaming: always set framerate when resetting PTS in QSV pipeline (00c17a8), closes #1431
  • streaming: fix HLS direct streaming for Jellyfin 10.11 (81ea984)
  • use default analyzeduration (5s) when probing files instead of 30 microseconds (91755b3)

0.22.9 (2025-10-18)

Bug Fixes

  • streaming: potential fix for QSV audio sync issues (f5a96ae)

0.22.8 (2025-10-15)

Bug Fixes

  • do not let stream cache hard fail streams (e5e5b15)

0.22.7 (2025-10-15)

Bug Fixes

  • ensure program summaries are escaped for xml (9f3cad5)
  • handle some weird cases of expected exit in ffmpeg (8106d34)
  • streaming: apply sc_threshold after hw accel is decided (1037ca3)
  • streaming: fix audio only streams for vaapi (c0691cc), closes #1365

0.22.6 (2025-10-08)

Bug Fixes

  • add subtitle and description to xmltv (f056790)
  • streaming: convert to proper pixel format before cuda upload + scale (091e7bd)
  • streaming: do not set sc_threshold to 0 for mpeg2video out (949efda)
  • streaming: properly pass disable hw decode/encode/filter to pipeline (70b3757)
  • streaming: use bitstream filter in CUDA pipeline to workaround green line (ff61f62), closes #1390
  • ui: allow viewing stream details of custom / filler programs (af87a17)

UI Changes

  • add season/episode to Tunarr guide page (eeb3f6d), closes #1398

0.22.5 (2025-09-23)

Bug Fixes

  • streaming: do not apply hwdownload filter in cuda pipeline if not on hardware (5726d6e)
  • treat ffprobe format_long_name as optional (c656d24)

0.22.4 (2025-09-19)

Bug Fixes

  • do not send fractional millis to ffmpeg stream seek (b588137), closes #1378
  • ensure PremiereDate is selected for both Jellyfin and Emby (335c0a0), closes #1389
  • ui: allow saving transcode config when audio format is copy (a98bc32), closes #1387

0.22.3 (2025-09-16)

Bug Fixes

  • allow selecting parent Jellyfin items in list view (9756e35)
  • correct set the isDefault bit on new transcode configs (180841c)
  • streaming: change how QSV is initialized on Windows (1dbec53)
  • streaming: do not apply apad when audio encoder is copy (92bce8a), closes #1311
  • streaming: fallback to yadif=1 when configured software deinterlace is none (3a5e69d)
  • ui: add missing BackupForm file erroneously left out (67b97b0)
  • ui: disable various audio stream forms when encoder is set to copy (2aa12c3)
  • ui: properly handle keyboard input for backup time picker (39a6d70), closes #1361

UI Changes

  • hide missing season/associations health checks (59265a8)

0.22.2 (2025-09-07)

Bug Fixes

  • streaming: always use streamDuration for duration in ffmpeg pipeline (#1357) (9eac043)

0.22.1 (2025-09-05)

chore

0.22.0 (2025-09-05)

chore

0.22.0 (2025-09-04)

⚠ BREAKING CHANGES

  • expose advanced transcode parameters (#1347)

Features

  • expose advanced transcode parameters (#1347) (f13e3bb), closes #1090
  • scheduling: keep random ordering stable between preview/save in slots (#1354) (afcbac9)

Bug Fixes

  • do not pass userId in Jellyfin library requests (62b853d)
  • ensure fallback filler is looped for the duration of the stream block (#1329) (c16b208)
  • scheduling: keep relevant existing values when switching program types in slot editor (4880e42), closes #1352
  • scheduling: properly deduplicate custom/filler programs for slot algos (0e49c41)
  • several fixes to filler editor and programming (#1350) (aba6018)
  • ui: ensure correct guide end time is passed for specific channel guide queries (dd2b9a3)
  • ui: fix transcode config name overlay in summary page (b00a68a)
  • ui: invalidate relevant queries after transcode config is deleted (abf3b8b)

UI Changes

  • fix wording for channel flex cooldown (c135fe7)

0.21.11 (2025-08-27)

Bug Fixes

  • scheduling: always use full custom show / filler list when generating slot schedule (c3aa641)
  • streaming: fix HLS stream paths in legacy streaming pipeline (adc1113)

0.21.10 (2025-08-22)

Bug Fixes

  • fix channel logo upload validation (by ignoring it) (fdfbe4a)

UI Changes

  • remove extra padding from mobile styles (a7ead3a)

0.21.9 (2025-08-22)

chore

0.21.8 (2025-08-21)

Bug Fixes

  • use iso.datetime instead of iso.date for guide API (30afcc5)

0.21.7 (2025-08-20)

Features

  • ui: remove restrictions on "add breaks" tool (a23df83), closes #1333

Bug Fixes

  • ui: fix filler list weight distribution (5fe9595), closes #1316
  • ui: scope select all to selected jellyfin genre (2e77231), closes #1332

UI Changes

  • ui: make filler cooldown differences more clear (d93805f)

0.21.6 (2025-08-20)

Bug Fixes

  • default stream output directory to within Tunarr data directory (d901652)
  • ui: ensure media source dialogs always update after edits (ec213f0)

0.21.5 (2025-08-16)

Bug Fixes

  • allow adding emby programs to custom shows (912b540)
  • fix ffprobe command in stream details debug tab (576f337)
  • include original ffmpeg command in error file (cc2776b)

UI Changes

  • account for delete action in program list padding (fba8bda)
  • allow for larger steam detail dialogs (ba2f767)
  • limit size of channel logo on summary page (1e3af1a)
  • standardize channel menu (119d280)

0.21.4 (2025-08-14)

Features

  • scheduling: allow picking filler order for per-slot filler (#1322) (72eb2a8)

Bug Fixes

  • fix subtitle extraction (e6ac4d4)

0.21.3 (2025-08-14)

Bug Fixes

  • fix jellyfin library selector (#1320) (c898b3e)
  • properly init channel cache (ec3e98e)
  • synchronously initialize PersistentChannelCache (838d8cc)
  • ui: actually fix issue with changing slot type not rendering (23be5c0)

0.21.2 (2025-08-13)

Bug Fixes

  • scheduling: many fixes to filler types in slot editors (#1318) (3e69e0b)
  • ui: enable submit button after changing existing slot type (a1e59aa)

0.21.1 (2025-08-11)

Bug Fixes

  • jellyfin: user /Library/VirtualFolders endpoint for gathering user libraries (aa6c0af)
  • ui: propery re-render slot program form when type changes (3d99ce6)

0.21.0 (2025-08-11)

⚠ BREAKING CHANGES

  • scheduling: ability to schedule filler directly in slot schedulers (#1234)

Features

  • add genres endpoint and integrate genre selection in the ui for… (#1295) (50ceb54)
  • add movie nfo parser (#1262) (3ba2aad)
  • add program stream details info to program dialog (#1296) (d87f269)
  • add tv show and episode nfo parsers (#1266) (555d838)
  • macos: add proper macOS wrapper app (#1290) (e293f4c)
  • scheduling: ability to schedule filler directly in slot schedulers (#1234) (fed7717)
  • scheduling: support for flex kinds in time slots (#1238) (7a16eab)

Bug Fixes

  • allow scheduling content from mixed-type Emby libraries (a894ef4)
  • ensure release action uses proper xcode version (7c6214b)
  • ensure remove duplicates uses most up-to-date program list (c6d9b79), closes #1297
  • fixes and simplification of stream program calculator (#1301) (3fa2808)
  • hide scheduled filler content from EPG by default (#1286) (d36bfd0)
  • only run ReconcileProgramDurationsTask when necessary (ed09b4c)
  • remove admin mode (8fa0bac)
  • streaming: explicitly set software mpeg2video encoder (6976e35)
  • streaming: fallback to software decode when seeking with QSV (#1276) (e8e4bac)
  • streaming: multiple fixes for image-based sub overlays on CUDA (#1275) (bb63c46), closes #1272
  • streaming: only set output pixel format on CUDA hwdownload when necessary (3f9d3ce)
  • streaming: remove first_pts setting to fix audio drop/desync issues (dde8a83)
  • streaming: remove some limits on thread counts (#1277) (4116225)
  • streaming: rework hwdownload cuda filter (04e30dc)
  • ui: allow getting nvidia debug details after getting vainfo debug (8fa0bac)
  • ui: fix default form state in weekly time slot editor when day is empty (231e3bf)
  • ui: fix filler list clear all button (cd2060b)
  • ui: fix infinite API calls in Jellyfin grid (#1300) (4a9b3a3)
  • ui: fix stealth mode checkbox state (136f9fa), closes #1305
  • ui: properly filter various program types based on channel (#1271) (8c32d8b)
  • ui: reording custom show programs no longer affects episode number (#1280) (231e3bf), closes #1273
  • use execFile over exec when executing one-off child processes (8fa0bac)
  • use execFile over exec when executing one-off child processes (#1309) (8fa0bac)

Performance Improvements

  • periodically flush event loop in ReconcileProgramDurationsTask (622b8b3)

0.20.6 (2025-07-20)

Bug Fixes

  • server: default is_edge_build env var flag to false if not present (d9d7aa3)
  • ui: make version mismatch snackbar dismissable (8294735)

0.20.5 (2025-07-20)

Features

  • ui: add ability to hide stealth channels from Tunarr guide page (9decb37), closes #1220
  • ui: add channel summary page (#1190) (1f2e5eb)
  • ui: add debug panel showing relevant server environment variables (c358dfc)

Bug Fixes

  • backend: allow deleting channels that have subtitle preferences (1c12b6b)
  • ensure build versions match between web and server (d31919c)
  • insert filler / custom show content in chunks of 1000 to stay under sqlite limits (907594e), closes #1255
  • server: fix incorrectly setting transcodeConfig.isDefault based on wrong field (50b31a6)
  • streaming: fix nvidia hwdownload compat with ffmpeg 7.2 (#1253) (d4a1ed4)
  • streaming: include Quadro M2000, etc in special Maxwell cards that can decode HEVC (be92d10)
  • streaming: typo in rc-lookahead option (a96d782)
  • streaming: various fixes to CUDA decoding and pipeline (#1242) (0f25baa)
  • streaming: various fixes to pixel formats in nvidia pipeline (#1251) (4c3a080)
  • ui: do not attempt to reach new plex servers with no access token (2c37b83)
  • ui: ensure 'unsaved changes' popup doesn't erroneously pop-up in channel settings (be6db83)
  • ui: fix channel summary page for empty channels (218e01c)
  • ui: remove extraneous unsaved changes warning in ffmpeg settings (0c95cf0), closes #1244

UI Changes

  • add health check for deprecated base docker image tags (3c5ea42)
  • calculate guide item width to better fill container (d9f5e12)
  • trialing out brighter secondary colors in dark mode (6e21d5b)
  • various fixes to how the guide page is displayed (#1248) (6438a0d)

0.20.4 (2025-06-16)

Bug Fixes

  • ui: ensure local state is always updated after querying media sources (ce40a9f)
  • ui: fix programs disappearing from channel after save (e2722cc)

0.20.3 (2025-06-15)

Bug Fixes

  • web: remove all usages of lodash chain from web (3fb506e), closes #1235

0.20.2 (2025-06-15)

Features

  • backend: add support for Tunarr worker thread pools (#1225) (f45b873)
  • time-slots: allow scheduling any custom shows via time slots (#1227) (c7de6a1)

Bug Fixes

  • backend: break injection dependency cycle with worker pool (3f75295)
  • backend: pass correct message back from worker pool (947e2e6)
  • ui: dark mode toggle could sometimes flash (ce844ed)

Performance Improvements

  • backend: add performance metrics to worker pool (947e2e6)
  • scheduling: do not create new arrays when pushing flex into time slot schedule (947e2e6)

0.20.1 (2025-06-06)

Bug Fixes

  • cuda: ensure unscaled output properly sets pixel format when burning subtitles (dbc29f0)
  • do not outright fail stream if external subtitles cannot be downloaded (11dae74)
  • properly handle all item types in Jellyfin/Emby program selectors (#1214) (a311d8f)
  • streaming: format error log timestamps as unix timestamps to avoid colon issues on Windows (9fb52d9)
  • streaming: generate correct font file paths for error streams on Windows (2d052f7)
  • subtitles: use double quotes for output paths to fix error on Windows (749fc14)
  • subtitles: use proper path.dirname when downloading external subtitles (ccc2898)

UI Changes

  • include release year in grid view, when possible (f009c32)

0.20.0 (2025-06-03)

⚠ BREAKING CHANGES

  • official DB support for music / other video program types (#1207)
  • add subtitle support with multi-level configuration (#1167)

Features

  • add subtitle support with multi-level configuration (#1167) (a5a072e)
  • official DB support for music / other video program types (#1207) (6f7c4d3)

Bug Fixes

  • allow clicking directly next to guide timeline indicator (b12c40e), closes #1205
  • always request recurisve=true for JF libraries (8b609e0)
  • change subtitle preferences priority column from numeric to integer (236b6a1)
  • do not pick unextracted subtitle streams (477d25f)
  • download external subtitles to local cache (132a206)
  • ensure correct channel/programming data always fetched (c759101), closes #1194
  • fix weekly time slot deleting and editing issues (bd253fd)
  • invert checkbox for old/new ffmpeg pipeline (7635225)
  • multiple fixes to subtitle streaming / extraction (#1208) (9a61543)
  • properly set filler list play cache entry (7b32acb)
  • properly set lastFlushTime in InMemoryCachedDbAdapter (1f54a89)
  • properly set output pixel format when using CUDA hardware download filter (5e45dbf)
  • remove jellyfin item type checking when starting stream (ff5a4e7)
  • remove other program type checks for media sources (fbc903e)
  • update Emby types with more recent OpenAPI definition (#1211) (350b7c0)
  • use default subtitle stream if channel has no preferences but subtitles enabled (1653a05)

UI Changes

  • hide leading edge checkbox is intemrittent watermarks are disabled (143121c)
  • implement horizontal scrolling in guide page (98331d0), closes #1197
  • show hardware acceleration value in Transcode config table by default (f66cfc6)

0.19.3 (2025-05-12)

Bug Fixes

  • fix tv guide current time indicator alignment (c74aa14)

0.19.2 (2025-05-12)

Features

Bug Fixes

  • fix select all for Jellyfin libraries (c872ad9)

UI Changes

  • add loading indicator when adding selected media to channel (50344a4)

0.19.1 (2025-05-09)

Bug Fixes

  • allow adding Jellyfin media of type Video/MusicVideo (ff3ad43), closes #862
  • default backup path to tunarr data directory when unset (#1183) (daf6d34)
  • do not hit non-existent /Users/Me endpoint for Emby (e93ffe3)
  • fix new sticky header for Jellyfin/Emby program selectors (#1185) (cecdecb)
  • properly handle boolean Plex filters (#1186) (53307f8)
  • remove erroneous flashing 0 when switching media sources (f075b15)

UI Changes

  • add weekday headers to time slot scheduler (#1184) (caf4200)
  • added sticky bar for programming selector actions (ac93725)

0.19.0 (2025-05-05)

⚠ BREAKING CHANGES

  • properly scope Jellyfin/Emby requests to the auth'd user (#1163)

Features

Bug Fixes

  • always pass mediaSourceUuid for api clients created from sources (8c2653c)
  • do not allow start time padding to skew (384ff75), closes #1175
  • fix drawer subnav expansion (82ca195)
  • fix erroneous "unsaved changes" warning on ffmpeg page (e5bd022)
  • get all tests passing and fix db migration bug (c998163)
  • improve Nvidia card name detection and debug output (0495023)
  • properly scope Jellyfin/Emby requests to the auth'd user (#1163) (d9483f4)
  • re-add program_external_id indexes, removed by mistake (d2338f7)
  • remove unusable drag indicator in time slot table (541e650), closes #1158
  • set recursive=true certain types of Jellyfin "libraries" (#1168) (8f81791)
  • support Jellyfin mixed library types (#1171) (222b0bb)

0.18.20 (2025-04-17)

Bug Fixes

  • disable filtering on non-library tabs (14b591c)
  • fix weekly calendar view stack overflow error (c928bb8)

0.18.19 (2025-04-14)

Bug Fixes

  • properly write m3u8 playlist string in response (83269d1)

0.18.18 (2025-04-14)

Bug Fixes

  • fix updating plex play status during stream (f90f271)
  • improve error logging and handling when HLS playlists are not found (a3e806c)
  • properly detect when running in a Podman container (d53ec45), closes #1147
  • redact errors to /Users call in JellyfinApiClient (5296259), closes #1136
  • show delete confirmation before deleting a custom show (3dc56d6)

UI Changes

0.18.17 (2025-04-10)

Features

Bug Fixes

  • do not reset channel pagination state when data updates in background (40a5984)
  • fix copy-to-clipboard links from top bar (424b494)
  • fixes to rendering paused on-demand guides (1d67a3d)
  • use correct state in dark mode selectors (b3217ba)

UI Changes

  • fixes to colorization in dark mode (#1143) (f7dfe39)
  • make settings link last in side drawer (a81c02e)

0.18.16 (2025-03-27)

Features

Bug Fixes

  • convert 10-bit inputs to 8-bit before using overlay_cuda filter (#1125) (98d2070)
  • guide/epg now accurately reflects state of on-demand channels (#978) (79c6a69)
  • random slot schedule preset should set all relevant fields in form (9a4d67f), closes #1122

0.18.15 (2025-03-11)

Features

  • update primary button in add media button group after selection (#1114) (45e1fc5)

Bug Fixes

  • re-add media_source unique index (d874b9b)

0.18.14 (2025-03-06)

Bug Fixes

  • add indexes for external ids to improve various queries (91d654d)
  • install ldid on binary build github action to properly codesign macos-arm binaries (e442e70)

0.18.13 (2025-03-03)

Features

  • show version mismatch warning on frontend (4c534ce)

Bug Fixes

  • fix ARM Docker builds; use the ARM executable artifact name (7d246f4)
  • fix DB copy migrator on Windows (#1111) (e440380)
  • properly regenerate relevant XMLTV bits when channel configs change (6ee1b1c)
  • run Docker ARM builds on an ARM machine (#1107) (5086ae3)
  • updating channel number properly refreshes XMLTV (4c40190)

0.18.12 (2025-02-27)

Features

Bug Fixes

  • allow scheduling custom shows that contain the same programs (#1102) (ea78d1c)
  • copy temp db file instead of renaming to avoid cross-link errors (c7a90f1)
  • do not sort programs when block shuffling in random mode (e072e54)
  • fix filler list delete confirmation dialog nav (651d236)
  • handle case where initial DB migration was not run yet (70789ef)

UI Changes

  • add breadcrumbs to transcode config page (95f4456)

0.18.11 (2025-02-16)

Features

  • ability to set the server port in the UI (#1096) (3b65ccd)
  • backend: support "append" parameter for programming lineup update requests (be55db2)

Bug Fixes

  • fix legacy channel migrator to only insert channel filler shows if they exist (e184540)
  • fix media_source insert query in legacy migrator to use correct index (aa069d3)
  • remove Bun and rollback to Node 22.13.1 (#1095) (e803946)

Performance Improvements

  • fix channel lineup update performance regression from bun conversion (2aecc71), closes #1093

UI Changes

  • add data directory location to system status page (99c69b3)

0.18.10 (2025-02-12)

Features

  • add support for older CPUs (pre-2013) on bun builds (066a538)

Bug Fixes

  • fix docker build args for new baseline builds (deacd3d)

0.18.9 (2025-02-12)

Bug Fixes

  • fix release builds for docker and simplify (41f0cee)

0.18.8 (2025-02-07)

Features

Bug Fixes

  • attach image to xmltv program entries (d039d45)
  • disable limit on update/delete queries (#1077) (2b37fe0)
  • fix copyToClipboard for xmltv/m3u links (again) (ff08303)
  • fix typo in vacuum for new sqlite backup method (d648e1e)
  • use fps_mode instead of vsync when specifying frame rate (3198481)

0.18.7 (2025-01-29)

Bug Fixes

  • fix remote watermark local file caching (d726d51)
  • properly create tunarr database directory on first run (db97e57)
  • properly detect capability to encode 8-bit HEVC from vainfo (b645c88)
  • properly inject program converter to programdb (cfc3127)
  • use revision instead of last version for binary edge builds (0025bc6)

0.18.6 (2025-01-25)

Bug Fixes

  • fix bundled build; apparently only works with a TS entrypoint with esbuild (3dcf327)

0.18.5 (2025-01-24)

Features

Bug Fixes

  • actually bind the server (fb9abf0)
  • display show name properly in RemoveShowsModal (b09ea55)
  • potential fixes/workarounds for quicksync audio sync issues (#1069) (93141ba)

0.18.4 (2025-01-24)

Bug Fixes

  • fix bad binding causing jellyfin stream injection failure (009f55a)

0.18.3 (2025-01-23)

Bug Fixes

  • fix XMLTV to display show/artist title and not season/album (45455e2)
  • fixes to displaying program title after #910 (c1e673d)
  • more flexible positioning of alphanumeric filtering (3ab34d4), closes #1062

0.18.2 (2025-01-21)

Bug Fixes

  • fix tunarr.bat hardcoded node version path (20c41f6)

0.18.1 (2025-01-21)

UI Changes

  • fix betterHumanize duration function to handle >=1 days with <1 hours (6c07fe2)

0.18.0 (2025-01-19)

Features

  • add new sort order options for slot scheduling (#1054) (d15e4e8)
  • ffmpeg: add audio language preferences (#1046) (f0f78eb) - thanks @AugusDogus!

Bug Fixes

  • always return channels even if they have no program associations (d41f81b)
  • ensure Jellyfin password redaction works as expected (e717cac)
  • fix selecting mpeg2video as a video format (a46cdd2)
  • return filler lists in alphabetical order by name (51647ad)

0.17.5 (2025-01-16)

Bug Fixes

  • add missing comma in ScaleQsvFilter (f5fa38d)
  • av1 decoding support on new pipeline (#1053) (18d8363)

0.17.4 (2025-01-15)

Bug Fixes

  • add default value to RandomSlot#durationSpec to fix JSON DB schema migration (c4944db)
  • do not backtract first 30s of a program (3972b77)
  • do not loop infinitely on invalid JSON schemas (eb61d59)
  • use hardware pixel format before vpp_qsv filter (bbe6cd9)

UI Changes

  • add "copy channel id to clipboard" button on channels table (16b6cfb)

0.17.3 (2025-01-13)

Bug Fixes

  • fix audio + album cover streaming in new ffmpeg pipeline (0c32d99)
  • fix audio + album cover streaming in new ffmpeg pipeline (#1048) (0c32d99)
  • minor fixes for hls direct stream mode - still not very smooth (0c32d99)
  • properly apply next state from decoder in qsv pipeline (3a8a8e7)

0.17.2 (2025-01-11)

Bug Fixes

  • always specify an encoder in QSV pipeline (f964ce1)
  • check for windows sooner when checking qsv/vaapi capabilities (d973630)
  • fix m3u/xml copy to clipboard urls...again (f166552)
  • remove erroneous channel transcode overrides (235d3e9)
  • show redirect programming properly in xmltv (16eff87)

0.17.1 (2025-01-10)

Bug Fixes

  • add "new" button for transcode configs (f7bca67)
  • enable watermarks on new qsv ffmpeg pipeline (0260abc)
  • handle 10-bit hevc in new qsv pipeline + other fixes (0260abc)
  • use transcode configs where appropriate in new pipeline (0260abc)

0.17.0 (2025-01-10)

Features

  • add "transcode configurations" (#1001) (b5a4fdf)
  • implement existing program tools using random slots (#1041) (00fa4d4)
  • improvements to random slot weighting (#1040) (4e7740b)
  • re-implement random slot UI to match time slot UI (#1036) (8027f99)
  • support for toggling between 12/24-hour time in UI (#1026) (891ed29)
  • support HLS direct channel stream mode (#1029) (303964b)

Bug Fixes

  • additional fix for square pixel calculation (df369f3)
  • allow navigation to add more programs when there are unsaved programs (b7d05df)
  • allow setting channel stream mode on initial creation (2f39648)
  • always ensure a default transcode config exists via fixer (67d1acf)
  • choose default/selected audio streams first (732e81d)
  • copy full m3u url instead of just path (if backendUri is empty) (de5cd1d)
  • cyclic shuffle now works with custom programs (1a106a4)
  • default new channel start time to now (13db6ec)
  • determine isAnamorphic via DAR/SAR; better square pixel size calculations (d3dd7e4)
  • do not count initializing sessions in stale check (ca0ec6a)
  • do not set channel start time when saving lineups (#1042) (4c96a24), closes #276
  • fix default audio stream sort for boolean (b298be3)
  • fix HLS direct mode when requested from an mpeg-ts wrapper stream (27ab7a8)
  • fix Jellyfin HLS direct streams (84a8e63)
  • fix JF streams + local watermark file inputs on legacy ffmpeg pipeline (c6d07c8)
  • fix show sorting in cyclic shuffle (9122018)
  • further delineate between selected and default audio streams for plex (43f9ffc)
  • pick random start position for each group in cyclic shuffle (e2d6c03)
  • set correct output pad size state in ScaleFilter (dea698c)
  • use stream.selected over stream.default for plex audio streams (1a8afb6)

UI Changes

  • move channel table actions column to first (dedb6e4)

0.16.13 (2024-12-18)

Bug Fixes

  • display Plex playlists as its own library (#1018) (22849e9)
  • fix issue where random slot do-not-pad could generate 0-duration flex programs (8abd3c8)
  • improvements in handling fractional durations in scheduler (9f46d11)

0.16.12 (2024-12-13)

Bug Fixes

  • fix channel_programs update query in updateLineup (ea73a5d)
  • fix ProgramGroupingMinter to correctly assign type season for seasons instead of show (0b92fa3)
  • re-enable fixers (3fab90f)
  • request additional jellyfin user view types by default (a4cb229)
  • time slots - always use the currently saved lineup state for slot generation (04e58b6)

0.16.11 (2024-12-11)

Bug Fixes

  • more fixes for per-channel guide generation + redirect calculation (#1013) (1eff0dd)

0.16.10 (2024-12-10)

Bug Fixes

  • alphanumeric title filter should scroll with you (e5d10d0)
  • properly handle redirects in scheduler (#1011) (e5d10d0), closes #1010
  • use correct pixel formats when downloading from hardware (#1008) (828367c)

0.16.9 (2024-12-06)

Bug Fixes

  • fix for plex channel auto-mapping update (3e48d6f)
  • fix form state resetting in media source edit modals (236d819)
  • properly treat yuv420p10le as 10-bit (f266fab), closes #1003

0.16.8 (2024-12-05)

Bug Fixes

  • attempt to use default audio stream before others (aeee37b)
  • fix display names in some clients (518d280)
  • fixes for CUDA pipeline state management (#998) (bbb9f76)
  • implement "slot pad" mode in random slots (#1000) (ec8b943)

0.16.7 (2024-12-02)

Bug Fixes

  • add missing comma after setsar in ScaleVaapiFilter (3df4300)
  • allow choosing channel redirects in time slots, regardless of current lineup (f6a127a)
  • do not use default value for useNewPipeline query param in APIs (e086ef4)
  • fix start time / pad precision for random slots (d4fa0af)
  • implement intermittent watermarks in nvidia/vaapi ffmpeg pipelines (97123b9)
  • infinite scroll on list view (#994) (85666c6)
  • properly parse .env file in bundle script for edge builds (39e9d68)
  • redirect time slots now take up the whole slot duration (38c03fc)
  • set correct frame data location in HardwareDownloadFilter nextState (05fb6f2)

0.16.6 (2024-11-24)

Bug Fixes

  • disable speed-dial when loading (#984) (b10925d)
  • fix weekly timeslot scheduling (#992) (3597546)
  • use stable ID when reporting Plex playback session status (#993) (b89dde9), closes #960

0.16.5 (2024-11-23)

Bug Fixes

  • fix displaying weekly slot start times after save (67593ef)
  • prevent multiple select alls duplicating selections (#986) (f3e0f2d)
  • support more watermark options on new ffmpeg pipeline (#989) (12270ba)
  • update language to make Name required when adding jellyfin server (#985) (433c6e3)

0.16.4 (2024-11-22)

Bug Fixes

  • copy image uploads instead of rename, because we cant be sure of fs layout (8af83e7)
  • pass correct pix_fmt to scale_cuda filter (#980) (d6448e2)

0.16.3 (2024-11-21)

Bug Fixes

  • allow backdating channel start times (#979) (4d85e08)
  • fix HLS concat on new FFmpeg pipeline (#976) (e2c9b51), closes #974
  • slot time no longer resets day of week for weekly schedules (f2000fb)
  • use form field array index and not table index for slot editing (dfaab86)

0.16.2 (2024-11-19)

chore

0.16.1 (2024-11-19)

Bug Fixes

  • fix typo in kyseley-ported custom_show_content migration code (49d8b4c)
  • fix weekly time slot editing and display (#970) (9280a7c)

UI Changes

  • support perfect grid fetches in jellyfin (#966) (cf149bc)

0.16.0 (2024-11-18)

Features

Bug Fixes

  • revert default "max days" to 365 for slots (ba8a19b)

0.15.10 (2024-11-13)

Bug Fixes

  • account for weekly schedules when setting slot start time (5797001)
  • chunk program grouping updates to avoid "too many sql variables" db error (98e7ade)
  • ensure program grouping upserts stay within sql variable limits (#961) (57009a2)
  • fix improper offsets for time slots (167f5e0)
  • fix pagination for jellyfin (a8d7d33)

0.15.9 (2024-11-09)

Bug Fixes

  • account for windows taskkill exits in FfmpegProcess (75e2a91)

UI Changes

  • add discord icon to top nav bar (ffcc4b2), closes #947

0.15.8 (2024-11-09)

Bug Fixes

  • re-enable custom shows in time slot editor (deae3de)

0.15.7 (2024-11-08)

Bug Fixes

  • remove errant quote in windows process kill cmd (88e640b)
  • resolve Jellyfin items when underlying file changes (#933) (d8b8e09)
  • use Windows-specific task kill command as .kill() doesnt seem to work (0f5b437)

Performance Improvements

  • do not re-render entire time slot page when slot changes (#949) (db78856)

UI Changes

0.15.6 (2024-11-07)

Bug Fixes

  • improve image caching logic (859f679)
  • never clear, and always update, program relations on upsert (86c5330)

0.15.5 (2024-11-05)

Bug Fixes

  • do not remove scheduling configurations when adding new programs (#936) (d18e99d), closes #934
  • fix deleting filler shows using new db code (95bf2b3)
  • fix passing arguments to standalone script files (#939) (82b2a2c)
  • reference correct table in channel_filler_show filler_show_uuid foreign key (a3539ed), closes #931
  • uploads can just be renamed from saved temp path (af14be1), closes #932

0.15.4 (2024-11-02)

Bug Fixes

  • do not attempt to upgrade plex rating key for jellyfin items (a406bde)
  • fix for updateProgramPlexRatingKey return query (40c73c2)
  • fix the build (6eab3fb)

0.15.3 (2024-11-02)

Bug Fixes

  • fix updating channels (01fb70d)
  • run enabled backup jobs once immediately when enabled (#926) (2ffa2cc), closes #923

0.15.2 (2024-11-01)

Bug Fixes

  • fix conditional index conditions in new migrations (cb939ca)

0.15.1 (2024-10-31)

Bug Fixes

  • program_grouping_external_id.external_source_id is nullable (e31f5c3)

0.15.0 (2024-10-31)

Bug Fixes

  • can't use chain in shared lib either because it gets bundled into server (59c2ead)
  • fix "specials" creating wrong XMLTV (ce6b3d9), closes #666
  • handle undefined durations from Plex (#912) (ea163ee)
  • show edge commit in tunarr version for edge builds (c3f04cd)

Miscellaneous Chores

0.14.2 (2024-10-24)

Bug Fixes

  • fix playing Video-type Jellyfin streams (#902) (68670f8)
  • fix plex auto-channel mapping update (70ecd00)
  • fix VAAPI rendering (#884) (e8a5656)
  • handle more Jellyfin item types in program selector (#883) (1f2d963)
  • persist channel table page state across nav (#894) (3e5e42a), closes #888
  • properly clear m3u cache when channels change (#895) (5bdc92b)

0.14.1 (2024-10-21)

Bug Fixes

  • fix ffmpeg path normalization for Windows (5adf769)
  • increase exp backoff factor for HLS sessions; theoretical max wait of ~2mins (d272d21)
  • remove uuid format requirement from some Jellyfin types (1ced59f)

0.14.0 (2024-10-21)

Features

  • introduce health checks and system status page (#885) (03f57e0)

Bug Fixes

  • fix channel deletes when channel is associated with fillers (#889) (83126c8)
  • mitigate RCE vulneratbility (#892) (4570b08)

0.13.2 (2024-10-16)

Bug Fixes

  • correct conditional for adding reconnect settings (8c94af4)
  • differentiate file/http stream source inputs (#873) (fc836b8)
  • mark addedAt field as optional in all Plex types (#874) (f68e89f), closes #863
  • properly calculate filler show content counts (#881) (11abbc1), closes #872
  • use window location for base URL in m3u clipboard copy when backend url is empty (#880) (a99d3ca), closes #878

0.13.1 (2024-10-15)

Bug Fixes

  • accept array type in Jellyfin API items extraFields query param (f511edd)
  • accept array type in Jellyfin items API endpoint (edbef2b)
  • correctly handle error streams in default HLS mode (#867) (4f3ae86)
  • handle ffmpeg "unknown" version on welcome screen (a134cab)

0.13.0 (2024-10-14)

⚠ BREAKING CHANGES

  • use new, segmeneted channel IDs in xmltv as wordaround for Plex guide bug (#855)

Features

  • improved grid view with alphanumeric quick filter (#832) (1e50a83)

Bug Fixes

  • convert 10-bit inputs to 8-bit for non-supported NVDA+format combos (#765) (d02b834)
  • fix on-demand channel pause times when watching mpeg-ts streams (2bececf)
  • reimplement BackfillProgramGroupings fixer (#864) (0dd8dbc)
  • temporarily raise the body limit for channel lineup updates (b062dbe)
  • use new, segmeneted channel IDs in xmltv as wordaround for Plex guide bug (#855) (9e10d78)
  • use proper m3u links in frontend (#854) (accb0d7)
  • use req.host instead of req.hostname because it includes port (3acca8e), closes #861
  • wait on other transactions just in case (#866) (c5d82a5)

0.12.4 (2024-10-09)

Bug Fixes

  • allow setting ffprobe path instead of deriving it (#842) (5771238)
  • fix web video player (5ff85f5)
  • mark 1900/udp as exposed in Dockerfile for UDP server (HDHR auto-discovery) (4638c70)
  • remove eventual consistency for program_grouping upserts (#843) (d83113b), closes #825

0.12.3 (2024-10-02)

Bug Fixes

  • always output yuv420p pixel format (for now) (4548a3a)
  • external watermark loading fixes (e324bac)
  • handle Windows ffreport paths (70f1f9b)
  • properly construct program set before saving slot schedules (ac3f84a)
  • remove duplicates before running block shuffler (9816749)
  • try a different file path pattern for FFREPORT on Windows (4675ec1)

0.12.2 (2024-09-30)

Bug Fixes

  • improvements to session error state handling / cleanup (550846e)
  • include Client authorization value in Jellyfin auth header (803faf8)
  • mark plex video frame rate field as optional (9307a18), closes #819

0.12.1 (2024-09-30)

Bug Fixes

  • bail on HLS stream wait if an error occurred on startup (0a611c3)
  • server: properly close event channels on server shutdown (b7b2be6)
  • server: use existing mappings in BackfillProgramGroupings fixer (b7b2be6)
  • treat video stream indexes as absolute (d7f65ca)
  • web: ability to perfectly loop block shuffled shows + other block shuffle fixes (b7b2be6)

0.12.0 (2024-09-27)

Features

  • improved program tools around balancing / block scheduling (#802) (bd65de4)
  • introduce new default HLS stream mode (#780) (6e66cfe)
  • use local file path for plex/jellyfin media if it exists (#806) (11ca353), closes #804

Bug Fixes

  • attempts to improve stream stability for mpegts streams (#801) (ecaddb5)
  • do not set programming selector viewType to null (#812) (37a9fe7), closes #808
  • empty backendUri in general settings is allowed to be empty (#811) (0924b63), closes #747
  • ensure all tokens are redacted from ffmpeg args, not just the last (e406cfa)
  • ensure readahead works for audio+album art and offline streams (f2f3053)
  • fixes for static image streams for offline mode (d8238cc)
  • handle multiple error events from sessions (5dfa18f)
  • improvements to stream error and end handling (d8238cc)
  • make link to ffprobe in Docker image (4111106)
  • only use reconnect parameters when input source is http(s) (d8238cc)
  • properly reset general form setting values (51bc998)
  • revert change to m3u generation -- use ts stream always until we have separate endpoints (52ebc71)
  • use channel's configured streamMode in m3u file; still use mpegts for HDHR (d8238cc)
  • use new mpegts path in hdhr lineup json generation (#799) (18592d0)
  • use new mpegts path in m3u generation (#798) (e31333a)

0.11.0 (2024-09-23)

Features

  • add option to use show's poster instead of episode poster (4f661d5), closes #655
  • parity: support custom shows in time/random slots (24b5a97), closes #785

Bug Fixes

  • calcuate channel list runtime by selected programs (24b5a97), closes #786
  • hide image cache settings in xmltv as the feature is currently disabled (4f661d5)
  • simplify query in BackfillProgramGroupings fixer which could cause OOMs (29956a8), closes #788
  • simplify query in BackfillProgramGroupings fixer which could cause OOMs (#789) (fd36e38)
  • use correct timezone for start time in random slot editor (24b5a97)
  • use program_grouping.uuid value as slot program showId, rather than show title (#792) (24b5a97)

0.10.4 (2024-09-21)

Bug Fixes

  • listen on all interfaces (0.0.0.0) by default (aeddfd5), closes #777
  • listen on all interfaces (0.0.0.0) by default (#778) (f093bc2)
  • macos packaging script pointed to wrong file (57c02a5)
  • plex playlist children now load in list view (5f06ae0), closes #782
  • plex playlist children now load in list view (#783) (f9fdaff)

0.10.3 (2024-09-13)

Bug Fixes

  • do not block navigation on time slot editor page after successful save (a5731cf)
  • properly adjust for timezones in time slot generation/preview (60f0664)

0.10.2 (2024-09-12)

Bug Fixes

  • ensure that latest tags receive hwaccel build suffix (9c2e806)

0.10.1 (2024-09-12)

Bug Fixes

  • sessions unable to start after cleaned up (b84df2f)
  • track channel menu open state per-channel (2b0a30b)
  • use location.reload over resetRoute until we properly setup error boundaries (4e44839)

0.10.0 (2024-09-10)

Features

  • enable drag'n'drop on custom show page editor (7c46753)
  • major streaming overhaul (#749) (5ef1fc8)
  • support movies and custom shows in block shuffle (c74ba91)

Bug Fixes

  • add more structure around sensitive info redaction (deb8319), closes #732
  • add more structure around sensitive info redaction (#764) (dfa0820), closes #732
  • artificial readrate burst now returns the correct duration for the HLS session (f47da60)
  • do not add flex program when channel lineup is cleared (49253fc), closes #745
  • do not include width for icons if it is <=0 (#750) (e4d4ef8)
  • fix custom shows in programming selector (4be7c34)
  • provide hardcoded width for invalid thumb widths in XMLTV (#753) (bd40f53)
  • remove unnecessary left margin from main content on mobile (3f4c380)
  • return custom show programs sorted by index asc (05e1db3)
  • run session cleanup job every minute now that we are defaulting to session based streams (165327f)
  • set video stream index to account for files with >1 video stream (065f87c), closes #758
  • use correct stream duration value for Plex/Jellyfin streams (8d559b7)
  • use stream end event in order to remove session token (4094dd9)

0.9.1 (2024-08-31)

Bug Fixes

  • transitions between offline still images and video streams resulted in garbled audio (#739) (ec665e2)

0.9.0 (2024-08-29)

Features

  • add delete confirmation dialog before deleting a filler list + bug fixes (#726) (a4b6ac6)

Bug Fixes

  • ensure server-scoped Jellyfin API tokens always make requests with user ID (#729) (78cef1e)
  • ensure that server URLs include http/https protocol (#722) (3dbc0cd)
  • remove programs with invalid duration before saving lineup (#730) (51ceb2b)
  • use Jellyfin authorization scheme over X-Emby-Token header (#723) (a5f97fd)

0.8.1 (2024-08-26)

Bug Fixes

  • create temp backup of channel_programs table during migration so references are not deleted (2d3ff83)

0.8.0 (2024-08-25)

⚠ BREAKING CHANGES

  • add support for Jellyfin media (#633)

Features

  • add support for Jellyfin media (#633) (f52df44), closes #24
  • support leading/trailing edge configuration for intermittent watermarks (#704) (ba2ec87), closes #672

Bug Fixes

  • custom show editor style and behavior should match fillers (#715) (b834e1a)
  • default fallback image not rendered properly in UI (#709) (c5d9f43)
  • defer foreign keys in Jellyfin migration due to self-referencing tables (9462432)
  • edited new filler list name reverted after adding programming (#711) (40f1776), closes #705
  • generalize media source connection on welcome and settings pages (#701) (bb1a17f)

0.7.0 (2024-08-21)

Features

  • add FWVGA (16:9, 480p) and WVGA (15:9, 480p) resolution options (#694) (5d24059), closes #693
  • convert filler/custom show tables to Tanstack table (#697) (dc5e346)
  • replace simple tables in UI with more powerful tanstack table (#684) (f531b3c)

0.6.0 (2024-08-19)

Features

  • add 'Limit' filter option in Plex filter builder (#690) (9e28e69), closes #676

Bug Fixes

  • make all parent/grandparent plex fields optional (#686) (dc29742), closes #683
  • various fixes to channel edit form (#689) (c9784c8)

0.5.4 (2024-08-13)

Bug Fixes

  • do not use RouterLink for m3u link on guide page (8b59a56)

0.5.3 (2024-08-13)

Bug Fixes

  • change default watermark preview image URL to use configured (12ff270)
  • channel intermittent watermark default state should be intiialized (f11e8cf)
  • macos entrypoint script can be executed anywhere (#669) (6d505e9), closes #668
  • marks PlexTvShowSchema#Country as optional, like other Plex media Country fields (#674) (d112c3d), closes #670

0.5.2 (2024-08-06)

Bug Fixes

  • fix sql query error when querying channel fallback programs (#661) (16cd085), closes #660
  • mpegts streams now work even if any HLS streams were started prior (#663) (d77b0e0), closes #662

0.5.1 (2024-08-05)

Bug Fixes

  • explicitly set file:// scheme on database directories (#657) (eb5038d)

0.5.0 (2024-08-04)

Features

Bug Fixes

  • do not double suffix docker image tags for latest (8501eca)

0.4.2 (2024-08-04)

⚠ BREAKING CHANGES

  • use OS-specific, stable path for default Tunarr data directory (#643)

Features

Bug Fixes

  • ambiguous column error when selecting all filler shows (#635) (ddb0723), closes #634
  • cannot use createRequire in web-module; move version function to server (#641) (7175f15)
  • default disableChannelOverlay to false (df8192b)
  • define platforms for docker edge build workflow (a1ad921)
  • do not double suffix docker image tags for latest (8501eca)
  • double star for tag event? (2d0fce1)
  • navigation blocker appeared after channel update (#645) (a2809d8)
  • new custom show programming button led to wrong path (#647) (554a003)
  • properly save filler list / channel associations (#610) (017eca5)
  • single edge build failure should not affect other builds (d8840ac)
  • tag matching in docker release; remove quote and semver specific (0c45071)
  • Use inputted name for new filler lists (38f76d1)
  • use PAT for release-please so tag pushes trigger releases (f8f524d)
  • workaround for macOS binary release (#608) (8b8f6f8)

Miscellaneous Chores

0.4.2 (2024-08-04)

⚠ BREAKING CHANGES

  • use OS-specific, stable path for default Tunarr data directory (#643)

Features

  • ability to manually add Plex servers (#622) (7027efc)
  • add ARM builds (#618) (c2d5a66)
  • implement on-demand channels (#613) (13fe504), closes #612
  • support setting opacity on channel watermarks (#621) (9480aa2), closes #615
  • use OS-specific, stable path for default Tunarr data directory (#643) (1c56752), closes #620
  • web: display channel duration and program count on channels page (#617) (7564a4b)

Bug Fixes

  • ambiguous column error when selecting all filler shows (#635) (ddb0723), closes #634
  • cannot use createRequire in web-module; move version function to server (#641) (7175f15)
  • default disableChannelOverlay to false (df8192b)
  • define platforms for docker edge build workflow (a1ad921)
  • double star for tag event? (2d0fce1)
  • navigation blocker appeared after channel update (#645) (a2809d8)
  • new custom show programming button led to wrong path (#647) (554a003)
  • properly save filler list / channel associations (#610) (017eca5)
  • single edge build failure should not affect other builds (d8840ac)
  • tag matching in docker release; remove quote and semver specific (0c45071)
  • Use inputted name for new filler lists (38f76d1)
  • use PAT for release-please so tag pushes trigger releases (f8f524d)
  • workaround for macOS binary release (#608) (8b8f6f8)

Miscellaneous Chores

0.4.1 (2024-08-03)

Bug Fixes

  • navigation blocker appeared after channel update (#645) (a2809d8)
  • new custom show programming button led to wrong path (#647) (554a003)

0.4.0 (2024-08-03)

⚠ BREAKING CHANGES

  • use OS-specific, stable path for default Tunarr data directory (#643)

Features

  • use OS-specific, stable path for default Tunarr data directory (#643) (1c56752), closes #620

Bug Fixes

  • cannot use createRequire in web-module; move version function to server (#641) (7175f15)

Miscellaneous Chores

0.3.2 (2024-07-24)

Bug Fixes

  • ambiguous column error when selecting all filler shows (#635) (ddb0723), closes #634

0.3.1 (2024-07-17)

Bug Fixes

  • use PAT for release-please so tag pushes trigger releases (f8f524d)

0.3.0 (2024-07-17)

Features

Bug Fixes

  • default disableChannelOverlay to false (df8192b)
  • define platforms for docker edge build workflow (a1ad921)
  • double star for tag event? (2d0fce1)
  • properly save filler list / channel associations (#610) (017eca5)
  • single edge build failure should not affect other builds (d8840ac)
  • tag matching in docker release; remove quote and semver specific (0c45071)
  • Use inputted name for new filler lists (38f76d1)
  • workaround for macOS binary release (#608) (8b8f6f8)