Bookworm Admin
ddcb53fe95
cleanup: remove rotation probe
2026-04-21 16:33:25 +08:00
Bookworm Admin
78237d4e83
test: credential rotation probe (2026-04-21)
2026-04-21 16:33:23 +08:00
Bookworm Admin
13337134bc
v3.0.3: Win10 PS7 MSI fallback (when winget absent/outdated)
...
Phase 1 依赖循环增加 MSI 直链兜底:
- winget 失败 or 缺席 -> Invoke-WebRequest 拉 PS 7.4.6 MSI
- 强制 TLS 1.2 (Win10 默认 TLS 1.0 访问 GitHub 会断)
- msiexec /quiet /qn ADD_PATH=1 静默装
- 装后补 PATH (PS7 装完默认不在 PATH 直到重登)
同时将 PowerShell 7 改为 Core=true, winget/MSI 都失败会明确提示用户.
背景: 第二/第三台 Win10 开机一直用 PS 5.1, 原因 pwsh 未装 (winget 静默失败),
bat 路径 3/4 fallback 到 5.1, Unicode/TUI 体验差.
2026-04-21 14:31:32 +08:00
Bookworm Admin
18210ac497
v3.0.2: fix 3-machine login loop (ExecutionPolicy + WM_SETTINGCHANGE broadcast + .claude.json onboarding pre-fill)
...
3 台机实测发现 5 个串联坑, 源头修 3 处:
1. auto-setup.ps1 Phase 1: Set-ExecutionPolicy CurrentUser RemoteSigned
修复: 管理员 PS 下 claude.ps1 因 Restricted 被拦
2. auto-setup.ps1 Phase 4: SendMessageTimeout WM_SETTINGCHANGE 广播
修复: User scope env 不自动同步到已打开 explorer/shell
3. auto-setup.ps1 + Setup.sh Phase 4: 预填 .claude.json
{hasCompletedOnboarding:true, customApiKeyResponses.approved:[<sk-前20字符>]}
修复: Claude Code v2.0.1 登录选择页两个选项都走 anthropic.com OAuth,
国内连不上. 预填标记后首次 claude 直接进对话提示符.
配套 Gitea 'bookworm-boot/启动Bookworm.bat' (a6f9cf7 ) 已清理 &$env:ANTHROPIC_MODEL call-operator 误解析.
2026-04-21 14:22:48 +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
080ff71653
sync: v3.0.1 auto-setup.ps1 + Setup.sh (P0 fixes)
2026-04-21 01:54:42 +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
1aa2c3e6ef
feat: v3.0.0-beta - 切换到 portable-config 脱敏仓库 + Phase 4.5 License 激活
2026-04-18 23:04:40 +08:00
bookworm
1b97332239
fix: v2.3.1 Phase 4 统一调用 change-key.js
...
- Win auto-setup.ps1: 优先管道到 change-key.js, 回退 Test-ApiKey
- Mac Bookworm-Setup.sh: 凭证 printf 管道传 change-key.js, 不再重复 export
- 统一验证逻辑, 避免双实现漂移
2026-04-17 02:25:40 +08:00
bookworm
f3a58e1c6d
feat: v2.3.0 - Phase 4 改为用户直接输入中转站凭证
...
Win: Show-ApiKeyDialog GUI + Test-ApiKey 验证
Mac: 调用 ~/.claude/change-key.js (统一逻辑)
两者都保留旧授权码流程作为向后兼容
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 00:22:17 +08:00
bookworm
58099da6da
fix: Mac 注释版本号 1.5→2.2.4
2026-04-13 23:19:28 +08:00
bookworm
9c595fae86
feat: Mac v2.2.4 - MCP inject + git robustness + credential whitelist
2026-04-13 22:32:02 +08:00
bookworm
b2d5e4aa7b
fix: v2.2.4 - fallback 补齐 supabase (22/22 对齐)
2026-04-13 18:37:05 +08:00
bookworm
4dc5f8e0f8
feat: v2.2.3 - 启动终端优先 Windows Terminal > pwsh > cmd
...
检测 wt.exe (Windows Terminal) 可用则优先使用 (现代UI/全屏/标签页),
其次 pwsh (PowerShell 7), 最后降级 cmd.exe。
解决 Win10 用户只能看到老旧蓝色终端的问题。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-13 17:40:02 +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 Bot
675606b5c4
fix(auto-setup): npm/npx Start-Process 兼容 Windows
...
Windows 上 Start-Process "npm" 会匹配到无扩展名的 Unix shell 脚本
而非 npm.cmd,导致 "%1 不是有效的 Win32 应用程序" 错误。
在 Run-CmdWithUI 函数入口自动将 npm/npx 映射为 npm.cmd/npx.cmd,
一劳永逸覆盖所有调用点。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-12 13:59:54 +09:00
bookworm
9d1cef0331
fix: v2.2.2 - Python/pwsh 降为可选依赖 + quick-start 安装前准备
...
- Python 从核心 deps 移除 (只在 uvx MCP 需要)
- PowerShell 7 降为可选 (系统 PS 5.1 可替代)
- 非核心依赖 winget 不可用时不弹阻断对话框
- quick-start.html 新增"安装前准备"区块 (ExecutionPolicy + 手动装依赖)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 23:24:15 +08:00
bookworm
edee7b777e
fix: v2.2.1 - Top5 鲁棒化修复 (F-09/F-12/F-17/F-19/F-22)
...
F-22: Phase 4 解密成功后调用 Save-SecretsToCache, 下次免授权码
F-12: 解密结果写入 env 前校验白名单 + 长度 < 512
F-19: 冲突检测改逐行匹配, 修复 Out-String 多行正则失效
F-09: boot 仓库 clone 始终弹凭证对话框, 不依赖 $cred 残留
F-17: uvx tool install 参数顺序修正 (包名在前 --python 在后)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:29:04 +08:00
bookworm
50d3ef0377
fix: v2.2.0 - 彻底修复 git pull 失败 + MCP 注入鲁棒化
...
4 个根因全修:
1. Phase 3 凭证缓存: clone 后 git credential approve 写入 Credential Manager
2. Phase 3 冲突清理: pull 前 reset --hard 清除运行时文件冲突
3. Phase 3 认证重试: pull 失败时弹窗重输凭证 + 缓存
4. Phase 5 fallback: inject-mcp.js 不存在时用内嵌 22 MCP 脚本
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 22:00:48 +08:00
bookworm
15449c86d8
feat: v2.1.0 - 同步 22 MCP + 简化 Phase 5 注入逻辑
...
Phase 5 MCP 注入改为直接调用 ~/.claude/inject-mcp.js (从 config 仓库),
移除复杂的 PowerShell JSON 提取+临时脚本生成逻辑。
inject-mcp.js 包含完整 22 个 portable MCP server 配置。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 21:24:50 +08:00
bookworm
aee3cc708b
fix: v2.0.3 - MCP 注入改用临时 JS 文件执行 (避免 -e 参数解析)
...
v2.0.2 的 node -e + -- 参数传递在 PowerShell 下 argv 偏移导致 mcpServers 为空。
改为: 将合并脚本写入 %TEMP%/bw-inject-mcp.js 再 node 执行, 绕过所有参数解析陷阱。
新增 inject-mcp.js 独立脚本供手动执行。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 21:15:53 +08:00
bookworm
6168279f78
fix: v2.0.2 - Node.js 安全合并 .claude.json (保留现有字段)
...
v2.0.1 的 PowerShell 合并会覆盖 .claude.json 现有字段 (installMethod/isLoggedIn),
导致 Claude Code 重新登录后又把 mcpServers 覆盖掉。
改用 Node.js JSON.parse/stringify 做精确字段合并:
- 读取现有 .claude.json 全部字段
- 只注入/更新 mcpServers 键
- 过滤 __comment 键
- 保留 installMethod, isLoggedIn, completedOnboarding 等
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 20:27:59 +08:00
bookworm
f262f1bd21
fix: v2.0.1 - MCP 写入 ~/.claude.json (Claude Code v2.1+ 正确位置)
...
settings.json 中的 mcpServers 在 Claude Code v2.1+ 不再被读取。
Phase 5 现在从渲染后的 settings.json 提取 mcpServers 写入 ~/.claude.json,
支持与用户已有配置合并。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 20:16:43 +08:00
bookworm
7d0e4edd16
fix: v2.0.0 - 修复 MCP 加载 + HOME 路径 JSON 转义
...
P0: mcpServers 已合并到 settings.template.json (settings.local.json 不被加载)
P2: {{HOME}} 替换改用正斜杠, 避免 \U \l 等非法 JSON 转义
新增: diagnose-tooluse.js 中转站工具调用诊断脚本
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 18:01:40 +08:00
bookworm
844419b951
style: 桌面图标更换为翡翠量子螺旋 (quantum emerald)
2026-04-10 13:51:39 +08:00
bookworm
123db247a7
feat(v1.9.0): 启动时自动 pull 配置更新
2026-04-10 12:41:17 +08:00
bookworm
722190404a
fix: 闪屏后启动带 Bookworm 标题的终端窗口
2026-04-10 12:29:54 +08:00
bookworm
38b2a2d022
feat(v1.8.0): 祝贺闪屏动画替代 MsgBox + cmd 黑窗
...
安装成功后的体验:
- 移除: MsgBox "安装成功" 弹窗 + cmd.exe /k claude 黑窗口
- 新增: 品牌闪屏 (深色底 + 蓝紫装饰条 + 绿色大勾)
- 淡入动画 (300ms) → 停留 2.5s → 淡出 (250ms)
- 显示: 版本号 + Skills/Hooks 数量 + "善读者,必善造"
- 底部提示 "双击桌面 Bookworm 图标即可启动"
- 不再自动弹出 cmd 窗口 (用户通过桌面快捷方式启动)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 12:28:51 +08:00
bookworm
23d4577743
fix(v1.7.1): Phase 7 闪退修复 + 7a/7b/7c 防崩
2026-04-10 12:18:22 +08:00
bookworm
7dd72082b7
feat(v1.7.0): 全自动环境加固 — claude alias + OAuth 清理 + 冲突修复
2026-04-10 12:08:16 +08:00
bookworm
c4177c21aa
fix(installer): 授权码跳过改为强制确认 + 前置提示
...
问题: 旧版用户重装时, 缓存过期/格式不兼容 → 弹授权码
→ 用户以为已装过点"取消" → 凭证空 → Claude 不能用
修复:
1. 弹授权码前先 MsgBox 解释"需要授权码才能使用"
2. 点"取消安装"时二次确认"没有授权码将无法使用,确定跳过?"
3. 三级自动检测 (User env → DPAPI cache → 旧明文 cache)
能自动恢复的不弹窗, 都恢复不了才要求输入
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:20:33 +08:00
bookworm
7114f4e7a8
feat: 版本号 v1.6.0, 标题栏/弹窗/EXE 属性统一显示, build.ps1 自动读取
2026-04-10 11:11:13 +08:00
bookworm
d20d9d91a7
feat(installer): 三级凭证自动检测, 重装免输授权码
...
Phase 4 凭证加载优先级:
1. User 环境变量 (上次安装已永久写入) → 直接加载, 完全跳过授权码
2. Registry DPAPI 缓存 → 加载 + 写 User 环境变量
3. 授权码输入 → 解密 + 写 User 环境变量
解决: 用户重装/升级时不再被要求重新输入授权码,
旧凭证自动检测并沿用. "全自动检测+修复"闭环.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 11:07:54 +08:00
bookworm
b58538bbae
fix: 旧版明文缓存兼容 + 自动迁移 DPAPI + 写 User 环境变量
2026-04-10 11:05:25 +08:00
bookworm
105a328120
fix(installer): 凭证写入用户级环境变量 (永久生效)
...
根因: auto-setup.ps1 用 DPAPI 缓存凭证, 但 install.ps1 (bat 调用)
未同步更新, 导致桌面快捷方式启动时凭证无法加载.
修复: Phase 4 解密成功后同时写入 Process + User 级环境变量.
用户在任何终端直接输入 claude 即可启动, 无需通过 bat 启动.
移除 "缓存至 23:59" 选项 (不再需要, User 环境变量本身就是持久的).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 10:54:10 +08:00
bookworm
6275ce55dc
fix(installer): bash PATH 自动修复 — Claude Code 核心工具依赖
...
Git for Windows 默认只把 cmd\ 加入 PATH (含 git.exe),
但 bash.exe 在 bin\ 目录, 导致 Claude Code 的 Bash 工具不可用.
Phase 1 新增: 安装 Git 后自动检测 bash.exe 位置,
将 Git\bin 永久加入用户 PATH. 搜索 4 个常见安装路径.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 10:33:38 +08:00
bookworm
d87b92319f
chore: 清理过期文件 (-2731 行) + AuthGen 历史记录功能
...
删除:
- 5 个旧版 .bat 安装器 (已被 auto-setup.ps1 EXE 替代)
- 4 个旧版 HTML 指南 (已被 guide-unified.html 替代)
- encrypt-secrets.ps1 (已被 gen-authcode.js 替代)
- lessons-learned.md (开发备忘, 非功能文件)
- 6 个未提交测试 .enc + 备份文件 (本地清理)
新增:
- AuthGen GUI: 生成成功后自动追加 authcode-history.log
- AuthGen GUI: "推送到 Gitea" 按钮 (git add + commit + push 一键完成)
- AuthGen GUI: $args→$nodeArgs (PowerShell 保留变量冲突)
- AuthGen GUI: UTF-8 Process 编码 (修复 PS2EXE 中文乱码)
- .gitignore: +authcode-history.log +Bookworm-AuthGen.exe
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 03:20:39 +08:00
bookworm
c2e3f0e65f
fix(admin): AuthGen $y 类型修复 — [int]$y 防止 PS2EXE Object[] 降级
...
PS2EXE 编译后 $y 被隐式当作 Object[], 导致 $y - 2 算术运算失败:
"Method invocation failed because [System.Object[]] does not contain
a method named 'op_Subtraction'"
修复: 强类型声明 [int]$y = 72
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 02:15:10 +08:00
bookworm
dba9d19129
fix(admin): AuthGen EXE 在 dist/ 子目录运行时找不到 gen-authcode.js
...
ScriptDir 指向 EXE 所在目录 (dist/), 但 gen-authcode.js 和
secrets.txt 在父目录。添加向上一级查找的 fallback 逻辑。
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 02:10:15 +08:00
bookworm
353bbffada
feat(admin): GUI 授权码生成器 Bookworm-AuthGen.exe
...
新增管理员可视化工具, 替代 CLI gen-authcode.js:
- WinForms GUI: 用户名/Sub-Key/有效期 + 一键生成 + 一键复制
- 品牌视觉: 白底 + #5865F2 蓝紫 + 深色标题栏 + 书虫学者图标
- PS2EXE -NoConsole -NoOutput (92 KB)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 01:59:27 +08:00
bookworm
385d3de57f
security(installer): 9 BLOCKER 修复 — 三路审计验收
...
基于 code-reviewer + red-team-attacker + red-team-logic 三路并行审计:
B1: 日志脱敏 — Run-CmdWithUI 的 Bw-Log 对 URL 做 ://***@ 替换
B2: DPAPI 加密注册表 — Save/Get-CachedSecrets 用 ProtectedData.Protect/Unprotect
B3: credential.helper store → manager (Windows Credential Manager, DPAPI)
B4: 单实例 Mutex — Global\BookwormPortableSetup, 重复启动弹提示退出
B5: URL-encode git 凭证 — EscapeDataString 处理 @/#/% 等特殊字符
B6: 移除 OpenSSL fallback — BWENC1 格式与 openssl enc 不兼容, Node.js 为硬性要求
B7: validAttempts++ 后移 — 文件不存在不消耗尝试次数, 避免用户误锁
B8: ErrorActionPreference try/finally — 防止 uv 安装异常后全局静默吞错
B9: Registry 加载白名单 — CacheAllowedKeys 防止 PATH/COMSPEC 注入
V-04: Get-Random → GetTempFileName (原子创建+加密随机, 防并发碰撞)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 01:17:23 +08:00
bookworm
8a6611d96e
ux(installer): 双专家审计修复 — P0 取消按钮 + P1 表单优化 + 品牌视觉
...
基于 UX Auditor + CTO Reviewer 两路并行审计报告的交叉修复:
P0 — 进度窗口逃生通道 (UX F1):
- ControlBox=$true, X 按钮触发 "取消安装?" 确认
- $BWInstallDone 标记: Phase 7 完成后 X 不再弹确认
P1 — 授权码 "跳过" 按钮误导 (UX F6):
- "跳过" → "取消安装", 明确传达后果
P1 — Gitea 空密码静默通过 (UX F10):
- 添加 lblError 红字验证: "用户名和密码不能为空"
- btnOK 改为手动 Click 事件验证, 不再自动 DialogResult
P1 — Gitea 对话框缺少上下文 (UX F11):
- 新增说明: "用于下载 Bookworm 配置文件,由管理员提供"
P2 — 内部术语暴露 (UX F13):
- "crypto-helper.js 缺失" → "Bookworm 启动工具包下载失败" + 3 点排查提示
P2 — 品牌视觉统一 (UX Visual):
- 进度窗口: 白底 + Bookworm 蓝紫(#5865F2) Phase 标签 + 右下角计时器
- TopMost=$false (不遮挡其他窗口)
- ProgressBar Style=Continuous (平滑)
- 全局计时器 $BWStartTime + $BWElapsedLabel "Nm Ns" 实时显示
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 01:03:36 +08:00
bookworm
7d60911f65
perf(installer): 消除全部 UI 冻结 + Write-Host 清零
...
## P0: 子进程 UI 阻塞 → 非阻塞轮询
- 新增 Wait-ProcessWithUI: 替代所有 WaitForExit(), 每 200ms
泵 DoEvents(), 进度窗口保持响应, 显示等待计时
- 新增 Run-CmdWithUI: 替代 & cmd 2>&1 | ForEach-Object 模式,
所有子进程输出走临时文件→日志, 不阻塞 UI
## P1: Phase 3 git clone/pull 无超时 → 带超时 + UI 泵
- 9 处 git 调用全部改为 Run-CmdWithUI (120s/180s 超时)
- 消除 Push-Location/Pop-Location, 改用 git -C <dir>
## P1: Phase 1 winget/npm 阻塞 → 带超时 + UI 泵
- winget install: 5 分钟超时 + 进度状态显示
- npm i -g: 2-3 分钟超时 + 进度状态显示
- Claude Code npm install: 3 分钟超时
## P2: Write-Host 归零
- 27 处非注释 Write-Host 全部替换为 Bw-Log + Update-Progress-SubStatus
- EXE 在 PS2EXE -NoOutput 下不再有任何静默丢失的输出
验证: 7/7 补丁字符串确认编译; Write-Host 仅剩 1 处 (注释内)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 00:54:28 +08:00
bookworm
1e8a7250c2
fix(build): EXE 内嵌图标改用 bookworm-desktop.ico (B 圆)
...
旧 bookworm.ico (galaxy 神经螺旋) 在 Explorer 32x32 显示时
中心亮点变成一个像素, 整体看起来像深色空白方块, 用户体感"没图标".
新 bookworm-desktop.ico (蓝紫渐变 B 圆) 在 16/32/48px 都保持
高对比度和强辨识, 与桌面快捷方式图标统一.
build.ps1 优先用 desktop.ico, 不存在时回退 bookworm.ico.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:52:18 +08:00
bookworm
17c600fe93
feat(installer): GUI 进度窗 + uv 三层 fallback + 桌面专用图标 + 静默化
...
修复 v1.5.1 用户实测发现的两个体验问题:
1. **uv 安装失败 + RemoteException 弹窗** (auto-setup.ps1)
- 旧逻辑: python -m pip install uv (网络/权限/$ErrorActionPreference=Stop 易触发)
- 新逻辑: 三层 fallback (winget → Astral 官方脚本 → pip), 全程 SilentlyContinue
- 失败仅写入 $TEMP/bookworm-uv-install.log, 不阻断不弹窗 (uv 是可选依赖)
2. **PS2EXE -NoConsole 把 Log-X 弹窗化** (build.ps1)
- 加 -NoOutput + -NoError, 所有 Write-Host 静默吞掉
- 用户不再被 70+ 个 [!] 弹窗轰炸
3. **静默后无进度反馈 → GUI 进度窗口** (auto-setup.ps1)
- 新增 Show-ProgressForm/Update-Progress/Update-Progress-SubStatus/Close-ProgressForm
- 顶部常驻 Form: 标题 + Phase 标签 + 当前状态 + 进度条 + 日志路径
- 所有 Log-X 改写日志文件 ($TEMP/bookworm-setup-{ts}.log) + 更新进度窗口
4. **桌面专用图标** (auto-setup.ps1 + bookworm-desktop.ico)
- 从 og-image.png 自动检测蓝紫渐变 B 圆 → 圆形 alpha mask → 7 尺寸 ICO (86 KB)
- New-DesktopShortcuts 增加 IconLocation, 桌面快捷方式显示 Bookworm 主图标
- 主图比 favicon 神经螺旋更突出, 48px 也清晰可辨
5. **Phase 7 安装完成 banner**: Write-Host → Show-MsgBox
6. **Claude Code 启动**: 主进程启动 → Start-Process cmd /k claude (新窗口)
构建验证: 7/7 补丁字符串 (Show-ProgressForm/BWLogFile/winget/astral/
bookworm-desktop.ico/IconLocation 等) 经 EXE 字符串扫描确认编译进 build artifact.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 20:02:53 +08:00
bookworm
3cb6f1dac1
fix(installer): 修复 EXE 安装器关键缺陷 + 多用户加密文件首发
...
根因 (auto-setup.ps1):
1. $BootUrl 定义但未使用 — bookworm-boot 仓库从未被克隆
2. $ScriptDir 在 PS2EXE 打包后回退到 $PWD (Downloads 目录)
3. Phase 4 在 EXE 同目录找 crypto-helper.js / secrets-*.enc → 必然失败
4. Phase 6 桌面快捷方式同样指向 $ScriptDir → 路径错误
修复:
- $ScriptDir 改用 Process.MainModule + PSScriptRoot 三级回退 (PS2EXE 兼容)
- 新增 $BootDir = $ScriptDir/bookworm-boot
- Phase 3 增加克隆/更新 bookworm-boot 仓库逻辑 (失败 fail-fast)
- Phase 4 crypto-helper.js / secrets-*.enc 路径统一指向 $BootDir
- Phase 6 快捷方式 .bat 路径同样改用 $BootDir
附加:
- 新增多用户加密文件 secrets-dfff6f13.enc (用户: 茶师兄, 30 天有效期)
- .gitignore 新增 users.txt / .tmp-authcodes.json / auto-setup.ps1.bak-* 防泄露
- 删除旧版 secrets.enc (单用户共享模式废弃)
测试:
- gen-authcode.js → encrypt → crypto-helper.js decrypt 闭环验证通过
- PS2EXE build artifact (215 KB) 经字符串扫描确认 5 处补丁已编译
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 18:28:12 +08:00
bookworm
a2a7ff1edb
feat: EXE 图标支持 (bookworm.ico 16/32/48/256px + rcedit 注入)
2026-04-07 01:08:41 +08:00
bookworm
ee8fa10fdc
fix: build.ps1 pkg PATH 修复 + gen-authcode pkg路径兼容
2026-04-07 00:20:02 +08:00
bookworm
b06f6cc582
feat: 打包脚本 + pkg 路径兼容修复
...
build.ps1:
- auto-setup.ps1 → dist/Bookworm-Setup.exe (PS2EXE, 无控制台窗口)
- gen-authcode.js → dist/gen-authcode.exe (pkg, 内嵌 Node.js)
- 自动安装依赖 (PS2EXE / pkg),输出大小提示
gen-authcode.js:
- SCRIPT_DIR 兼容 pkg 打包环境 (process.pkg → process.execPath)
.gitignore:
- 新增 dist/ (EXE 输出目录,不提交二进制)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-07 00:01:46 +08:00