docs: align update design with non-blocking two-phase model

Launcher only applies a staged update + launches (no download at startup);
downloading happens in the app's settings dialog. docs/10 §3/§6/§8/§12/§16/§18
rewritten for the two-phase flow (installer.download_and_stage / apply_staged);
docs/07 §4.3/§4.4 cover the gear dot + "检查并更新" button; tasks 17.21.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 12:03:23 +08:00
co-authored by Claude Opus 4.8
parent 5a1a004daf
commit dc2cd123fc
3 changed files with 92 additions and 64 deletions
+7 -6
View File
@@ -76,24 +76,25 @@
- `配置` 按钮**不是编号页签**,不参与 `1/2/3` 顺序;样式低调(图标 + 文字,悬停出强调色)。
- 点击打开**设置对话框**(`QDialog`,见 4.4),不进入新的内容页(页签栏当前不切换内容面板)。
- 之所以现在提供集中设置入口:在线更新需要配置更新地址与凭据,属于「确有集中设置需求」的情形(区别于之前移除的点了无反应的占位按钮)。
- **有新版本角标**:启动时后台检查到新版,在 `配置` 按钮上点亮红点(文字加「●」、变红加粗),提示用户去设置里更新。**不弹阻塞横幅**(详见 `docs/10` §12)。
### 4.4 设置对话框
集中编辑在线更新相关配置,对应 `app_config.json` 的 `update_source` / `update_user` / `update_pass`(见 `docs/02-prd.md`、`docs/10-lan-update.md`)。
集中编辑在线更新配置并触发更新,对应 `app_config.json` 的 `update_source` / `update_user` / `update_pass`(见 `docs/02-prd.md`、`docs/10-lan-update.md`)。
字段与控件:
- `更新地址`:`update_source` 的 HTTP(S) 地址。
- `账号` / `密码`:HTTP Basic Auth 凭据;密码框默认掩码,提供「显示」切换。
- `测试连接`:点击用 `services.update_service.check_for_update` 实拉一次清单,反馈「已是最新 / 发现新版本 vX.Y.Z / 连接失败」,便于保存前验证。
- `当前版本`:只读显示 `APP_VERSION`。
- `测试连接`:用 `update_service.load_manifest` 实拉一次清单,反馈「已是最新 / 发现新版本 vX.Y.Z / 连接失败」,便于保存前验证。
- `当前版本` + 更新状态:只读显示 `APP_VERSION`,并提示是否有新版。
- `检查并更新`:点击在后台线程 `check_for_update` → `installer.download_and_stage` 下载并暂存到 `staging\app.new`,完成提示「已下载 vX,下次启动生效」。**下载期间主界面照常可用,不阻塞;切换由启动器下次启动完成**(运行中 `app\` 无法替换,见 `docs/10` §3/§8)。
- 一行小字安全提示:建议使用**只读账号**、生产环境走 HTTPS(凭据为明文存储)。
行为与架构:
- 对话框是**纯 UI**:打开时由 `main_window` 注入当前配置值;保存时把新值发回主窗口,由主窗口集中 `save_config`,UI 控件不直接读写配置文件(遵守 `docs/05` 4.12 与 `docs/04` 第 6 节)。
- 保存后主窗口重新触发一次在线更新检查(横幅按新配置刷新)。配置写入 `~/.cmbot/config/app_config.json`,启动器下次启动自然读到,两端一致。
- 对话框是**纯 UI**(配置部分):打开时由 `main_window` 注入当前配置值;保存时把新值发回主窗口,由主窗口集中 `save_config`,UI 控件不直接读写配置文件(遵守 `docs/05` 4.12 与 `docs/04` 第 6 节)。下载/暂存经 `services` 层完成(与其它面板调用 service 一致)。
- 保存后主窗口重新触发一次更新检查(角标按新配置刷新)。配置写入 `~/.cmbot/config/app_config.json`,启动器下次启动自然读到,两端一致。
- 取消不改动配置。
## 5. 左侧素材栏