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
|
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 |
|