You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Cycle 6 research gate: select and ship one bounded reliability improvement #35
Run Cycle 6 as a bounded research/build/merge loop: use fresh AI-agent and gaming reports, audit current OpenController behavior, select one supported code slice, build it in an isolated worktree, stack only when there is a real dependency, independently review the integrated diff, pass checks, merge, update the roadmap, and open the next research gate.
Cycle 5 closeout PR #36 merged at f44fe79, closing gate #29 and milestone 4. Selected issue #20 merged in PR #38 at f20aab9 and closed. This gate closed through Cycle 6 roadmap closeout PR #43 at 66eed51. Cycle 7 research gate #37 is open in milestone 6 and is now unblocked.
User says key-down and key-up arrive back-to-back, so a ZX Spectrum emulator that polls the key matrix often misses input; requests held input or a duration.
Supports clearer hold and release behavior. One user report about keyboard input in another product.
A user measured 1.2–3.8 ms key taps that did not move a browser game and requests bounded holds plus release on cancellation/failure. A second report in the same issue says Unity missed a held drag across frames and requests a 2–3 frame hold.
Concrete reports in one thread; measurements are session-specific and not independent prevalence evidence.
A Betop controller emits motion events but SDL reports NaN/Inf sensor values; a commenter reproduces related data on another model sharing the driver identity.
Useful sensor-path example within one vendor/driver thread; no general prevalence claim.
Xbox Series Start/Back actions are absent with Defold's default gamepad database while raw buttons remain visible; disabling that database restores the actions in the tested setup.
Detailed engine mapping issue with a workaround; outside this SDK's game-consumer layer.
A player reports that controls/layout stop working during long sessions in two games; restart is the only workaround found.
One reporter plus one similar report; cause remains uncertain.
These are public examples, not a prevalence study. The Codex key-duration reports are evidence about Computer Use surfaces, not proof of a missing OpenController timed-input feature. OpenController already has timed press, persistent setButton, explicit release, safety limits, and adapter capability metadata. Its duration promises adapter sequencing, not frame-observed or game-acknowledged timing.
Coverage limits
GitHub issue bodies and targeted APIs were reachable. Reddit endpoints continued returning HTTP 403; SDL Discourse and Godot forum searches also returned 403; Anthropic community search was unreachable through the network tunnel.
Steam Community search was reachable, but relevant results were mostly old (2022–2024). HN/OpenAI forum sources were reachable; they did not add a stronger current controller-SDK issue in this harvest.
Search focused on Steam/Deck/Linux, SDL, Moonlight/Sunshine, Ebitengine, Godot, Defold, Unity MCP, and AI computer-use reports. It was targeted, not exhaustive. Reactions and comments are attention signals, not affected-user counts. Accessibility coverage remains incomplete.
Repository audit and ranking
Audit basis: current main e6d576987c9085a3377ce0e10791f56ce1994ada; the selected CLI and bridge paths are unchanged from the audit snapshot c0b1a2f.
nativeTestCommand creates a controller, runs press/move/trigger/neutral sequentially, then disconnects only on the happy path. CLI tests cover plan construction but not failures after connection. Codex #44074 asks for release on failure/cancellation in an adjacent input product; it does not prove this defect caused a user report.
Low/medium, about 1–2 days. Preserve the primary action error if neutral/disconnect cleanup also fails.
Bridge adapters can advertise touchpad/gyro/profile-HID output even when options suppress those payloads. This is a separate owner/test surface from #20; adjacent Ebitengine/Steam/SDL reports do not show the OpenController mismatch caused those failures.
Low/medium. Keep adapter output capability distinct from OS/game support.
Safety rejects over-limit durations but not negative ones; negative timed presses skip auto-release. Zero-duration persistent input is intentional and must remain supported. No source directly reports this edge case.
Low. Preserve zero and positive behavior while rejecting values below zero.
Overlaps existing encoder conformance docs and native doctor; collecting meaningful host/game rows requires hardware and consumer environments.
Medium/high; avoid a matrix of untested claims.
Decision and DAG
Select #20 only. Keep its scope to making opencontroller native test clean up after a connected controller even when an action fails, preserving the primary error if cleanup also fails, and reporting success only after cleanup. Do not fold bridge capability metadata, duration validation, OS/game compatibility, keyboard/mouse injection, or host fixes into this slice.
flowchart TD
A[Cycle 5 gate #29 and closeout] --> B[Cycle 6 gate #35]
B --> C[Implement selected native-test cleanup #20]
C --> D[Independent review and required checks]
D --> E[Merge implementation PR]
E --> F[Roadmap closeout and Cycle 7 research gate]
F --> G[Close Cycle 6 gate #35]
Loading
The issue dependency graph must encode both #29 blocks #35 and #20 blocks #35. Deferred issues #33 and #34 remain outside the active milestone.
Checklist
Refresh dated AI/computer-use and gaming/controller sources; record workarounds, confidence, duplication, and access gaps.
Audit timed input, capability metadata, native CLI cleanup, and the existing deferred compatibility candidate against current code.
Cycle 6 selected #20 only; candidates #21, #33, and #34 remain deferred outside milestone 5. The CLI cleanup behavior and its user-visible combined error details are documented in the merged implementation. External research reports remain context only and are not described as OpenController incidents. Project V2 creation remains blocked by GitHub integration permissions; the ongoing DAG uses milestones, labels, and issue dependencies.
Goal
Run Cycle 6 as a bounded research/build/merge loop: use fresh AI-agent and gaming reports, audit current OpenController behavior, select one supported code slice, build it in an isolated worktree, stack only when there is a real dependency, independently review the integrated diff, pass checks, merge, update the roadmap, and open the next research gate.
Cycle 5 closeout PR #36 merged at f44fe79, closing gate #29 and milestone 4. Selected issue #20 merged in PR #38 at f20aab9 and closed. This gate closed through Cycle 6 roadmap closeout PR #43 at 66eed51. Cycle 7 research gate #37 is open in milestone 6 and is now unblocked.
Cycle 6 source log (2026-10-04)
SDL_JOYSTICK_MFI=0workaround restores it in a minimal SDL program.These are public examples, not a prevalence study. The Codex key-duration reports are evidence about Computer Use surfaces, not proof of a missing OpenController timed-input feature. OpenController already has timed
press, persistentsetButton, explicitrelease, safety limits, and adapter capability metadata. Its duration promises adapter sequencing, not frame-observed or game-acknowledged timing.Coverage limits
Repository audit and ranking
Audit basis: current main
e6d576987c9085a3377ce0e10791f56ce1994ada; the selected CLI and bridge paths are unchanged from the audit snapshotc0b1a2f.nativeTestCommandcreates a controller, runs press/move/trigger/neutral sequentially, then disconnects only on the happy path. CLI tests cover plan construction but not failures after connection. Codex #44074 asks for release on failure/cancellation in an adjacent input product; it does not prove this defect caused a user report.Decision and DAG
Select #20 only. Keep its scope to making
opencontroller native testclean up after a connected controller even when an action fails, preserving the primary error if cleanup also fails, and reporting success only after cleanup. Do not fold bridge capability metadata, duration validation, OS/game compatibility, keyboard/mouse injection, or host fixes into this slice.The issue dependency graph must encode both
#29 blocks #35and#20 blocks #35. Deferred issues #33 and #34 remain outside the active milestone.Checklist
Acceptance
Closeout (2026-10-05)
Cycle 6 selected #20 only; candidates #21, #33, and #34 remain deferred outside milestone 5. The CLI cleanup behavior and its user-visible combined error details are documented in the merged implementation. External research reports remain context only and are not described as OpenController incidents. Project V2 creation remains blocked by GitHub integration permissions; the ongoing DAG uses milestones, labels, and issue dependencies.