From bd4a7216e0fd6cdffce1d04a90519847894fbe64 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Tue, 1 Sep 2026 16:39:12 +0000 Subject: [PATCH] docs: update project documentation for v1.78.0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit README.md: the persistent timeline Stop hook opt-out (#2677) — flag, env var, and config key with resolution order. BROWSER.md: browse stop against a dead daemon now reaps the recorded headless Chromium child, identity-verified (#2709). CLAUDE.md + CONTRIBUTING.md: free-suite test count ~7,000 → ~8,700 (8,660 as of this wave). Co-Authored-By: Claude Fable 5 --- BROWSER.md | 5 ++++- CLAUDE.md | 2 +- CONTRIBUTING.md | 2 +- README.md | 10 +++++++--- 4 files changed, 13 insertions(+), 6 deletions(-) diff --git a/BROWSER.md b/BROWSER.md index b4f62bd41..64811387d 100644 --- a/BROWSER.md +++ b/BROWSER.md @@ -193,7 +193,10 @@ for the full design + decision trail. Only an explicit `--force-restart` replaces a live-but-unresponsive daemon (tabs, cookies, and logins are lost). `browse stop` against a daemon that already died is success: the desired end state holds, so it - cleans the stale state file instead of booting a daemon just to stop it. + cleans the stale state file instead of booting a daemon just to stop it — + and reaps the headless Chromium child recorded in that state file if one + survived. The reap verifies the recorded start time AND a Chromium-looking + cmdline before sending any signal, so a recycled PID is never killed. ### Multi-workspace isolation diff --git a/CLAUDE.md b/CLAUDE.md index 46f167c28..115a52282 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -71,7 +71,7 @@ in sync. ## Testing ```bash -bun run test # run before every commit — free, ~90-100s for the full ~7,000-test suite +bun run test # run before every commit — free, ~90-100s for the full ~8,700-test suite bun run test:evals # run before shipping — paid, diff-based (~$4.35/run max) ``` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 1f398de16..2486da6ab 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -154,7 +154,7 @@ Bun auto-loads `.env` — no extra config. Conductor workspaces inherit `.env` f | 2+3 | `bun run test:evals` | ~$4 combined | E2E + LLM-as-judge (runs both) | ```bash -bun run test # Tier 1 only (run before every commit, ~90-100s for the full ~7,000-test suite) +bun run test # Tier 1 only (run before every commit, ~90-100s for the full ~8,700-test suite) bun run test:e2e # Tier 2: E2E only (needs EVALS=1, can't run inside Claude Code) bun run test:evals # Tier 2 + 3 combined (~$4.35/run) ``` diff --git a/README.md b/README.md index cb76f65a8..898d4b4d4 100644 --- a/README.md +++ b/README.md @@ -275,9 +275,13 @@ Beyond the slash-command skills, gstack ships standalone CLIs for workflows that `./setup` also registers one default-on Stop hook in `~/.claude/settings.json`: `gstack-timeline-stop` (closes dangling session-timeline entries when a session is interrupted; fail-open — 2s internal budget, always exits 0, can never block -a session). Skip it with `./setup --no-team`, remove it with -`gstack-settings-hook remove-source --source gstack-timeline-stop`; -`gstack-uninstall` removes it too. +a session). Opt out persistently with `./setup --no-timeline-stop-hook` — the +choice lands in the `timeline_stop_hook` config key, survives upgrades, and an +explicit "no" removes a live registration. `GSTACK_TIMELINE_STOP_HOOK=no` and +`gstack-config set timeline_stop_hook no` work too (flag > env > config). +`./setup --no-team` skips it for that run, `gstack-settings-hook remove-source +--source gstack-timeline-stop` removes it by hand, and `gstack-uninstall` +removes it too. Hook registration is canonical-only: every hook command points at the stable `~/.claude/skills/gstack` install, never the tree setup ran from, so deleting