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-06
Added
agent-tty mousecommand and batch step for native mouse input (left/middle/right press, release, motion, wheel) with modifier/held-button state, encoded in the child program's negotiated tracking mode. Newmouse-inputcapability andCAPABILITY_UNAVAILABLEerror (exit 12) when the libghostty-vt native encoder is unavailable. Pins@coder/libghostty-vt-nodeto0.1.0-beta.7(#179, follow-ups #234, #293).record export --format svg [--animate]writes a browserless, deterministic, byte-stable SVG of a session replay (SMIL discrete animation for--animate). JetBrains Mono is always embedded; Noto Sans Symbols 2 / Math subsets are embedded on demand (#171, #349).record diff <session-id-a> <session-id-b>replays both sessions offline from their event logs and emits a unified LCS line diff of the canonical visible screen, with--at-seq-a/--at-seq-bfor self-diffs against earlier state (#170).wait --scope cursor-linematches--text/--regexonly against the row the cursor is on, so prompt waits (--regex 'READY> $' --scope cursor-line) no longer false-match the echoed command line. Also available on batchwaitsteps and thewaitForRenderRPC (#169).screenshot --out <path>writes the PNG to a chosen path (mirroringrecord export --out), with creation of missing parent folders for both commands. Paths inside<home>/sessions/are refused (#241, #279, #290).screenshot --jsonreports glyphs drawn as.notdefboxes inmissingGlyphswith their cells (missingGlyphsTruncatedwhen capped).record export --format webm --jsonreportsmissingGlyphsacross painted frames. Judges per font face, so host-covered glyphs are not listed (#240, #278).AGENT_TTY_ACTIVE=trueandAGENT_TTY_SESSION_ID=<id>so shells, prompts, and wrappers inside a managed session can detect and identify themselves (#166, #178).COLORTERM=truecolor, and the terminal query responder answers XTGETTCAP (Tc,RGB,setrgbf,setrgbb) and declines DECRQSS SGR, so programs started underenv -i(e.g. Neovim) enabletermguicolors(#231, #271).Changed
aubetopnpm@10.34.5(pnpm-lock.yamlreplacesaube-lock.yaml,mise/CI/docs updated, Dependabot added for npm + actions) (#176).wait): a standalonewaitwithout--timeoutnow times out after 30 s instead of 600 s, matchingrun --timeout. The help text names the default;--timeout 0still waits forever (#236). Batchwaitsteps also default to 30 s (#250).waitenvelope): a timed-outwaitnow emitsok: falsewitherror.code: "WAIT_TIMEOUT", while still carrying the existingresult.timedOut/matched/capturedAtSeq. Fail-fast batches that fail on a step emit anerrorenvelope too, with the per-stepresultattached. Exit code (11 / step-specific) unchanged (#232).waitrenderer failures): when every render poll fails,waitnow rejects with the renderer's own error (typicallyRPC_ERROR/REPLAY_ERROR, exit 9/10) instead of reportingWAIT_TIMEOUT.WAIT_TIMEOUTnow means the timeout elapsed (#301).waitnow rejects--idle-ms/--screen-stable-mswindows that cannot finish within the effective timeout, with exit 2INVALID_DURATION, before contacting the host (#277).snapshot --include-cellsworks on large live sessions; an oversized success is refused withPROTOCOL_ERROR(not retryable). The snapshot-with-cells RPC timeout is raised to 60 s (#320, #322).engines.node(>=24.0.0 <27), anddoctorenforces the same range instead of a hard-coded24+(#245).snapshot,screenshot, andrecord exportnow succeed on an empty event log, returningcapturedAtSeq: -1.record diff --at-seq-a/-b -1accepts the empty-log seq. An empty-log WebM/asciicast is a blank video / header-only cast (#235, #270, #300).record export --format webmpaces output at the recorded time instead of flushing in bursts when a non-output event follows (#285)./tmp/agent-tty-<uid>), and a dead host's socket is removed (#288, #239).destroytyped into or run inside its own session re-runs as a detached copy in a new session; SIGINT/SIGTERM to the original now forward to the copy (128+signumexit) (#216, #281).destroy --forceof a session whose host is gone now succeeds when the program group cannot be read (EACCES, EPERM, EIO, EISDIR, ENOTDIR, ELOOP, ENAMETOOLONG);gckeeps such sessions and namesdestroy --forceas the way out (#327).gcnow keeps an exited session while its program group still has live processes (reportsthe session's program group still runs (destroy ends it)inskippedSessions[].reason) (#302).--outwrites now re-check the parent folder (device + inode) immediately before rename and refuse a parent that can be written but not searched (chmod 0200) (#279).markerrecords the limit (agent-tty: event log limit reached (… bytes|events); later events are not recorded), the program keeps running, and reader commands name the cap in their error details (#340).Fixed
create,reconcile,destroy, andgcclosing races between concurrent agents sharing a Home, including host-pid-first manifest writes, serializedsession.jsonwrites, destroy marker overrides, group-freeze probes for fork chains, cross-time-namespace host records, surviving unreadable/proc/self/stat, and socket-directory cleanup. Lifecycle TLA+ model runs now gate CI (#181, #188, #194, #201, #210, #212, #216, #221, #233, #246, #256, #259, #260, #274, #275, #276, #283, #284, #288, #291, #302, #303, #305, #312, #324, #326, #330, #331, #333, #334).createcleanup: whencreategives up on its host readiness loop, it now stops the host (SIGTERM) and every create error after session allocation includeserror.details.sessionId(#247, #294, #312, #324).<sessionDir>/artifacts/manifest.json.lockserializes publishes across processes with stale-owner judgement (#282). Repeat captures keep earlier artifact files (#191). Later writes replacing an export's file keep the right manifest entry via file-identity checks (#300, #316, #321).--hide-cursor/--show-cursornow actually toggle the canvas cursor; previously every screenshot drew a block cursor regardless of the setting (#289).mouse moveis deduplicated (reported: false) across program output and renderer swaps (#234, #293).--json: unexpected errors and Commander usage errors now emit exactly oneINTERNAL_ERROR/INVALID_INPUTenvelope on stdout; empty/invalid session IDs returnINVALID_SESSION_IDinstead of an assertion stack; the process exits promptly afterINTERNAL_ERROR(#237, #287).WAIT_TIMEOUTnames the effective timeout (e.g.Wait timed out after 30000 ms (the default; pass --timeout <ms>, or --timeout 0 to wait without a limit).) (#273). Batch wait-timeout messages name their ownms(#301).CliErrordetailsnow cross the session-host RPC (e.g.details.errno,details.path); error messages are safely truncated at 65,536 chars without splitting surrogate pairs; requestidis capped at 128 chars; a build/send failure in the host response path no longer crashes the host (#313, #315, #319).record export --format webm --outcomputes its SHA-256 and byte count from the temp file before rename, so a concurrent replacement cannot lend its bytes to the manifest entry (#321).runlogs itsinput_runevent in PTY order (no interleaving with concurrenttype/paste/send-keys) (#234).writeManifestcannot recreate a removed session folder (#200, #212); one invalidhomes.jsonentry no longer wipes the registry (#186); tool paths are leak-checked for canonical symlink escapes before writing hero-demo bundles (#187).npm run cleannow removes the TS build-info files so a fresh build emitsdist/cli/main.js(#348).Breaking Changes
waitdefault timeout drops from 600 s to 30 s; a timed-outwaitreturnsok: falsewitherror.code: "WAIT_TIMEOUT"and carriesresult.timedOuton the error envelope. Fail-fast batch step failures now also useok: falseenvelopes. Scripts branching on.okof awaitor fail-fastbatchmust be updated (#236, #232, #250).waitwhose polls all fail now exits with the renderer's own code (typicallyRPC_ERROR/REPLAY_ERROR, exit 9/10) instead ofWAIT_TIMEOUT(exit 11) (#301).capturedAtSeqcan now be-1(empty event log). Consumers that required>= 0must accept-1(#235, #270).record export --outinside<home>/sessions/is now refused (exit 7EXPORT_ERROR); previously it was accepted (#241).PROMPT_EOL_MARK/COLORTERMdefaults are applied at PTY spawn; an inheritedCOLORTERMfrom the outer shell no longer reaches the session. Opt out per session with--env COLORTERM=<other>or--env COLORTERM=(#231).@coder/libghostty-vt-node@0.1.0-beta.0to0.1.0-beta.7; thelinux-x64prebuild still requires AVX2 (#179, #293).aube: contributor tooling is nowpnpm@10.34.5viamise. No runtime impact on the published npm package (#176).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.