DESKTOP-UPGRADE.md 2.8 KB

Bot 优化分支安装包升级修复

原测试包 0.4.16 / c1c17c9 复用了正式版本号。已发布的桌面包为 0.4.16 / 9241531,来自不同的 Git 构建历史,二者都不包含对方的提交。 syncDecision 因此返回 unknown,启动页显示“App 与 Web 的构建先后关系无法确定”。 之前只验证全新安装和保留较新 Web,没有覆盖这个历史正式包。

本次将分支版本改为 0.4.17-bot-latency.1,同步修改 release.json、 package.json 和锁文件。版本比较、防降级、事务备份及用户数据处理逻辑保持原实现。 修复提交为 49971c62b324d5ee562b99da42ec79af60133489,产物从干净提交构建。 这里只生成开发分支安装包,没有创建发布标签、发布版本或合并主线。

验证结果

  • 原测试包对实际旧正式包返回 unknown,新增历史包验收入口能复现失败。
  • 新包对旧正式包返回 upgrade;旧 App 对新服务返回 newer,保留新服务。
  • 未来正式版 0.4.17 对本测试版返回 upgrade。
  • tests/server/desktopSync.test.ts 的 12 项事务及版本回归测试通过。
  • 成品测试使用独立临时数据目录和 LaunchAgent,先安装并启动旧正式包的完整服务, 再启动新 App;确认服务切换到新构建且保留旧服务设置。退出后服务继续运行、 保留较新服务、停止后重启及启动错误重试均通过,2/2 项成品测试成功。
  • App 严格签名校验、运行时文件清单校验、DMG 校验通过。arm64,Apple Development 签名,未公证。未操作用户已有服务或安装到 /Applications。

原始输出与校验值保存在 results/desktop-upgrade。

复现命令

在本 worktree 执行以下命令。DESKTOP_TEST_PREVIOUS_RUNTIME 指向旧安装包内完整且 校验通过的 Contents/Resources/runtime/web-service;测试不会修改该目录。

NODE_OPTIONS=--no-experimental-webstorage npx vitest run tests/server/desktopSync.test.ts
npm run desktop:pack -- --config.directories.output=desktop-release/bot-latency-49971c6-20260913
NODE_OPTIONS=--no-experimental-webstorage \
  DESKTOP_TEST_EXECUTABLE='/Users/samien/git/bot-message-latency/yaoyao/desktop-release/bot-latency-49971c6-20260913/mac-arm64/夭夭.app/Contents/MacOS/夭夭' \
  DESKTOP_TEST_PREVIOUS_RUNTIME='/Users/samien/git/yaoyao/desktop-release/v0.4.16/mac-arm64/夭夭.app/Contents/Resources/runtime/web-service' \
  node --test --test-concurrency=1 desktop/service-sync.test.mjs desktop/startup-feedback.test.mjs

省略 DESKTOP_TEST_PREVIOUS_RUNTIME 时继续验证全新安装。版本含预发布后缀时, 成品测试先提取基础版本再生成较新服务夹具,避免生成含 NaN 的版本号。