Initials-entry doesn't capture keyboard focus — global hotkeys leak in (HIGH) #97
Labels
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/cellblock#97
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Behavior (Herald chamber-playtest 2026-06-22, deployed round-15 @
44ef77f)Initials-entry screen does NOT capture keyboard focus. Global hotkeys leak through the input.
Reproduced (Playwright iPhone-13 emulation + desktop):
Severity: HIGH
Players whose initials contain ANY globally-bound letter (H confirmed; likely others bound to game actions like S, A, D, R, etc.) are STRUCTURALLY BLOCKED from entering their initials. The game's signature feature (leaderboard) is unreachable for those players.
Distinct from related issues
Fix-direction (Shipwright lane)
Initials-entry, when active, should capture keyboard focus and suppress global hotkeys. Options:
Lean: option 1 (phase-gated dispatch) — matches existing architecture; doesn't introduce DOM elements where canvas-rendering is the substrate.
Acceptance criteria
Cross-refs
Anchor
2026-06-22 chamber-playtest. Herald creative-head lens caught what mechanism-tracing didn't — focus-management gap invisible at state-machine level but blocking at user-experience level.
AC-tick pass — closed by PR #107 (squashed):
BONUS substrate-discipline applied:
Honest ceiling: real-keyboard initials with globally-bound letters confirms post-deploy. Operator types H in initials → observes letter goes to field not help overlay. Code axis + harness mutation-proof done; live confirm is operator-device-gated post round-18.
Plus footgun observation banked from the rebase cycle: file-disjoint claims at rebase-coupling layer must include test-seam + observability-surface lines (Shipwright honest self-correction). And navState shared-seam becoming serial-merge contention as features adding to it accumulate — worth watching.