From 6a6a7b343174980247a9789d958b632f652d0ac5 Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Tue, 28 Apr 2026 23:18:15 +0200 Subject: [PATCH] chore: update changelog and bump aube to 1.3.0 Change-Id: I33f3d19bba1e45ac55bc796a1d8633aa7c839ed0 Signed-off-by: Thomas Kosiewski --- CHANGELOG.md | 17 ++++++++++------- mise.lock | 38 +++++++++++++++++++++++++++++++------- mise.toml | 24 ++++++++++++++++++++---- 3 files changed, 61 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 679859c..69230da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,19 +2,22 @@ ## [Unreleased] +### Added + +- New `run_complete` event in the canonical event log carrying `{ marker, inputRunSeq }`, so automation consumers can correlate `input_run` and completion without scanning rendered output (#55, tracking #21). +- "Agent Demo" section in the README and an evergreen `dogfood/agent-uses-agent-tty/` bundle that records Codex and Claude TUIs driving `nvim --clean` through `agent-tty`, including outer/inner WebMs, asciicasts, transcripts, thumbnails, and a `reproduce.sh` script (#54). +- New `dogfood/issue-21-run-completion-clean/` verification bundle proving snapshots, screenshots, asciicasts, WebM, and the `output` event stream contain no completion-marker bytes while the public `run` envelope still exposes `marker`, `completed`, and `durationMs` (#55). + ### Changed -- Switched local and CI dependency bootstrap to [`aube`](https://github.com/endevco/aube): `mise run bootstrap` now runs `aube exec playwright install chromium`, `mise run bootstrap-ci` runs `aube ci`, and the documented fallback (when `mise` is unavailable) is `aube exec playwright install chromium`. The repo's `packageManager` field is now `aube@1.2.0` and a `pnpm.allowBuilds` allow-list permits native builds for `@coder/libghostty-vt-node`, `esbuild`, `fsevents`, and `node-pty` (#51). +- `run --wait` no longer leaks its internal completion marker into rendered artifacts. Completion is now signaled through an APC sentinel (`ESC _ at ESC \`) that is filtered out of the event log along with the shell's echoed `printf` postamble, and waits resolve on the new `run_complete` event instead of polling rendered snapshots for the marker text. The public `run` JSON envelope (`accepted`, `completed`, `timedOut`, `seq`, `durationMs`, `marker`) is unchanged (#55, tracking #21). +- Asciicast export now explicitly skips non-rendered events (`input_text`, `input_paste`, `input_keys`, `input_run`, `run_complete`, `signal`, `exit`) so recordings only contain `o`, `r`, and `m` frames (#55). +- Local and CI dependency bootstrap now uses [`aube`](https://github.com/endevco/aube): `mise run bootstrap` runs `aube exec playwright install chromium`, `mise run bootstrap-ci` runs `aube ci`, and the documented fallback (when `mise` is unavailable) is `aube exec playwright install chromium`. The `packageManager` field is now `aube@1.2.0`, and a new `pnpm.allowBuilds` allow-list permits native builds for `@coder/libghostty-vt-node`, `esbuild`, `fsevents`, and `node-pty` (#51). - Refreshed contributor and agent guidance in `AGENTS.md` with an outcome-first operating contract, validation guidance, and grouped project invariants (#46). ### Fixed -- `EventLog.open` now closes the underlying file handle when validation (size limit check or existing-content parsing) fails, preventing a file-descriptor leak on rejected session host startup (#51). - -### Internal - -- Added a post-merge workflow that runs `communique generate HEAD --changelog` on pushes to `main` and opens or updates a stable unreleased-changelog PR, with follow-up fixes for the PR title and `--force-with-lease` push against the configured `origin` remote (#47, #49, #50, #52). -- Sharded Linux CI into separate static, unit, integration (4 shards), and e2e (3 shards) jobs while preserving the aggregate `quality-gates` required check and the local `npm test` / `mise run test` contract (#48). +- `EventLog.open` now closes the underlying file handle when validation (size-limit check or existing-content parsing) fails, preventing a file-descriptor leak on rejected session host startup (#51). ## [v0.1.1-beta.4](https://github.com/coder/agent-tty/releases/tag/v0.1.1-beta.4) - 2026-04-25 diff --git a/mise.lock b/mise.lock index 54dbd27..45e408a 100644 --- a/mise.lock +++ b/mise.lock @@ -20,19 +20,43 @@ url = "https://github.com/rhysd/actionlint/releases/download/v1.7.12/actionlint_ provenance = "github-attestations" [[tools.aube]] -version = "1.2.0" +version = "1.3.0" backend = "github:endevco/aube" +[tools.aube."platforms.linux-arm64"] +checksum = "sha256:770c4802423516953424f59baa83465354638b519a530b947156e1e556f516b3" +url = "https://github.com/endevco/aube/releases/download/v1.3.0/aube-v1.3.0-aarch64-unknown-linux-gnu.tar.gz" +url_api = "https://api.github.com/repos/endevco/aube/releases/assets/406850964" +provenance = "github-attestations" + +[tools.aube."platforms.linux-arm64-musl"] +checksum = "sha256:4b745deca532cd0c26347762983751fa5215f85fe130c4ed7095558056e18b16" +url = "https://github.com/endevco/aube/releases/download/v1.3.0/aube-v1.3.0-aarch64-unknown-linux-musl.tar.gz" +url_api = "https://api.github.com/repos/endevco/aube/releases/assets/406850912" +provenance = "github-attestations" + [tools.aube."platforms.linux-x64"] -checksum = "sha256:910353e9e4d0b12bd36f06e150a248a0f5ead3afcb4f05955e497ac8d627f531" -url = "https://github.com/endevco/aube/releases/download/v1.2.0/aube-v1.2.0-x86_64-unknown-linux-gnu.tar.gz" -url_api = "https://api.github.com/repos/endevco/aube/releases/assets/405458209" +checksum = "sha256:ac7b248e1beb413eb3ed5169975dae167c2bbb5a3b990583c6fa849f92cb278f" +url = "https://github.com/endevco/aube/releases/download/v1.3.0/aube-v1.3.0-x86_64-unknown-linux-gnu.tar.gz" +url_api = "https://api.github.com/repos/endevco/aube/releases/assets/406850851" +provenance = "github-attestations" + +[tools.aube."platforms.linux-x64-musl"] +checksum = "sha256:2ac059a71ae327615922a3bff14bcc6ac51f069f204427d3e1ae8c81fecf9826" +url = "https://github.com/endevco/aube/releases/download/v1.3.0/aube-v1.3.0-x86_64-unknown-linux-musl.tar.gz" +url_api = "https://api.github.com/repos/endevco/aube/releases/assets/406850796" provenance = "github-attestations" [tools.aube."platforms.macos-arm64"] -checksum = "sha256:7a3799cc642f7540eaa4e7bb1d3f32be9da1f7dcdbca5c3c3d26910b64a476e1" -url = "https://github.com/endevco/aube/releases/download/v1.2.0/aube-v1.2.0-aarch64-apple-darwin.tar.gz" -url_api = "https://api.github.com/repos/endevco/aube/releases/assets/405458273" +checksum = "sha256:303696c15502a351e6acbecb24a896b4e69f54bc0041834c974417d227d9481f" +url = "https://github.com/endevco/aube/releases/download/v1.3.0/aube-v1.3.0-aarch64-apple-darwin.tar.gz" +url_api = "https://api.github.com/repos/endevco/aube/releases/assets/406852645" +provenance = "github-attestations" + +[tools.aube."platforms.windows-x64"] +checksum = "sha256:89a057d432ec5ff4e234fc90f11c27ac53a05ba289db1740e3bbc1d2a41bf37f" +url = "https://github.com/endevco/aube/releases/download/v1.3.0/aube-v1.3.0-x86_64-pc-windows-msvc.zip" +url_api = "https://api.github.com/repos/endevco/aube/releases/assets/406853464" provenance = "github-attestations" [[tools.communique]] diff --git a/mise.toml b/mise.toml index c0f8a0b..8fbe744 100644 --- a/mise.toml +++ b/mise.toml @@ -6,7 +6,7 @@ zizmor = "1.24.1" # versions or supported CI platforms change. node = "25" python = "3" -aube = "1.2.0" +aube = "1.3.0" [tasks.bootstrap] description = "Install deps and Chromium for local development" @@ -93,17 +93,33 @@ sources = ["src/**/*.ts", "test/**/*.ts", "vitest.config.ts", "package.json"] [tasks.test-unit] description = "Run unit tests" run = "npm run test:unit" -sources = ["src/**/*.ts", "test/unit/**/*.ts", "vitest.config.ts", "package.json"] +sources = [ + "src/**/*.ts", + "test/unit/**/*.ts", + "vitest.config.ts", + "package.json", +] [tasks.test-integration] description = "Run integration tests serially" run = "npm run test:integration" -sources = ["src/**/*.ts", "test/integration/**/*.ts", "vitest.config.ts", "package.json"] +sources = [ + "src/**/*.ts", + "test/integration/**/*.ts", + "vitest.config.ts", + "package.json", +] [tasks.test-e2e] description = "Run e2e tests serially" run = "npm run test:e2e" -sources = ["src/**/*.ts", "test/e2e/**/*.ts", "test/fixtures/**/*.ts", "vitest.config.ts", "package.json"] +sources = [ + "src/**/*.ts", + "test/e2e/**/*.ts", + "test/fixtures/**/*.ts", + "vitest.config.ts", + "package.json", +] [tasks.ci] description = "Run CI checks"