Fix thumbnail backoff and watchlist fallback matching
This commit is contained in:
@@ -1,5 +1,30 @@
|
||||
# Changelog
|
||||
|
||||
## 0.29.0 - 2026-05-16
|
||||
|
||||
- Fixed watchlist thumbnail retry backoff so failed automatic cover lookups now record a retry timestamp and stop hammering AnimeSchedule or AniDB on every later warm-up pass.
|
||||
- Hardened queued-download fallback matching to keep season and part identity intact while still accepting equivalent season notation such as `2nd Season` and `Season 2`.
|
||||
- Made paged watchlist responses clamp out-of-range page requests before fetching rows, keeping the reported `page` value aligned with the returned `items`.
|
||||
- Expanded regression coverage for thumbnail backoff persistence, season-aware fallback matching, and out-of-range watchlist pagination.
|
||||
|
||||
## 0.28.0 - 2026-05-16
|
||||
|
||||
- Bounded watchlist refresh network calls with a shorter dedicated timeout and matched worker-shutdown grace period, making per-show and bulk watchlist teardown behavior more predictable when upstream services are slow.
|
||||
- Improved completed-download watchlist sync failures by preserving the fallback resolution reason and surfacing it in logs and raised errors instead of collapsing everything into one generic unresolved `show_id` message.
|
||||
- Continued the backend split by moving shared title-normalization and title-query helpers into a dedicated `title_matching.py` module.
|
||||
- Tightened the shared browser polling helper so it uses serial `setTimeout` scheduling plus unload cleanup.
|
||||
- Expanded regression coverage for bounded watchlist refresh timeouts, clearer fallback-match failures, and the updated poll-helper cleanup behavior.
|
||||
|
||||
## 0.27.0 - 2026-05-15
|
||||
|
||||
- Made runtime reset stricter by refusing to clear the global runtime state when background workers do not stop cleanly, preventing stale workers from outliving the runtime instance they came from.
|
||||
- Taught per-show watchlist refreshes to stop earlier during shutdown by checking the refresh stop flag before committing later update stages.
|
||||
- Marked bulk watchlist refresh jobs as `interrupted` when shutdown interrupts them instead of letting them look like a normal successful completion.
|
||||
- Hardened the completed-download watchlist sync fallback so it only trusts a fallback search result when the queued title still matches confidently, failing safe instead of risking the wrong anime being marked downloaded.
|
||||
- Reworked the shared browser polling helper to use serial `setTimeout` polling with unload cleanup instead of a bare repeating interval.
|
||||
- Continued the backend split by moving queued-download watchlist identity resolution into a dedicated `watchlist_identity.py` helper module.
|
||||
- Expanded regression coverage for interrupted resets, interrupted bulk watchlist refresh jobs, safer watchlist identity fallback behavior, and browser poll helper cleanup.
|
||||
|
||||
## 0.26.0 - 2026-05-15
|
||||
|
||||
- Made controlled runtime shutdown stricter by canceling active download workers during blocking teardown paths such as app exit and runtime reset, reducing the chance of orphaned background work outliving the server.
|
||||
|
||||
Reference in New Issue
Block a user