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

3.9 KiB
Raw Blame History

id, title, phase, deps, status, created, owner
id title phase deps status created owner
T-404 代理名称、独立默认目录与实例列表代理列 4
T-304
T-306
T-309
T-403
DOING 2026-07-27 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 若为用户未跟踪文件,不纳入本任务提交。

执行记录

  • 状态:DOING
  • 变更:已完成需求、架构、API、用户故事、交互清单、任务路线与 UI 评审场景更新。
  • UI/UX:依据 Gio 表单/列表适配约束,确认本次是已有两页工作区的局部字段和列调整,不改变导航、模态流程或已确认结构,故不新增 HTML 原型;实现保留现有持久 widget、稳定 ID、键盘与窄窗口重排契约。
  • 验证:文档链接、Git diff 检查和文档提交待完成。
  • 阻塞:无。