* feat(web): session header files and outline view toggles
Files and outline icons in SessionHeader act as depressed toggles; files
view shares the session header and places refresh beside the search box.
Co-authored-by: Cursor <cursoragent@cursor.com>
* chore(web): add Playwright handoff script for session view toggles
Supports new-feature-intake visual gate: files toggle pressed + refresh beside search.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(dev): handoff script avoid networkidle on live hub SSE
HAPI keeps connections open on :3006; domcontentloaded is the correct wait.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(web): place filesystem refresh outside search field
Refresh is a sibling of the search pill, not inside it, so the control
is visually and structurally separate from file search.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(cli): stateful MCP HTTP transport for display_image
MCP SDK 1.29+ rejects stateless StreamableHTTP reuse across separate POSTs
(initialize, notifications/initialized, tools/call), so display_image 500'd
on the second request. Generate per-session IDs instead.
Add hapi-display-image.mjs to call the live session CLI's MCP via hostPid so
generated-image bytes stay in the owning process.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(cli): multi-session MCP transport + hapiMcpUrl metadata
Route streamable HTTP by mcp-session-id so agent bridge and
hapi-display-image can each initialize without "already initialized".
Publish metadata.hapiMcpUrl at MCP start; helper uses that instead of
guessing loopback ports (hook server collision).
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(scripts): preserve namespaced CLI_API_TOKEN in display-image helper
Do not append :default; namespace is already encoded in the stored token.
Co-authored-by: Cursor <cursoragent@cursor.com>
* fix(scripts): read settings only when CLI_API_TOKEN unset
Env-only auth must not require ~/.hapi/settings.json to exist.
Co-authored-by: Cursor <cursoragent@cursor.com>
---------
Co-authored-by: Cursor <cursoragent@cursor.com>
* test(codex): add web event rendering harness
* fix(codex): surface plan updates in web
* fix(codex): render MCP tool calls in web
* fix(codex): improve terminal and context display
* fix(codex): format token usage events
* fix(codex): show status context in web
* fix(codex): preserve tool result errors