* fix: harden preload argv parsing for popup windows * fix: align youtube playback with shared overlay startup * fix: unwrap mpv youtube streams for anki media mining * docs: update docs for youtube subtitle and mining flow * refactor: unify cli and runtime wiring for startup and youtube flow * feat: update subtitle sidebar overlay behavior * chore: add shared log-file source for diagnostics * fix(ci): add changelog fragment for immersion changes * fix: address CodeRabbit review feedback * fix: persist canonical title from youtube metadata * style: format stats library tab * fix: address latest review feedback * style: format stats library files * test: stub launcher youtube deps in CI * test: isolate launcher youtube flow deps * test: stub launcher youtube deps in failing case * test: force x11 backend in launcher ci harness * test: address latest review feedback * fix(launcher): preserve user YouTube ytdl raw options * docs(backlog): update task tracking notes * fix(immersion): special-case youtube media paths in runtime and tracking * feat(stats): improve YouTube media metadata and picker key handling * fix(ci): format stats media library hook * fix: address latest CodeRabbit review items * docs: update youtube release notes and docs * feat: auto-load youtube subtitles before manual picker * fix: restore app-owned youtube subtitle flow * docs: update youtube playback docs and config copy * refactor: remove legacy youtube launcher mode plumbing * fix: refine youtube subtitle startup binding * docs: clarify youtube subtitle startup behavior * fix: address PR #31 latest review follow-ups * fix: address PR #31 follow-up review comments * test: harden youtube picker test harness * udpate backlog * fix: add timeout to youtube metadata probe * docs: refresh youtube and stats docs * update backlog * update backlog * chore: release v0.9.0
3.6 KiB
id, title, status, assignee, created_date, updated_date, labels, dependencies, references, documentation, priority, ordinal
| id | title | status | assignee | created_date | updated_date | labels | dependencies | references | documentation | priority | ordinal | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| TASK-220 | Restore YouTube overlay mpv keybindings after picker routing | Done |
|
2026-03-22 00:00 | 2026-03-22 23:49 |
|
|
|
high | 118800 |
Description
Regression: after adding the YouTube subtitle picker modal path, visible-overlay keydown handling can stop before reaching the shared mpv keybinding dispatch path. Result: default overlay mpv bindings like Space pause/play and q quit stop working while the overlay owns focus during YouTube playback.
Acceptance Criteria
- #1 Unhandled keys while the YouTube track picker state is active still fall through to the shared overlay mpv keybinding dispatcher.
- #2 The YouTube picker continues to consume
EnterandEscapefor its own actions. - #3 Renderer regression tests cover both the picker modal key contract and the shared keyboard dispatch fallback.
Implementation Plan
- Add a failing renderer keyboard regression test covering YouTube picker state plus shared mpv keybinding fallback.
- Update the global keyboard handler to return early only when the YouTube picker actually handles the key event.
- Update the picker modal handler to return false for unhandled keys while preserving
Enter/Escape. - Run the cheap renderer verification lane and record results.
Implementation Notes
Fixed the regression by making the global renderer keyboard handler stop early for the YouTube picker only when the picker actually consumes the key. The picker modal now returns false for unrelated keys, so shared overlay mpv bindings like Space and KeyQ still dispatch while the visible overlay has focus.
Added regression coverage in the keyboard handler suite for mpv keybinding fallback during YouTube picker state, plus a picker-modal contract test that keeps Escape handled but leaves unrelated keys unclaimed.
Verification:
bun test src/renderer/handlers/keyboard.test.ts src/renderer/modals/youtube-track-picker.test.tsbash .agents/skills/subminer-change-verification/scripts/classify_subminer_diff.sh src/renderer/handlers/keyboard.ts src/renderer/handlers/keyboard.test.ts src/renderer/modals/youtube-track-picker.ts src/renderer/modals/youtube-track-picker.test.tsbash .agents/skills/subminer-change-verification/scripts/verify_subminer_change.sh --lane core src/renderer/handlers/keyboard.ts src/renderer/handlers/keyboard.test.ts src/renderer/modals/youtube-track-picker.ts src/renderer/modals/youtube-track-picker.test.ts- verifier artifact:
.tmp/skill-verification/subminer-verify-20260322-234831-b2m6nJ
Final Summary
Restored YouTube-session overlay mpv keybindings by removing an unconditional early return added to the renderer keyboard path for the YouTube subtitle picker modal. Unhandled keys now fall through to the shared mpv keybinding dispatcher, while handled picker keys (Enter, Escape) still stay local to the picker. Added renderer regression tests for both the keyboard fallback path and the picker modal key-consumption contract.