From b3377ce712dbffe4e3a46217d167e575a3be4e89 Mon Sep 17 00:00:00 2001 From: ciregenz Date: Tue, 4 Aug 2026 08:15:12 -0700 Subject: [PATCH] [eric] chat: expanded tool detail hangs off an indent rail, no box in any state --- .../tool-bubbles/DefaultToolBubble.tsx | 33 ++++++++----------- .../tool-bubbles/ToolGroupBubble.tsx | 25 ++++++-------- 2 files changed, 23 insertions(+), 35 deletions(-) diff --git a/frontend/src/app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx b/frontend/src/app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx index 90ee3dae..b26cc839 100644 --- a/frontend/src/app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx +++ b/frontend/src/app/pages/AgentChat/tool-bubbles/DefaultToolBubble.tsx @@ -84,31 +84,21 @@ export const DefaultToolBubble: React.FC = ({ ...enterStyle, }} > - + {/* Accent is a LIVE signal only: a finished row goes neutral so a 20-row group reads as calm history, not a wall of orange (open-webui's state language). */} @@ -149,8 +139,8 @@ export const DefaultToolBubble: React.FC = ({ )} {/* A Bash label is already input-derived ("Checked location"), so its raw command fragment - is noise at rest; it reappears with the expanded card where the full output lives. */} - {inputSummary && !isStreaming && (!/^bash$/i.test(toolName) || showBody || mcpCompact) ? ( + is noise; the expanded terminal block shows the full command anyway. */} + {inputSummary && !isStreaming && (!/^bash$/i.test(toolName) || mcpCompact) ? ( {webDomain && } = ({ + {/* Standalone rows hang their output off the indent rail; compact rows already sit inside the group's rail. */} + {richRender ? ( - + @@ -233,7 +225,7 @@ export const DefaultToolBubble: React.FC = ({ = ({ )} )} + diff --git a/frontend/src/app/pages/AgentChat/tool-bubbles/ToolGroupBubble.tsx b/frontend/src/app/pages/AgentChat/tool-bubbles/ToolGroupBubble.tsx index 2f2fe2e4..d7762529 100644 --- a/frontend/src/app/pages/AgentChat/tool-bubbles/ToolGroupBubble.tsx +++ b/frontend/src/app/pages/AgentChat/tool-bubbles/ToolGroupBubble.tsx @@ -145,17 +145,9 @@ const ToolGroupBubble: React.FC = React.memo(({ group, isSessionRunning = ...reveal, }} > - - {/* Collapsed = the quiet "N tool calls ›" line; the detail card only materializes on expand. */} + + {/* Both states stay FLAT (the Claude/ChatGPT transition language): expanding never draws a + box around the group, the detail hangs off a thin indent rail under the same quiet row. */} {!expanded ? ( { userToggledRef.current = true; setExpanded(true); }} @@ -198,10 +190,9 @@ const ToolGroupBubble: React.FC = React.memo(({ group, isSessionRunning = display: 'flex', alignItems: 'center', gap: 0.75, - px: 1.5, - py: 0.7, + py: 0.4, cursor: 'pointer', - '&:hover': { bgcolor: 'rgba(0,0,0,0.02)' }, + '&:hover': { opacity: 0.85 }, }} > {!allDone ? ( @@ -254,7 +245,11 @@ const ToolGroupBubble: React.FC = React.memo(({ group, isSessionRunning = *': { animation: 'toolRowFadeIn 140ms ease-out backwards', },