Skip to content

Fix stuck controller key repeat - #203

Merged
stephenleo merged 1 commit into
mainfrom
codex/fix-stuck-controller-repeat
Jul 22, 2026
Merged

Fix stuck controller key repeat#203
stephenleo merged 1 commit into
mainfrom
codex/fix-stuck-controller-repeat

Conversation

@stephenleo

Copy link
Copy Markdown
Owner

Summary

  • cancel physical controller repeats before the 750 ms routing guard can swallow release events
  • clear repeated input through real mode-change, disconnect, picker, shutdown, and exit lifecycle seams
  • cap continuous repetition at 3 seconds so missing releases or asynchronous automation failures cannot inject keys indefinitely

Root cause

D-pad repeat started before routing, but release cleanup ran only after routing. A mode transition could activate the held-input guard, swallow the physical release, and leave the 100 ms repeater running system-wide.

Verification

  • deterministic red-to-green regression for the swallowed-release sequence
  • focused lifecycle wiring and deadman tests
  • full typecheck, lint, format check, test suite, build, package check, and diff check
  • independent Standards and Spec reviews passed

No release or tag is included.

Physical releases could be swallowed before reaching KeyRepeater, while OpenMicro asynchronous automation failures are unobservable through execute(): void. Cancel repeat on hardware and lifecycle boundaries and enforce a three-second deadman so synthetic arrow input cannot repeat indefinitely.
@stephenleo
stephenleo merged commit 7c75816 into main Jul 22, 2026
1 check passed
@stephenleo
stephenleo deleted the codex/fix-stuck-controller-repeat branch July 22, 2026 12:55
@stephenleo stephenleo mentioned this pull request Jul 22, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant