diff --git a/docs/07-ui-design.md b/docs/07-ui-design.md index 4e12a3d..ffcac96 100644 --- a/docs/07-ui-design.md +++ b/docs/07-ui-design.md @@ -20,7 +20,7 @@ 主窗口采用固定工具型布局(软件名称与版本号由系统窗口标题栏显示,内容区不再单设标题栏): ```text -流程页签 +流程页签(左:1/2/3 编号步骤 · 右端:⚙ 配置) 主工作区:左侧素材栏 | 中间预览区 | 右侧参数栏 底部合成队列 底部状态栏 @@ -52,7 +52,6 @@ - 软件名称与版本号通过窗口标题常驻显示,便于用户和管理员确认当前运行版本。 - 不在窗口内容区重复软件名称与版本号——内容区自绘标题栏会与系统标题栏重复,故不设置(除非后续改为无边框窗口、由自绘标题栏取代系统标题栏)。 -- 暂不提供「设置」入口:当前可配置项不多,且输出目录/格式/质量在导出面板就地可改。待确有集中设置需求时再加,避免放置点了无反应的占位按钮。 ### 4.2 流程页签 @@ -69,6 +68,34 @@ - 未实现页签可以置灰或隐藏。 - 若保留未实现页签,点击时应提示“暂未开放”,不能进入空白页面。 +### 4.3 设置入口(更新配置) + +在流程页签同一行的**最右端**放一个低调的 `⚙ 配置` 按钮,用 `addStretch()` 与左侧编号页签隔开,使其读作「工具」而非工作流的第 4 步。 + +要求: + +- `配置` 按钮**不是编号页签**,不参与 `1/2/3` 顺序;样式低调(图标 + 文字,悬停出强调色)。 +- 点击打开**设置对话框**(`QDialog`,见 4.4),不进入新的内容页(页签栏当前不切换内容面板)。 +- 之所以现在提供集中设置入口:在线更新需要配置更新地址与凭据,属于「确有集中设置需求」的情形(区别于之前移除的点了无反应的占位按钮)。 + +### 4.4 设置对话框 + +集中编辑在线更新相关配置,对应 `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`。 +- 一行小字安全提示:建议使用**只读账号**、生产环境走 HTTPS(凭据为明文存储)。 + +行为与架构: + +- 对话框是**纯 UI**:打开时由 `main_window` 注入当前配置值;保存时把新值发回主窗口,由主窗口集中 `save_config`,UI 控件不直接读写配置文件(遵守 `docs/05` 4.12 与 `docs/04` 第 6 节)。 +- 保存后主窗口重新触发一次在线更新检查(横幅按新配置刷新)。配置写入 `~/.cmbot/config/app_config.json`,启动器下次启动自然读到,两端一致。 +- 取消不改动配置。 + ## 5. 左侧素材栏 左侧素材栏分为上下两块: diff --git a/tasks.md b/tasks.md index ec85a4a..a6fcda5 100644 --- a/tasks.md +++ b/tasks.md @@ -938,6 +938,34 @@ - [ ] 退休 `scripts/update.ps1` 与 `scripts/install_local.ps1` - [ ] 端到端实测(解压到 D 盘运行、自更新、回滚) +### 17.20 设置对话框(更新配置入口) + +前置阅读: + +- `docs/07-ui-design.md`(4.3 设置入口、4.4 设置对话框) +- `docs/02-prd.md`(`update_source` / `update_user` / `update_pass`) +- `docs/05-project-architecture.md`(4.12 config 集中管理) + +背景: + +- 更新地址/账号/密码目前只能手改 `~/.cmbot/config/app_config.json`,加一个应用内设置入口,管理员配一次,launcher 与 app 内通知都跟着用。 + +任务: + +- [x] 文档:`docs/07` §3 布局、§4.1 去掉「暂不提供设置入口」、新增 §4.3 入口 + §4.4 对话框 +- [ ] 页签栏右端加低调 `⚙ 配置` 按钮(`addStretch` 与编号页签隔开,非编号页签) +- [ ] `src/app/widgets/settings_dialog.py`(`QDialog`,纯 UI):更新地址 / 账号 / 密码(掩码+显示) / 测试连接 / 当前版本 + 安全提示 +- [ ] `测试连接`:调用 `update_service.check_for_update`,反馈最新/发现新版/连接失败 +- [ ] `main_window`:打开时注入当前 config,保存时集中 `save_config`,UI 不直接写配置 +- [ ] 保存后重新触发一次在线更新检查(横幅刷新) +- [ ] 取消不改动配置 + +验收: + +- [ ] 可在界面上改更新地址/账号/密码并持久化到 `~/.cmbot/config/app_config.json` +- [ ] 测试连接能正确反馈三种结果 +- [ ] 改完无需重启 launcher 也能让 app 内横幅按新配置刷新 + ## 18. 后续暂缓任务 以下任务第一阶段暂不做,后续需要时再新增设计文档: