bookworm
|
7c8540b542
|
feat(v3.1.1): E2E 护栏 + UX 4 项闭合 + 并发安全
闭合 v3.1.0 后续 4 个 HIGH 局限:
[L8] smoke 覆盖不到 .lnk 行为 → 引入 tools/test-launcher-e2e.ps1
4 测试套: PARSE / wrapper 6 特性 / .lnk Args 6 契约 / profile 双注入契约
集成到 build.ps1 后置, 失败 exit 1 拒绝发布
闭合 v3.0.10 -or 类 PSParser 漏网 bug 风险
[L5] Phase 1 总结弹窗仅有动作时弹 → 始终弹
老用户全就绪重跑 EXE 跳过总结不知是否完成
v3.1.1 移除条件, 永远显示 (零新装也弹 OK 态)
[L6] 更新.bat 完成无反馈 → GUI YesNo 询问立即启动
PS MessageBox: '同步完成. 是否立即启动 Claude?' Yes 触发 Start-Process 桌面 .lnk
[L7] profile 注入并发损坏 → FileShare.None 排他锁 + 5 次重试
WriteAllText 隐式 FileShare.Read 改为显式 FileStream
IOException catch sleep 50ms 重试, 5 次都失败 throw 触发 v3.1.0 显式弹窗
8/12 局限闭合 (剩余 L9-L12 计划 v3.1.2)
|
2026-04-25 23:16:08 +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 |
|