3.2.0 (2026-09-25)
Features
- ai-catalogs: build as many catalogs as a prompt asks for, from every Discover setting (3f4a237)
- art: fill {shape} in art patterns and send a landscape poster from the poster pattern (58aac94)
- collections: serve builder collections as AIOStreams collection metas (07b0f02)
- discover: exclude streaming services (3f4a237)
- discover: pick several origin countries and original languages (3f4a237)
- jellyfin: answer watched history and counts across the library (26ade38)
- jellyfin: take upcoming episodes and their air times from MDBList's calendar (4a7dded)
- mdblist: add other users' external lists by URL (c204eba)
- simkl: say which setting a Simkl client ID belongs in when the PIN request is refused (2b089ee)
Bug Fixes
- ai-catalogs: keep each catalog's own dates when one prompt asks for several (3f4a237)
- ai: accept OpenRouter's ~ model aliases instead of falling back to the default (87f18c8)
- configure: sign in again when the session expires on an open page (6f8daf1)
- dashboard: name popular titles requested by a TMDB or TVDB id (5b337e7)
- image-cache: answer an expired image at once and refresh it behind the request (e8c7d81)
- jellyfin: answer /Items/Suggestions instead of reading it as an item id (b8b4654)
- jellyfin: apply stream and subtitle cache lifetimes set in the dashboard without a restart (47e4dab)
- jellyfin: list collection folders even when none of their catalogs are visible (085005c)
- jellyfin: read a playing item's metadata once, not on every progress report (03aec63)
- jellyfin: send the full set of stream flags on placeholder media sources (4e13dd5)
- jellyfin: show a drop or watch change on the next read (ad5ccc3)
- tvdb: use a season's own poster when TVDB points its image at a background (5989938)
- watch-tracking: clear resume points when a title is marked unwatched (509c54d)
Performance Improvements
- mdblist: read external and by-name list pages from one cursor-paged block (bc91d9c)