Skip to content

Commit 9e0b4b3

Browse files
authored
feat: add install smoke coverage and tarball guidance (#19)
1 parent e267c0f commit 9e0b4b3

60 files changed

Lines changed: 2578 additions & 17 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,9 @@ jobs:
5151
- name: Build
5252
run: mise run build
5353

54+
- name: Packaging smoke
55+
run: mise run install-smoke
56+
5457
# macOS compilation and static-analysis counterpart to the Ubuntu quality
5558
# gates above. Tests are excluded because the macOS GitHub Actions runner
5659
# has pre-existing issues with PTY spawning and Unix domain sockets that

README.md

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,60 @@ It is built for agent workflows that need both semantic state and visual artifac
55

66
## Installation
77

8-
### Global installation
8+
`agent-terminal` currently supports Node `24.x`.
9+
Released builds install from npm. For prerelease/private use, the guaranteed install path is a built tarball; direct GitHub installs are best-effort and may still fail in some environments.
10+
11+
### npm registry installation
12+
13+
#### Global installation
914

1015
```bash
1116
npm install -g agent-terminal
1217
agent-terminal version --json
1318
```
1419

15-
### Project installation
20+
#### Project installation
1621

1722
```bash
1823
npm install agent-terminal
1924
./node_modules/.bin/agent-terminal version --json
2025
```
2126

27+
### Direct GitHub installation
28+
29+
```bash
30+
npm install -g github:coder/agent-terminal
31+
agent-terminal version --json
32+
```
33+
34+
GitHub installs attempt to build from source via npm's `prepare` hook.
35+
Use this when you want the latest default-branch snapshot and your npm/git-dependency environment can build native dependencies cleanly.
36+
37+
Today, the guaranteed prerelease path is still the built tarball route below.
38+
The repository's install smoke now treats tarball install as the required path and records the current git-install caveat separately, because native dependencies such as `node-pty` can still fail during npm's git-dependency flow in some environments.
39+
40+
If your shell setup injects `mise activate` (or similar trust-checked tooling) into npm lifecycle subprocesses, trust the checkout path first or use the tarball route below.
41+
42+
### Private tarball installation
43+
44+
When you need a deterministic prerelease artifact before the package is published, prefer a built tarball:
45+
46+
```bash
47+
TARBALL_DIR=$(mktemp -d)
48+
npm ci
49+
npm run pack:private -- --pack-destination "$TARBALL_DIR"
50+
51+
INSTALL_PREFIX=$(mktemp -d)
52+
npm install -g --prefix "$INSTALL_PREFIX" "$TARBALL_DIR"/agent-terminal-*.tgz
53+
"$INSTALL_PREFIX"/bin/agent-terminal version --json
54+
"$INSTALL_PREFIX"/bin/agent-terminal --home "$(mktemp -d)" doctor --json
55+
```
56+
57+
`npm run pack:private` always rebuilds `dist/` before packing, so the tarball matches the private artifact reviewers should install.
58+
Keep the tarball route as the guaranteed private-distribution fallback even when GitHub installs are convenient.
59+
60+
If `doctor --json` reports a missing Playwright browser cache on a fresh machine, run `npx playwright install chromium` once before renderer-backed workflows.
61+
2262
## Quick start
2363

2464
```bash
@@ -220,7 +260,7 @@ Useful shortcuts:
220260
npm run verify
221261
```
222262

223-
That runs formatting, linting, typechecking, unit/e2e tests, and the production build.
263+
That runs formatting, linting, typechecking, unit/e2e tests, the production build, and packaging/install smoke coverage for the required tarball route plus the current git-dependency behavior/caveat check.
224264
For contributor workflow and release hygiene, see [`docs/CONTRIBUTING.md`](./docs/CONTRIBUTING.md) and [`docs/RELEASE-PROCESS.md`](./docs/RELEASE-PROCESS.md).
225265

226266
## Design docs

docs/RELEASE-PROCESS.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@ Run the full repo validation command:
1717
npm run verify
1818
```
1919

20+
That command now includes the tarball packaging smoke plus a git-install caveat check, so release candidates exercise the guaranteed private-distribution path and record the current git-dependency behavior before publish.
21+
2022
If the public skill changed, also run:
2123

2224
```bash

dogfood/CATALOG.md

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,19 @@ Paths below are relative to the repository root.
55

66
## Canonical scenarios
77

8-
| Scenario | What it demonstrates | Bundle |
9-
| ---------------- | -------------------------------------------------------------------------------- | ---------------------------------------- |
10-
| Hello prompt | Basic lifecycle, wait, screenshot, and recording flow | `dogfood/20260322-dogfood-hello-prompt/` |
11-
| Run command | The higher-level `run` workflow for shell setup and command injection | `dogfood/run-command/` |
12-
| Color rendering | ANSI color capture and screenshot review | `dogfood/20260322-dogfood-color/` |
13-
| Alternate screen | Entering and leaving an alt-screen TUI while preserving the main screen | `dogfood/20260322-dogfood-alt-screen/` |
14-
| Resize | PTY resizing and stable-screen verification | `dogfood/20260322-dogfood-resize/` |
15-
| Scrollback | Scrollback-aware snapshots, screenshots, and recording export | `dogfood/20260322-dogfood-scrollback/` |
16-
| Unicode | Unicode rendering plus snapshot/export review | `dogfood/20260322-dogfood-unicode/` |
17-
| LazyVim | A real TUI scenario that exercises editor startup and reviewer-visible artifacts | `dogfood/20260322-lazyvim-scenario/` |
18-
| Public skill | The shipped `skills/agent-terminal/` workflow and documentation surface | `dogfood/20260327-public-skill/` |
19-
| Config parity | Configuration/profile behavior checks that remain useful as a standing scenario | `dogfood/week5-config-parity/` |
8+
| Scenario | What it demonstrates | Bundle |
9+
| ---------------- | ----------------------------------------------------------------------------------- | ---------------------------------------- |
10+
| Hello prompt | Basic lifecycle, wait, screenshot, and recording flow | `dogfood/20260322-dogfood-hello-prompt/` |
11+
| Run command | The higher-level `run` workflow for shell setup and command injection | `dogfood/run-command/` |
12+
| Color rendering | ANSI color capture and screenshot review | `dogfood/20260322-dogfood-color/` |
13+
| Alternate screen | Entering and leaving an alt-screen TUI while preserving the main screen | `dogfood/20260322-dogfood-alt-screen/` |
14+
| Resize | PTY resizing and stable-screen verification | `dogfood/20260322-dogfood-resize/` |
15+
| Scrollback | Scrollback-aware snapshots, screenshots, and recording export | `dogfood/20260322-dogfood-scrollback/` |
16+
| Unicode | Unicode rendering plus snapshot/export review | `dogfood/20260322-dogfood-unicode/` |
17+
| LazyVim | A real TUI scenario that exercises editor startup and reviewer-visible artifacts | `dogfood/20260322-lazyvim-scenario/` |
18+
| Public skill | The shipped `skills/agent-terminal/` workflow and documentation surface | `dogfood/20260327-public-skill/` |
19+
| Install flows | Pre-public tarball install proof plus the current local git-install caveat evidence | `dogfood/install-flows/` |
20+
| Config parity | Configuration/profile behavior checks that remain useful as a standing scenario | `dogfood/week5-config-parity/` |
2021

2122
## Validation and release gates
2223

dogfood/install-flows/README.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Install flow proof bundle
2+
3+
This bundle captures a 2026-04-07 review pass for the prerelease install paths.
4+
5+
## Environment
6+
7+
- Node runtime used for installed-binary checks: v24.14.0
8+
- npm used for packaging/install commands: 11.9.0
9+
- Tarball artifact: /home/coder/.mux/src/agent-terminal/npm-install-5r2j/dogfood/install-flows/tarball-artifact/agent-terminal-0.1.0.tgz
10+
- Git source revision: 4443b7a66dcf91e9798773abdf363eda746358aa
11+
- Git source URL: git+file:///tmp/tmp.6ZtZ24ucrQ/src#4443b7a66dcf91e9798773abdf363eda746358aa
12+
13+
## What is included
14+
15+
### Tarball route (`tarball/`)
16+
17+
- `pack.json` records the built package contents.
18+
- `install.log`, `version.json`, and `doctor.json` capture the successful install + verification outputs.
19+
- `install.png`, `version.png`, and `doctor.png` are reviewer-facing screenshots.
20+
- `install-flow.webm` and `install-flow.cast` are the corresponding terminal recordings.
21+
22+
### Git route (`git/`)
23+
24+
- `install.log` captures a representative direct git install attempt from this workspace.
25+
- `install.png` and `install-flow.webm` render that transcript for review.
26+
- `blocker.md` documents why this workspace could not produce installed-binary `version --json` / `doctor --json` outputs for the git route.
27+
28+
## Important review note
29+
30+
The tarball route is the fully verified private-distribution path in this bundle.
31+
The git route evidence is intentionally a blocker transcript rather than a successful install proof: the smoke check now accepts a narrow family of known git-install caveats in environments like this one, while keeping the tarball route as the required passing path.
32+
That caveat is also reflected in the updated installation docs, which keep the tarball route as the guaranteed fallback.

dogfood/install-flows/commands.sh

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# Tarball proof commands used:
5+
# MISE_TRUSTED_CONFIG_PATHS="$PWD:/tmp:$HOME/.npm" npx -y npm@11.9.0 run build
6+
# MISE_TRUSTED_CONFIG_PATHS="$PWD:/tmp:$HOME/.npm" npx -y npm@11.9.0 pack --json --ignore-scripts --pack-destination dogfood/install-flows/tarball-artifact
7+
# MISE_TRUSTED_CONFIG_PATHS="$PWD:/tmp:$HOME/.npm" npx -y npm@11.9.0 install -g --prefix <tarball-prefix> <tarball.tgz>
8+
# PATH="$(dirname "/home/coder/.npm/_npx/387698761821791d/node_modules/node/bin/node"):$PATH" <tarball-prefix>/bin/agent-terminal version --json
9+
# PATH="$(dirname "/home/coder/.npm/_npx/387698761821791d/node_modules/node/bin/node"):$PATH" <tarball-prefix>/bin/agent-terminal --home <isolated-home> doctor --json
10+
# /home/coder/.npm/_npx/387698761821791d/node_modules/node/bin/node --import tsx ./src/cli/main.ts create/run/wait/screenshot/record export ...
11+
#
12+
# Git proof commands used:
13+
# MISE_TRUSTED_CONFIG_PATHS="$PWD:/tmp:$HOME/.npm" npx -y npm@11.9.0 install -g --prefix <git-prefix> "git+file:///tmp/tmp.6ZtZ24ucrQ/src#4443b7a66dcf91e9798773abdf363eda746358aa"
14+
# /home/coder/.npm/_npx/387698761821791d/node_modules/node/bin/node --import tsx ./src/cli/main.ts create/run/wait/screenshot/record export ...
15+
#
16+
# See tarball/install-step.sh, tarball/version-step.sh, tarball/doctor-step.sh,
17+
# and git/install-step.sh for the exact terminal-display commands captured in the screenshots/video.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/tmp/tmp.6ZtZ24ucrQ/src
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
4443b7a66dcf91e9798773abdf363eda746358aa
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
git+file:///tmp/tmp.6ZtZ24ucrQ/src#4443b7a66dcf91e9798773abdf363eda746358aa
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/tmp/tmp.vQk7Eo2uSg

0 commit comments

Comments
 (0)