🐛 Fixes
Settings drift (issue #238)
thumbnail_intervalno longer drifts between Settings, Servers, and per-server overrides. End-to-end fix: schema migration heals existing drift on upgrade, read fallback covers older configs, and Save now
propagates the value to every server entry.- Unified default to 10s across UI, defaults, migrations, and tests.
Job queue & retry chains
- Cascade-delete retry children when a parent job is removed — fixes orphaned retry rows that survived parent cleanup (#239).
- KPI filter now matches the queue so the dashboard count and visible rows agree.
- Per-outcome file-results cap — the filter now sees all failures instead of being silently truncated to a global cap.
- Webhook delay clamped and notify failures swallowed in
_persistso a single notifier hiccup can't kill the persist path. - "Chain exhausted" log now fires on retry exhaustion (was misleadingly logging "completed successfully").
Dashboard
- Per-row webhook countdown with Fire-now / Retry-now icons on each pending row.
- Pending-webhooks banner shrunk to a chip in the Job Queue header.
- 1 Hz ticker kicks in for webhook-only queues so countdowns tick when no jobs are running.
- Restore prior worker count when re-enabling a GPU (was resetting to 1).
- Disabled GPUs are greyed out instead of carrying a confusing badge.
Setup Health
- Silence the header badge + tab glyph when every Recommended check is dismissed.
- Silence non-blocking checks, hide non-video libraries, and end the What's-new loop on dev builds.
health_dismissalspreserved across server Save (#237) — dismissals no longer reappear after editing a server.
Orchestrator / FFmpeg / Plex
- GPU→CPU fallback now honored on full-scan paths, not just per-item.
- Tied MediaParts hash now picked correctly instead of an unrelated head entry.
- FFmpeg progress reader tolerates non-UTF-8 bytes instead of crashing on garbled console output.
- Retry-wait log names actually-pending servers instead of all configured ones.
Path mappings
- Windows backslashes converted in path mappings (#236) so Sonarr/Radarr from Windows hosts route correctly.
Docs
/api/jobs/{id}/retry-nowand/api/jobs/{id}/fire-webhook-nowendpoints documented in reference.md.