From 656460e13e6f3900da61b13055cb49b87d97bc28 Mon Sep 17 00:00:00 2001 From: bookworm-admin Date: Tue, 21 Apr 2026 19:05:01 +0800 Subject: [PATCH] Setup.sh v3.0.3: onboarding pre-fill + header bump --- Bookworm-Setup.sh | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/Bookworm-Setup.sh b/Bookworm-Setup.sh index 7fd8ea3..fdf003c 100644 --- a/Bookworm-Setup.sh +++ b/Bookworm-Setup.sh @@ -1,7 +1,7 @@ #!/bin/bash # ============================================================ # Bookworm Portable - macOS Setup (从 boot 仓库内运行) -# Version: 2.2.4 +# Version: 3.0.3 # # 用法: cd ~/bookworm-boot && bash Bookworm-Setup.sh # @@ -429,11 +429,6 @@ if [ -z "$ANTHROPIC_API_KEY" ]; then rm -f "$HOME/.zshrc.bak" "$HOME/.bashrc.bak" 2>/dev/null || true export ANTHROPIC_API_KEY="$SK_KEY" export ANTHROPIC_BASE_URL="https://bww.letcareme.com" - # v3.0.2: 预填 ~/.claude.json 跳过 Claude Code 2.0.1 登录选择页 (两选项都走 anthropic.com OAuth, 国内不通) - CLAUDE_JSON="$HOME/.claude.json" - KEY_PREFIX="${SK_KEY:0:20}" - printf '{"hasCompletedOnboarding":true,"hasSeenWelcome":true,"bypassPermissionsModeAccepted":true,"customApiKeyResponses":{"approved":["%s"],"rejected":[]},"numStartups":5,"projects":{}}' "$KEY_PREFIX" > "$CLAUDE_JSON" 2>/dev/null && ok "Claude Code onboarding 已预填" - chmod 600 "$CLAUDE_JSON" 2>/dev/null || true # 存 Keychain 本日免密 security add-generic-password -s "$KEYCHAIN_SERVICE" -a "$KEYCHAIN_ACCOUNT" -w "ANTHROPIC_API_KEY=$SK_KEY ANTHROPIC_BASE_URL=https://bww.letcareme.com @@ -527,6 +522,30 @@ else fi fi +# ─── v3.0.2: 预填 ~/.claude.json 跳过 Claude Code 2.0.1 的登录选择页 ─── +# Win auto-setup.ps1:1361-1369 等价逻辑: 两选项都走 anthropic.com OAuth, 国内不通 +# 预填 hasCompletedOnboarding + customApiKeyResponses.approved 直接进主界面 +if [ -n "$ANTHROPIC_API_KEY" ] && command -v node &>/dev/null; then + BW_KEY_PREFIX="${ANTHROPIC_API_KEY:0:20}" node -e ' + const fs = require("fs"), p = require("path"); + const H = process.env.HOME || process.env.USERPROFILE; + const f = p.join(H, ".claude.json"); + const prefix = process.env.BW_KEY_PREFIX || ""; + let d = {}; + try { d = JSON.parse(fs.readFileSync(f, "utf8")); } catch (e) {} + d.hasCompletedOnboarding = true; + d.hasSeenWelcome = true; + d.bypassPermissionsModeAccepted = true; + d.customApiKeyResponses = d.customApiKeyResponses || { approved: [], rejected: [] }; + if (prefix && !d.customApiKeyResponses.approved.includes(prefix)) { + d.customApiKeyResponses.approved.push(prefix); + } + if (d.numStartups === undefined) d.numStartups = 5; + if (!d.projects) d.projects = {}; + fs.writeFileSync(f, JSON.stringify(d, null, 2)); + ' 2>/dev/null && success "Claude Code onboarding 已预填 (跳过 2.0.1 登录选择页)" || warn ".claude.json onboarding 预填失败 (首次启动可能需手工过登录画面)" +fi + # ── MCP 注入到 ~/.claude.json (Claude Code v2.1+ 正确位置) ── INJECT_SCRIPT="$CLAUDE_DIR/inject-mcp.js" MCP_INJECTED=false