Build ErsatzTV Image / Docs update reminder (pull_request) Successful in 6s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 7m41s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 7m52s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Has been skipped
Editing a schedule's properties to change shuffleScheduleItems for the active schedule left the open items draft stale: hidden Fixed/Flood start values could be saved back and the inspector kept offering start-type controls the schedule no longer supports. onScheduleSaved now detects a shuffle flip on the active schedule and reloads the items via GET so the server's EnforceProperties re-normalizes the draft. The schedule-level flags already refresh from the save response (setBoot maps `saved` into the list). Decision: chose "block opening the edit dialog while the item draft is dirty" (confirm-to-discard, guardedSwitch semantics) over confirm-at-reload — the smaller fully-consistent change. It guarantees the properties editor only ever opens over a clean baseline draft, so the post-save reload is lossless and avoids the awkward state where a cancelled discard leaves a now-shuffled schedule holding Fixed values. Regression: SchedulesScreen.test.tsx — Fixed item on a non-shuffled schedule → edit properties to shuffle=true → a fresh items GET fires, the Fixed option is gone, and a subsequent Save's PUT carries no Fixed startType. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>