Add Stream Deck Plus dials, touch controls, and model presets - #13
Add Stream Deck Plus dials, touch controls, and model presets#13tlk3 wants to merge 139 commits into
Conversation
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 48ce1ded1a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Resolved a macOS recovery issue found during live testing on Codex 26.810.52044.
Verification: 435 tests passed, 1 expected skip, TypeScript check, build, Stream Deck validation, release audit (3 roots), and diff check. The patched artifacts were also installed on macOS 26.5.1 with Codex 26.810.52044; live logs show |
|
Fixed Model Presets showing UNAVAILABLE on current Codex builds in 8c62d73. A live read-only probe traced the rejection to a non-enumerable, own-data Symbol.dispose cleanup function on the models/list response envelope. The validator now permits only that exact well-known cleanup symbol on the envelope, never invokes it, and continues rejecting accessors, proxies, unrelated/lookalike symbols, enumerable hooks, and symbols on model records. Original input cloning retains proxy rejection after descriptor validation. Regression reproduced the failure before the change; 75 bridge tests and the full suite (436 passed, 1 expected skip), TypeScript, build, plugin validation, and release audit pass. The patched serialized metadata reader was verified read-only against live Codex: gpt-5.6-sol / medium, nine catalog records. Saved presets and model selection were not modified. This commit is limited to the bridge and its regression test. |
|
Fixed current Codex model-preset detection in b2b6fff. The composer now displays GPT-prefixed names such as GPT-6 Astra, while catalog display names are normalized to 6 Astra. Normalize the optional GPT prefix on visible labels too, retaining exact catalog matching and ambiguity rejection. Regression reproduced before the fix; 436 tests pass (one expected skip), TypeScript, build, plugin validation, and release audit pass. A read-only probe against the running Codex app now resolves gpt-6-astra / low and all nine catalog models. No Codex restart was needed for verification. |
Summary
This expands Codex Deck into a first-class Stream Deck Plus integration. A new Encoder-only Codex Dial action lets each knob independently configure rotation, press, touch-strip tap, and LCD feedback while preserving all existing keypad behavior.
The default four-knob layout covers:
What changed
Codex Dialmanifest action, encoder layout, icons, and per-action property inspector.ULTRA OFFfail-closed behavior, and compact day/hour/minute usage-reset labels.SWITCHING,UNLISTED,UNAVAILABLE, degraded, and offline states.User impact
Stream Deck Plus owners can use the touch screen and four knobs as live Codex controls instead of mapping the device as keypad-only. The most common workflow—jumping between a few model/reasoning combinations—now takes one detent and updates the LCD from confirmed Codex state.
Existing Stream Deck keypad actions and single-host behavior remain unchanged. Stream Deck Plus support is optional and configured per knob.
Compatibility and safety
Validation
npm cinpm run checknpm test— 435 passed, 1 expected skip, 0 failednpm run validatenpm run audit:release— 3 artifact roots passedgit diff --check origin/main...HEADManual/live verification:
The cross-platform Stream Deck SDK, Windows launcher, and authenticated relay paths have automated coverage. This PR does not claim new physical Stream Deck Plus hardware verification on Windows.