mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-09 14:38:59 +02:00
docs(changelog): v1.67.0.0 release summary + itemized changes with contributor credits
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
160c73c813
commit
e7c464ea3a
+191
@@ -1,5 +1,196 @@
|
||||
# Changelog
|
||||
|
||||
## [1.67.0.0] - 2026-08-16
|
||||
|
||||
**The tracker wave: browse survives macOS, installs are complete,**
|
||||
**memory sync never drops a record. 30 contributors landed.**
|
||||
|
||||
This release mines the full issue tracker and community PR queue. Browse now
|
||||
classifies a macOS XProtect kill at Chromium launch and heals itself — clears
|
||||
the quarantine flag, reinstalls the pinned browser revision from the right
|
||||
install root, and retries, all bounded and logged. Fresh installs link every
|
||||
runtime asset a skill references, so /review and friends work on a clean
|
||||
machine the first time. Brain-sync's queue is drained with a classified
|
||||
disposition — privacy-held records are retained and labeled, a failed push
|
||||
keeps its commit and re-delivers it on the next run, and the retry only ever
|
||||
publishes commits it authored itself. Twenty-five community PRs landed with
|
||||
credit, and roughly thirty-five issues close on merge.
|
||||
|
||||
### The numbers that matter
|
||||
|
||||
From the wave's gate eval run (`bun run eval:bg:gate`, log in
|
||||
`~/.gstack-dev/eval-runs/`) and the free suite (`bun run test`) at HEAD.
|
||||
|
||||
| Metric | Before | After | Δ |
|
||||
|---|---|---|---|
|
||||
| Browse launch on macOS 26 (XProtect kill) | manual reinstall | classified + self-healed | automatic |
|
||||
| Skill runtime assets on a fresh install | SKILL.md + sections only | every referenced asset | /review works day one |
|
||||
| Brain-sync queue at a push failure | truncated | retained + re-delivered | no data loss |
|
||||
| Detector push with an interleaved user commit | published it | refuses | author boundary holds |
|
||||
| Gate evals | 41/43 | 43/43 | both reds root-caused |
|
||||
| Free suite | — | ~7,000 tests, ~90-100s | green at HEAD |
|
||||
|
||||
The brain-sync row is the one to internalize: the queue is only ever rewritten
|
||||
by subtracting the exact records that were staged, against a live re-read, so
|
||||
a record enqueued mid-drain survives to the next boundary.
|
||||
|
||||
### What this means for gstack users
|
||||
|
||||
Upgrade and the three most-reported failure classes disappear: browse comes
|
||||
back on macOS without touching a terminal, a teammate's first `./setup`
|
||||
produces working skills, and your cross-machine memory stops silently thinning
|
||||
under flaky networks. If you filed one of the ~35 issues this closes, your
|
||||
repro is now a regression test with your name on the commit.
|
||||
|
||||
### Itemized changes
|
||||
|
||||
#### Fixed — the three P0s
|
||||
|
||||
- **Browse dead on macOS (#2554).** Playwright pinned to 1.62.1 (split from
|
||||
dependabot #2582), plus an XProtect kill-signature classifier with positive
|
||||
AND negative fixtures, a one-shot quarantine-clear + bounded (~120s,
|
||||
process-group-killed) reinstall from the gstack install root that pins the
|
||||
matching Chromium revision, structured heal logging, and a v1.65-style
|
||||
upgrade migration for already-poisoned caches. The heal resolves the install
|
||||
root via `os.homedir()` and keeps its manual-remediation guidance even when
|
||||
the post-heal retry fails.
|
||||
- **Fresh installs missing runtime assets (#2317, #2454).** `setup` links
|
||||
every runtime asset with an explicit exclusion list (node_modules, dist,
|
||||
*.tmpl, test, hidden), pinned by a two-class referenced-paths test:
|
||||
alias-relative references must exist under the installed alias, repo-anchored
|
||||
ones in the tree modulo a reasoned dist/ allowlist.
|
||||
- **Brain-sync data loss (#2549).** Queue records are classified at drain
|
||||
time: skip-filtered and nonexistent drop WITH counts (full paths in a 0600
|
||||
sidecar), privacy-held records are retained and labeled instead of being
|
||||
wiped as "no allowlisted changes", unparseable lines are preserved, and the
|
||||
rewrite subtracts the staged set from a LIVE re-read so concurrent enqueues
|
||||
survive. A failed push keeps its commit; a run-start detector re-delivers it
|
||||
— receipted, locked, throttled to one attempt per 10 minutes, bounded by
|
||||
git's low-speed limits (portable to stock macOS), and gated to fire only
|
||||
when EVERY unpushed commit is its own, so an interleaved manual commit in
|
||||
~/.gstack is never auto-published. The sync lock releases on every exit
|
||||
path, including interrupts mid-push.
|
||||
|
||||
#### Fixed — browse & daemon lifecycle
|
||||
|
||||
- A healthy daemon is never killed by `browse start` (the #2219 iron rule):
|
||||
a total-budget health probe answers in ~8s, busy daemons get "retry or
|
||||
--force-restart" plus a nonzero exit, and only an explicit `--force-restart`
|
||||
ever kills an alive pid — pinned by a regression test. `browse stop` on a
|
||||
dead daemon short-circuits to success (#2254); `/gstack-upgrade` defers to a
|
||||
busy daemon and prints the escape hatch (#2551).
|
||||
- Chromium no longer dies with the terminal: signal handling moved off
|
||||
Playwright's defaults at all three launch sites with a SIGHUP handler
|
||||
routing through the real shutdown path, and a tripwire pinning the count.
|
||||
- The terminal-agent allocates from the same fixed port range as the daemon
|
||||
(#2314) — and that range now ends at 49151, actually below the macOS
|
||||
ephemeral pool it exists to avoid; boot retries a raced bind instead of
|
||||
dying. Windows terminal-agent leaks fixed via `process.kill(pid, 0)`
|
||||
liveness (#1952) and the error-handling helpers. Contributed by @SYKhayyat
|
||||
(#2414).
|
||||
- Daemon crash logs persist without tokens or unsanitized page content
|
||||
(needle-tested). Contributed by @phuttimatebenchanakatkul (#2461).
|
||||
- The dead security-shield surface was removed end to end (−535 lines) while
|
||||
the live L4 sidecar path keeps its status endpoint — docs updated in the
|
||||
same commit. Contributed by @frederik-kaster-noygear (#2557, with the
|
||||
pipe-capture core from #2559). CDP `Emulation.setEmulatedMedia` joins the
|
||||
allowlist — contributed by @meshailabs (#2419). Windows gbrain probe
|
||||
timeout — contributed by @vaston-viji (#2450). `browse/dist` mkdir —
|
||||
contributed by @guyua9 (#2542).
|
||||
- First `patchedDependencies` entry: playwright-core's two Windows spawn
|
||||
sites carry `windowsHide` (#2160, #1989), statically pinned and
|
||||
independently revertable.
|
||||
|
||||
#### Fixed — install & setup correctness
|
||||
|
||||
- Root-alias skills install as rewritten copies, never symlinks whose edits
|
||||
would corrupt generated sources (#2511, #2201). Windows re-runs refresh
|
||||
real-directory installs (#2444), and uninstall deletes only directories
|
||||
that pass BOTH the inventory match and the generated-banner provenance gate,
|
||||
listing (never deleting) anything else (#2563).
|
||||
- `--host cursor` gets the full install slice — contributed by @szsunyuan
|
||||
(#2547). Settings-hook dedup includes the command (#2382) — contributed by
|
||||
@gregario (#2431). `:user` renders route through `--out-dir` (#2569) with a
|
||||
migration that cleans legacy in-place render dirt. setup-gbrain invocation
|
||||
paths fixed (#2250) — contributed by @SomSamantray (#2409). Office-hours
|
||||
installs into codex/factory/opencode runtime roots (#2449).
|
||||
- The redact pre-push hook stays opt-in but its fail-open gaps are closed,
|
||||
with a one-time consent prompt (#1946). Skills-timeline Stop hook ships
|
||||
fail-open (always exit 0, 2s budget) with setup registration (#2553).
|
||||
- iOS QA: DebugBridgeTouch compiles out of Release builds — contributed by
|
||||
@Bastea (#2585); front-most bridge ordering — contributed by @IDSTUK
|
||||
(#2397); compat preflight docs — contributed by @itstimwhite (#2581).
|
||||
|
||||
#### Fixed — memory & gbrain
|
||||
|
||||
- Windows slug resolution and the decisions.jsonl allowlist (#2396) —
|
||||
contributed by @source-utsho (#2561). Brain-sync arithmetic-injection
|
||||
guard — contributed by @sneakygriff (#2588). Windows bash routing for
|
||||
brain-sync/gbrain — contributed by @ShahriarLak (#2510), extended to every
|
||||
gbrain-sources spawn (#2471). `--full` walks the full tree — contributed by
|
||||
@ShahriarLak (#2406). Honest "missing" from brain-cache — contributed by
|
||||
@sneakygriff (#2587). Memory-ingest parses both codex rollout shapes and
|
||||
stages outside GSTACK_HOME (#2105, #2104).
|
||||
- gbrain detection: engine-locked is a healthy status (#2456), bearer-token
|
||||
thin clients are recognized (#2520), GBRAIN_HOME gets its .gbrain segment
|
||||
(#2521), project-scoped MCP registrations are honored (#2499). Source pins
|
||||
respected — contributed by @exGeni (#2417); `--dry-run` works offline
|
||||
(#2536) — contributed by @CarringtonCreative (#2540); bun-on-npm PATH
|
||||
guidance (#2487); dream-stage classifier anchored (#2341).
|
||||
|
||||
#### Fixed — version tooling, diff-scope, redaction
|
||||
|
||||
- VERSION stays the 4-digit source of truth; package.json carries the
|
||||
npm-valid 3-digit translation, lockfiles sync only when they already exist,
|
||||
and drift is judged on translated forms. Built on re-derived work
|
||||
contributed by @YiftahR (#2501), @ortonom (#2568), and
|
||||
@CarringtonCreative (#2531, #2545). Pinned repos compare base and current
|
||||
against the SAME file (#2462). JSON version-paths get honest per-file
|
||||
recovery messages. The path pins (`.gstack/version-path`,
|
||||
`.gstack/package-json-path`) cannot escape the repository — absolute paths,
|
||||
`..` traversal, and symlink escapes are all refused, and a lockfile
|
||||
symlinked outside the repo is skipped with a warning.
|
||||
- Diff-scope covers api/*, migrations/*, and db/data, with a no-match exit
|
||||
code and uncommitted-work handling (#2526, #2455, #2299). Redact scans the
|
||||
merge-base range and knows parcel IDs are not phone numbers — contributed
|
||||
by @Two-Six-Alpha-1115 (#2592, #2591); rebased force-pushes are scanned
|
||||
correctly, proven by test (#2573).
|
||||
- The codex model probe caches its verdicts both ways: a working model for an
|
||||
hour, a deterministic model-400 for 15 minutes (editing config.toml
|
||||
re-probes immediately) — so the affected account stops paying a 30s round
|
||||
trip per review section (#2477). Its timeout wrapper now enforces the
|
||||
deadline with a bash-native watchdog on stock macOS, where no timeout
|
||||
binary exists.
|
||||
|
||||
#### Fixed — templates & everything else
|
||||
|
||||
- Skills running under Codex skip the nested codex specialist with a printed
|
||||
notice (#2519). Codex web-search flag unified behind one resolver constant
|
||||
across 19 sites (#2525). Slugs are sanitized in every path position
|
||||
(#2550) — with groundwork contributed by @harjothkhara (#1851). AGENTS.md
|
||||
routing probe — contributed by @gamerey43 (#2500); empty-find fallthrough
|
||||
killed — contributed by @tranthanhnhatkhoa (#2483); cygpath MSYS builds —
|
||||
contributed by @chiragborse1 (#2452). /ship's review army loops until clean
|
||||
(#2391). Question-registry path is absolute (#2489). Retro glob (#2552),
|
||||
capability-check temp file (#2503), repo-mode stat order (#2195), hover doc
|
||||
note (#2445), make-pdf boolean flags — including `--strict` and
|
||||
`--confidential` — no longer swallow the input file, with a guard test that
|
||||
derives the flag set from the source (#2514).
|
||||
|
||||
#### For contributors
|
||||
|
||||
- Test/generator infra hardened first: host-config golden isolation (#2532),
|
||||
hermetic-wiring tripwire and YAML ellipsis quoting — contributed by
|
||||
@sneakygriff (#2586, #2589); prepush PATH separator — contributed by
|
||||
@luckywenapere (#2544); gen-skill-docs throws on duplicate preamble tokens.
|
||||
- Dependency hygiene: puppeteer-core removed outright (zero consumers),
|
||||
adm-zip CVE closed via lock override — contributed by @anupamme (#2485);
|
||||
transformers/marked/socks bumped with the ONNX sidecar smoke green;
|
||||
.gitattributes LF pin — contributed by @mlaniak (#2527); GitHub Actions
|
||||
bumps — contributed by @dependabot (#2594).
|
||||
- The wave's own adversarial reviews (Codex + Claude, 28 findings) landed as
|
||||
fixes in-branch; verified residuals are filed in TODOS.md with rationale.
|
||||
|
||||
## [1.66.1.0] - 2026-08-16
|
||||
|
||||
**Every claim gstack makes now binds to the content it was made on.**
|
||||
|
||||
Reference in New Issue
Block a user