问题描述 / What happened
启动 Cindy 桌面端时,客户端会在 Splash 阶段检查并下载更新补丁。补丁下载完成后,客户端会自动重启。
但这次重启发生时,补丁实际上还没有被应用;客户端重启后仍然提示用户“有更新可以应用”,需要再次手动操作。
实际行为:
- 启动桌面端。
- 客户端检查到新版本并下载更新补丁。
- 补丁下载完成后,客户端自动重启。
- 重启后,更新仍显示为可应用状态。
期望行为:
- 启动时可以自动检查并下载补丁。
- 补丁下载完成后继续进入客户端,不应仅因为下载完成而自动重启。
- 用户点击“应用更新”后,再退出客户端并由更新器替换安装包。
- 应用完成后重新启动进入新版本,且不再重复提示同一个更新。
环境 / Environment
- Cindy 版本或 commit / version or commit: 0.1.31
- 平台与版本 / platform & OS version: macOS 26.4 arm64
- 安装方式 / install method: macOS 正式打包版本
复现步骤 / Steps to reproduce
- 使用一个低于 CDN manifest 最新版本的正式版 Cindy。
- 启动客户端。
- 等待启动更新流程完成补丁下载。
- 观察客户端是否在用户确认前自动重启。
- 重启后观察更新提示状态。
日志与截图 / Logs & screenshots
暂无附件。
源码定位
当前实现已经具备“只下载并暂存补丁”的状态:
apps/desktop/src/main/updateService.ts 的 doCheckForUpdate() 下载并校验 ZIP 后,将补丁写入 updates/patch-info.json,并把状态设置为 ready。
- 同一文件的
buildStartupReadyReply() 在启动阶段发现补丁 ready 后,直接返回 action: 'relaunch'。
apps/desktop/src/renderer/contexts/EnvCheckContext.tsx 收到 action: 'relaunch' 后进入 update_done。
apps/desktop/src/renderer/hooks/useSplash.ts 随后自动调用 autoRelaunchToUpdate(),触发客户端重启和更新器执行。
因此,当前重启不是 Electron 下载补丁所必需的步骤,而是启动更新流程把“下载完成”和“应用更新”合并后的结果。
建议验收标准
问题描述 / What happened
启动 Cindy 桌面端时,客户端会在 Splash 阶段检查并下载更新补丁。补丁下载完成后,客户端会自动重启。
但这次重启发生时,补丁实际上还没有被应用;客户端重启后仍然提示用户“有更新可以应用”,需要再次手动操作。
实际行为:
期望行为:
环境 / Environment
复现步骤 / Steps to reproduce
日志与截图 / Logs & screenshots
暂无附件。
源码定位
当前实现已经具备“只下载并暂存补丁”的状态:
apps/desktop/src/main/updateService.ts的doCheckForUpdate()下载并校验 ZIP 后,将补丁写入updates/patch-info.json,并把状态设置为ready。buildStartupReadyReply()在启动阶段发现补丁 ready 后,直接返回action: 'relaunch'。apps/desktop/src/renderer/contexts/EnvCheckContext.tsx收到action: 'relaunch'后进入update_done。apps/desktop/src/renderer/hooks/useSplash.ts随后自动调用autoRelaunchToUpdate(),触发客户端重启和更新器执行。因此,当前重启不是 Electron 下载补丁所必需的步骤,而是启动更新流程把“下载完成”和“应用更新”合并后的结果。
建议验收标准
autoRelaunchToUpdate()。