gramps
e654a16b60
fix(history): file each session under the real encoder, not "unknown"
...
FfmpegEncoder resolved the encoder name into its OWN StreamHealth instance, while the view
model read CurrentHealth — a different object. So every recorded session was filed as
"unknown", and the rate history's encoder key (evidence about NVENC says nothing about QSV)
had nothing to key on. The name now travels on the encoder interface and the pump forwards
it: IFfmpegEncoder.VideoEncoderName -> FramePump.EncoderName.
Caught while adding it: reading _framePump.EncoderName from RefreshRateProposal throws,
because that call runs at MainViewModel ctor line 354 and the pump is built at line 468.
Eight tests failed with the same NullReferenceException, which took a while to see because
the harness's test output is buffered — the first honest look at per-test logging named it
in one line. Guarded; the history falls back to the last session's encoder for that tier,
which is exactly the pre-first-session case the fallback already existed for.
Tests: FramePumpTests gains the encoder-name assertion (null before start, h264_nvenc
after), and the three fake encoders implement the new member.
675 pass, 0 warnings.
2026-11-12 13:57:03 -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-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 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-10-30 11:17:11 -07: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-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-02 11:31:49 -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