docs: define read-only CDP target viewing
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
---
|
||||
id: T-401
|
||||
title: 已验证实例的 CDP 页面目标只读查看
|
||||
phase: 4
|
||||
deps: [T-302, T-303, T-310]
|
||||
status: DOING
|
||||
created: 2026-07-27
|
||||
owner: codex
|
||||
---
|
||||
|
||||
## 需求与边界
|
||||
|
||||
用户需要确认一个已运行实例中打开了哪些页面,但首版必须维持只读和最小 CDP 能力。平台只可向经 browser kind 复核的 `127.0.0.1:{actualPort}/json/list` 发起有限 HTTP 请求;GUI 仅通过后台回调获取 DTO。
|
||||
|
||||
- 仅“运行中”或“外部已关联”且已有有效实际端口的实例可请求页面目标。外部关联仅允许读取,不产生生命周期接管授权。
|
||||
- 返回每个 target 的 ID、标题、类型与脱敏 URL;URL 必须移除 userinfo、query 和 fragment。不得保存、日志记录、事件发布或显示 `webSocketDebuggerUrl`。
|
||||
- 不建立 WebSocket,不调用 CDP 命令;不提供导航、刷新、创建、关闭标签页、执行脚本或物理窗口 ID/分组。
|
||||
- 编辑对话框操作区提供“查看标签页”入口。结果显示在可关闭模态层;读取中、空列表、端点失效、状态变化和关闭后过期结果都有文本反馈。Escape 关闭并把焦点返回入口。
|
||||
- 请求有超时、响应字节数与目标数量上限;UI frame 不执行 HTTP I/O。删除、刷新、退出或端口变化后,旧结果不得覆盖当前视图。
|
||||
|
||||
## 设计决策
|
||||
|
||||
`/json/list` 返回的是 CDP target,不含可靠的物理窗口 ID。T-401 因此将 UI 命名为“标签页(CDP 页面目标)”,不把 target 列表误称为窗口管理。未来如需窗口分组,应单独评审 WebSocket CDP、授权和更高风险控制能力。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- Chrome 与 Edge 的有效 loopback endpoint 在再次验证版本后可读取 `/json/list`;无效端口、browser kind 不符、非 200、超时、畸形/超限响应返回稳定的端点不可用错误。
|
||||
- 目标 DTO 排除 WebSocket URL 并脱敏 URL;列表显示标题、类型和 URL,空结果明确提示。
|
||||
- 对未启动、启动中、停止中、调试不可用、外部占用或未知占用实例,“查看标签页”不可提交;对运行中和外部已关联实例可用,但不产生任何浏览器控制调用。
|
||||
- GUI 请求异步、防重复、可关闭;按实例 ID、实际端口和请求代次拒绝过期结果。错误和空列表不丢失编辑表单状态;Escape 关闭查看层并恢复焦点。
|
||||
- HTML 原型和 Gio 使用同一文案与状态;覆盖 platform、adapter、UI 状态与过期结果测试。`gofmt`、`go test ./...`、`go test -race ./cmd/chub ./internal/ui`、`go vet ./...`、`go build -o build/chub.exe ./cmd/chub`、HTML 脚本检查和 `scripts/smoke-windows.ps1` 通过。
|
||||
|
||||
## 执行记录
|
||||
|
||||
- 状态:DOING
|
||||
- 变更:待实施。
|
||||
- 验证:待执行。
|
||||
- 阻塞:无。
|
||||
Reference in New Issue
Block a user