feat: inline rich tool rendering in chat + flush-right resizable file sidebar #155
No reviewers
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab!155
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "afk/154"
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?
Implements issue #154: desktop tool detail moves back inline into the conversation flow (keeping the #146 rich renderers), and the desktop panel is reborn as a flush-right, drag-resizable sidebar reserved for file views.
What changed
1. Inline rich tool rendering (desktop >=1024px)
Set<seq>, decision-12 keying) so it survives SSE refetches, and resets with the stream.<pre>fallback) inside a.tool-inline-bodycapped at 45vh with internal scroll..tool-body, diff line spans, and path headers soft-wrap (pre-wrap+overflow-wrap: anywhere) across inline, sidebar, and sheet.2. Flush-right resizable file sidebar (desktop)
read/diff/write) carry an "open in sidebar" icon button on the collapsed row and next to the path header of the expanded inline view; command/fallback tools get none. The shown chip keeps its selected state.lab.tool-panel-width(re-clamped against the viewport at render); default staysclamp(320px, 30vw, 480px). Escape still closes; open state remains an in-memory signal (no history entry).3. Server: new
readToolView kindToolViewReadin the provider view union; claudecode maps theReadtool (Path at tool_use time, Text filled from the tool_result with cat -n prefixes and trailing system-reminder stripped,TruncateDetailapplied; view cleared on an errored read). No codex mapping (reads there are shell commands).4. Mobile (<1024px): unchanged
Renderer extraction
ToolPanel.tsx's view switch moved toweb/src/components/ToolViews.tsx(ToolViewBody), preserving the liveness invariant (all reads throughprops.message, resolved live by seq). Inline, sidebar, and sheet all render through it.Verification
go build ./...,go vet ./...,go test ./...- all green (new tests for the read mapping, excerpt cleaning, truncation, error clearing, redaction).tsc --noEmit,vitest762/762,eslint,prettier --check, productionvite build- all green. New tests cover inline expand/collapse, group bodies, refetch survival, affordance gating, sidebar open/replace/close, resize clamping + persistence, breakpoint-crossing guards, and mobile pins (no inline expansion, no affordances).Closes #154
🤖 Generated with Claude Code
https://claude.ai/code/session_011iVKMijBLcAySTFm3AyWRh