2026.10.4 (2026-10-25)
⚠ BREAKING CHANGES
- scheduling: the API rejects
movieslots in time and random slot
schedules. Schedule movies with a custom-show slot instead.
Features
- scheduling: migrate movie slots to custom-show slots (#2235) (5d6b11d)
- web: add design tokens, new theme and app-wide density setting (42b8c5d)
- web: add Segmented, KeyHint and EmptyState primitives (#2359) (697a0f1)
- web: add Storybook and the first component-layer primitives (d5fd146)
- web: replace the drawer and top bar with AppShell (#2356) (ed4af53)
- web: switch fonts to IBM Plex Sans and IBM Plex Mono (f894f4d)
Bug Fixes
- api: store uploaded images under server-generated names (#2357) (57dfd2d)
- artwork: ignore a cachePath whose file is missing (#2294) (9f10114)
- channels: keep startTime unless the user changes it on save (#2308) (bdc085f), references #2306
- db: register the program_grouping external key index migration (5936dd9), references #2232
- docker: copy .pnpmfile.cjs into the image build (#2371) (af95944)
- ffmpeg: escape subtitle filter paths (#2324) (d8cb90e)
- ffmpeg: pass tonemap peak in reference-white units (b09a7e0), closes #2063
- ffmpeg: select libdav1d for AV1 by checking ffmpeg's decoder list (#2370) (355c06c)
- ffmpeg: use mpeg2_vaapi for VAAPI MPEG-2 output (#2322) (21ee1d9)
- nfo: support multiple studios for other_video.episodedetails (8667ca0)
- server: replace pool workers that miss a task deadline (#2090) (c0ca3e0)
- server: sort backup archives chronologically (1e9c5a3)
- server: trash a removed local path instead of deleting its programs (#2206) (f3141e5), references #2088 #2086 #2088
- stream: align WebVTT sidecar playlist with the video timeline (bca52dc)
- stream: offset subtitle windows by the playlist's start time (0a82078)
- stream: preserve subtitle playlist discontinuities (#2288) (5d0445d)
- web: drop raised from the media sources welcome card (3840310)
- web: keep log roll settings when the schedule is unticked (afe1709)
- web: let the log roll form save with the schedule unticked (d356847)
- web: make copy to clipboard work over plain HTTP and inside dialogs (#2331) (b53a867)
- web: stop the library scan spinner when a scan finishes (#2332) (7b6d389)
- web: stop the size checkbox from resetting the schedule unit (8c74d81)