gramps
41b0cd6e98
feat(scoreboard): unit 5 — tile selection and the cached strip presenter
...
ScoreboardTiles decides which of the eight facts appear and shapes their text (money uses the
session's dominant currency and flags a second one rather than converting; watch hours carry
'as of {date}' because Analytics is a daily aggregate). Tiles are OPT-IN, so 'None' really means the
layer draws nothing, and 'Default' is the six session facts.
ScoreboardPresenter owns the raster cache: ScoreboardRecorder.Changed fires only on a visible change,
so the strip rebuilds only then — a per-tick raster would be the compositor's most expensive layer
for identical pixels.
Guard: ScoreboardPresenterTests asserts the cache identity (same instance when nothing moved, a new
frame when a value moved, reuse when a recipient-side gift event arrives) and that an empty selection
returns no frame at all.
2026-10-30 14:38:59 -07:00
..
2026-10-30 13:32:24 -07:00
2026-10-10 07:08:01 -07:00
2026-10-30 14:38:59 -07:00
2026-10-27 08:39:49 -07:00
2026-09-26 12:08:27 -07:00
2026-09-27 09:43:26 -07:00
2026-10-30 09:30:56 -07:00
2026-08-06 14:35:34 -07:00
2026-10-09 22:15:59 -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-23 16:45:56 -07:00
2026-08-20 18:02:41 -07:00
2026-09-04 12:16: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-08-31 18:57:29 -07:00
2026-08-31 19:45:48 -07:00
2026-08-31 19:45:48 -07:00
2026-09-14 18:40:20 -07:00
2026-08-26 06:48:14 -07:00
2026-08-26 06:48:14 -07:00
2026-08-06 14:35:34 -07:00
2026-08-12 07:21:15 -07:00
2026-08-31 18:57:29 -07:00
2026-08-20 18:02:41 -07:00
2026-08-31 19:52:10 -07:00
2026-08-07 17:44:16 -07:00
2026-10-26 10:26:53 -07:00
2026-08-23 12:25:04 -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-22 07:00:47 -07:00
2026-08-31 09:10:17 -07:00
2026-08-31 09:10:17 -07:00
2026-10-30 08:47:50 -07:00
2026-10-30 08:47:50 -07:00
2026-10-30 08:47:50 -07:00
2026-10-30 13:18:23 -07:00
2026-09-22 08:07:54 -07:00
2026-08-25 17:25:25 -07:00
2026-08-06 14:35:34 -07:00
2026-10-05 11:10:22 -07:00
2026-08-31 19:52:10 -07:00
2026-08-31 19:22:02 -07:00
2026-08-07 17:44:16 -07:00
2026-09-14 18:40:20 -07:00
2026-10-30 09:58:52 -07:00
2026-08-21 08:18:52 -07:00
2026-08-31 18:57:29 -07:00
2026-09-27 15:37:46 -07:00
2026-10-16 18:23:20 -07:00
2026-09-14 18:40:20 -07:00
2026-08-22 18:10:59 -07:00
2026-09-22 07:00:47 -07:00
2026-08-22 18:10:59 -07:00
2026-08-16 17:48:37 -07:00
2026-09-24 08:27:00 -07:00
2026-10-27 09:12:59 -07:00
2026-09-27 09:43:26 -07:00
2026-09-14 16:14:00 -07:00
2026-09-27 08:56:12 -07:00
2026-08-20 18:02:41 -07:00
2026-09-22 07:00:47 -07:00
2026-08-07 17:44:16 -07:00
2026-09-28 09:45:35 -07:00
2026-09-24 08:27:00 -07:00
2026-10-09 13:32:38 -07:00
2026-09-23 16:45:56 -07:00