diff --git a/src/renderer/src/components/native-chat/NativeChatToolRun.test.tsx b/src/renderer/src/components/native-chat/NativeChatToolRun.test.tsx index da9202254c0..a6edaee49e0 100644 --- a/src/renderer/src/components/native-chat/NativeChatToolRun.test.tsx +++ b/src/renderer/src/components/native-chat/NativeChatToolRun.test.tsx @@ -372,18 +372,28 @@ describe('NativeChatToolRun', () => { expect(screen.getByText('shell git log -1')).toBeInTheDocument() }) - it('settles an orphaned running call when its turn lifecycle has ended', () => { + it('keeps a post-turn running call neutral until the item itself settles', () => { const blocks: NativeChatBlock[] = [ { type: 'tool-call', name: 'shell', input: { command: 'sleep 1' }, state: 'running' } ] - const { container } = render( + const { container, rerender } = render( ) expect(screen.queryByText('Running sleep 1')).toBeNull() - expect(container.querySelector('.lucide-check')).toBeInTheDocument() + expect(container.querySelector('.lucide-check')).toBeNull() expect(container.querySelector('.lucide-circle-alert')).toBeNull() + rerender( + + ) + expect(container.querySelector('.lucide-check')).toBeInTheDocument() }) it('shows the category glyph beside the word a classified row is named by', () => { diff --git a/src/renderer/src/components/native-chat/NativeChatToolRun.tsx b/src/renderer/src/components/native-chat/NativeChatToolRun.tsx index 112a96f3f8c..84a1b1f4f20 100644 --- a/src/renderer/src/components/native-chat/NativeChatToolRun.tsx +++ b/src/renderer/src/components/native-chat/NativeChatToolRun.tsx @@ -223,6 +223,7 @@ export function NativeChatToolRun({ ? selectActiveToolCall(blocks, { activeTurnIsWorking }) : null const isSettled = latestActiveCall == null + const hasRunningCall = blocks.some((block) => isToolCallBlock(block) && block.state === 'running') // The turn caret opens the activity group, while each child tool remains // collapsed. The global expand toolbar still opens child details together. const expandToolLines = expandOverride === undefined ? open : false @@ -309,8 +310,8 @@ export function NativeChatToolRun({ {summary || fallbackLabel} - {/* Completion reads as a trailing mark so the leading glyph can stay fixed. */} - {structuredActivityUi ? ( + {/* A running item cannot inherit completion from its turn. */} + {structuredActivityUi && !hasRunningCall ? ( ) : null} {/* Chevron is revealed on hover when collapsed and points down when open. */}