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

3.7 KiB

id, title, phase, deps, status, created, owner
id title phase deps status created owner
T-306 精简代理下拉编辑与实例行安全操作布局 3
T-304
T-305
DONE 2026-07-25 codex

需求与背景

设置页的代理管理需要从“名称加列表行编辑”简化为单一选择器和地址输入。用户需要在下拉框中直接识别完整代理地址,选择后可编辑,未选择时可新增。实例列表需要把高频主操作放在第一位,并增加操作间距以降低误点风险。

方案与边界

  • 设置页使用“已保存代理”单选下拉框、单一“代理地址”输入框,以及同一行的“保存代理 / 删除代理”按钮。默认不选任何代理且输入框为空;选择已有项会回填其地址,修改后保存更新同一稳定 proxyId,未选择时保存创建新项。
  • UI 只展示完整、已规范化的无认证 scheme://host:port 地址。配置与实例关联继续使用稳定 proxyId,不以地址字符串作为关联键;为保持已有 JSON 兼容,新增或改写时内部名称同步为地址但不再作为 UI 字段。
  • 保存前拒绝认证信息、非法地址和规范化后重复地址。保存成功保留选中项和输入内容,并通过非模态反馈说明其只影响后续启动。
  • 删除仅针对已选代理,先显示带完整地址的确认对话框;Escape 和取消不做更改,初始焦点在取消。若仍被实例引用,则不打开可执行删除确认,改为说明引用数量并保持选择与输入不变。
  • 新建和编辑实例统一使用同一代理选择器,展示完整地址与“无代理”,只保存 proxyId。运行中实例改代理只影响下次启动。
  • 实例行操作顺序固定为“启动/停止/重新检测 → 编辑 → 删除”。图标按钮有至少 8epx 间隔与独立 36–40epx 命中区;删除继续使用危险色和确认弹层。单击行只选中,行内操作不触发行默认编辑。

验收要点

  • 设置页初始代理输入为空;下拉项显示完整地址。选择、修改、保存、新增、清空选择、格式错误和重复地址均有可恢复反馈。
  • 删除未引用代理时先展示“删除代理?”确认,包含代理地址、取消和删除按钮;确认成功后下拉框和输入框清空,焦点返回下拉框。引用中代理不可删除且不会改变任何实例选择。
  • 新建和编辑实例的代理选择器展示完整地址;保存和重启后仍关联同一 proxyId,地址更新后下一次启动使用新地址。
  • 行操作视觉和键盘顺序为主操作、编辑、删除;各目标互不重叠,删除与相邻操作有更大间隔,启动/停止状态机和外部实例不接管边界保持不变。
  • 覆盖空代理库、选择、地址规范化、重复值、删除取消/确认/引用保护、编辑脏状态、操作顺序、窄窗口、键盘 Escape/Enter 与焦点恢复。
  • gofmt、go test ./...、go vet ./...、go build -o build/chub.exe ./cmd/chub、scripts/smoke-browser.ps1 与 scripts/smoke-windows.ps1 通过。

执行记录

  • 状态:DONE
  • 变更:设置页改为完整代理地址选择器、地址输入和保存/删除操作;选择已有代理会回填地址,保存时保留稳定 proxyId,删除未引用代理须经确认。新建和编辑实例的选择器均显示完整地址。实例行操作已调整为启动/停止(或重新检测)、编辑、删除,并加大各目标的间距和操作列宽度。
  • 验证:gofmt -w internal/ui/shell.go internal/ui/shell_test.go、go test ./...、go vet ./...、scripts/smoke-windows.ps1、scripts/smoke-browser.ps1 均通过;新增 UI 状态测试覆盖地址回填、更新/新建、引用保护与确认删除。
  • 阻塞:无。