Added
- Selectable Box Office Region: New setup dropdown to pick a Box Office Mojo region, driving an
?area=CODEquery so charts can track box office beyond US & Canada domestic (#109, #112) - Configurable Box Office Timeout: New
boxoffice_timeoutsetting (default 120s, range 5-600) plus a 3-attempt retry with backoff for more resilient Box Office Mojo requests (#110, #113) - UI Polish: Async refresh button with a progress endpoint, a week tenure badge, and a recent-weeks grid on the overview page (#105)
Fixed
- Ignore Button: Fixed single-quote escaping in the overview ignore-button
onclickhandler so movies with apostrophes in their titles can be ignored (#106, #111) - Event-Loop Blocking: Manual box office routes now offload the blocking Box Office Mojo scraper to a worker thread, so a wedged upstream (compounded by request retries) no longer stalls the asyncio event loop and hangs every request, including
/api/health - Timeout Preservation on Save: Saving configuration from the settings UI now preserves the
boxoffice_timeout(and Radarr request timeout) value instead of silently reverting it to the default - Correct Auto-Add Match: Auto-add now selects the Radarr lookup result by IMDb id instead of the first candidate, preventing the wrong movie from being added (#115)
- Year-Boundary Navigation: Fixed previous-week navigation across the year boundary and URL-encoded the overview search links so titles with special characters resolve correctly (#116)
- XSS Hardening: Escaped dynamic widget output and switched toast rendering to a safe path so untrusted values can no longer inject markup (#117)
- Sequel Mismatch: The matcher no longer links a charting sequel to the original film already in the library (#118)
Changed
- Health-Check Logging: Suppressed
uvicorn.accesslog lines for/api/healthto keep logs readable under frequent health probes (#107) - Config Resilience: A corrupt
local.yamlno longer crashes the app — the loader falls back to setup mode, backs up the unreadable file as.broken, and writes config atomically (#119) - Weekly JSON Integrity: Weekly page data is now written atomically and read corruption-safe, writers are serialized under a shared lock, and movies deleted from Radarr are un-linked from stored weeks (#120)
What's Changed
- fix: make Ignore/Unignore buttons clickable on Overview page by @iongpt in #111
- feat: add selectable Box Office Mojo region by @iongpt in #112
- fix: make Box Office Mojo timeout configurable with retry-backoff by @iongpt in #113
- fix: suppress health-check endpoint from Uvicorn access log by @xFlawless11x in #107
- feat: UI polish — refresh button, week tenure badge, recent weeks grid by @xFlawless11x in #105
- chore: prepare v1.8.0 release by @iongpt in #114
- fix: match auto-add search result by IMDb id to avoid adding the wrong movie by @iongpt in #115
- fix: correct year-boundary week nav and URL-encode overview search params by @iongpt in #116
- fix: harden XSS sinks in widget, dashboard toasts, and setup JS by @iongpt in #117
- fix: prevent charting sequels from matching the original film in the library by @iongpt in #118
- fix: harden config load/save against corrupt local.yaml by @iongpt in #119
- fix: harden weekly JSON integrity (atomic writes, corruption-safe reads, un-linking) by @iongpt in #120
- chore: release v2.0.0 by @iongpt in #121
Full Changelog: v1.7.0...v2.0.0