Commit Graph

12 Commits

Author SHA1 Message Date
bookworm
609e82bac0 hotfix(v3.0.10): Base64 '-or' 括号 bug + dry-run 实跑验证护栏
v3.0.9 Base64 脚本启动即报:
  Test-Path: A parameter cannot be found that matches parameter name 'or'.
  claude.exe not found

根因: 'Test-Path (Join-Path $p claude.ps1) -or (Test-Path ...)' 中 -or
被当成 Test-Path 的命名参数. PSParser 静态检查看合法, 运行时炸.

修复:
  F1: 括号修正 — $hasClaude 抽为独立变量, 三元 -or 每项带外括号
  F2: gen-launcher-bats.ps1 强制加 dry-run 实跑验证护栏
      解码后的 Base64 脚本必须被 pwsh -File 实跑到底部 __BW_DRYRUN_OK__
      才算通过. 检查 ErrorRecord / ParameterBindingException / 未知命令.
      任何未来 Base64 改动都被此验证拦截.

验证层级教训:
  PSParser = 抓语法   / 抓不到参数绑定错
  dry-run  = 抓运行时 / 抓不到业务逻辑
  smoke    = 抓业务   / 需要前两层通过

EXE 220160 → 220672 bytes (+512)
2026-04-24 22:48:08 +08:00
bookworm
a3b4ff3a78 fix(v3.0.9): Claude 装完 npm prefix 固化 + 三层 PATH + 快捷方式自验证
用户反馈 (核心): '不要客户端修修补补, EXE 必须一次对'

诊断: v3.0.8 Phase 1 全 OK, 但桌面快捷方式 claude.exe not found
  user npm config get prefix = C:\Users\Administrator\AppData\Roaming\npm
  但 Get-Command claude 在 PS 7 为空 → User PATH 没含这个目录
  Node.js MSI 写 User PATH 时机/行为被企业镜像/防病毒/组策略干扰

三层根治:

F1: auto-setup.ps1 装完 Claude Code 后立即 `npm config get prefix` 查真实路径,
    强制写入 User PATH (永久生效). 不依赖 npm 自己的 PATH 注入时机.
F2: gen-launcher-bats Base64 脚本加 3 层 PATH 修复:
    层 1 Machine+User env PATH / 层 2 npm config get prefix 动态查询 /
    层 3 硬编码候选 (%APPDATA%\npm / Program Files\nodejs / LOCALAPPDATA\npm)
F3: auto-setup.ps1:2256 创建桌面快捷方式前 Test-Cmd claude 自验证,
    失败则拒绝创建 + 弹明确错误, 不再静默产出坏快捷方式

EXE 217088 → 220160 bytes (+3072)
Base64 3544 → 5880 chars
产品原则: 点快捷方式要么成功要么给清晰诊断, 不再给 'claude not found' 无头案
2026-04-24 22:39:17 +08:00
bookworm
8f6c53ec99 fix(v3.0.6): 启动器四连击 bug 根治 + 分发版阈值调整
真实用户报障驱动, 4 个 P0 闭环:

B1: wt.exe ';' 切 tab 误报 → -EncodedCommand Base64-UTF-16LE
B2: -d '%~dp0' 尾 \ 配 " 转义引号 → -d '%CD%' 无尾反斜杠 (cd /d 已切入)
B3: 子 pwsh 继承老 PATH 致 claude.exe not found → Base64 首行强制重载
    $env:Path = Machine + ';' + User, 找不到 claude 还附带 PATH 诊断
B4: install.ps1 [8/9] Skills>50 Hooks>10 阈值误报脱敏分发版残缺
    → Skills>=10 Hooks>=3 匹配 bookworm-portable-config.git 实际规模

新增工具 tools/gen-launcher-bats.ps1: 单一明文源 → Base64 → 两 bat 自动同步,
含字符集 + 长度 + round-trip PARSE 三重 health check, 以后改启动逻辑
只需改 $plainScript 一处.

向后兼容: DPAPI 凭证语义 round-trip 不变, 老快捷方式继续可用,
Installer banner v1.5 → v1.6, BWVersion 3.0.5 → 3.0.6.
2026-04-24 20:47:16 +08:00
Bookworm Admin
a6f9cf7157 fix(launcher): strip buggy & $env:ANTHROPIC_MODEL cmd — caused 'term not recognized' on pwsh call-operator parse
ANTHROPIC_MODEL 已由 line 6 'set ANTHROPIC_MODEL=' 传入子 pwsh 作为 process env,
无需在 -Command 串内再 set。原写法 '& $env:ANTHROPIC_MODEL=...' 被 pwsh 当
call 运算符去执行 'claude-opus-4-7' 导致启动失败。

嵌套双引号也一并清理。
2026-04-21 12:28:45 +08:00
Bookworm
9668a58480 fix(launch): use claude.ps1 direct (bypass cmd.exe shim) + ANTHROPIC_MODEL env 2026-04-21 01:22:45 +08:00
Bookworm
4dfff1b062 fix(launch): default ANTHROPIC_MODEL=claude-opus-4-7 (bypass Claude Code 2.0.x hardcoded 4-5 → 中转站 503) 2026-04-21 00:43:16 +08:00
Bookworm Bot
9e0d22513f fix(launcher): Windows Terminal优先 + pwsh7优先 + 修复/dev/null→nul
- 终端优先级: wt.exe > conhost (解决渲染问题和全屏闪退)
- Shell优先级: pwsh7 > powershell 5.1 (更好的TUI支持)
- 修复Unix路径错误: /dev/null → nul (Windows批处理兼容)
- 4条启动路径: wt+pwsh7 / wt+ps5.1 / conhost+pwsh7 / fallback

解决问题:
1. 终端窗不好看 → Windows Terminal优先
2. 全屏闪退 → wt.exe原生支持缩放
3. pwsh7优先 → where pwsh检测 + 4级回退
2026-04-12 15:05:22 +09:00
bookworm
123db247a7 feat(v1.9.0): 启动时自动 pull 配置更新 2026-04-10 12:41:17 +08:00
bookworm
d11b36f815 fix: DPAPI凭证加密 + pwsh7路径凭证注入 + PS5.1双调用优化 + assets追踪
- install.ps1: Save-SecretsToCache 改用真正 DPAPI 加密 (System.Security.ProtectedData)
  增加 GEMINI_API_KEY 到缓存键列表
- install.ps1: Get-CachedSecrets DPAPI 解密 + 旧版明文缓存向后兼容
- 启动Bookworm.bat: pwsh7路径启动 claude 前从注册表加载 DPAPI 加密凭证
- 更新并启动Bookworm.bat: 同上 + PS5.1 回退路径从2次调用精简为1次
- assets/: 纳入版本管理 (favicon-32.png / logo-200x200.png / logo-dark.svg)
- HTML: 同步 download/guide-mac/guide-unified/guide 页面更新

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 21:49:50 +08:00
bookworm
2d4dea242b fix: 去掉 Start-Process, bat 负责窗口/ps1 负责执行
根因: Start-Process pwsh 开新窗口但 claude 找不到 PATH,
同时 OneClick.bat 重复调用 install.ps1 导致双启动。

- install.ps1: 新增 -SkipLaunch 参数, step9 改为同步 & claude
- auto-setup.ps1: Phase7 去掉 Start-Process, 同步 & claude
- OneClick.bat: step7 加 -SkipLaunch, 最终块 start pwsh -Command claude
- 启动/更新.bat: 直接 start pwsh -Command claude (不经 install.ps1)

架构: bat 决定窗口类型, ps1 只管同步执行

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 20:34:00 +08:00
bookworm
dee7742a12 feat: pwsh7默认终端 + Phase1依赖增强 + Phase6 MCP预安装
- Phase 1: +PowerShell 7/Python 3.12/uv, pwsh升为核心依赖
- Phase 4: 修复缓存命中后仍弹密码框的逻辑缺陷
- Phase 5: 新增 {{PWSH_PATH}} 占位符渲染
- Phase 6: npm cache add + uv tool install 预缓存(超时保护)
- Phase 7: Start-Process pwsh 独立窗口启动Claude
- install.ps1: Render函数添加 {{PWSH_PATH}} + Start-Process启动
- OneClick.bat: 新增步骤4/8安装PowerShell 7
- 所有.bat: start pwsh新窗口模式 + CRLF修复

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 19:48:48 +08:00
bookworm
5e0ff18aa1 feat: Bookworm Portable v1.5 — 8 fixes (P0 NDA + P1 banners + P2 perf)
- P1: Banner v1.3→v1.5, Hooks 29→34
- P1: 卸载脚本补删 更新Bookworm.lnk
- P1: git stash pop 安全检查
- P2: Playwright 检测改用 npm list
- P2: 代理端口扫描 500ms async 超时

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-05 23:34:27 +08:00