From af2a0879e3ce420359366e92afe0eaaa1440e694 Mon Sep 17 00:00:00 2001 From: Yaojia Wang Date: Wed, 17 Jun 2026 19:13:38 +0200 Subject: [PATCH] docs: log v0.3 H3 remote approve/reject --- docs/PROGRESS_LOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/PROGRESS_LOG.md b/docs/PROGRESS_LOG.md index 7464238..50d3fab 100644 --- a/docs/PROGRESS_LOG.md +++ b/docs/PROGRESS_LOG.md @@ -121,6 +121,15 @@ - **遗留 / 待办**: 无(原前端打包待决项已解决,见下补记)。 - **commit**: `b126cf0` +### 2026-06-17 · v0.3 Step 3 — H3 远程批准/拒绝(不打字) + +- **状态**: `[x]` DONE。**端到端真浏览器验证通过**(commit `9a6150c`)。 +- **机制**: `PermissionRequest` hook 用 curl POST 到 `/hook/permission` 并**阻塞等响应**;服务端长挂该 HTTP 响应,推 `status{waiting,pending:true}` 给前端 → 前端显示 **[✓Approve][✗Reject]** 横幅 → 点按发 ws `approve`/`reject` → 服务端用 `{hookSpecificOutput.decision.behavior:allow|deny}` 回应被挂的请求 → curl stdout 把决定交给 Claude。**全程不打字**。 +- **兜底**: 5 分钟超时 / 断开即释放 → 回空 `{}`,Claude 回退到自己的交互提示;web-terminal 外 curl 无 URL → no-op。 +- **改动**: types(ClientMessage approve/reject、status.pending)、protocol(白名单+解析)、manager(pending 透传)、server(`/hook/permission` 长挂 + approve/reject 路由 + resolvePending)、setup-hooks(PermissionRequest 用 held 命令)、FE(terminal-session approve()/reject()+pending、tabs 批准横幅)。 +- **验证**: 207 测试全绿(协议 approve/reject 单测 + 集成 ⑧ held→approve→allow);浏览器实测横幅"Claude wants to use Bash"→Approve→held 请求得到 allow→横幅消失(截图 /tmp/v03-approve.png)。 +- **commit**: `9a6150c` + ### 2026-06-17 · v0.3 Step 2 — H2/H4 Claude 状态感知(headline) - **状态**: `[x]` DONE(分支 `v0.3-cockpit`)。**端到端真浏览器验证通过**。