Added
- Retry All Button: Manual intervention banner now has a "Retry All" button
- Previously mentioned clicking "Retry here" but no button existed
- Bulk retry functionality for all items needing manual intervention
- Episode Titles: TV shows now display episode titles in the format "Series S01E08 - Episode Title"
- Richer context for identifying specific episodes
- Event Replay Service: Unprocessed events are now replayed on startup
- Fixes race condition where events published just before restart weren't processed
- Ensures CorruptionDetected events are delivered to remediator after restart
Fixed
- False ManuallyRemoved State: Items no longer incorrectly marked as removed when import succeeds
- Checks for import events in history before marking as ManuallyRemoved
- Handles NFS sync delays and path mapping timing issues
- Recovery Service State Coverage: All intermediate states now recovered on startup
- Previously missed
RemediationQueued,DeletionStarted,DeletionCompletedstates - Items stuck in early remediation states are now properly reprocessed
- Previously missed
- Lost Retry Timers: Retry schedules are now preserved across restarts
- Failed states (
SearchFailed,RemediationFailed, etc.) trigger retry on startup - Items at max retries correctly transition to
MaxRetriesReached
- Failed states (
Improved
- EventBus Buffer Monitoring: Warning logged when subscriber buffer is full
- Events are still persisted to DB (not lost), warning aids debugging
- Semaphore Timeout: Remediator semaphore now has 2-minute timeout
- Prevents indefinite hangs if HTTP calls get stuck
- Emits failure event on timeout for proper retry flow
- Verifier Concurrency Limit: Maximum 50 concurrent verification goroutines
- Prevents resource exhaustion during bulk scans
- 5-minute timeout with appropriate failure events