Repository navigation
chore(release): 0.6.0 - #172
Open
github-actions[bot] wants to merge 1 commit into
Open
github-actions[bot] wants to merge 1 commit into
github-actions[bot] wants to merge 1 commit into
Conversation
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
2 times, most recently
from
August 21, 2026 16:02
b99a3f3 to
8803e75
Compare
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
3 times, most recently
from
September 24, 2026 12:15
4877580 to
37f9725
Compare
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
22 times, most recently
from
November 2, 2026 12:23
4dbc4df to
7eea1fa
Compare
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
16 times, most recently
from
November 3, 2026 14:20
28c404b to
7094df2
Compare
github-actions
Bot
force-pushed
the
release-please--branches--main
branch
11 times, most recently
from
November 4, 2026 00:22
e234723 to
123d426
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The next agent-tty release. Merging this PR creates the release tag and GitHub Release and starts the publish pipeline.
[0.6.0] - 2026-11-10
Added
mouseCLI/RPC command and batch step for mode-aware mouse input (clicks, drags, wheel, motion) through the nativelibghostty-vtbackend. Addsmouse-inputcapability and newCAPABILITY_UNAVAILABLEerror (exit 12) when the optional native package is missing or lacks mouse encoding. Also pins@coder/libghostty-vt-nodeto0.1.0-beta.7(#179, #293).record export --format svg [--animate]writes a browserless, byte-deterministic SVG of a session. Still exports capture the final frame;--animateuses SMIL keyed to recorded event timing. Fonts are embedded on demand (JetBrains Mono always, Noto Symbols 2 / Noto Sans Math and Nerd Font Symbols when needed). Requires the optionallibghostty-vtpackage; no browser fallback (#171, #349).record diff <session-id-a> <session-id-b>offline command replays both sessions and prints a bounded LCS line diff with per-sidescreenHash,cols,rows, andcapturedAtSeq. Supports--at-seq-a/--at-seq-b(including-1for empty logs) for self-diffing a session against its own earlier state (#170, #300).wait --scope cursor-line(and a matchingscopefield on batch wait steps and thewaitForRenderRPC) restricts--text/--regexmatching to the cursor row, eliminating the terminal-echo false positive and making prompt waits precise (#169).screenshot --out <path>writes the PNG to a chosen path while still publishing the in-session artifact. The--outresolver is shared withrecord export, refuses paths inside session storage, and creates missing parent folders likemkdir -p(#241, #279, #290).screenshot --jsonreportsmissingGlyphs(with cells andmissingGlyphsTruncated) listing graphemes that Chromium drew as.notdefboxes.record export --format webmreportsmissingGlyphsacross all painted frames (#240, #278).AGENT_TTY_ACTIVE=trueandAGENT_TTY_SESSION_ID=<id>so shell wrappers and prompts can detect the active managed session (#166, #178).COLORTERM=truecolorin every session, and the PTY now answersXTGETTCAP(Tc,RGB,setrgbf,setrgbb) and declinesDECRQSS SGRso Neovim enablestermguicolorseven underenv -i(#231, #271).inspectreportseventLogStop: { reason: "bytes" | "events" | "unknown", seq }and a human line when the event log has stopped; timed-outwaitandbatchwait steps attach the stop to their message anddetails.eventLogStop(#357).engines.node>=24.0.0 <27);doctor'snode-runtimecheck now uses the same range (#245).Changed
aubetopnpm 10.34.5.aube-lock.yamlis replaced bypnpm-lock.yaml,mise run bootstrapandbootstrap-ciuse pnpm, and Dependabot now works. No resolved versions change (#176).npx playwright@1.64.1 install chromium(#192, #370).wait --timeoutis now 30 s (was 600 s) for both the standalonewaitcommand and batchwaitsteps;--timeout 0still waits forever and the default is printed in--help. Impossible--idle-ms/--screen-stable-mswindows are rejected up front withINVALID_DURATION(exit 2) (#236, #250, #277).waitnow emitsok: falsewitherror.code: "WAIT_TIMEOUT"while preservingresult.timedOut,result.matched, andresult.capturedAtSeq. Fail-fast batches print an error envelope with the failed step's code, message, and full per-stepresult(#232, #273, #301).snapshot --include-cellsworks on large live grids (up to ~1.2 million styled cells). Responses larger than the cap fail withPROTOCOL_ERROR(exit 9, not retryable). Live snapshots with cells now use a 60 s client timeout (#320, #322).HOST_TIMEOUT; queued commands behind a slow render stay alive too (#359).recorded/acceleratedmodes bunched output until the next non-output event) and no longer has a hard 5-minute replay cap - it fails only when the renderer stalls for 5 minutes (#285, #356, #364)./tmp/agent-tty-<uid>/(a0o700per-uid root). Downgrade note: an older CLI cannot reach a host that this version started, so destroy sessions before downgrading (#288).CliErrordetails now cross the host RPC, so livesnapshot/screenshoterrors carry the samedetails.path,details.errno, etc. as the offline paths. An older CLI against this host seesRPC_ERRORschema-validation errors for new fields (#313).snapshot,screenshot,wait,record export,record diff) names the limit in its error instead of failing with a generic message (#340).snapshot,screenshot, renderwait, andrecord export(asciicast and WebM): they return a blank screen / PNG / header / video atcapturedAtSeq: -1(#235, #270).Fixed
--jsonnow always print oneINTERNAL_ERROR/INVALID_INPUT/STORAGE_READ_ERRORenvelope on stdout;INTERNAL_ERRORnow forces exit after flush so leaked handles cannot hang the CLI;helpexits 0 (#237, #287).<sessionDir>/artifacts/manifest.json.lock, so concurrentscreenshot/snapshot/record exportcalls keep every entry. Over-the-limit lock wait fails with retryableSTORAGE_WRITE_ERROR(#282).record exportto the same seq or--outpath keeps one manifest entry per exported file and replaces the earlier entry; failedscreenshot --outcopies roll back the in-session capture (#191, #300, #316).screenshot --show-cursor/--hide-cursornow actually toggle the block cursor in the PNG (ghostty-web only redrew dirty rows before) (#289).--outpath cannot lend its bytes to the manifest entry (#321).?47h/?1047hshows old primary-screen cells on the alternate screen, and a grapheme cluster there makes the next write over it trap ghostty-web#215) are now reported asREPLAY_ERROR(exit 10, not retryable) with the known cause named in the message, for both live and offline screenshot / snapshot / wait paths (#363).createnow waits for a host that is still starting under heavy load (previously gave up after ~5 s of polling) and treats a transientEPIPEprobe as not-ready; it also stops the host and names the session inerror.details.sessionIdon every readiness-wait error, and leaves acreate-failedmarker so a late-starting Windows host stops itself (#247, #294, #312, #362).destroylifecycle: idle-timeout kills the program group like shutdown does; EPERM from a group kill no longer crashes the host; adestroytyped into the session's own shell re-runs in a new session and forwards SIGINT / SIGTERM to that copy;destroy --forceends sessions whose program group cannot be read; many race fixes in reconcile, gc, host-record, socket cleanup, and the lifecycle TLA+ model (#181, #194, #201, #216, #221, #246, #281, #283, #302, #327, #331).home list,gc, and the dashboard on the nextcreate(#186).runnow logs itsinput_runevent in PTY order (a concurrenttypecan no longer land ahead of it in the log), and mouse input gets its own renderer manager so same-cell dedup survives renderer swaps (#234).record export --format webmrecords at a stable 25 fps withfpsset explicitly in PlaywrightrecordVideo, and holds one video frame before a resize inmax-speedso the pre-resize screen reliably reaches the file (#364).Docs
## Chromiumsection indocs/INSTALL.mdwith a version-pinned Playwright install command chain, plusmiseand npm 12 install sections and troubleshooting forFailed to load native module: pty.node(#367, #368, #370).run(#298).Breaking Changes
aubetopnpm. Bootstrap withpnpm install(ormise run bootstrap), notaube ci.aube-lock.yamlis replaced bypnpm-lock.yaml(#176).npx playwright@1.64.1 install chromiumbeforescreenshotorrecord export --format webmworks. WebM exports are now VP9 instead of VP8 (#192)./tmp/agent-tty-<uid>/<home-hash>/<session-id>. Scripts that compute the socket path from the old/tmp/agent-tty/...layout must readhost.rpcSocketPathfrominspect --json. An older CLI cannot reach a host that this version started; asudo agent-ttyrun with a different uid cannot reach your sessions (#288).waitreturnsok: falsewitherror.code: "WAIT_TIMEOUT".result.timedOut,result.matched, andresult.capturedAtSeqare preserved under the envelope. Automation that branches on.ok == truemust now consulterror.code(#232).wait --timeoutis 30 s (was 600 s). Scripts that relied on the old implicit 10-minute wait must now pass--timeoutexplicitly. Batchwaitsteps got the same 30 s default (#236, #250).waitthat fails every renderer poll now exits 9RPC_ERROR(or the underlyingREPLAY_ERRORwith exit 10) with the renderer's message, instead of exit 11WAIT_TIMEOUT.WAIT_TIMEOUTnow only means the timeout elapsed (#301).capturedAtSeq: -1is now a valid value insnapshot,screenshot, render-wait,record diff, andrecord exportresults (andwait --after-seq) for sessions that have not printed yet. Default filenames include-1, e.g.recording--1-webm.webm. Clients that validatedcapturedAtSeq >= 0must relax to>= -1(#235, #270).CliErrordetails (RpcErrorSchemagained an optionaldetails). An older CLI talking to a newer host will fail new error responses withRPC_ERROR"RPC response failed schema validation." - downgrades of a running session are not supported (#313).>=24.0.0 <27prints a stderr warning on an unsupported runtime (#245).New Contributors
Maintained by the release-please workflow. Notes are regenerated by Communique on every push to main, so manual edits to this PR are overwritten.