Skip to content

Releases: stephenleo/OpenMicro

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 23 Jul 12:08
d1fce31

Added

  • Embeddable GUI logging API. openmicro/logging exports the CLI's side-effect-free controller lifecycle, routed-action, and deduplicated agent-state status formatters. Messages redact prompt text and unknown raw key bytes; consumers retain control of output, styling, and repeat/release suppression.

Changed

  • The OpenMicro GUI CLI now consumes the same public logging formatters, keeping embedded and standalone status messages identical.

Fixed

  • Codex app: touchpad cycling now starts from the most recently active chat. A cold cursor previously assumed the newest-created chat was frontmost, which could trap repeated presses on one session in projects with multiple open chats.

v1.3.0

Choose a tag to compare

@github-actions github-actions released this 20 Jul 02:58
73a153d

Added

  • Embeddable controller API. openmicro/controller exports the CLI's existing HidManager and normalized controller types without CLI side effects. Its idempotent start()/stop() lifecycle preserves discovery, verification, profile selection, parsing, deduplication, reconnect polling, and device cleanup.

v1.2.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 13:38
5d1192b

Added

  • Human-readable action logs for GUI harnesses. Every routed press logs the physical control and its action — △ → push-to-talk, right stick flick right → thinking depth up, R3 → send ctrl+shift+m — replacing the raw osascript payload dump. Face buttons show PlayStation glyphs (✕ ○ □ △) on DualSense/DS4 and A/B/X/Y on Xbox/GameSir; the session-cycle button shows (DualSense touchpad) or (Guide/home).

Changed

  • Codex app: dictation is now true hold-to-talk. Hold to dictate, release to insert the transcript — replacing the press-once-to-start / press-again-to-stop toggle, whose internal state could desync and leave the chord held.

Fixed

  • Codex app: synthetic keystrokes could leave modifiers stuck machine-wide (Ctrl stuck → left click acts as right click, keyboard unusable until reboot). osascript chords now run strictly serialized with a timeout, a failed key-down chord immediately releases every key the harness can hold, and quitting OpenMicro (Ctrl+C/SIGTERM) releases all held keys instead of doing nothing.

v1.1.0

Choose a tag to compare

@github-actions github-actions released this 19 Jul 12:48
12e9583

Added

  • Codex app: thinking-depth dial. Right-stick flick right/left steps the composer's reasoning effort via the app's user-assignable "Increase/Decrease reasoning effort" shortcuts (one-time setup: assign ⌃⌥= / ⌃⌥- in the app's Keyboard shortcuts — assignments are account-synced, so OpenMicro cannot set them at install). Emitted as discrete modifier key-downs; the app's shortcut listener ignores inline using {...} chords. Note the app's own Decrease shortcut stops one step short of the lowest effort level.
  • Codex app: right-stick click (R3) opens the model picker (assign "Open model picker" to ⌃⇧M), so the effort slider is visible while the dial steps it. New r3 default binding emits the CSI-u encoding of Ctrl+Shift+M; terminal harnesses ignore it. Existing config files predate the binding — add "r3": { "type": "keys", "bytes": "\u001b[109;6u" } to Layer 1 to pick it up.

Changed

  • Thinking dial defaults to right-stick flicks instead of cw/ccw rotation — rotation proved finicky in live use. rstick_cw/rstick_ccw gestures remain available for remapping.

Fixed

  • DualSense: y-axis was inverted vs the project convention (dualsense-ts reports up as positive). Rotation gestures ran backward and up/down stick flicks were swapped on DualSense; both now match the documented directions on all controllers.

v1.0.2

Choose a tag to compare

@github-actions github-actions released this 19 Jul 01:27
93d6cb1

Fixed

  • Codex app: touchpad now cycles chats within the current project, with wrap-around. focus_session and herdr_space previously never reached GUI harnesses (they were core-only pane/workspace actions), so touchpad and LT did nothing in the app. Touchpad now jumps between the current project's visible chats via codex://threads/<id> deep links, in stable creation order, wrapping past the end — the app's own Next/Previous Chat shortcuts stop at the list edges.
  • Codex app: LT now cycles projects. The app has no project-switch shortcut at all; LT jumps to the next project's most recent chat, projects ordered most-recently-used first. Chats and projects are read from the app's own thread catalog (~/.codex/state_5.sqlite, non-archived, non-subagent — matches the sidebar exactly). Ordering caveats tracked in #59. Requires Node ≥ 23.4 (node:sqlite); older runtimes degrade to a no-op.
  • Codex app: square now starts a new chat. The app's deep-link parser silently drops a bare codex://new (it requires a prompt/path/originUrl query param); new_chat now uses codex://threads/new, the only form that falls back to a plain new thread.

v1.0.1

Choose a tag to compare

@github-actions github-actions released this 18 Jul 05:45
ce23704

Fixed

  • Codex app: push-to-talk now actually starts dictation. The app's Ctrl+Shift+D binding is hold-to-dictate, so the previous synthetic press+release started and stopped it in the same instant. Triangle now holds the chord down on the first press and releases it on the second — mic engages while held, transcript inserts on release.
  • Codex app: dictation no longer cuts off seconds after starting. The pane-oriented voice auto-stop paths (terminal focus loss, session focus follow, prompt-submit tracking drop) fired for GUI harnesses too — and the app keystroke itself steals OS focus from the host terminal on every press. All three are now disabled in GUI mode; the controller toggle alone owns voice state.

v1.0.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 15:23
b82e2f4

Added

  • openmicro codex-app: drive the Codex macOS desktop app — the Codex Micro's own companion app — straight from a game controller. Deep links (codex://new?prompt=…) for prompt/new-chat, System Events keystrokes for accept (Enter) and dictation (Ctrl+Shift+D), and LED agent-state via the shared ~/.codex lifecycle hooks.
  • GUI mode launches the app at startup and prints live colored terminal status: controller connect/disconnect, dispatched actions, and agent-state changes.
  • Harness interface: optional usesPty/execute members let third-party harnesses target GUI apps instead of pty-wrapped CLIs.

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 17 Jul 14:05
1404b23

Fixed

  • Wired Xbox One controllers (045e:02ea, Xbox One S) now work over USB. These pads speak the GIP protocol on the wire, so they fell through to the generic HID driver whose byte layout doesn't match and every button failed. A new parseXboxGipReport parses the GIP input frame (buttons at bytes 4-5, 10-bit triggers at 6-9, int16 sticks at 10-17), verified against a live capture. The Xbox/guide button — its own GIP message type (0x07) — maps to touchpad, matching the other pads' home buttons

Added

  • Xbox Wireless Controller over Bluetooth (045e:0b20) support via a dedicated parser for the standard Xbox BT HID report (report ID 0x01: uint16 sticks centred at 0x8000, 10-bit triggers, rotary hat, buttons at bytes 14-15). Previously the PID was unknown, so the pad fell to the generic driver, which misread the report ID as a held south button
  • Both Xbox certifications ship as doctor fixtures: wired Xbox One S (045e-02ea-usb) and Bluetooth Xbox Wireless Controller (045e-0b20-bluetooth), 17/17 controls each, replayed by CI
  • Doctor now asks for the pad's real make/model (firmware product strings are often generic or spoofed — DS4-mode pads claim to be a DUALSHOCK 4) and records it in the report; CONTROLLERS.md shows it alongside a new "Reports as" column
  • CONTROLLERS.md gained a community guide for adding new controllers with an AI coding agent: the capture → decode → implement → certify loop

v0.2.1

Choose a tag to compare

@github-actions github-actions released this 17 Jul 13:08
4a35a38

Fixed

  • DS4-mode home/touchpad button now registers. parseDs4Report never read byte 7, where the PS/home button (bit 0) and touchpad click (bit 1) live, so neither produced events. Third-party pads in DS4 mode (e.g. GameSir Cyclone 2) have no touchpad, so their home button — byte 7 bit 0 — had nowhere to land and failed the doctor's touchpad check. Byte 7's low two bits now map to touchpad, masking the high six bits (a report counter on genuine DS4s, so it can't fake presses). A real DualShock 4's touchpad click works too

Added

  • GameSir Cyclone 2 certified over Bluetooth in DS4 mode (all 17 controls pass). It reports as a DualShock 4 (054c:05c4), so the committed fixture also covers genuine DS4s and CI replays its touchpad capture

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 17 Jul 09:31
72ac2de

Added

  • GameSir-G7 Pro Bluetooth support: a dedicated gamesir driver, detected by VID/PID ahead of the generic fallback that misread the pad's reports (byte 0 is the report ID 0x07, which decoded as phantom face-button presses). All 17 controls and full axis ranges pass the doctor; the certified fixture ships in test/fixtures/controllers/ and CI replays every captured press
  • The G7 Pro's home button maps to touchpad (session cycling by default) — the pad's M button is firmware-consumed and never reaches the host
  • openmicro doctor --capture forces raw capture-only mode, recording idle/pressed HID report pairs per control without any parser — the data needed to add a driver for a pad the parsers misread

Fixed

  • Doctor's capture-only device search now targets gamepad/joystick HID usages, so it can't grab a mouse or keyboard