A patch release focused on scheduler correctness, backup/restore integrity, and file-handling race conditions, plus a rewrite of the Conflict Detection Wizard's logic.
Fixed
- Overnight schedules (e.g. Friday 10 PM - 3 AM) could be attributed to the wrong day, dropping out of their window right at midnight or activating a day early. Schedule-active checks now anchor to the occurrence's actual starting day for every recurrence type.
- "Next run" could be wrong, or the app could error, for monthly schedules on days 29-31 and for yearly/holiday schedules landing on Feb 29. The calculation now searches forward using the real recurrence pattern and skips invalid dates.
- A schedule made of only a sequence (no category) was wrongly logged as broken and never applied.
- Sequential-type blocks in a sequence were silently skipped everywhere (schedule apply, filler apply, manual "Apply to Server", dashboard intro resolution) - only "random" blocks ever resolved. Sequential blocks now resolve correctly.
- The scheduler's verification loop used the host/container clock instead of your configured timezone, and always assumed non-playlist mode - silently flipping a playlist-mode category back to random roughly every 5 minutes. Both are fixed.
- Restoring a backup could silently break the links between schedules/sequences and the prerolls they reference, since SQLite reassigns row IDs on restore. Backups now remap every reference on restore (backup schema bumped to v3).
- Deleting a preroll could leave dangling references in saved sequences and schedule sequence blocks.
- Replacing a duplicate upload broke references by deleting/recreating the preroll row instead of updating it in place.
- Upload/rename/category-move race conditions fixed; renaming to an existing filename now returns a conflict instead of overwriting it; case-only renames on Windows now work; Windows-reserved filenames are rejected.
- The Conflict Detection Wizard could miss real conflicts and offer quick-fixes that didn't actually resolve them (one-sided blend enables, priority bumps exceeding the max of 10). Its logic now matches the backend's conflict evaluation exactly.
- Consistent Escape/focus/scroll-lock behavior across all modals.
- Fixed a race in the Holiday Browser where rapidly switching country/year could show stale results.
Full details: CHANGELOG.md
Upgrade-safe. Docker jbrns/nexroll:latest / :2.0.5.