From c7444a991629965c286480dababee2214da80487 Mon Sep 17 00:00:00 2001 From: Garry Tan Date: Fri, 17 Apr 2026 06:15:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20review=20pass=20=E2=80=94=20package.json?= =?UTF-8?q?=20version,=20import=20dedup,=20error=20context,=20stale=20help?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Findings from /review on the wave PR: - [P1] package.json version was 0.18.0.1 but VERSION is 0.18.1.0, failing test/gen-skill-docs.test.ts:177 "package.json version matches VERSION file". Bumped package.json to 0.18.1.0. - [P2] Duplicate import of cookie-picker-routes in browse/src/server.ts (handleCookiePickerRoute at line 20 + hasActivePicker at line 792). Merged into single import at top. - [P2] cookie-import-browser.ts:494 generic rethrow loses underlying error. Now preserves the message so "ENOENT" vs "JSON parse error" vs "permission denied" are distinguishable in user output. - [P3] setup:46 "Missing value for --host" error message listed an incomplete set of hosts (missing factory, openclaw, hermes, gbrain). Aligned with the "Unknown value" error on line 94. Kept as-is (not real issues): - cookie-import-browser.ts:869 empty catch on Chrome version fetch is the correct pattern for best-effort diagnostics (per slop-scan philosophy in CLAUDE.md — fire-and-forget failures shouldn't throw). Co-Authored-By: Claude Opus 4.7 (1M context) --- browse/src/cookie-import-browser.ts | 5 +++-- browse/src/server.ts | 3 +-- package.json | 2 +- setup | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/browse/src/cookie-import-browser.ts b/browse/src/cookie-import-browser.ts index aad98e8b..271d3659 100644 --- a/browse/src/cookie-import-browser.ts +++ b/browse/src/cookie-import-browser.ts @@ -493,9 +493,10 @@ async function getWindowsAesKey(browser: BrowserInfo): Promise { let localState: any; try { localState = JSON.parse(fs.readFileSync(localStatePath, 'utf-8')); - } catch { + } catch (err) { + const reason = err instanceof Error ? `: ${err.message}` : ''; throw new CookieImportError( - `Cannot read Local State for ${browser.name} at ${localStatePath}`, + `Cannot read Local State for ${browser.name} at ${localStatePath}${reason}`, 'keychain_error', ); } diff --git a/browse/src/server.ts b/browse/src/server.ts index 3f2feb89..799801df 100644 --- a/browse/src/server.ts +++ b/browse/src/server.ts @@ -17,7 +17,7 @@ import { BrowserManager } from './browser-manager'; import { handleReadCommand } from './read-commands'; import { handleWriteCommand } from './write-commands'; import { handleMetaCommand } from './meta-commands'; -import { handleCookiePickerRoute } from './cookie-picker-routes'; +import { handleCookiePickerRoute, hasActivePicker } from './cookie-picker-routes'; import { sanitizeExtensionUrl } from './sidebar-utils'; import { COMMAND_DESCRIPTIONS, PAGE_CONTENT_COMMANDS, wrapUntrustedContent } from './commands'; import { @@ -789,7 +789,6 @@ if (BROWSE_PARENT_PID > 0) { } // ─── Command Sets (from commands.ts — single source of truth) ─── -import { hasActivePicker } from './cookie-picker-routes'; import { READ_COMMANDS, WRITE_COMMANDS, META_COMMANDS } from './commands'; export { READ_COMMANDS, WRITE_COMMANDS, META_COMMANDS }; diff --git a/package.json b/package.json index bbc1a6d1..68edadf1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gstack", - "version": "0.18.0.1", + "version": "0.18.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/setup b/setup index 94731421..7e30bc39 100755 --- a/setup +++ b/setup @@ -43,7 +43,7 @@ TEAM_MODE=0 NO_TEAM_MODE=0 while [ $# -gt 0 ]; do case "$1" in - --host) [ -z "$2" ] && echo "Missing value for --host (expected claude, codex, kiro, opencode, or auto)" >&2 && exit 1; HOST="$2"; shift 2 ;; + --host) [ -z "$2" ] && echo "Missing value for --host (expected claude, codex, kiro, factory, opencode, openclaw, hermes, gbrain, or auto)" >&2 && exit 1; HOST="$2"; shift 2 ;; --host=*) HOST="${1#--host=}"; shift ;; --local) LOCAL_INSTALL=1; shift ;; --prefix) SKILL_PREFIX=1; SKILL_PREFIX_FLAG=1; shift ;;