From 781aebd8bf38224488fe2692bcbb5b6918dcb8c3 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Fri, 24 Apr 2026 02:15:15 -0700 Subject: [PATCH] chore: bump version and changelog (v1.12.1.0) Also updates test/gstack-brain-init-gh-mock.test.ts to match the fixed behavior of bin/gstack-brain-init (the assertion previously required `--source`, which was the bug being fixed in 04185d8f). Co-Authored-By: Claude Opus 4.7 (1M context) --- CHANGELOG.md | 17 +++++++++++++++++ VERSION | 2 +- package.json | 2 +- test/gstack-brain-init-gh-mock.test.ts | 6 ++++-- 4 files changed, 23 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ea5181f3..b61a2fbc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,22 @@ # Changelog +## [1.12.1.0] - 2026-04-24 + +## **`/setup-gbrain` day-two fixes: three shell bugs in the onboarding path, one MCP scope mistake.** + +v1.12.0.0 shipped /setup-gbrain yesterday. Running it end-to-end for the first time surfaced four real defects that blocked the happy path. This is the day-two patch — tiny diff, all blockers, no new scope. + +### Itemized changes + +#### Fixed +- `bin/gstack-gbrain-install`: D19 PATH-shadow check was string-comparing `"gbrain 0.18.2"` (with prefix) against `"0.18.2"`, so every install exited 3 with a false-positive PATH-shadowing error. Parse with `awk '{print $NF}'` to extract just the version number. +- `bin/gstack-brain-init`: `gh repo create --source $GSTACK_HOME` ran before `git init`, failing with "not a git repository" on every first-run path. The script's later steps wire up the remote explicitly, so `--source` is redundant and can be omitted. +- `setup-gbrain/SKILL.md.tmpl` Step 9: smoke test used `gbrain put_page --title ... --tags ...`, which doesn't exist. The real command is `gbrain put ` with body piped on stdin. +- `setup-gbrain/SKILL.md.tmpl` Step 5a: MCP registered with default scope `local` (per-workspace), defeating the whole point of a cross-session knowledge base. Now uses `--scope user` with absolute path to the gbrain binary (so PATH resolution at subprocess spawn isn't a gamble). + +#### Changed +- `test/gstack-brain-init-gh-mock.test.ts`: updated assertion to match the fixed behavior (`expect(createCall).not.toContain('--source')`). + ## [1.12.0.0] - 2026-04-24 ## **`/setup-gbrain` — any coding agent goes from zero to "gbrain is running, and I can call it" in under five minutes.** diff --git a/VERSION b/VERSION index 2cf9e565..2255ba16 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -1.12.0.0 +1.12.1.0 diff --git a/package.json b/package.json index f5630f17..3f6a0e00 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "1.12.0.0", + "version": "1.12.1.0", "description": "Garry's Stack — Claude Code skills + fast headless browser. One repo, one install, entire AI engineering workflow.", "license": "MIT", "type": "module", diff --git a/test/gstack-brain-init-gh-mock.test.ts b/test/gstack-brain-init-gh-mock.test.ts index 7d3e85c8..ff7d98cb 100644 --- a/test/gstack-brain-init-gh-mock.test.ts +++ b/test/gstack-brain-init-gh-mock.test.ts @@ -134,8 +134,10 @@ describe('gstack-brain-init uses gh CLI when present + authed', () => { expect(createCall).toContain('gstack-brain-testuser'); expect(createCall).toContain('--private'); expect(createCall).toContain('--description'); - expect(createCall).toContain('--source'); - expect(createCall).toContain(tmpHome); + // --source is intentionally omitted: gh requires the source dir to already + // be a git repo, but brain-init doesn't `git init $GSTACK_HOME` until later. + // Creating bare and wiring up the remote explicitly avoids that ordering bug. + expect(createCall).not.toContain('--source'); }); test('falls back to gh repo view when create reports already-exists', () => {