2026.09.17.0056-nightly
- feat(jellyfin): enable skip markers by default (2001105)
- docs: add a guide to using the Jellyfin server (8d83a3e)
- fix: keep & and = inside catalog and subtitle extra values (0af3424)
- feat(jellyfin): enable the api and watch state by default (cc82343)
- refactor(watch-state): accept durations for interval settings (7db4125)
- docs: document the addon protocol extensions (022d2c7)
- fix(watch-state): deliver fresh events ahead of backlogs (66f1a39)
- feat(watch-state): sync addon watchlists with favourites (9a58fb2)
- feat(jellyfin): serve collections of any title type (6be31e0)
- feat(jellyfin): read extended meta fields (11b257c)
- perf(debrid): batch cached StremThru availability reads with mget (a4411f5)
- fix(cache): retry redis writes from a failed flush instead of dropping them (f3ddb83)
- fix(builtins/library): escape item ids (f8f3f83)
- perf(debrid): cache only the files StremThru availability checks can select (f9de485)
- perf(core): match ranked regexes once per file name and yield between slices (6d80a47)
- perf(cache): sweep expired memory cache entries every minute (00cb428)
- perf(core): clear the withTimeout timer once the operation settles (0d109c5)
- perf(config): skip re-testing stream expressions that already passed validation (95c8697)
- perf(debrid): parse only the file names selection reads when resolving (66560eb)
- perf(builtins): parse each debrid file name once and yield while parsing (0498171)
- perf(core): memoise language normalisation (58dda74)
- perf(parser): skip unicode folding for ascii titles and clean titles in one pass (3bedcc6)
- perf(parser): compile service name regexes once instead of per stream (09f654a)
- perf(core): derive config keys with pbkdf2 on the thread pool (29d4ef5)
- perf(builtins): cache only the search result fields the addons read (c0470c5)
- perf(cache): compress large redis values with zstd (28cba47)
- perf(nab): parse torznab/newznab responses with a byte scanner (b08d4d1)
- chore(deps): move @types/node to v24 to match the node engine (d0eccd1)
- fix(jellyfin): play streams carried on a meta's video instead of querying stream addons (37955a9)
- fix(jellyfin): reuse a failed resolve for 30 seconds instead of retrying on every playback request (37845e0)
- perf(jellyfin): fetch catalogs ahead for rows without a library (4c1067c)
- feat(jellyfin/segments): share identical provider lookups between concurrent requests
- fix(jellyfin): share one stream resolve between concurrent opens of an item (81a9719)
- fix(jellyfin): log why a catalog page returned errors (24f1fab)
- refactor(wrapper): use requestLockType for resource request locks (016a13e)
- fix(distributed-lock): release redis locks before publishing (668aa4d)
- fix: allow any resource string (64f9e21)
- fix(watch-state): round pulled times and positions to whole milliseconds (09a9c01)
- fix(watch-state): make playstate upsert work on postgres (9d2b3d9)
- fix(config): use
byteSizeschema for max pull response bytes (64ff9ba) - feat(jellyfin): show watch-state trackers from the configuration in a Trackers tab (e09a055)
- feat(jellyfin): report hearing impaired, original and other track flags on media streams
- feat(frontend): add primer declaring instance limits to jellyfin modal (35d0db5)
- feat(jellyfin): add library limit and search catalog concurrency limit (022d5bf)
- fix(jellyfin): mark a show watched once its aired episodes are (8470854)
- fix(watch-state): key long-running anime episodes by their TVDB season (ebb22d9)
- fix(watch-state): match TVDB and TMDB ids to the IMDb id from the id mappings (3a76201)
- feat(frontend): show enabled segment providers in UI
- docs(env): document the Jellyfin, watch-state and database pool variables (63f34b9)
- feat(settings): add Jellyfin and Watch State tabs (bfce5d1)
- feat(frontend): set up Jellyfin from the save and install page (1564a4c)
- feat(jellyfin/segments): implement MediaSegments for intros, recaps and credits from IntroDB, AniSkip and Anime-Skip (5786b1a)
- feat(jellyfin): report playback and watched marks to watch-state addons (d1c1b1b)
- feat(jellyfin): let one configuration sign in as several users (76f8be1)
- feat(jellyfin): serve a Jellyfin-compatible API so Jellyfin clients can browse and play feat(ratelimit): let a route spend a limiter token without failing the request (dd8ea9c)
- feat(watch-state): sync playback and watch history with addons that declare watch_state (60aa8b6)
- feat(watch-state): record watch state and playback sessions (67c9791)
- feat(watch-state): add the watch_state addon resource (02d1d4e)
- feat(anime-database): answer many season and episode lookups from one read (6c89dc0)
- fix(formatter): stop the formatter browser's tab indicator replaying (4ebb7ce)
- feat(ui): allow the tab indicator animation to be turned off (1780c48)
- fix(ui): stop checkbox group rows resizing when toggled (e397310)
- feat(settings): add an orderable multi-select field (2f2e1f0)
- feat(db): refuse a database migrated by a different build (f28c6ac)
- feat(db): make the PostgreSQL pool size configurable (b8ecce7)
- perf(http): skip the recursion counter for requests that ignore it (7dde970)
- perf(distributed-lock): publish a lock's result only when a waiter is subscribed fix(distributed-lock): run the work when the holder finishes before a waiter subscribes (7afe512)
- fix(cache): make a forced write wait for a flush already in progress fix(cache): slide TTLs on the Redis and SQL backends perf(cache): evict the memory backend's least recently used entry in constant time (3feb117)
- perf(wrapper): skip re-validating a cached meta fix(wrapper): key cached subtitles by their extras (2dcf85c)
- feat(sel): add audioTitle() and subtitleTitle() filters (ec2ec03)
- feat(formatter): add audioTitles and subtitleTitles fields (09152cd)
- fix(dedup): take languages and tracks from a probed source instead of merging them (e5b5182)
- feat(media-info): keep each probed audio and subtitle track (14ac79c)
- feat(debrid): carry StremThru's video hash through to streams (c2800f1)
- chore(library): drop the fetched NZB list debug log (7af885a)
- fix(stremio): stop logging the user's config on meta requests (3bb0235)
- chore(build): scope the root and server tsconfig to their sources (5d0b5d6)