bookworm
|
aa662d8744
|
feat(v3.2.0): Phase 8 OTA 自动更新基础设施
- auto-setup.ps1 v3.2.0: Phase 8 pubkey/DPAPI凭证/bw-ota.ps1 部署
- bw-ota.ps1: OTA 升级脚本 (Ed25519签名验证+SHA256+原子替换+DryRun)
- 启动Bookworm.bat: 启动时 fail-open 调用 OTA 检查
- Bookworm-Setup.exe: 重建含以上变更
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
2026-04-27 18:22:37 +08:00 |
|
bookworm
|
1421338da3
|
feat(v3.0.11): 架构重构 — 启动链路 7 跳 → 1 跳直链
用户报障驱动 (v3.0.3-3.0.10 共 9 轮迭代后接受架构原罪).
旧架构: .lnk → bat → wt → pwsh → Base64 → DPAPI → claude (7 跳)
新架构: .lnk → pwsh → claude.ps1 (1 跳, 凭证由 profile 异步加载)
ADR-001 桌面 .lnk 直调 pwsh + claude.ps1 绝对路径
- 安装时 Get-Command claude / npm config get prefix 定位 claude.ps1
- bake 进 .lnk Args, 运行时不依赖任何 PATH 重载
- 自验证: 创建后回读 .lnk 确认 Target/Args 完整, 失败立即删除拒绝交付
ADR-002 DPAPI 凭证加载迁移到 PowerShell profile sentinel
- BW_CRED_START..END 块写入 ~/Documents/PowerShell/profile.ps1
- pwsh 启动自动 source, 与启动链路彻底解耦
- profile 编辑用 String.Replace 字面替换 (避开 -replace $ backreference)
ADR-003 启动 / 更新功能拆分
- 启动Bookworm.lnk → 仅启动 (1 跳)
- 更新Bookworm.lnk → 仅 git pull
- 更新并启动Bookworm.bat → 重命名为 更新Bookworm.bat (仅同步)
- tools/gen-launcher-bats.ps1 归档 (新架构不需要 Base64 生成器)
8 个失败模式中 7 个被架构性消除:
✅ F1 wt ; 切 tab (无 wt)
✅ F2 cmd 转义 (无 cmd 启动路径)
✅ F3 wt -d 引号 (无 wt -d)
✅ F4 Base64 解码语义错 (无 Base64)
✅ F5 PATH 时序 (绝对路径不依赖 PATH)
✅ F6 claude shim (直调 .ps1)
✅ F8 wt 自身 issue (无 wt)
⚠️ F7 DPAPI 跨用户 (设计限制, 跨用户需重激活)
EXE 220672 → 227840 bytes (+7168, ADR-002 profile 注入函数)
|
2026-04-25 18:19:07 +08:00 |
|
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 |
|