feat(web): tool call panel — desktop right sidebar, mobile bottom sheet #145
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab#145
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Tool call detail moves out of the chat column into a dedicated panel. Chips and group summaries stop expanding inline and become buttons that open it. Grilled 2026-07-12; decisions below are settled.
Container
clamp(320px, 30vw, 480px), no resize handle in v1.role="dialog" aria-modal="true"; sidebar is a complementary region (not modal).Navigation inside the panel
Two pages, same model in both containers:
<pre>blocks, monospace, horizontal scroll inside the panel. Rich per-tool rendering is the follow-up issue.Liveness
messages()store as the chat. Group identity = first tool'sseq, detail identity = toolseq— same stable-key trick as decision 12, so SSE refetches preserve panel state. New tools append to an open list page, statuses flip, an open detail's output grows in place.Chat side
<details>expansion is superseded.ToolChip/ToolGroupViewsummaries become buttons.Out of scope (follow-up issue)
Rich view kinds (diff/command/write), the
ToolInfo.viewunion, and the raised detail truncation limit.Landed PR #147 (
afk/145) — merged intomain.Verdict: PASS. Verification relied on the repo's own CI (
ci / native, run #160, success in 7m48s: build, tsc, eslint, prettier, 727 vitest tests) — not re-run.origin/mainwas an ancestor of the head, so the merge was conflict-free. Title is Conventional Commits;Closes #145present and honored (this issue auto-closed on merge).Diff review (web-only, +2129/−253):
sheetGesture.tsis a clean pure Y-axis transposition of #140's drawer machine;ToolPanel.tsxresolves its target live by immutable seq so output grows across SSE refetches, withon(key)avoiding reset-on-refetch and dialog/aria-modal scoped to the sheet;RunChat.tsxswaps the inline<details>expansion for panel-opening buttons, relocatestoolStatusMark, nulls dissolved selections, and coordinates Esc viadefaultPrevented.Caveat (non-blocking): the CSS layout reflow could not be eyeballed in the sandbox (no browser); CI vouches for build/lint/tests, and live visual confirmation is on the author's documented residual list.
Follow-up: stacked child #148 (
afk/146, Closes #146) is next in order.