TASK 20 step 1: global hotkeys F1-F9 (scenes, stream, mutes, TRAX)
This commit is contained in:
@@ -958,8 +958,8 @@ The tasks below are ordered by dependency and risk. Each task builds on the prev
|
||||
1. ✅ **TASK 9.4** — Live chat (right panel) — wire `YouTubeChatService.Start()`, parse messages, render in panel. Foundation for chat box source.
|
||||
2. ✅ **TASK 3.18** — Chat box source — renders chat ON the stream. Depends on TASK 9.4 (same message parsing).
|
||||
3. ✅ **TASK 10** — Polar billing — license key entry + watermark toggle + Velopack auto-updates (steps 1-7 shipped; Velopack update URL pending).
|
||||
4. **TASK 19/23** — Control Surface UX — director's control room: thumbnails above central monitor, transitions (Cut/Fade/Move), edit mode offline only, left panel two-state (layers/props ↔ chat), right panel eliminated.
|
||||
5. **TASK 20** — Hotkeys — global keyboard shortcuts. Small scope, huge UX impact.
|
||||
4. ✅ **TASK 19/23** — Control Surface UX — director's control room: thumbnails above central monitor, transitions (Cut/Fade/Move), edit mode offline only, left panel two-state (layers/props ↔ chat), right panel eliminated. Verified shipped 2026-08-24.
|
||||
5. **TASK 20** — Hotkeys — global keyboard shortcuts. Step 1 (F1-F9 defaults) shipped 2026-08-24; config UI + persistence remain.
|
||||
6. **TASK 17** — Web source (WebView2) — enables alert ecosystem.
|
||||
7. **TASK 18** — Local recording — independent, but pairs with stream.
|
||||
8. **TASK 21** — Media source — video file playback for non-Live scenes.
|
||||
@@ -987,16 +987,16 @@ The tasks below are ordered by dependency and risk. Each task builds on the prev
|
||||
|
||||
**Goal:** keyboard shortcuts for scene switching and common actions — the single biggest UX gap.
|
||||
|
||||
### Status: ☐ Not started — required for v1
|
||||
### Status: ◐ In progress — step 1 shipped 2026-08-24
|
||||
|
||||
1. ☐ `HotkeyManager` service — register/unregister hotkeys per scene + common actions
|
||||
2. ☐ Scene switching hotkeys — F1-F5 for the 5 canonical scenes (configurable)
|
||||
3. ☐ Common action hotkeys — Start/Stop stream, Mute/Unmute mic, Mute/Unmute game, Toggle TRAX
|
||||
1. ✅ `GlobalHotkeyManager` service — `Services/GlobalHotkeys.cs`: registers OS-level hotkeys on the window HWND via `RegisterHotKey`/`WM_HOTKEY` (`IHotkeyRegistrar` seam for tests; `RegistrarOverride` mirrors `LayoutPathOverride`). Wired in `MainWindow.OnSourceInitialized`.
|
||||
2. ☑ Scene switching hotkeys — F1-F5 stage/transition the five canonical scenes. Fixed defaults; configurability deferred to the config UI step.
|
||||
3. ☑ Common action hotkeys — F6 start/end stream, F7 mute mic, F8 mute desktop audio, F9 TRAX play/pause. Dispatch lives in `MainViewModel.HandleHotkey` and honors command gating.
|
||||
4. ☐ Hotkey configuration UI — Settings dialog or per-scene hotkey picker
|
||||
5. ☐ Global hotkeys — work even when app is not focused (for gaming)
|
||||
6. ☐ Conflict detection — warn when two actions share the same hotkey
|
||||
5. ✅ Global hotkeys — work even when app is not focused (that is what `RegisterHotKey` gives us)
|
||||
6. ☐ Conflict detection — warn when two actions share the same hotkey (impossible with fixed defaults; arrives with configurability)
|
||||
7. ☐ Schema migration for hotkey bindings (persist across restarts)
|
||||
8. ☐ Tests: hotkey registration, conflict detection, scene switch via hotkey
|
||||
8. ☑ Test: `GlobalHotkeyTests.WmHotkey_StagesScene_And_TogglesMic_And_RevokesOnClose` — real window + fake registrar, a genuine `WM_HOTKEY` posted through the window's own `HwndSource` hook stages the mapped scene and flips mic mute; close revokes every registration.
|
||||
|
||||
### Design decisions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user