Files
cdp_hub/docs/current-state.md
T

46 lines
4.9 KiB
Markdown
Raw Normal View History

2026-07-22 14:51:11 +08:00
# 当前实现状态
## 快照
- 日期:2026-07-27
- 阶段:Phase 3 真实实例操作(T-301 至 T-308、T-201 至 T-208 已完成;T-309 进行中)
2026-07-25 18:23:33 +08:00
- 代码:已建立 Go module `chub`、`cmd/chub` 入口、logging 测试基座、浏览器 domain/application 合约、Chrome/Edge 参数/发现模块、启动 registry、Windows 身份/占用检查、loopback CDP 端口分配与端点校验、优雅关闭、Job Object、真实 Chrome/Edge smoke、JSON 配置存储、启动恢复、CLI JSON 合约、应用内事件总线、UI 状态测试和 Windows smoke 脚本,T-001 至 T-003、T-101 至 T-104、T-201 至 T-208、T-301 至 T-307 已完成
- UI:Gio 双页 Shell 使用左侧“实例/设置”导航;实例页以等宽“新建实例 / 刷新实例状态”命令区开始,窄内容区自动堆叠。列表固定显示实例名称、浏览器类型、用户数据目录、调试端口、状态和带边框的操作列;操作顺序固定为启动/停止(或重新检测)、编辑、删除,删除与相邻操作保持更大间距以降低误点。主操作在已退出时启动,在 Chub 托管运行或调试不可用时显示停止,在启动/停止中禁用,在外部关联、外部占用或未知占用时仅重新检测;优雅停止通过后台 adapter 验证 registry 的 PID/profile 身份并等待其释放,绝不按进程名关闭或接管外部 Chrome/Edge。刷新通过后台回调只检查已保存实例,以配置快照丢弃编辑或删除后的过期结果;它结合 Chub registry、指定 profile 的外部占用证据和 loopback CDP 端点更新状态,但不扫描、接管或关闭其他 Chrome/Edge。双击、Enter 或编辑图标打开实例编辑弹层,支持名称、浏览器类型、User Data Dir、启动 URL、完整地址代理选择和只读实际端口;保存保留未公开启动选项,Escape 对脏表单先请求确认,活跃/外部关联实例锁定身份约束字段。设置页使用完整代理地址选择器、地址输入及保存/删除操作;选择会回填地址,保存按稳定 `proxyId` 新增或更新,删除未引用代理前必须确认,仍被实例引用的代理会被拒绝。启动通过异步回调接到 Windows 浏览器启动器:未占用目录从已保存的起始端口(空值默认 9666)选择 loopback CDP 端口,并在启动时按已选代理 ID 解析最新的 `--proxy-server` 参数;同目录外部浏览器只有在 `DevToolsActivePort` 与 CDP 端点可验证时才显示“外部已关联”,且不会接管其生命周期。删除使用确认弹层,只删除 Chub 实例配置而不删除 User Data Dir。新建、编辑和删除实例会保存到本地配置;四个设置路径有独立异步可取消搜索,切换页面后输入和任务状态保留;新建实例表单使用 Label、Windows 原生目录选择器和 Chrome/Edge RadioButton;CLI `list/events` 已可用,`start/stop/restart` 等待 BrowserManager adapter
2026-07-25 18:23:33 +08:00
- T-307:本应用会话启动的受管 Chrome/Edge 根进程由单实例后台 `Wait` 监控;意外退出按 ID、启动代次和 PID 验证后立即变为“已退出”,清空运行时 PID/端口,并以可关闭、可合并的提示告知用户。提示关闭后焦点回到启动操作;Chub 请求停止、外部实例、过期事件和应用关闭取消监控均不提示。
2026-07-26 17:42:40 +08:00
- T-308:设置页以可滚动的外层工作区承载浏览器路径、默认目录、运行行为和代理分区;分区、字段、状态提示和保存操作区使用统一的浅色圆角描边。路径字段在紧凑内容区会将输入与“选择/搜索”操作纵向重排,切换页面后滚动、输入与异步搜索状态仍由持久 Gio widget 保留。
2026-07-22 14:51:11 +08:00
- 浏览器核心:设计参考来自 `D:\OPC\shop_helm\internal\platform\chrome`,尚未复制或接入本项目
- blocker:无;T-309 正在为实例增加持久首选调试端口、列表建议状态与后台安全回退分配。
2026-07-22 14:51:11 +08:00
## 当前目录
| 路径 | 状态 | 说明 |
| --- | --- | --- |
| `docs/` | 已建立 | Harness Coding 项目文档 |
| `docs/ui/` | 已建立 | Chub HTML 交互原型 |
| `docs/tasks/` | 已建立 | 一任务一文件目录 |
2026-07-22 15:13:55 +08:00
| `cmd/` | 已建立 | Go 命令入口 |
| `cmd/chub/` | 已建立 | Gio 窗口入口和版本常量 |
| `internal/ui/` | 已建立 | Gio 实例/设置双页 Shell |
2026-07-22 14:51:11 +08:00
| `internal/platform/logging/` | 已建立 | 可注入的结构化 JSON 日志 |
| `internal/` | 部分建立 | 后续扩展 application/domain/platform 实现 |
## 基线命令
当前已具备最小可运行入口:
```text
go test ./...
go vet ./...
go build -o build/chub.exe ./cmd/chub
```
2026-07-22 15:05:52 +08:00
真实浏览器 smoke:
```powershell
.\scripts\smoke-browser.ps1
```
本机 Chrome 和 Edge 均已通过 headless 双实例 smoke;headless 不提供可见 message window,因此外部 profile lock/window 证据仍是后续补充验证项。
2026-07-22 15:13:55 +08:00
`shop_helm` 仅是参考项目,不是本项目代码目录。当前基线已通过 T-201 的测试、vet 和 Windows 构建验证。