Files
SubMiner/backlog/tasks/task-222 - Fix-YouTube-overlay-keybindings-in-subtitle-path.md

3.0 KiB

id, title, status, assignee, created_date, updated_date, labels, dependencies, references, priority
id title status assignee created_date updated_date labels dependencies references priority
TASK-222 Fix YouTube overlay keybindings in subtitle path Done
codex
2026-03-23 08:32 2026-03-23 08:38
bug
/Users/sudacode/projects/japanese/SubMiner/src/main/runtime
/Users/sudacode/projects/japanese/SubMiner/src/core/services
high

Description

Users watching video through the YouTube subtitle path cannot use some overlay keyboard controls such as quit and pause/play. Restore expected overlay keybinding behavior for that playback path without regressing other overlay input handling.

Acceptance Criteria

  • #1 Overlay quit and pause/play keybindings work while using the YouTube subtitle path.
  • #2 Existing overlay keybinding behavior for non-YouTube playback remains unchanged.
  • #3 Regression coverage exercises the YouTube subtitle path keyboard handling.

Implementation Plan

  1. Add a regression test around YouTube track-picker close to verify it requests main-process main-window focus restoration before returning overlay focus locally.
  2. Update the YouTube track-picker close flow to call window.electronAPI.focusMainWindow() alongside the existing window.focus() and overlay.focus() restoration.
  3. Run targeted tests for the picker/keyboard paths to verify YouTube playback regains overlay keybindings without regressing existing overlay behavior.

Implementation Notes

Investigated overlay input path. Renderer already maps Space/KeyQ to mpv commands, but YouTube track-picker close only restores DOM focus (window.focus + overlay.focus) and does not invoke main-process window focus recovery, unlike the keyboard-mode focus reclaim path. Suspected root cause: overlay BrowserWindow focus is not restored after the YouTube picker closes, so playback keybindings stop reaching renderer keydown handlers.

User approved implementation plan on 2026-03-23. Proceeding with TDD: add failing regression first, then minimal fix, then targeted verification.

Implemented fix in the YouTube track-picker close path: request main-process focusMainWindow() before restoring renderer window/overlay focus so overlay keydown handlers regain input after YouTube subtitle selection.

Verification: bun test src/renderer/modals/youtube-track-picker.test.ts and bun test src/renderer/handlers/keyboard.test.ts both pass.

Final Summary

Restored overlay keyboard focus after closing the YouTube subtitle picker by invoking the main-process focusMainWindow() recovery path before local window/overlay focus restoration. Added regression coverage to the YouTube picker modal test and verified existing keyboard handler coverage for YouTube picker passthrough keys (Space, KeyQ) remains green.