From a7e96bb561fcf6d720ea09a166711a3e4ddb704f Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Fri, 14 Aug 2026 20:23:10 -0700 Subject: [PATCH] =?UTF-8?q?release:=20v1.64.0.0=20=E2=80=94=20fix=20wave?= =?UTF-8?q?=20CHANGELOG,=20VERSION,=20deferred-wave=20TODOs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 158 +++++++++++++++++++++++++++++++++++++++++++++++++++ TODOS.md | 33 +++++++++++ VERSION | 2 +- 3 files changed, 192 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f3efb048..23598341e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,163 @@ # Changelog +## [1.64.0.0] - 2026-08-14 + +**Ninety fixes in one wave. Every guard that said it was protecting you now actually does.** + +This release is a fix wave built from a full audit of the tracker: every open +PR and every open issue, verified against main before anything landed. The +pattern that kept showing up was guards that failed open. The freeze and +careful hooks emitted a payload shape Claude Code ignores, so deny meant +allow. The redact pre-push hook had six separate paths that let a credential +through. The test suite exited green after running 4% of itself. All of that +is fixed, with a regression test or a static tripwire pinning each one shut. + +The wave absorbs the best community fix for each defect, credited by name: +82 contributors are named in this release, several of whom independently +fixed the same bug within days of each other. That duplication is the +tracker telling us how many people hit the same wall. + +### The numbers that matter + +Source: `git log 1.63.0.0..HEAD` on this branch, plus the audit workflow +records referenced in the PR. + +| Metric | Before | After | +|---|---|---| +| Free-suite files that actually run | ~16 of 434 (truncated, exit 0) | all 434, honest exit code | +| Guard hooks that can block (freeze/careful/team-init) | 0 of 3 | 3 of 3, fail closed | +| Native AskUserQuestion answers recorded | 14% | 100%, suffix-aware | +| /codex runs per macOS session before breaking | 1 | unlimited (mktemp fixed) | +| Issues closed by this release | — | 52 | +| Community PRs absorbed with credit | — | ~50 | + +The suite number is the one to sit with. A delayed process.exit(0) in one +test file killed the whole run mid-flight with a green exit code — so every +other guarantee in CI was resting on a suite that could not fail. It can +fail now, a fault-injection test proves the failure propagates, and the +sharded runner treats a summary-less shard as failed. + +### What this means for you + +Skill enforcement (/freeze, /careful, team required-mode) actually blocks. +The redact guard scans big diffs instead of blocking them unscanned, and +quoted arguments can't hide an rm -rf from /careful. Auto-upgrade un-wedges +itself on installs with local patches. Memory ingest refuses to claim +success while importing nothing. Windows installs stop bricking .gstack +when your hostname matches your username, stop flashing console windows, +and the plan-tune hooks finally record your answers. Design image +generation works again. Update gstack and the wave is yours. + +### Itemized changes + +#### Fixed — enforcement guards +- /freeze deny and /careful ask decisions nest under hookSpecificOutput so + Claude Code honors them; team-init required mode blocks with exit 2 even + on schema drift. Contributed by @jawadakram20, @Masashi-Ono0611. +- /careful parses the tool payload with a real JSON parser (quoted + arguments no longer truncate the command), asks on IFS/base64 + obfuscation, fails closed on unreadable input, and multi-line commands + cannot ride the safe-exception whitelist. Contributed by @wtamminga. +- The investigate scope lock resolves check-freeze via $HOME (the + CLAUDE_SKILL_DIR path never resolved at hook time). Reported with a fix + by @maxpetrusenkoagent. +- Specialist review agents run with run_in_background: false — required + since Claude Code 2.1.198 made background the default. + +#### Fixed — credentials and redaction +- Pre-push scanning: line-aligned chunked scans for big diffs + (@luckywenapere), real push-base resolution instead of whole-repo blame + (@stormeoio), byte-exact stdin for chained hooks (@francis-eye), + --no-ext-diff/--no-textconv, hunk-aware header parsing, fail-closed ref + parsing (bypasses reported by @lubosxyz), GOCSPX + Telegram token + patterns (@francis-eye), UUID fixture false-positive suppression. +- pair-agent walks you through ngrok auth in YOUR terminal — the token + never enters the transcript. +- The extension denies token/port reads to content scripts and foreign + extensions, reimplemented for the v1.63 pinned-origin token model. + Contributed by @punksterlabs. +- diff 9.0.0 (GHSA-73rr-hh4g-fpgx, @genisis0x); OpenAI key file written + 0600-at-create (@bunlongheng); injection-denylist and phone-pattern + false positives calibrated (@Masashi-Ono0611, @JonasFocus, @abkrim). + +#### Fixed — test-suite integrity +- All eight delayed process.exit teardown bombs removed; static no-suicide + tripwire; fault-injection proof of exit-code propagation; the sharded + runner fails shards that exit 0 without bun's summary. Contributed by + @sneakygriff with repairs from @time-attack; also fixed by @whd4. +- design/test/ joins the free suite and the sharded runner (it never ran + anywhere before). +- The orphaned sidebar chat-queue suites are gone; live sidebar tests stay. +- Fork PRs skip eval jobs deterministically instead of red/green by Docker + cache luck. Contributed by @andrey-esipov. + +#### Fixed — silent data loss +- memory-ingest imports gitignored staging (@gawievanblerk), reconciles + imported-vs-staged counts and refuses to advance state on shortfall + (@Charles-Grant), with a version-adaptive flag fallback. +- lib/ ships beside bin/ on every host install — learnings, decisions and + telemetry scripts work outside Claude Code. Contributed by @fedster99; + supabase/config.sh copy by @jizusun. +- Native AskUserQuestion answers parse correctly (object-map shape), the + (Recommended) suffix compares equal, and extraction failures no longer + poison followed_recommendation. Based on the working patch by @yijisoo; + suffix fix by @chuchu2781. +- The autoplan task aggregator returns real tasks (jq scope bug swallowed + by 2>/dev/null). Contributed by @kkroo. +- Auto-upgrade pulls with --autostash over locally-patched installs and + logs the real failure reason. +- gstack-slug resolves the project root by marker walk-up (@ajeenkya), + canonicalizes slash branches (@ShuratCode), and keeps cached identity + sticky so adding a remote never renames your project. +- Design image generation: the gpt-image-2 tool pairing that 400'd every + call is fixed (@Pablosinyores), with honest timeout reporting (@vryahn). + +#### Fixed — Windows +- icacls grants by SID — hostname==username no longer bricks ~/.gstack + (@asizux2; independently fixed by @Icandi40, @chiragborse1, @IntegriGit, + @voltapix26). +- windowsHide forwarded through every spawn shim (@jerrynicholsai; + subsets by @jwilk-hrep, @rroojrooj, @WimvandenHeijkant); watchdog uses + signal-0 liveness with a reachable circuit breaker (@SYKhayyat); terminal + agents tie their lifetime to the owner PID (@csarigoz). +- All three plan-tune hooks spawn their bins through a shared + Windows-aware helper (@rafassousa); setup registers the SessionStart + hook with a bash prefix (@NikhileshNanduri); BROWSE_BIN gets its .exe + (@rroojrooj); the polyfill exposes an exited promise (@punksterlabs) + and the CJK terminal issues are gone (double-send fixed by + @mindsurf0176, full-width font cells by @tomfluff). +- New Windows regression tests run on windows-latest CI, not just as + static checks on macOS. + +#### Fixed — /codex +- mktemp templates keep the X-run trailing — /codex works past the first + run on macOS (@ShuratCode and @noron12234; also @cathrynlavery). +- codex review receives explicit diff args instead of silently reviewing + the dirty tree (@fangearhq-boop), wrapped in timeouts so truncation + stops reading as no-findings (@aegixx). +- Review mode runs sandboxed read-only; the P0/P1/P2 gate fails closed on + empty, untagged, or non-zero output; model-entitlement 400s get + actionable guidance. + +#### Fixed — everything else +- Artifacts Sync and telemetry-finalize un-deadened in 49 skills (quoted + tilde never expands — @jawadakram20). update_check:false now silences + the preamble prose too (@jc0d35). Codex hosts read AGENTS.md, not + CLAUDE.md (@exGeni). setup --help prints help (@saen-ai). Model overlays + for the current Claude generation (@chrisquorum). Plus ~20 more small + fixes credited in the git log: deploy-config URL parsing, artifacts-init + protocol handling, keychain auth detection, catalog description + truncation, tracked-file test counts, update-check crash sentinel, + Ubuntu 26.04 detection, CRLF-stable generation, telemetry error fields, + server-lock diagnostics, shell-quoted paths, benchmark arg validation, + and more. + +#### For contributors +- The enumerate-first repair protocol used here (defuse, enumerate, repair + before removing) is documented in the PR; the audit records live in the + session workflow journals. Four follow-up waves are captured in TODOS.md + with full context. + ## [1.63.0.0] - 2026-08-13 **Everything gstack sends off your machine now leaves a receipt you can read.** diff --git a/TODOS.md b/TODOS.md index d375009fe..24f7edcf0 100644 --- a/TODOS.md +++ b/TODOS.md @@ -2750,3 +2750,36 @@ rendering quirks"); or (c) move this test to periodic until (a)/(b) lands. **Context:** `test/skill-e2e-plan-design-with-ui.test.ts`, `test/helpers/claude-pty-runner.ts:308` (`isNumberedOptionListVisible`). Evidence: `~/.gstack-dev/eval-runs/pdwu-verify-*.log`. **Effort:** M (human ~half day / CC ~30min). + +### P2: Follow-up fix waves from the 2026-08-14 tracker audit (v1.64.0.0) + +The full-tracker audit behind v1.64.0.0 verified every open PR/issue against +main and consciously deferred four coherent fix waves. Audit records: +`~/.gstack/projects/garrytan-gstack/` eng-review artifacts + the v1.64 PR body. + +**Wave A — browse-daemon lifecycle.** Watchdog kills headed handoff sessions +(PRs 2565/2405/2346), macOS headed launch broken by the rebrand-invalidated +Chromium signature + XProtect (issues 2554/2242/2138/1829/1379 — the three +darwin-skipped handoff tests in browse/test/handoff.test.ts un-skip when this +lands), busy-daemon kill (2219/2231), cosmetic SIGTERM ignore (2220), +Playwright pin bump (PR 1761, #1703 — rebuilds the CI browser image). +Start with the signature/re-sign question; everything else is small. + +**Wave B — install integrity.** connect-chrome alias shadowing (PR 2202, +issues 2201/2511), Playwright bootstrap aborts/timeouts (PRs 2233/2359, +issues 1902/2136), --host cursor/slate wiring (PRs 2547/2432, issue 2361), +review checklist/specialists never copied (issues 2317/2518), Windows re-run +refresh (#2444). Blast radius is `setup` — one focused PR. + +**Wave C — gbrain trust boundary.** Transcript trust/scope/source isolation +(PR 2232, issue 2140), brain-sync queue truncation (#2549), worktree source +pins (PR 2417, #2516), thin-client detection gaps (#2520/#2456), plus small +absorbs (2371/2360/2406/2369/2368/2321). Needs never-double-store review. + +**Wave D — ship/version allocator.** Queue-down fallback (PRs 2545/2546), +npm-invalid subdir manifest versions (PR 2531), versionless repos +(2343/2334/2501, #1474), diff-scope specialist routing rewrite +(#2526/#2299/#2455), /review token runaway (#2519). + +**Depends on:** v1.64.0.0 landing. Each wave is one bundled PR per the +fix-wave pattern. diff --git a/VERSION b/VERSION index 232d60188..6a0ed664d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.63.0.0 +1.64.0.0