Files
cdp_hub/docs/tasks/T-404.md
T

37 lines
4.4 KiB
Markdown
Raw Normal View History

---
id: T-404
title: 代理名称、独立默认目录与实例列表代理列
phase: 4
deps: [T-304, T-306, T-309, T-403]
2026-07-27 12:09:54 +08:00
status: DONE
created: 2026-07-27
owner: codex
---
## 需求与背景
现有代理模型已持久化 `ProxyProfile.Name`,但设置页把它覆盖为代理地址,实例列表也无法直接确认实例使用的代理。新建表单的 User Data Dir 未预填可复制部署的独立目录。需要让用户以代理名称维护和确认实例配置,同时为每个新实例生成实际 `chub.exe` 同级 `user_data_dirs\\<稳定实例 ID>` 默认目录。
## 方案与边界
- 设置代理区新增“代理名称”输入。名称和地址采用同一次显式保存:名称必填、去首尾空白、大小写无关唯一;地址继续限制为无认证 `scheme://host:port` 并拒绝重复。选择已保存项会回填名称和地址;保存失败保留所有输入与选择。稳定 `proxyId` 不随改名或改地址变化。
- 创建/编辑实例的代理选择器显示“名称 · 地址”;实例列表新增位于“用户数据目录”与“调试端口”之间的“代理”列,只显示名称或“无代理”。列表按 `ProxyID` 解析当前名称,不将显示名称持久化到实例,改名后立即反映;窄宽度下名称可省略但不得挤压固定操作列或改变按钮、双击、Enter 的语义。
- 打开新建实例表单时,先分配稳定且不与已保存实例冲突的 ID,再由 platform config 从实际 `os.Executable()` 生成 `<exe-dir>\\user_data_dirs\\<instance-id>`。不得使用当前工作目录,也不得把共享根目录作为多个实例的 `user-data-dir`。目录选择和手动输入仍可覆盖默认值。
- 默认目录生成只返回路径字符串,不创建目录或检查权限;Gio UI 不做文件 I/O。既有保存/启动边界负责绝对路径、权限与占用校验;失败时保留输入并给出可恢复提示。程序目录不可写时不得静默切至 AppData 或其他路径。
- 代理名称属于本地显示元数据:不得写入日志、事件、CLI 错误、托盘 Tooltip 或启动参数;代理认证信息继续禁止进入配置、UI 回显、日志和命令行。
## 验收要点
- 自动化:覆盖配置层代理名称的空值、空白、大小写重复与保留稳定 ID;覆盖选择回填、创建/修改代理、列表名称实时解析、无代理、长名称布局权重;覆盖默认目录由注入 executable 目录和稳定实例 ID 生成、绝不依赖当前工作目录且新实例目录不同。
- GUI:代理设置中名称/地址均有可访问 Label;下拉项显示“名称 · 地址”,保存与删除保护沿用既有键盘和确认行为。新建实例首次打开即显示完整、可编辑的独立默认 User Data Dir;取消目录选择或保存失败不清空用户输入。列表列顺序为名称、浏览器、用户数据目录、代理、调试端口、状态、操作。
- 布局与可访问性:验证 600px/960px 窗口、100%–200% 缩放和长中文代理名称。代理列截断不影响操作列;单击行只选择、双击/Enter 编辑、行内命令优先级保持不变;名称、地址、错误反馈均有文字而非仅颜色。
- 回归:`go test ./...`、`go test -race ./cmd/chub ./internal/platform/config ./internal/ui`、`go vet ./...`、`build.bat` 与 `scripts\\smoke-windows.ps1` 均通过。`build.bat`/`run.bat` 若为用户未跟踪文件,不纳入本任务提交。
## 执行记录
2026-07-27 12:09:54 +08:00
- 状态:DONE
- 变更:已完成代理名称输入、名称/地址同次保存与校验、选择回填、稳定 ProxyID 保留、列表代理名称列以及实际 exe 同级 `user_data_dirs\\<实例 ID>` 默认目录。配置层拒绝空白/大小写重复名称和重复端点;默认目录只计算路径且不创建目录。
- UI/UX:依据 Gio 表单/列表适配约束,确认本次是已有两页工作区的局部字段和列调整,不改变导航、模态流程或已确认结构,故不新增 HTML 原型;实现保留现有持久 widget、稳定 ID、键盘与窄窗口重排契约。
2026-07-27 12:09:54 +08:00
- 验证:`go test ./...`、`go test -race ./cmd/chub ./internal/domain ./internal/platform/config ./internal/ui`、`go vet ./...`、`build.bat`、`powershell -ExecutionPolicy Bypass -File scripts\\smoke-windows.ps1` 和 `git diff --check` 均通过;已确认 `build\\chub.exe` 为 Windows GUI 子系统。仅 `build.bat`、`run.bat` 保持未跟踪,未纳入任务提交。
- 阻塞:无。