Slice 4: graceful project handoff (pending switch + ack)
Add pending-switch coordination to internal/activity (RequestSwitch/PendingSwitch/AckSwitch/CancelSwitch); AckSwitch atomically sets the active project and records switch-completed with Claude's summary. New MCP tools get_pending_switch and ack_switch (request is user-only via HTTP). HTTP GET/POST/DELETE /api/switch. New <handoff-bar> component (ask/waiting/cancel/completed) over SSE; activity-feed reflects switch-completed. Test covers request->ack->clear. Verified live: request/waiting/cancel over SSE. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -116,3 +116,25 @@ Append-only running history of all changes (AGENT.md §9.1). Newest last.
|
||||
- **Affects:** `internal/activity` (new), `internal/service`, `internal/mcp`
|
||||
(+test), `cmd/server/main.go`, `components/activity-feed` (new),
|
||||
`components/repo-list`, `web/templates/{index,help}.html`.
|
||||
|
||||
## 2026-09-20 — Slice 4: graceful project handoff (§8.3)
|
||||
- **What:** `internal/activity` gained a pending-switch model
|
||||
(`RequestSwitch`/`PendingSwitch`/`AckSwitch`/`CancelSwitch`); `AckSwitch`
|
||||
atomically sets the active project to the requested target and records a
|
||||
`switch-completed` event with Claude's summary. Service methods added. New MCP
|
||||
tools `get_pending_switch` and `ack_switch` (request is user-only — no MCP tool
|
||||
raises it). HTTP: `GET/POST/DELETE /api/switch`. New `<handoff-bar>` component:
|
||||
"Ask Claude to switch to <active>", the "waiting for a good stopping point"
|
||||
state with Cancel, and the completion notice; `<activity-feed>` also updates the
|
||||
active project on `switch-completed`. Extended the MCP test to cover the full
|
||||
request→ack→clear flow. Help page + AGENT.md §8.3 updated.
|
||||
- **Why:** The headline feature — the user asks Claude to switch projects; Claude
|
||||
finishes to a safe stopping point, then `ack_switch` completes it and the app
|
||||
notifies the user over SSE. The switch is Claude-completed at a checkpoint,
|
||||
never app-forced (§1.4-class rule).
|
||||
- **Affects:** `internal/activity`, `internal/service`, `internal/mcp` (+test),
|
||||
`cmd/server/main.go`, `components/handoff-bar` (new), `components/activity-feed`,
|
||||
`web/templates/{index,help}.html`, `AGENT.md` (§8.3).
|
||||
- **Verified live:** request → "waiting" → cancel, all over SSE with activity
|
||||
logging. The ack/completion path is covered by the test; its live ✅ notice
|
||||
needs the two new MCP tools, which appear after the next Claude Desktop restart.
|
||||
|
||||
Reference in New Issue
Block a user