2026-10-10 14:54:08 -07:00
..
2026-08-06 14:35:34 -07:00
2026-08-14 09:20:03 -07:00
2026-08-26 06:48:14 -07:00
2026-10-08 08:52:36 -07:00
2026-09-27 16:02:05 -07:00
2026-09-27 09:43:26 -07:00
2026-10-09 13:27:53 -07:00
Scene strip tile artwork + on-air indicator (creator ruling 2026-10-10). Top-bar tiles now carry their own art: each canonical scene's tile is a per-scene CRT-styled image stored in the internal DB (Scene.ThumbnailAssetId - additive migration, seeded at heal from the creator's five Downloads JPGs via SceneThumbnailSeedPaths), and the preview pane keeps rendering the scene's ORIGINAL background - never the tiles. One shared on-air image (Gemini 4zajyl...jpg) replaces the staged scene's tile and follows the scene swap ('the on-air screen jumps around the top bar as the user swaps scenes'): stored as an Asset BLOB tracked by the OnAirImageAssetId Setting (EnsureOnAirImage, same contract as the alert clip) with MainViewModel.OnAirSeedPath override; RefreshSnapshotsAsync shows it for the staged scene, otherwise thumbnail-or-background art, and a staged Live with no on-air art still falls back to the green placeholder (minis never render live captures). Removed the 6px #22c55e rectangle in PreviewPane's backdrop ('green outline around the preview screen' that surfaced when a scene had no background) - the outer PreviewGlow red border is the real live signal. Doubled the scene-tile labels (FontSize 10 -> 20). Fixed a real bug this surfaced: Save()'s Asset pruner only kept Source/alert-clip rows, so the first save would have DELETED the seeded tile + on-air assets - the keep-set now includes Scene.ThumbnailAssetId and the OnAirImageAssetId Setting. New Settings/Load/Save migrations + SceneThumbnailTests (4 tests: seeded tile in strip, preview keeps original bg, Live-staged tile, no-seed fallback, on-air swap + persistence). 427 pass, 0 build warnings. (Unit: strip tiles + on-air)
2026-10-10 13:27:26 -07:00
2026-08-30 22:32:45 -07:00
2026-09-27 09:33:30 -07:00
2026-10-10 14:54:08 -07:00
Scene strip now renders in canonical F-key order regardless of persisted SortOrder. The strip loads Scenes ORDER BY SortOrder while each tab's F-key label is name-derived, so a session that persisted Chat before BRB (found on the creator's DB: SortOrder 2/3) showed tabs 'Chat F4' then 'BRB F3'. MainViewModel.LoadLayout now calls the new ReorderScenesToCanonical() - the five canonical scenes reorder to Starting, Live, BRB, Chat, Ending (F1-F5, stable among renamed non-canonical scenes), and the next auto-save re-stamps SortOrder so the heal persists. One integration test (SceneOrderTests) seeds the swapped-order DB and asserts loaded order, F1-F5 labels, and that a save persists the corrected ordering. 423 pass, 0 build warnings. (Unit: scene order)
2026-10-10 12:09:07 -07:00
2026-10-09 13:22:52 -07:00
2026-08-31 19:32:41 -07:00
2026-10-07 20:46:45 -07:00
2026-09-27 09:25:21 -07:00
Scene strip now renders in canonical F-key order regardless of persisted SortOrder. The strip loads Scenes ORDER BY SortOrder while each tab's F-key label is name-derived, so a session that persisted Chat before BRB (found on the creator's DB: SortOrder 2/3) showed tabs 'Chat F4' then 'BRB F3'. MainViewModel.LoadLayout now calls the new ReorderScenesToCanonical() - the five canonical scenes reorder to Starting, Live, BRB, Chat, Ending (F1-F5, stable among renamed non-canonical scenes), and the next auto-save re-stamps SortOrder so the heal persists. One integration test (SceneOrderTests) seeds the swapped-order DB and asserts loaded order, F1-F5 labels, and that a save persists the corrected ordering. 423 pass, 0 build warnings. (Unit: scene order)
2026-10-10 12:09:07 -07:00
2026-08-30 08:34:10 -07:00
2026-10-09 10:27:38 -07:00
2026-10-07 20:46:45 -07:00
2026-10-09 13:32:38 -07:00
2026-10-09 19:05:04 -07:00
2026-09-14 16:14:00 -07:00
2026-10-09 10:31:11 -07:00
2026-09-22 07:00:47 -07:00
2026-09-22 09:31:00 -07:00
2026-10-08 08:26:29 -07:00
2026-08-07 17:44:16 -07:00
2026-08-04 17:12:32 -07:00
2026-08-31 08:59:38 -07:00
2026-08-31 08:59:38 -07:00