Files
SubMiner/backlog/tasks/task-231 - Restore-controller-input-while-subtitle-sidebar-is-open.md

2.1 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-231 Restore controller input while subtitle sidebar is open Done
@codex
2026-03-24 00:15 2026-03-24 00:15
bug
controller
subtitle-sidebar
overlay
/home/sudacode/projects/japanese/SubMiner/src/renderer/renderer.ts
/home/sudacode/projects/japanese/SubMiner/src/renderer/controller-interaction-blocking.ts
/home/sudacode/projects/japanese/SubMiner/src/renderer/controller-interaction-blocking.test.ts
high 54900

Description

When keyboard-only mode is active, opening the subtitle sidebar should not disable controller navigation and lookup/mining controls. Restore controller input while the sidebar is open, while keeping true modal dialogs blocking controller actions.

Acceptance Criteria

  • #1 Opening the subtitle sidebar does not block controller input for keyboard-only mode actions.
  • #2 Controller-select/debug and other true modal dialogs still block controller actions while open.
  • #3 Focused regression coverage exists for the sidebar-open controller gating rule.

Implementation Notes

Root cause: renderer gamepad polling used the broad isAnyModalOpen() check as its interaction gate, and that list includes subtitleSidebarModalOpen. The subtitle sidebar is non-modal for controller usage, so gamepad input was being suppressed whenever the sidebar was visible.

Fixed by extracting a dedicated controller-interaction blocking helper that excludes the subtitle sidebar but keeps the existing blocking behavior for true modal dialogs.

Final Summary

Restored controller input while the subtitle sidebar is open by switching gamepad polling to a dedicated modal-blocking rule that leaves the sidebar controller-passive. Added a regression test covering the sidebar-open exception and preserving hard blocks for actual modal dialogs.