docs: update indicator is a hint text, not a red button

Replace the red-dot-on-the-gear treatment with a low-key blue "发现新版本
vX.Y.Z" label to the left of the ⚙ 配置 button (red reads as error; the text
is clearer and shows the version). docs/07 §4.3, docs/10 §12 and related
wording updated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-18 14:02:14 +08:00
co-authored by Claude Opus 4.8
parent dc2cd123fc
commit 954914a8af
3 changed files with 9 additions and 9 deletions
+2 -2
View File
@@ -76,7 +76,7 @@
- `配置` 按钮**不是编号页签**,不参与 `1/2/3` 顺序;样式低调(图标 + 文字,悬停出强调色)。
- 点击打开**设置对话框**(`QDialog`,见 4.4),不进入新的内容页(页签栏当前不切换内容面板)。
- **有新版本角标**:启动时后台检查到新版,在 `配置` 按钮上点亮红点(文字加「●」、变红加粗),提示用户去设置里更新。**不弹阻塞横幅**(详见 `docs/10` §12)。
- **有新版本提示**:启动时后台检查到新版,在 `配置` 按钮**左侧**显示一行低调的蓝色提示文字 `发现新版本 vX.Y.Z`(可点击,点它或点齿轮都进设置)。无更新时该文字隐藏。**不用红色**(红表示错误/危险,而「有新版」是信息);**不弹阻塞横幅**(详见 `docs/10` §12)。
### 4.4 设置对话框
@@ -94,7 +94,7 @@
行为与架构:
- 对话框是**纯 UI**(配置部分):打开时由 `main_window` 注入当前配置值;保存时把新值发回主窗口,由主窗口集中 `save_config`,UI 控件不直接读写配置文件(遵守 `docs/05` 4.12 与 `docs/04` 第 6 节)。下载/暂存经 `services` 层完成(与其它面板调用 service 一致)。
- 保存后主窗口重新触发一次更新检查(角标按新配置刷新)。配置写入 `~/.cmbot/config/app_config.json`,启动器下次启动自然读到,两端一致。
- 保存后主窗口重新触发一次更新检查(提示文字按新配置刷新)。配置写入 `~/.cmbot/config/app_config.json`,启动器下次启动自然读到,两端一致。
- 取消不改动配置。
## 5. 左侧素材栏
+4 -4
View File
@@ -110,7 +110,7 @@
## 6. 更新时机
- **检查**:主程序**启动时**后台线程检查一次(非阻塞);发现新版只点亮设置入口的角标,不打断使用。
- **检查**:主程序**启动时**后台线程检查一次(非阻塞);发现新版只在设置入口旁显示一行蓝色提示文字,不打断使用。
- **下载暂存**:用户在设置里点「更新」时进行(app 运行期);下载/校验不阻塞主界面,完成后暂存待应用。
- **应用切换**:仅在**下次启动**由启动器完成(主程序未运行时)。
@@ -221,7 +221,7 @@ http://cm.xiapi.com/
## 12. 用户体验
- **发现新版**:主程序启动后台检查,有新版则在 `⚙ 配置` 按钮上点亮红点(不弹阻塞横幅、不打断工作)。
- **发现新版**:主程序启动后台检查,有新版则在 `⚙ 配置` 按钮左侧显示一行低调蓝色提示 `发现新版本 vX.Y.Z`(可点击进设置;不用红色、不弹阻塞横幅、不打断工作)。
- **手动更新**:用户打开设置 → 点「检查并更新」→ 下载在后台进行,完成后提示「已下载 vX,下次启动生效」。下载期间主界面照常可用。
- **应用**:下次双击 `Launcher.exe` 时秒切到新版,几乎无感;启动**永不因下载而卡住**。
- 更新源不可达 / 安装目录不可写时,给出明确文案并降级,不静默失败也不阻断使用。
@@ -256,7 +256,7 @@ HTTP 在线更新比内网共享面临更高风险,按以下层次防护:
分阶段落地,每阶段可独立验证:
1. **地基**:数据目录分离(第 5 节)。任何更新方案的前提。✅ 已实现。
2. **检测通知**:启动时比对版本,有新版提示。✅ 已实现——`services/update_service.py`(`check_for_update` / 版本比较,支持 **`http(s)://` 源 + Basic Auth** 及本地路径,manifest 用 `utf-8-sig` 容忍 BOM)+ 主窗口后台线程检查 → `⚙ 配置` 按钮点亮角标(非阻塞)。
2. **检测通知**:启动时比对版本,有新版提示。✅ 已实现——`services/update_service.py`(`check_for_update` / 版本比较,支持 **`http(s)://` 源 + Basic Auth** 及本地路径,manifest 用 `utf-8-sig` 容忍 BOM)+ 主窗口后台线程检查 → `⚙ 配置` 按钮左侧显示蓝色提示文字(非阻塞)。
3. **非阻塞更新(当前方向)**:✅ 已实现——下载与应用拆开,**启动不阻塞**。
- `services/installer.py`:`download_and_stage()`(app 内下载→SHA-256→解压→`staging\app.new`)、`apply_staged()`(启动器秒切 `app/app.old`,含「不比当前新则丢弃」「移动失败回滚」)、`staged_version()`。
- `src/launcher.py`:瘦身为 seed + `apply_staged` + 启动,**不联网**。
@@ -283,7 +283,7 @@ HTTP 在线更新比内网共享面临更高风险,按以下层次防护:
## 18. 验收要点
- 有新版时 `⚙ 配置` 按钮亮角标,启动不被打断。
- 有新版时 `⚙ 配置` 按钮左侧出现蓝色提示文字,启动不被打断。
- 设置里「检查并更新」能下载暂存,下载期间主界面照常可用,完成提示「下次启动生效」。
- 下载暂存期间 `app\` 不被改动;下次启动 `Launcher.exe` 秒切到新版,`app.old\` 保留旧版。
- 安装(切换)后用户自定义模板与偏好(`~/.cmbot`)完整保留。
+3 -3
View File
@@ -972,7 +972,7 @@
前置阅读:
- `docs/10-lan-update.md`(§3 两阶段架构、§6 时机、§8 流程、§12 体验)
- `docs/07-ui-design.md`(4.3 角标、4.4 设置对话框「检查并更新」)
- `docs/07-ui-design.md`(4.3 有新版本提示、4.4 设置对话框「检查并更新」)
背景:
@@ -982,11 +982,11 @@
- [x] `services/installer.py`:`download_and_stage()`(app 运行时下载→SHA-256→解压→`staging\app.new`)、`apply_staged()`(启动器秒切 `app/app.old`,含「不比当前新则丢弃」「移动失败回滚」)、`staged_version()`、`is_writable`
- [x] `launcher.py` 瘦身:seed + `apply_staged` + 启动,不联网;`tests/test_launcher.py` 重写
- [x] `main_window`:发现新版点亮 `⚙ 配置` 红点(删除旧阻塞横幅与「打开更新目录」)
- [x] `main_window`:发现新版在 `⚙ 配置` 左侧显示蓝色提示文字(删除旧阻塞横幅与「打开更新目录」)
- [x] `settings_dialog`:加「检查并更新」→ 下载暂存 → 「下次启动生效」
- [x] `tests/test_installer.py` 11 个单测 + 本地 HTTP server 真实端到端(下载暂存→app 不动→应用切换)
- [x] 文档:`docs/10` §3/§6/§8/§12/§16/§18、`docs/07` §4.3/§4.4 对齐
- [ ] GUI 实测:角标点亮 → 设置里更新 → 重启生效(真机)
- [ ] GUI 实测:提示文字出现 → 设置里更新 → 重启生效(真机)
## 18. 后续暂缓任务