docs: define portable directory defaults
This commit is contained in:
@@ -44,7 +44,7 @@ UI/CLI 不直接操作 `exec.Cmd`、Win32 handle 或数据库。Application 层
|
||||
- Refresh:以 UI 传入的保存实例快照为范围,在后台读取 Chub registry、对应 profile 占用证据与已知 loopback CDP 端点,返回状态 DTO。刷新不按浏览器进程名或端口范围枚举;结果以实例 ID 与快照版本关联,UI 丢弃已删除或已编辑行的过期结果。
|
||||
- Edit:UI 只提交可持久化的实例配置 DTO;运行时 PID、关联端口、占用来源和状态由刷新/启动结果返回,不作为编辑表单保存字段。编辑时保留未公开的非敏感启动选项,活跃或外部关联实例的身份约束字段保持只读。
|
||||
- Proxy:本地配置保存稳定 `proxy_id` 指向的代理库项(必填、大小写无关唯一的显示名称与无认证端点);启动 adapter 在后台解析为当前 `LaunchSpec.ProxyServer` 快照。名称与地址同次校验/保存,`proxy_id` 不因改名或改地址而改变;代理不能含 userinfo,删除被引用项会被拒绝;修改代理只影响后续启动,不影响已运行实例。Gio 列表按当前 `proxy_id` 实时解析名称,不把可变显示名反规范化写入实例配置。
|
||||
- New instance default directory:`cmd/chub` 在窗口初始化时通过 platform config 解析实际 `os.Executable()` 的目录,并把 `<exe-dir>\\user_data_dirs\\<stable-instance-id>` 作为 Gio 新建表单的默认值;UI 只使用已提供的字符串,不读取文件或检查权限。实例 ID 必须先于默认目录分配,目录在保存/启动路径中按既有绝对路径与权限规则校验。不能使用当前工作目录,也不能将 `user_data_dirs` 根目录直接分给多个实例。
|
||||
- Portable defaults and instance naming:platform config 以实际 `os.Executable()` 的父目录(不是当前工作目录)解析 `user_data_dirs`、`logs` 两个跟随程序目录默认值。`Settings` 持久化每个目录的 `portable/custom` 模式:portable 在每次启动重新解析当前 exe 目录,custom 保留用户选择的绝对路径;旧空值及历史内置默认迁移为 portable,其他非空路径保留 custom。Gio 只显示已解析路径和模式,不自行读取/创建目录。新实例先分配稳定 ID,并由 application helper 生成 `<default-user-data-dir>\\instance-<safe-name>-<short-id>`;safe-name 独立于显示名称,处理 Windows 非法字符、设备名、尾部句点/空格、长度与安全化冲突。实例名称在 UI 与 config 写入边界按 Windows 不区分大小写规则唯一;编辑改名不移动既有 profile。启动 adapter 在启动浏览器前后台 `MkdirAll` 并验证该实例目录可写,失败不调用 launcher;日志目录初始化同样在 platform/application 后台处理,不能静默改到工作目录。
|
||||
- GUI stop:主操作只对 Chub registry 中可验证的托管实例调用 `StopProfile(userDataDir, false)`,随后有限等待 registry 释放。外部关联、占用和未知实例永远不调用停止接口;超时或失败不自动强制关闭。
|
||||
- 受管退出监控:仅为当前会话由 Chub 启动并获得进程句柄的实例建立一个 `Wait` 监控任务。退出事件携带实例 ID、启动代次和 PID,UI 仅在三者仍匹配且当前未处于 Chub 请求的停止中时,将运行时状态改为“已退出”并排队显示提示;过期事件、外部实例和应用退出后的监控取消均不得生成意外退出提示。
|
||||
- CDP 页面目标查看:UI 仅将当前已保存实例快照交给后台 adapter;adapter 只接受“运行中”或“外部已关联”的有效实际端口,先复核对应 browser kind 的 loopback `/json/version`,再读取同一端口的 `/json/list`。结果 DTO 仅含 target ID、标题、类型和脱敏 URL;UI 以实例 ID、端口和请求代次丢弃过期结果。该链路不建立 WebSocket、不开启页面控制,也不提供物理窗口 ID。
|
||||
|
||||
Reference in New Issue
Block a user