gramps
caf5d6130d
feat(topbar): the output stage's three states, and keyboard entry into the bar
...
Build 729 (creator):
- "press <esc> to return" loses the word "press"; the label is "Record / Go-Live".
- The bar takes focus on "Build scenes" and Tab cycles between the two halves only
(KeyboardNavigation.TabNavigation="Cycle"), never off into the window.
- Entering Record / Go-Live starts with NOTHING chosen — the output switches are a fresh decision,
not a remembered one.
- Three states: nothing chosen [YouTube][Local MP4]; YouTube chosen [YouTube(red)][Live Stream][Private
Stream]; Local MP4 chosen [Local MP4(red)][Start Recording] → [End Recording] while recording. Only the
chosen output is red; the action chips never highlight. Choosing Local MP4 takes the left slot and the
YouTube chip disappears with it, which is what "slides to the left, replacing it" describes.
"Private Stream" is the private-visibility stream — the same thing this app has always called the test
stream (creator's clarification, so the wording is deliberate, not a new broadcast type).
Output chips are one style with a Tag-driven trigger (OutputChip + OutputChipIcon), so a chip's red face
and its glyph colour can't drift apart; the one-alpha hit-area colour is a token, because
DesignTokensTests rightly refuses literals in theme files.
680 pass, 0 warnings. Scope justification: Assets/starting-background.jpg is outside this unit — the
creator's replacement art, still awaiting their visual check.
2026-11-12 16:35:16 -08:00
..
2026-11-05 09:57:07 -08:00
2026-11-12 07:50:59 -08:00
2026-11-01 14:13:57 -08:00
2026-09-26 14:44:57 -07:00
2026-11-05 09:57:07 -08:00
2026-09-26 14:44:57 -07:00
2026-09-24 08:27:00 -07:00
2026-09-26 12:08:27 -07:00
2026-11-02 10:47:48 -08:00
2026-10-30 14:42:40 -07:00
2026-11-02 11:06:43 -08:00
2026-11-01 07:01:50 -08:00
2026-11-12 07:50:59 -08:00
2026-11-12 11:39:20 -08:00
2026-11-01 13:48:28 -08:00
2026-10-30 13:18:23 -07:00
2026-10-09 13:27:53 -07:00
2026-11-06 12:30:48 -08:00
2026-10-09 13:27:53 -07:00
2026-11-12 11:15:50 -08:00
2026-11-12 14:21:48 -08:00
2026-11-06 12:21:24 -08:00
2026-10-10 07:08:01 -07:00
2026-08-23 13:33:33 -07:00
2026-08-31 19:32:41 -07:00
2026-11-05 15:38:32 -08:00
2026-11-01 13:32:23 -08:00
2026-11-01 13:17:40 -08:00
2026-10-21 23:09:11 -07:00
2026-10-28 13:09:15 -07:00
2026-11-12 13:57:03 -08:00
2026-11-01 09:16:27 -08:00
2026-10-27 09:25:49 -07:00
2026-10-04 15:05:28 -07:00
2026-11-06 12:56:05 -08:00
2026-09-05 14:31:03 -07:00
2026-10-30 07:53:37 -07:00
2026-10-09 22:15:59 -07:00
2026-11-02 11:10:21 -08:00
2026-11-05 14:53:06 -08:00
2026-08-24 09:08:03 -07:00
2026-11-05 08:39:46 -08:00
2026-09-04 11:01:51 -07:00
2026-11-05 08:20:33 -08:00
2026-11-05 08:05:18 -08:00
2026-11-05 09:57:07 -08:00
2026-11-10 12:41:39 -08:00
2026-11-10 11:59:02 -08:00
2026-11-10 12:25:19 -08:00
2026-10-16 18:23:20 -07:00
2026-10-30 08:29:28 -07:00
2026-10-10 11:52:17 -07:00
2026-10-30 09:18:50 -07:00
2026-11-10 11:55:42 -08:00
2026-11-05 09:38:18 -08:00
2026-11-05 17:14:40 -08:00
2026-11-12 14:45:58 -08:00
2026-11-12 13:57:03 -08:00
2026-11-12 07:50:59 -08:00
2026-11-12 07:57:36 -08:00
2026-08-31 19:45:48 -07:00
2026-09-28 11:53:52 -07:00
2026-10-05 11:10:22 -07:00
2026-11-05 09:57:07 -08:00
2026-11-12 13:57:03 -08:00
2026-10-30 12:32:07 -07:00
2026-10-30 13:46:05 -07:00
2026-10-30 08:30:33 -07:00
2026-11-02 11:20:54 -08:00
2026-08-26 06:48:14 -07:00
2026-08-26 06:48:14 -07:00
2026-11-05 14:56:20 -08:00
2026-09-28 11:53:52 -07:00
2026-11-05 09:38:18 -08:00
2026-11-01 13:08:03 -08:00
2026-11-10 18:09:16 -08:00
2026-11-04 14:22:32 -08:00
2026-11-10 17:59:28 -08:00
2026-11-02 18:17:18 -08:00
2026-10-30 13:18:23 -07:00
2026-09-15 19:25:39 -07:00
2026-11-05 10:40:25 -08:00
2026-11-05 09:15:30 -08:00
2026-11-05 09:38:18 -08:00
2026-11-05 07:54:06 -08:00
2026-11-05 08:15:32 -08:00
2026-11-05 08:15:32 -08:00
2026-11-05 09:57:07 -08:00
2026-10-30 14:01:29 -07:00
2026-11-02 11:34:48 -08:00
2026-10-30 13:32:24 -07:00
2026-08-23 12:25:04 -07:00
2026-11-02 11:24:50 -08:00
2026-11-04 11:19:40 -08:00
2026-10-30 09:30:56 -07:00
2026-11-12 08:01:01 -08:00
2026-11-02 11:38:17 -08:00
2026-11-01 07:46:10 -08:00
2026-10-27 10:20:53 -07:00
2026-10-09 13:32:38 -07:00
2026-11-02 11:18:10 -08:00
2026-11-01 16:26:20 -08:00
2026-11-12 08:24:12 -08:00
2026-11-12 08:24:12 -08:00
2026-09-27 08:55:55 -07:00
2026-09-27 15:37:46 -07:00
2026-09-27 15:37:46 -07:00
2026-11-01 09:55:04 -08:00
2026-09-18 10:20:25 -07:00
2026-11-10 12:54:54 -08:00
2026-09-14 16:14:00 -07:00
2026-11-10 11:51:21 -08:00
2026-08-23 13:33:33 -07:00
2026-11-04 10:52:35 -08:00
2026-08-31 17:53:34 -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-11-06 12:21:24 -08:00
2026-10-30 14:54:05 -07:00
2026-10-30 14:50:20 -07:00
2026-10-30 15:05:33 -07:00
2026-10-30 14:36:56 -07:00
2026-10-30 15:19:28 -07:00
2026-11-02 11:14:15 -08:00
2026-10-30 14:36:13 -07:00
2026-10-30 15:24:14 -07:00
2026-11-02 11:28:11 -08:00
2026-10-30 14:35:42 -07:00
2026-09-14 18:40:20 -07:00
2026-08-13 08:57:56 -07:00
2026-11-01 16:12:38 -08:00
2026-11-05 15:38:32 -08:00
2026-11-12 15:44:15 -08:00
2026-09-01 22:25:20 -07:00
2026-10-30 09:06:53 -07:00
2026-08-13 11:04:32 -07:00
2026-08-19 11:51:32 -07:00
2026-10-30 10:02:06 -07:00
2026-08-13 09:29:58 -07:00
2026-09-28 11:53:52 -07:00
2026-10-28 13:09:15 -07:00
2026-11-04 17:05:06 -08:00
2026-11-09 13:05:44 -08:00
2026-11-12 08:05:55 -08:00
2026-10-30 12:33:40 -07:00
2026-11-11 10:19:20 -08:00
2026-11-01 07:01:50 -08:00
2026-08-16 17:48:37 -07:00
2026-11-05 12:09:38 -08:00
2026-10-30 13:16:19 -07:00
2026-11-04 10:11:39 -08:00
2026-11-04 17:17:57 -08:00
2026-11-04 15:01:47 -08:00
2026-11-04 15:01:47 -08:00
2026-11-04 15:01:47 -08:00
2026-10-30 10:29:22 -07:00
2026-11-11 10:06:54 -08:00
2026-08-06 09:38:35 -07:00
2026-11-02 11:43:57 -08:00
2026-11-12 16:35:16 -08:00
2026-10-27 08:39:49 -07:00
2026-10-27 09:12:37 -07:00
2026-11-01 13:48:28 -08:00
2026-10-04 09:24:12 -07:00
2026-10-30 13:22:13 -07:00
2026-11-12 16:35:16 -08:00
2026-10-21 19:23:29 -07:00
2026-10-21 08:58:24 -07:00
2026-10-09 10:31:11 -07:00
2026-09-17 09:16:56 -07:00
2026-09-01 22:25:20 -07:00
Screen backdrop (schema v5/v6) + five-scene catalog + webcam polish: live desktop/game capture as a permanent non-deletable bottom layer (Source.IsBackdrop), auto full-screen game detection (Win32FullScreenDetector) else primary display, GraphicsCapturePicker re-designation, refcounted shared ScreenCaptureManager, Live-only backdrop by policy (HasBackdrop + v5-v6 backfill + EnforceBackdropPolicy, checkbox gone), SceneCatalog (Starting/Live/BRB/Chat/Ending) with + button re-adding missing scenes, webcam mid-session transparent-container fix (GetPreviewBitmap propagation), Chat half-screen-area cap, 'Add Webcam' always opens the picker (SwapWebcamIdentityAsync, no silent resurrect), WindowsRuntimeMarshal frame-read + 5s-throttled errors, docs updated, tests (65 passing)
2026-08-07 14:15:50 -07:00
2026-09-17 08:56:04 -07:00
2026-09-14 16:14:00 -07:00
2026-09-22 07:00:47 -07:00
2026-10-04 15:28:05 -07:00
2026-10-27 09:12:59 -07:00
2026-10-30 14:42:40 -07:00
2026-10-04 15:27:01 -07:00
2026-11-05 16:41:09 -08:00
2026-09-23 16:45:56 -07:00
2026-11-05 09:42:36 -08:00
2026-10-28 13:09:15 -07:00
2026-11-01 08:51:28 -08:00
2026-10-08 08:26:29 -07:00