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. */}