Skip to content

v1.25.0

Choose a tag to compare

@github-actions github-actions released this 07 Sep 00:39
· 274 commits to main since this release

Changes in 1.25.0

Added

  • acp: carry the pool's turn deadline to the client
  • atc: delete lite mode, and the two-controller machinery it needed
  • atc: show what the retry sweep did
  • attention: add the ask pane's answer machine
  • attention: add the one chip vocabulary the sessions screen paints
  • attention: answer a permission request through the approve broker
  • attention: give a chip a route, options and a reason it has none
  • attention: poll the daemon for what only it knows
  • chat: name every step of the cold open, and never draw a dead composer
  • cli: expose the adapter registry and the copilot dial
  • copilot: give the channel a guardrail dial the model cannot turn
  • copilot: list the named channels on the pane
  • copilot: make the engine a registry name, and let a swap keep the channel
  • daemon: auto-continue transient API errors with no ATC instance
  • fleet: host one chat conversation off the UI thread
  • fleet: tell an answer's success from its failure
  • hangar: accept a task executor on agent create
  • hangar: add elapsed and cost words to the status vocabulary
  • hangar: capture an ACP run's PR url from its transcript
  • hangar: cut the tab strip to seven and route the rest through the palette
  • hangar: make task detail the execution view
  • hangar: parse acp.usage rows into ProviderUsage
  • hangar: record a per-agent task executor on the agent row
  • hangar: resolve a task's executor from its agent at dispatch
  • hangar: retire the Codex-only start form
  • hangar: serve both executors from one board_card_timeline read
  • hangar: stream an ACP run's transcript live, completing T1
  • proto: classify ACP transcript rows through the shared taxonomy
  • sessions: add the right-pane tab strip
  • sessions: answer from the ask pane, and show what the send did
  • sessions: broadcast to the checked rows from the thread tab
  • sessions: delete the host Fleet panel
  • sessions: delete the host notifyd Inbox
  • sessions: dim a chip nothing can answer, and row the rest
  • sessions: merge the daemon's attention rows onto session rows
  • sessions: paint the chip strip and the needs-you badge
  • sessions: produce attention chips per row instead of one marker
  • sessions: put the copilot's engine, model and dial on the pane
  • sessions: scope Enter to the active tab and open the panes
  • store: read the ERR roster and a session's recent event payloads
  • store: read the newest row of one event type in a session
  • tui: preserve tmux preview fidelity

Fixed

  • docs(disk-cleaner): record the two new traps and the known limits
  • acp: let a task mint its own confined adapter again
  • acp: recouple the pool sweep to the effective turn deadline
  • acp: refuse a task adapter key nothing registered
  • acp: validate a provider against the registry the picker was offered
  • ask: keep the double-send guard across a navigation
  • attention: drop the tmux path filter, it was a command-injection surface
  • attention: keep a daemon row across a transient poll failure
  • attention: stop a failed option pick writing its label into the composer
  • chat: retire a leg even when no turn deadline was reported
  • chat: stop offering a cancel for a turn that is long over
  • cli: stop offering two ATC verbs whose handlers are gone
  • copilot: keep the chat page openable against an older daemon
  • copilot: let a session create ask for the scope's own adapter
  • copilot: match only a MISSING provider field on the legacy retry
  • copilot: put the session back when an engine swap cannot mint
  • copilot: restore a failed swap's session as idle, not as active
  • copilot: roll the guardrail back from every error exit, not one
  • copilot: roll the guardrail back when a swap fails
  • daemons: count the hangar sweep as a racing supervisor
  • disk-cleaner: close the holes the first pass left open
  • disk-cleaner: stop it deleting source and reporting success
  • fleet: refuse the legacy watcher while the daemon's retry sweep is live
  • fleet-macos: follow the copilot wire onto a registry name and a dial
  • hangar: bound an acp task's turn by the task budget, not the pool's
  • hangar: drop a negative or non-finite acp cost
  • hangar: let the command palette keep the keys the router claims
  • hangar: make the palette modal size total, not nearly total
  • hangar: match a timeline reply to the screen that asked for it
  • hangar: refuse a chat prompt aimed at a task's acp session
  • hangar: review-848 P1 and P2s on the execution view
  • hangar: route the adapter-death drain through the commit path too
  • hangar: say when the ACP timeline read left rows behind
  • hangar: say why the transcript pane is empty
  • hangar: stop the timeline ledger leaking and wedging the pane
  • hangar: stream the interruption a cancelled run writes past the sink
  • hangar: subscribe the workspace stream before the ack, not after
  • hangar: trim before extracting a task id in the transcript binder
  • hangar: trim before extracting a task id, and pin the predicate
  • hangar-tui: answer an ACP permission from the attention board
  • hangar-tui: deliver an ACP permission's option id, not its label
  • help: stop advertising two panels that no longer exist
  • notifyd: require both paths to resolve in canonical_eq
  • proto: keep tool-output blocks on separate lines, and cover the gate
  • sessions: a missing tmux server means the session is already stopped
  • sessions: file an answer's outcome under the question, not the pane
  • sessions: give the conversation Shift+Tab and the strip Tab
  • sessions: hold a re-reported question at the instant it was first seen
  • sessions: keep the operator's text when a failure lands off-screen
  • sessions: key a thread by the agent's session id, not the tmux name
  • sweep: a ledger read that failed is not a budget of zero
  • sweep: read the reported failure, not the whole event record
  • sweep: say when the failure field was not found, and correct the scope
  • sweep: stand down for the legacy watcher, not just for ATC
  • sweep: stop letting agent-authored text decide an auto-continue
  • tui: bound terminal observer retries
  • tui: harden observer failure handling
  • tui: harden terminal observer
  • tui: isolate live terminal previews
  • tui: release blocked terminal observers
  • tui: reset observer retry state
  • update: let the running binary decide who owns the install
  • update: recognise Homebrew by its Cellar, not by asking brew
  • test(hangar): assert the no-process marker on the path that writes it
  • test(sessions): answer a structured request through the daemon

Documentation

  • chat: say plainly that the cancel's version check is vacuous
  • cli: regenerate for the deleted ATC mode verbs
  • cli: regenerate for the retry ledger and the retired mode verbs
  • cli: regenerate the reference for the adapter registry and the dial
  • core: say which output each executor scans for the PR url
  • disk-cleaner: document fail-closed and the record-splitting trap
  • disk-cleaner: record the two new traps and the known limits
  • hangar: ACP P3 still 4, the adapter's options on the Inbox board
  • hangar: ACP P3 still 5, the refusal and the second approval in the transcript
  • hangar: ACP P3 still 6, the board back to nothing needs you
  • hangar: ACP P3 still 7, the transcript acting on the pick
  • hangar: ACP P3 still 8, store and worktree ground truth
  • hangar: add ACP P3 still 1, the card before its run
  • hangar: add ACP P3 still 2, the Run menu
  • hangar: add ACP P3 still 3, launched on the acp executor
  • hangar: add ACP P3 still 4, control center before the ask
  • hangar: add ACP P3 still 5, the adapter's own options on the board
  • hangar: add ACP P3 still 6, the fallback write asking after the reject
  • hangar: add ACP P3 still 7, the board back to zero
  • hangar: add ACP P3 still 8, the transcript acting on the pick
  • hangar: add ACP P3 still 9, store and worktree ground truth
  • hangar: add the ACP P3 gif
  • hangar: add the ACP P3 recording
  • hangar: add the ACP P3 tape
  • hangar: add the zero-tmux ACP leg to the fullstack explainer
  • hangar: advertise the task-detail expand key
  • hangar: bring the keybindings table in line with the nine-key router
  • hangar: correct the section 2.5 tab-strip width to the measured one
  • hangar: correct two comments the tab shrink made false
  • hangar: correct what the PR badge tripwire uniquely proves
  • hangar: drop the ACP P3 still that showed nothing
  • hangar: label which UI era each recording was made on
  • hangar: name the proof script by its repo path and the second gate
  • hangar: name the right reason an overflowing acp cost is rejected
  • hangar: name the single-writer invariant the scope guard rests on
  • hangar: point defect 29 at its issue
  • hangar: point the tape at the committed proof script
  • hangar: record the A8 executor-column decision
  • hangar: record the ACP P3 leg green and its five new findings
  • hangar: regenerate the ACP P3 tape
  • hangar: retake ACP P3 still 1, board-card on the merged base
  • hangar: retake ACP P3 still 2, run-menu on the merged base
  • hangar: retake ACP P3 still 3, launched on the merged base
  • hangar: retake the ACP P3 gif
  • hangar: retake the ACP P3 recording
  • hangar: rewrite the ACP P3 row for the answered surface and scope
  • hangar: say why the convergence publish runs after its append
  • hangar: tighten the zero-tmux claim to what was sampled
  • hangar: track the mixed token measure in task_usage
  • hangar-tui: say what the two option parsers actually do
  • hangar-tui: the inbox note names what actually reaches the no-options case
  • hangar-tui: the inbox note now matches which rows answer inline
  • man: regenerate for the fleet adapter subcommand
  • plans: add the attention-surface spec and its run goal
  • plans: correct a grounding row that claimed ATC lite was already gone
  • plans: open the attention-surface progress log with the eight settled decisions
  • plans: publish the attention-surface explainer and record its takes
  • plans: record phase 10 and three defects the suite never showed
  • plans: record phase 3 done, two more deviations and three tripwire-found bugs
  • plans: record phase 4 done, two more tripwire-found bugs and the suite status
  • plans: record phase 5 and the panel's full verb-parity table
  • plans: record phase 6 and the Inbox verb-parity table
  • plans: record phase 7, three more spec deviations and three tripwire finds
  • plans: record phase 8, three deviations and where each verb went
  • plans: record phase 9 done
  • plans: record phases 1-2 done, five spec deviations and the pre-existing suite failure
  • plans: record the per-feature recordings and the host-data near-miss
  • plans: record the review's findings, the fixes and what is left open
  • sessions: record each feature, against a private tmux server
  • sessions: record the attention surface answering a real question
  • store: name the scan latest_by_scope pays and when to index it
  • keep the explainer beside the others
  • feat(sessions): delete the host Fleet panel

Other

  • feat(sessions): delete the host notifyd Inbox
  • atc: delete two heartbeat builders that skip the injection fence
  • atc: move the retry cap below both crates that enforce it
  • attention: stop carrying a pane name nothing decides with
  • daemons: drop a footer parameter nothing reads
  • fleet: delete the panel's subscription and dispatch layer
  • hangar: collapse the task-detail header to one meta line
  • hangar: count Screen variants with mem::discriminant
  • hangar: delete the constants the run head orphaned
  • hangar: label the K board Runs
  • hangar: make the ledger append and its publish one operation
  • hangar: make the store writer unreachable without publishing
  • hangar: move the transcript sink into its own module for privacy
  • hangar: read the task-scope convention in one place
  • proto: make the ACP text fold a free function
  • sessions: drop the outstanding-send accessor nothing calls
  • sessions: time the spinner from the phase it matched

Installation

One-liner Install (Recommended)

curl -fsSL https://raw.githubusercontent.com/stevengonsalvez/agents-in-a-box/main/ainb-tui/install.sh | bash

Homebrew (macOS / Linux)

brew tap stevengonsalvez/agents-in-a-box
brew trust stevengonsalvez/agents-in-a-box   # once per machine
brew install ainb

Recent Homebrew refuses to load a formula from a third-party tap
until that tap is trusted, so brew install fails with "Refusing
to load formula ... from untrusted tap" without the middle line.
It is a trust gate, not a broken formula.

Manual Install

  1. Download the appropriate archive for your platform from the assets below
  2. Extract: tar -xzf ainb-*.tar.gz
  3. Move to PATH: sudo mv ainb /usr/local/bin/

Cargo (any platform with Rust)

cargo resolves the ainb package by name even though the workspace
lives in ainb-tui/, so a single command works — no clone needed:

cargo install --git https://github.com/stevengonsalvez/agents-in-a-box --branch main ainb

Source builds omit the bundled analytics plugins. For the prebuilt,
plugin-bundled binary use Homebrew or the install script above.

Supported Platforms

  • macOS Apple Silicon (M1/M2/M3)
  • macOS Intel (x86_64)
  • Linux x86_64
  • Windows: use WSL2 + the Linux binary (native Windows is not supported)