2.18.0 (2026-09-21)
Features
- media: add a Trailer button to movie and show pages that opens the TMDB trailer in the user's language, or a YouTube search (#413) (1b4d276)
- sync: push watched state to the media server when an already-watched item is newly collected (#420) (9f4ad4d)
Bug Fixes
- bingebase: use SyncStatus.running so the push can start (68c1ba4)
- episode-order: fetch TVDB episodes in English so title matching works for non-English originals (#351) (2cae47b)
- episode-order: stop recomputing a show's TVDB mapping on every webhook tick (#412) (faeb065)
- history: render watch times in the viewer's timezone instead of the container's (#411) (6ab2190)
- mdblist: back off on the short-window rate limit, stop on the daily one (98529b9)
- mdblist: cap Retry-After and keep live scrobbles to one short retry so webhooks don't stall, add tests (1d13df5)
- push: skip unchanged ratings, watched items and lookup misses on scheduled pushes, and don't rewrite Plex ratings it already has (#421, #422) (dd4bd57)
- sync,simkl: chunk the IN clauses that exceed asyncpg's parameter cap (e423a80)
- sync: bound job error messages so a failure cannot leave the job running (eb2d84b)
- translations: apply metadata language to search results (#417) (a393995)
- webhooks: reload settings and media after a stale-session rollback so scrobbles don't hit MissingGreenlet (#410) (d1eb0fb)