Skip to content

Releases: timeToy34/agent-frow

0.8.2 - Codex automatic approvals fix

Pre-release

Choose a tag to compare

@timeToy34 timeToy34 released this 09 Sep 22:56

Codex automatic approvals now keep the lane Running while review and execution
proceed. Previously, a permission request could leave the lane Waiting until a
long command finished, even when the automatic reviewer handled it.

  • Automatic approvals stay Running. The app reads the effective reviewer
    from the current Codex CLI session and turn. Shell and file-edit requests
    handled by auto_review no longer set Waiting.
  • Actual requests still need your attention. Questions, plan confirmation,
    and manual approvals retain Waiting. An automatic approval also preserves a
    separate pending prompt and its note.
  • Long sessions and reviewer changes are supported. The reader finds
    settings outside the recent transcript tail and follows subsequent changes.
    Unknown settings and other request types retain the existing behavior.

Verified by the user with Codex CLI in WSL: automatic approvals remain Running,
and actual user requests still set Waiting. The Windows workspace's 301 tests
cover the state changes, transcript handling, and existing integrations.

Upgrade

Unzip agent-frow-0.8.2-win64.zip and run agent-frow.exe once.

Upgrading from 0.8.1 requires no new keymap import or hook registration changes.
If upgrading from 0.8.0 or earlier, follow the V0 keymap and Codex Interrupt
setup notes in 0.8.1;
the same keymap is included in this zip.

Codex can still delay clearing Waiting after a manual response until it reports
further activity. That separate hook limitation remains tracked in
KNOWN_ISSUES.md.

0.8.1 - Fixes V0 prompt navigation and improves Codex state and lane tracking.

Choose a tag to compare

@timeToy34 timeToy34 released this 09 Sep 17:04

This release fixes V0 prompt navigation and improves Codex state and lane tracking.

  • V0 answers without terminal scrolling. The top-row controls now send single keys instead of Ctrl+Shift chords. Rapid Up/Down was verified on the V0 with Codex in Windows Terminal. Answers still fire on press; the knob and M1–M5 keep their existing bindings. Failed hotkey registrations now identify the affected key.
  • Codex interrupts. Cancelling a turn returns the main session to Connected with an Interrupted note. Delayed events from that cancelled turn cannot overwrite a retry; active subagents keep the lane Running until they finish.
  • Stable Codex lanes across conversations. Verified CLI sessions in the same Windows Terminal tab reuse the lane across /new and /clear. Separate tabs remain separate, including when they share a project folder. A bounded local journal records lane ownership changes for diagnostics.
  • Codex plan prompts and usage gauges. A completed plan in the current turn's rollout restores Waiting when the Stop payload omits the plan. Model-specific usage buckets no longer replace the general Codex allowance.
  • Central issue tracking. KNOWN_ISSUES.md collects bugs, workarounds, Codex/Claude Code hook differences, and a note to check their changelogs manually.

Upgrade

Unzip agent-frow-0.8.1-win64.zip and run agent-frow.exe once. Restart Codex so it loads the new Interrupt registration; check /hooks and trust the Agent F-Row entry if requested.

V0 users must also import the included keychron_v0_ultra_ansi.json through Keychron Launcher over the cable, after exporting their current map as a backup. The app no longer captures the old Ctrl+Shift+F21–F24 top-row chords. This keymap change requires no firmware flash. The mappings were verified on US Windows layout 00000409; other layouts need separate validation.

Waiting can still persist when Codex has not reported further activity after a response or automatic approval. Those hook-delivery reports remain open. The V0 rapid-press result was verified with Codex; an equivalent Claude Code test has not been recorded.

0.8.0 - Keychron V0 Ultra numpad Support

Choose a tag to compare

@timeToy34 timeToy34 released this 03 Sep 03:04
  • The Keychron V0 Ultra numpad. A new surface, verified on two boards. M1–M5 are lanes 1–5, one key per agent — dim, breathing, double-pulsing, full, dark red — and the four shape keys are a top line showing one agent in the F-row's patterns. The knob picks which agent the top line shows: unlocked it follows whatever changed last; press it to lock, and the M key fades to white and back. Pressing an M key selects that agent and brings its window forward; the top line's four keys bring the shown agent forward, and while it is Waiting the three after the first answer Up, Down and Enter — sent, as everywhere, only into a terminal that verifiably has the keyboard. Over the cable or the 2.4 GHz receiver, on the protocol the Ultra already speaks; the app takes nine LEDs and leaves the rest of the board alone, and two Keychrons on one bus sort themselves out. Setup, once: the same per-key-brightness firmware fix built for the V0 (firmware/keychron-ultra, ./build.sh keychron_v0_ultra_ansi), and the keymap as a file — the Launcher cannot enter a chord — Keymap tab, Export yours first, then Import firmware/keychron-ultra/keymaps/keychron_v0_ultra_ansi.json over the cable.
  • Preview drives the numpad. With a Preview playing every M key is lit, so the knob steps across all five and an M key selects; the cursor and the lock can be seen before any agent is there. When the preview ends the cursor falls back to a real agent.
  • Lanes speak per device. The "no keys" tag on lanes 4–6 is gone — the numpad carries five. The caption above the lanes, the lane-count picker, each lane's number and the Focus button say where a lane has keys: the F-row three, the numpad five, a deck one per row, the window and mini mode all of them.
  • Devices lines name their keys. "Keychron V3 Ultra 8K over USB: the F-row, 3 lanes of 4 keys", like the deck's "3 lanes of 5 keys" and the numpad's "the four shape keys and M1–M5". A device that is not there says "not detected"; iCUE running but refusing says what to turn on.
  • Smaller: agent-frow doctor has a "V0 Ultra:" section; the numpad's snapshot is its own file and can never cross-restore the keyboard's.

Upgrade: unzip, run once, delete the folder. Nothing to restart — hooks and the status line are unchanged since 0.7.0. The numpad needs its firmware and keymap once; the README says how.

0.7.2 - How long it has been waiting?

Pre-release

Choose a tag to compare

@timeToy34 timeToy34 released this 30 Aug 21:33
  • How long it has been waiting. The one number that matters on a blocked lane, made the headline. On the Stream Deck and in mini mode the last key now sets "Waiting" small over the time large - "12m" - and in the window the pill itself reads "Waiting 12m". It counts in minutes past the first (seconds only while the question is fresh): a count, not a stopwatch, so the key is rewritten once a minute. Running and Done keep their stopwatch; Error still shows why.

Upgrade: unzip, run once, delete the folder. Nothing to restart - hooks and the status line are unchanged since 0.7.0.

0.7.1 - F keys to control the Agents!

Pre-release

Choose a tag to compare

@timeToy34 timeToy34 released this 30 Aug 09:47
  • The F-row answers. A lane is four keys: any of them brings its agent forward, and while the lane is Waiting the three after the first are Up, Down and Enter - the Stream Deck's rule, on the keyboard, sent only into a terminal that verifiably has the keyboard. The 4 × 3 and 6 × 2 layouts are gone: the keyboard is always three lanes of four. The lane count (3-6) stays, for agents beyond the keyboard; their cards say "no keys".
  • Devices, each with a tick. The Keyboard panel is now Devices: every device on its own line, and unticking one leaves it alone - plugged in, found, not driven. The Keychron's own lighting comes back, the deck goes to its logo, iCUE is let go. Brightness and colour balance are ☀ and 🎨, and the folded header names the devices instead of saying "keyboard connected".
  • Deck ink fades with the key. The label on a pulsing key no longer flips between black and white. The ink is chosen for the lane from its glow and its full colour, and fades between the two only when they disagree. No shadow.
  • An empty lane says what it is for. On the deck's first key: "next agent here" on the lowest free lane, "free" on the rest, or the lane's name if you gave it one.
  • Smaller: the deck's line in Settings reads "Model: 3 lanes of 5 keys"; the Lanes caption's arrows now render; a connected keyboard's line is just its model.

Upgrade: unzip, run once, delete the folder. Nothing to restart - hooks and the status line are unchanged since 0.7.0. An existing settings file loads as it is; a 4- or 6-lane file keeps its count.

0.7.0 - More surfaces: Stream Deck and Mini Window

Choose a tag to compare

@timeToy34 timeToy34 released this 30 Aug 07:00
  • Numbers on the keys. Context used and the five-hour and seven-day limits, on the window's cards and on the Stream Deck's middle keys. From Claude's status line (install registers it, or wraps yours) and Codex's session log.
  • Stream Deck answers. While a lane is Waiting, its middle keys are Up, Down and Enter - sent only into a terminal that verifiably has the keyboard. Error shows why: rate limit, overloaded, auth.
  • Mini mode. The window folds down to one row per agent, five keys each, lit like the keyboard. No title bar; drag to move, corner to resize, remembered between runs, always on top. Click a key to focus; double-click to come back.
  • Brightness and colour balance per device. Each connected keyboard and the deck has its own line in Settings.
  • README: supported-devices table and a demo video.

Upgrade: unzip, run once, delete the folder. Restart Claude for the status line; Codex hooks are unchanged since 0.6.3.

Agent_Frow_02b.mp4

0.6.3 - Codex asks, the lane says Waiting

Choose a tag to compare

@timeToy34 timeToy34 released this 26 Aug 06:00

A Codex question now lights the lane. Codex asks you things through its request_user_input tool - the multiple-choice prompts in plan mode - and that tool is the dialog: it starts when the question appears and returns when you answer. The app never saw the start, only the answer, so the lane read Running the whole time you were being asked. It now registers Codex's PreToolUse for that one tool alone (the hook fires for nothing else, so there is no extra traffic) and puts the lane on Waiting the moment the question is up; your answer clears it at once. Claude's hooks are untouched.

A Codex plan waiting for your verdict lights the lane too. Codex has no dialog for "implement this plan?" - it ends the plan-mode turn with the plan in its last message and its UI offers the choice from that - so the lane used to read Done at exactly the moment it wanted you. The hook now reports one fact about that final message, whether it carries a proposed plan (the message itself never leaves the agent), and the lane reads Waiting until you answer; accepting, declining or editing all come back as your next prompt and clear it.

Also measured and stated in the window rather than hidden: Codex reports a command only once its process has exited. If you allow it to start a server or a long npm install, the lane holds Waiting until some later command finishes - Codex has no event for the approval itself. Claude clears within seconds as before.

Upgrade: unzip, run once, delete the folder - the running copy is retired and replaced automatically. Codex then needs the new hook entry trusted: /hooks in the CLI, Settings > Hooks in the desktop app; until then the question lane stays as it was. No agent restarts needed for Claude.

0.6.2 - Focus finds torn-out tabs

Pre-release

Choose a tag to compare

@timeToy34 timeToy34 released this 24 Aug 19:30

Focus finds a tab you dragged out of Windows Terminal into its own window. Terminal hosts every window in one process - that is what makes tab tear-out possible - so the torn-out window has the same process id as the one it left. The app took the first Terminal window of that process and looked for the tab there only, so it raised the old window and reported the tab missing. Now it keeps every Terminal window of the process, reads each one's tabs once, and raises the window already showing the tab, or else the one holding it and selects it there. The lane's name is tried before the project's across all of them, as before within one. When nothing matches it still raises the topmost window and the message lists the tabs of every window, so you can see what is there.

One window costs no extra work, and consoles, desktop apps and IDEs behave exactly as they did. Verified on Windows Terminal 1.24 with three windows in one process: the tab in a window behind another, the wrong tab selected in the right window, and the window minimized all come forward showing the tab.

Upgrade: unzip, run once, delete the folder - the running copy is retired and replaced automatically. No agent restarts needed; the hook is unchanged.

0.6.1 - Keychron Caps lock fix

Pre-release

Choose a tag to compare

@timeToy34 timeToy34 released this 24 Aug 17:07

Caps Lock works again while the app owns a Keychron. With your own lighting off, pressing Caps Lock lit the keyboard's white indicator and nothing could ever turn it off. The firmware draws that indicator on top of the key and clears it only by the key being repainted - and a mixed-mode frame ends as soon as the rest-of-the-board region reports finished, which an "off" region is immediately, so most of the board was never repainted at all. The app now renders that rest itself: the per-key effect everywhere, every key outside the F-row held black. It looks exactly like off, but every LED is repainted each frame and the indicator switches off the moment Caps does. Num Lock on the full-size Ultras is covered by the same stroke.

The snapshot the app takes before touching the keyboard now covers every key's stored colour, not just the F-row's, and all of it is put back on Quit as before. On stock firmware, which ignores per-key brightness, "black" renders white - the 0.6.0 caveat, resolved by the same firmware fix.

Corsair behaviour is unchanged.

Upgrade: unzip, run once, delete the folder - the running copy is retired and replaced automatically. No agent restarts needed.

0.6.0 - Keychron Ultra keyboards light up

Choose a tag to compare

@timeToy34 timeToy34 released this 23 Aug 23:35

Keychron Ultra keyboards light up. Alongside Corsair through iCUE, the app now drives the F-row of a Keychron Ultra (V3 Ultra 8K verified; the other Ultras speak the same protocol) over its cable or its 2.4 GHz receiver, using the raw-HID protocol the Keychron Launcher itself uses - no driver, no firmware of ours on the keyboard. It takes only the twelve F-row LEDs: the keyboard's mixed mode gives the F-row to the app and leaves the rest of the board running whatever you had, and everything the app changes is read first and put back on Quit. Nothing is ever written to the keyboard's flash; a power cycle is always a full undo. Not over Bluetooth - the firmware does not carry this interface there. The summon keys, being ordinary keycodes in the keyboard's keymap (Launcher: F1-F12 -> F13-F24), work over all three.

Per-key brightness on a Keychron needs a firmware fix. Stock Ultra firmware ignores the per-key value byte, so every lit key shows at full and a dark key shows white. Keychron/zmk pull request 9 fixes it; until Keychron ships it, firmware/keychron-ultra in the repository has the patch, a Docker build script and a flashing guide (the Launcher's own updater accepts a self-built image). Read the guide before flashing anything.

The Keyboard panel reports each keyboard surface on its own line, and agent-frow doctor gained a "keyboards" section that lists every Keychron interface on the bus and what it answers.

Under the hood: the palette that says what the twelve keys look like is now device-neutral, and the frame clock both lighting threads use is shared, so a third keyboard is one module. One new dependency, hidapi (pure-Rust Windows backend); Corsair behaviour is unchanged.

Upgrade: unzip, run once, delete the folder - the running copy is retired and replaced automatically. No agent restarts needed.