3.2 KiB
3.2 KiB
id, title, phase, deps, status, created, owner
| id | title | phase | deps | status | created | owner | |||
|---|---|---|---|---|---|---|---|---|---|
| T-406 | 实例删除确认中的 User Data Dir 显式删除 | 4 |
|
DOING | 2026-07-27 | codex |
需求与背景
当前实例删除确认只移除 Chub 配置,明确保留 User Data Dir。用户需要在同一确认框中选择“删除实例和数据”,以便在不再需要某个隔离环境时一并删除其浏览器 profile 数据。
方案与边界
- 确认框保留“取消 / 删除实例”安全默认路径;新增默认未勾选的“同时删除 User Data Dir 中的数据”业务复选框。勾选后展示目标目录和不可恢复警告,确认按钮改为“删除实例及数据”。取消、Escape 和窗口关闭均不改变实例或数据。
- 只有状态为“已退出”或“启动失败”的实例可勾选数据删除;运行、启动/停止、外部关联、外部占用和未知占用时选项禁用,用户仍可仅删除配置。该 UI 状态只是预防性提示,不是删除授权依据。
- 确认数据删除后,Gio 在后台调用
InstanceDataDeleter,以实例 ID、User Data Dir 和请求代次接收结果。删除过程中确认框保持且禁用重复/取消;成功后才删除实例行、持久化配置并恢复列表焦点。失败保持实例、目录、确认框和勾选,以可恢复说明提示停止浏览器或检查权限。 cmd/chubadapter 在文件删除前重新检查 Chub registry 与 Windows 外部 profile 占用;不确定、检查失败或占用均拒绝。internal/platform/files.InstanceDataRemover只处理绝对、清理后的非卷根真实目录,拒绝普通文件、符号链接或重解析点;目录不存在可视作已清除。不得按浏览器进程名枚举、关闭或接管任何进程。- 此次扩展了不可逆确认状态,先更新
docs/ui/browser-manager.html交互原型和docs/ui/README.md。原型仅模拟选择和结果,绝不删除本机文件。
验收要点
- 自动化:新增安全目录删除(成功、相对路径、卷根、普通文件、链接、取消上下文)测试;新增占用复核、UI 默认配置删除、勾选后的后台成功/失败/过期结果及运行态禁用测试。
go test ./...、go test -race ./cmd/chub ./internal/ui ./internal/platform/files、go vet ./...、cmd /c build.bat通过。 - Windows smoke:已退出实例打开删除确认时复选框默认未选,勾选后可见实际目录与不可恢复警告,确认按钮文案改变;删除测试 profile 后其目录和配置均消失。运行中/外部占用实例只能删除配置。故意占用目录、权限拒绝或无效路径时,确认框保留且配置/目录都不变。
- 交互与无障碍:确认框背景不可交互、默认焦点为取消、Escape 取消;进入删除中状态不显示不可兑现的取消;错误以文字说明影响范围和恢复路径,不显示原始系统错误。窄窗口、200% 缩放、长路径和键盘 Tab/Space/Enter 仍可完成或取消。
执行记录
- 状态:DOING
- 变更:已完成需求、架构、API、用户故事、交互清单、原型验收场景与安全边界定义;待更新原型并提交文档后实现。
- 验证:待执行。
- 阻塞:无。