Files
SubMiner/backlog/tasks/task-222 - Fix-YouTube-overlay-keybindings-in-subtitle-path.md
sudacode 5feed360ca feat: add app-owned YouTube subtitle flow with absPlayer-style parsing (#31)
* 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
2026-03-24 00:01:24 -07:00

3.0 KiB

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

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.