v1.12.2.0 fix: /setup-gbrain day-two fixes (MCP scope, version parse, gh repo create order, smoke test) (#1187)

* fix: parse gbrain --version without "gbrain" prefix

Installer's D19 PATH-shadow check compared `expected_version` from
package.json against `actual_version` from `gbrain --version`. The
output is "gbrain 0.18.2" with a literal prefix; `tr -d '[:space:]'`
left "gbrain0.18.2" which never matched "0.18.2", causing every
fresh install to exit 3 with a false-positive shadowing error.

Use `awk '{print $NF}'` to grab just the last whitespace-separated
token before stripping whitespace.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(brain-init): drop --source flag before git init

gstack-brain-init used `gh repo create --source $GSTACK_HOME` before
running `git init` on that directory. gh requires --source to point at
an existing git repo, so the call fails with "not a git repository"
on first run. The fallback path (gh repo view) could only recover if
the repo was somehow pre-created — which it wasn't.

Fix: omit --source from `gh repo create`. The script's later steps
(git init, remote add, push) wire up the remote explicitly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(setup-gbrain): smoke test command + MCP user scope with absolute path

Three Step 5a/9 defects found running /setup-gbrain end-to-end:

1. Step 9 smoke test used `gbrain put_page --title ... --tags ...`,
   which doesn't exist. The real command is `gbrain put <slug>` with
   body piped on stdin. Updated to match.

2. Step 5a registered MCP with `claude mcp add gbrain -- gbrain serve`.
   Default scope is local (per-workspace), so other projects never saw
   gbrain. Cross-session memory is the whole point — user scope is
   correct.

3. Step 5a passed `gbrain` by bare name, relying on PATH being resolved
   when Claude Code spawns the subprocess. Fragile across shell configs.
   Use absolute path from `command -v gbrain` with ~/.bun/bin/gbrain
   fallback.

Also: remove any stale local-scope registration before re-adding, and
tell the user that open Claude Code sessions need a restart to see
the new mcp__gbrain__* tools (loaded at session start, not mid-session).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 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) <noreply@anthropic.com>

* docs: tighten CHANGELOG entry for v1.12.1.0

Shorter, matter-of-fact list of the fixes. No preamble.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Garry Tan
2026-04-24 07:51:46 -07:00
committed by GitHub
parent aeea57f96a
commit 6209163900
8 changed files with 70 additions and 18 deletions

View File

@@ -285,17 +285,33 @@ doctor output and STOP.
Only if `which claude` resolves. Ask: "Give Claude Code a typed tool surface
for gbrain? (recommended yes)"
If yes:
If yes, register at **user scope** with an **absolute path** to the gbrain
binary. User scope makes the MCP available in every Claude Code session on
this machine, not just the current workspace. Absolute path avoids PATH
resolution issues when Claude Code spawns `gbrain serve` as a subprocess.
```bash
claude mcp add gbrain -- gbrain serve
claude mcp list | grep gbrain # verify
GBRAIN_BIN=$(command -v gbrain)
[ -z "$GBRAIN_BIN" ] && GBRAIN_BIN="$HOME/.bun/bin/gbrain"
claude mcp add --scope user gbrain -- "$GBRAIN_BIN" serve
claude mcp list | grep gbrain # verify: should show "✓ Connected"
```
If the user already had a local-scope registration from an earlier run,
remove it first so both scopes don't conflict:
```bash
claude mcp remove gbrain 2>/dev/null || true
```
If `claude` is not on PATH: emit "MCP registration skipped — this skill is
Claude-Code-targeted; register `gbrain serve` in your agent's MCP config
manually." Continue to step 6.
**Heads-up for the user:** an already-open Claude Code session will not
pick up the new MCP tools until restart. Tell them: "Restart any open
Claude Code sessions to see `mcp__gbrain__*` tools — they're loaded at
session start, not mid-session."
---
## Step 6: Per-remote policy (D3 triad, gated repo-import)
@@ -370,9 +386,9 @@ Find-and-replace (or append) this section in CLAUDE.md:
## Step 9: Smoke test
```bash
gbrain put_page --title "setup-gbrain smoke test" --tags "meta" \
<<<"Set up on $(date)"
gbrain search "smoke test" | grep -i "setup-gbrain smoke test"
SLUG="setup-gbrain-smoke-test-$(date +%s)"
echo "Set up on $(date). Smoke test for /setup-gbrain." | gbrain put "$SLUG"
gbrain search "smoke test" | grep -i "$SLUG"
```
Confirms the round trip. On failure, surface `gbrain doctor --json` output