docs: define instance data deletion

This commit is contained in:
QiuSW
2026-07-27 22:59:10 +08:00
parent 03b23045a7
commit e400172d04
10 changed files with 75 additions and 3 deletions
+1
View File
@@ -51,6 +51,7 @@ UI/CLI 不直接操作 `exec.Cmd`、Win32 handle 或数据库。Application 层
- 通知区域:Windows platform adapter 在独立原生消息循环中管理一个图标、Tooltip 和原生菜单,向 `cmd/chub` 发送仅含“显示主窗口 / 刷新状态 / 退出应用”的 typed command。应用 coordinator 决定如何显示 Gio 窗口、发起既有刷新或执行退出清理;adapter 不持有浏览器进程句柄,不调用浏览器启动/停止接口。图标状态仅来自非敏感实例计数;Explorer 重启后重新注册,应用结束前删除图标。首版不拦截 Gio 的窗口关闭消息,也不隐藏主窗口。
- 配置定位与迁移:`config.OpenDefault()` 先用 `os.Executable()` 的目录解析目标 `config.json`,不依赖工作目录。目标文件已存在时直接使用它;目标不存在时仅尝试读取旧 `%APPDATA%\\chub\\config.json`,通过现有 decode/normalize 校验后以 Store 原子写入目标,并把旧文件保留为只读恢复备份。迁移失败不会写入目标、不会删除旧文件、不会回退到 AppData 继续运行;应用层只显示可恢复的启动诊断,不显示配置内容。CLI 与 GUI 共用该入口,避免出现不同配置来源。
- 浏览器可执行文件选择:`internal/platform/files.ExecutablePicker` 仅负责通过 Windows 原生 `OpenFileDialog` 返回已存在的绝对 `.exe` 路径;Gio shell 通过后台 adapter 调用并以字段和请求代次接收结果,不在 UI frame 中打开对话框或执行系统 I/O。Chrome 与 Edge 各自保存选择中状态和字段级反馈;取消、失败和不合规结果不改写 editor。标准路径搜索沿用独立可取消任务,但成功结果(包括与当前输入相同的确认结果)必须显示在发起字段旁,避免被页面下方的无关状态区遮蔽。
- Delete instance data:实例删除默认只移除本地配置。用户在确认弹层显式勾选后,Gio shell 以实例 ID、目录快照和请求代次向后台 `InstanceDataDeleter` 发起不可取消的数据删除;执行期间弹层保留并禁用重复/取消操作。`cmd/chub` adapter 在 `RemoveAll` 前重新检查 Chub registry 和 Windows 外部 profile 占用,任一检查失败或发现占用均拒绝;`internal/platform/files.InstanceDataRemover` 只接受绝对、清理后的非卷根目录,并拒绝普通文件、符号链接或重解析点。删除成功后 shell 才删除实例行并持久化配置;任何检查或文件删除失败都保留实例行、配置和目录。该路径不枚举、关闭或接管浏览器进程。
Chrome 和 Edge 共用大部分 Chromium 参数,但 executable 默认路径、进程名称和安装方式不同,通过 `BrowserDefinition` 封装差异。CDP 端点只绑定 `127.0.0.1`;端口号和 `/json/version` 是诊断数据,WebSocket URL 不进入持久化、事件或普通 UI 文案。`/json/list` 仅用于只读页面目标信息;URL 在 DTO 边界移除 userinfo、query 和 fragment。