Added
- Default semantic actions (
wait,snapshot, screen hash, batch render-wait, host replay) now uselibghostty-vtwhen the optional native package is installed, falling back toghostty-webwhen it isn't. Visual artifacts (screenshot,record export --format webm) still default toghostty-web. Explicit--renderer,AGENT_TTY_RENDERER, andconfig.json.defaultRendereroverrides keep precedence (#157). - Host replies to terminal capability queries on the live PTY: OSC 10 (foreground), OSC 11 (background), and DSR
ESC[5n(status). Eliminates the Neovim 0.12+E1568startup warning leaking into captures. Replies are written as child input and are not appended to the event log, so snapshots, screenshots, and recordings are unaffected (#163). - Dashboard: pressing Enter in a maximized view now restores it, mirroring Esc. Footer hint updated to
esc/⏎ restore(#153). - CLI exit-code contract documented in
docs/USAGE.md(full0–11mapping plusbatchfail-fast /--keep-goingsemantics), with a top-of-README anchor nav and a grouped command-surface table (#150).
Changed
- Standalone
waitnow exits11(WAIT_TIMEOUT) on timeout while still emitting the existingok: trueenvelope withtimedOut: true/matched: false. Makes shell composition fail closed (agent-tty wait … && next-step). Closes #151 (#165). - Local-state hardening: the per-session RPC socket directory is
0o700, the socket file0o600, and persisted state files (session manifests, Home Registry)0o600, regardless of umask. The Home and session directories are locked to0o700andevents.jsonlto0o600, so the full terminal byte stream (which can contain secrets) is no longer world-readable (#158, #161). - Snapshot/wait performance: dropped a redundant deep clone of the event log in the
libghostty-vtbackend and skipped per-event Zod re-validation on the trusted live-host replay path (seq ordering is still enforced) (#161). - Pre-1.0 versioning:
feat:commits now bump the minor version (e.g.0.4.x → 0.5.0) instead of being flattened into patches. Breaking changes still bump minor;1.0.0remains an explicitRelease-As:decision (#152).
Fixed
- Dashboard redraws immediately on terminal/tmux pane resize. Previously, panes kept stale geometry for up to ~1.5s on idle sessions; now they track the new size on the first post-resize frame. Also removes a latent
NaN-width path on non-TTY stdout (#162). - The standing release-please PR is now opened on
release-please--branches--main(the package-name component suffix is gone) (#147). - The README status-version badge is wired into release-please
extra-filesand bumps with each release PR (#156).
Docs
- README tagline mentions
agent-browseralongside Playwright (#155). RELEASE.mdsupport contract reworded to be version-agnostic so release-please bumps no longer stale it (#158).dogfood-tuiskill clarifies when to use live terminal evidence vs source/tests, and that text snapshots are not authoritative for CJK/emoji column-width questions (#164).
Install from npm once the trusted publish job for this workflow completes:
npm install -g "agent-tty@0.5.0"
agent-tty version --jsonIf you need a registry-independent fallback, install the verified tarball asset from this release directly:
VERSION=0.5.0
RELEASE_TAG=v0.5.0
TARBALL_URL=https://github.com/coder/agent-tty/releases/download/v0.5.0/agent-tty-0.5.0.tgz
npm install -g "$TARBALL_URL"
agent-tty version --jsonFor private releases or environments that require authenticated downloads, fetch the asset first and then install locally:
gh release download "v0.5.0" --repo "coder/agent-tty" --pattern "agent-tty-0.5.0.tgz"
npm install -g "./agent-tty-0.5.0.tgz"
agent-tty version --jsonSHA-256 checksum: 60877b6161abfd7e1ee15bdeb2d45231586f4f1d214f0f3e4b4dbc6bfba3c662 (see agent-tty-0.5.0.tgz.sha256 for the portable checksum file).
This workflow prepares one verified tarball and reuses it across GitHub Release assets and npm publishing instead of rebuilding it.