diff --git a/packages/cli/src/ui/components/StatsDisplay.tsx b/packages/cli/src/ui/components/StatsDisplay.tsx index 8dd00efd..b5a14d55 100644 --- a/packages/cli/src/ui/components/StatsDisplay.tsx +++ b/packages/cli/src/ui/components/StatsDisplay.tsx @@ -204,7 +204,7 @@ export const StatsDisplay: React.FC = ({ {tools.totalCalls} ({' '} - ✔ {tools.totalSuccess}{' '} + ✓ {tools.totalSuccess}{' '} ✖ {tools.totalFail} ) diff --git a/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap index 97a0b525..f07cc7ec 100644 --- a/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/SessionSummaryDisplay.test.tsx.snap @@ -7,7 +7,7 @@ exports[` > renders the summary display with a title 1` │ │ │ Interaction Summary │ │ Session ID: │ -│ Tool Calls: 0 ( ✔ 0 ✖ 0 ) │ +│ Tool Calls: 0 ( ✓ 0 ✖ 0 ) │ │ Success Rate: 0.0% │ │ Code Changes: +42 -15 │ │ │ diff --git a/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap index d6842188..1fbd42c8 100644 --- a/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/StatsDisplay.test.tsx.snap @@ -7,7 +7,7 @@ exports[` > Code Changes Display > displays Code Changes when li │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 1 ( ✔ 1 ✖ 0 ) │ +│ Tool Calls: 1 ( ✓ 1 ✖ 0 ) │ │ Success Rate: 100.0% │ │ Code Changes: +42 -18 │ │ │ @@ -28,7 +28,7 @@ exports[` > Code Changes Display > hides Code Changes when no li │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 1 ( ✔ 1 ✖ 0 ) │ +│ Tool Calls: 1 ( ✓ 1 ✖ 0 ) │ │ Success Rate: 100.0% │ │ │ │ Performance │ @@ -48,7 +48,7 @@ exports[` > Conditional Color Tests > renders success rate in gr │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 10 ( ✔ 10 ✖ 0 ) │ +│ Tool Calls: 10 ( ✓ 10 ✖ 0 ) │ │ Success Rate: 100.0% │ │ │ │ Performance │ @@ -68,7 +68,7 @@ exports[` > Conditional Color Tests > renders success rate in re │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 10 ( ✔ 5 ✖ 5 ) │ +│ Tool Calls: 10 ( ✓ 5 ✖ 5 ) │ │ Success Rate: 50.0% │ │ │ │ Performance │ @@ -88,7 +88,7 @@ exports[` > Conditional Color Tests > renders success rate in ye │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 10 ( ✔ 9 ✖ 1 ) │ +│ Tool Calls: 10 ( ✓ 9 ✖ 1 ) │ │ Success Rate: 90.0% │ │ │ │ Performance │ @@ -108,7 +108,7 @@ exports[` > Conditional Rendering Tests > hides Efficiency secti │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 0 ( ✔ 0 ✖ 0 ) │ +│ Tool Calls: 0 ( ✓ 0 ✖ 0 ) │ │ Success Rate: 0.0% │ │ │ │ Performance │ @@ -132,7 +132,7 @@ exports[` > Conditional Rendering Tests > hides User Agreement w │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 2 ( ✔ 1 ✖ 1 ) │ +│ Tool Calls: 2 ( ✓ 1 ✖ 1 ) │ │ Success Rate: 50.0% │ │ │ │ Performance │ @@ -152,7 +152,7 @@ exports[` > Title Rendering > renders the custom title when a ti │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 0 ( ✔ 0 ✖ 0 ) │ +│ Tool Calls: 0 ( ✓ 0 ✖ 0 ) │ │ Success Rate: 0.0% │ │ │ │ Performance │ @@ -172,7 +172,7 @@ exports[` > Title Rendering > renders the default title when no │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 0 ( ✔ 0 ✖ 0 ) │ +│ Tool Calls: 0 ( ✓ 0 ✖ 0 ) │ │ Success Rate: 0.0% │ │ │ │ Performance │ @@ -192,7 +192,7 @@ exports[` > renders a table with two models correctly 1`] = ` │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 0 ( ✔ 0 ✖ 0 ) │ +│ Tool Calls: 0 ( ✓ 0 ✖ 0 ) │ │ Success Rate: 0.0% │ │ │ │ Performance │ @@ -221,7 +221,7 @@ exports[` > renders all sections when all data is present 1`] = │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 2 ( ✔ 1 ✖ 1 ) │ +│ Tool Calls: 2 ( ✓ 1 ✖ 1 ) │ │ Success Rate: 50.0% │ │ User Agreement: 100.0% (1 reviewed) │ │ │ @@ -250,7 +250,7 @@ exports[` > renders only the Performance section in its zero sta │ │ │ Interaction Summary │ │ Session ID: test-session-id │ -│ Tool Calls: 0 ( ✔ 0 ✖ 0 ) │ +│ Tool Calls: 0 ( ✓ 0 ✖ 0 ) │ │ Success Rate: 0.0% │ │ │ │ Performance │ diff --git a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx index cd233188..d3e1ec68 100644 --- a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx +++ b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx @@ -80,6 +80,7 @@ export const ToolGroupMessage: React.FC = ({ marginLeft={1} borderDimColor={hasPending} borderColor={borderColor} + gap={1} > {toolCalls.map((tool) => { const isConfirming = toolAwaitingApproval?.callId === tool.callId; diff --git a/packages/cli/src/ui/components/messages/ToolMessage.test.tsx b/packages/cli/src/ui/components/messages/ToolMessage.test.tsx index 8da43e95..82de7bbf 100644 --- a/packages/cli/src/ui/components/messages/ToolMessage.test.tsx +++ b/packages/cli/src/ui/components/messages/ToolMessage.test.tsx @@ -84,19 +84,19 @@ describe('', () => { StreamingState.Idle, ); const output = lastFrame(); - expect(output).toContain('✔'); // Success indicator + expect(output).toContain('✓'); // Success indicator expect(output).toContain('test-tool'); expect(output).toContain('A tool for testing'); expect(output).toContain('MockMarkdown:Test result'); }); describe('ToolStatusIndicator rendering', () => { - it('shows ✔ for Success status', () => { + it('shows ✓ for Success status', () => { const { lastFrame } = renderWithContext( , StreamingState.Idle, ); - expect(lastFrame()).toContain('✔'); + expect(lastFrame()).toContain('✓'); }); it('shows o for Pending status', () => { @@ -138,7 +138,7 @@ describe('', () => { ); expect(lastFrame()).toContain('⊷'); expect(lastFrame()).not.toContain('MockRespondingSpinner'); - expect(lastFrame()).not.toContain('✔'); + expect(lastFrame()).not.toContain('✓'); }); it('shows paused spinner for Executing status when streamingState is WaitingForConfirmation', () => { @@ -148,7 +148,7 @@ describe('', () => { ); expect(lastFrame()).toContain('⊷'); expect(lastFrame()).not.toContain('MockRespondingSpinner'); - expect(lastFrame()).not.toContain('✔'); + expect(lastFrame()).not.toContain('✓'); }); it('shows MockRespondingSpinner for Executing status when streamingState is Responding', () => { @@ -157,7 +157,7 @@ describe('', () => { StreamingState.Responding, // Simulate app still responding ); expect(lastFrame()).toContain('MockRespondingSpinner'); - expect(lastFrame()).not.toContain('✔'); + expect(lastFrame()).not.toContain('✓'); }); }); diff --git a/packages/cli/src/ui/components/messages/ToolMessage.tsx b/packages/cli/src/ui/components/messages/ToolMessage.tsx index 591a3b8d..779d74ac 100644 --- a/packages/cli/src/ui/components/messages/ToolMessage.tsx +++ b/packages/cli/src/ui/components/messages/ToolMessage.tsx @@ -269,7 +269,7 @@ const ToolStatusIndicator: React.FC = ({ /> )} {status === ToolCallStatus.Success && ( - + )} {status === ToolCallStatus.Confirming && ( ? diff --git a/packages/cli/src/ui/components/subagents/runtime/AgentExecutionDisplay.tsx b/packages/cli/src/ui/components/subagents/runtime/AgentExecutionDisplay.tsx index 93443a81..355e7eae 100644 --- a/packages/cli/src/ui/components/subagents/runtime/AgentExecutionDisplay.tsx +++ b/packages/cli/src/ui/components/subagents/runtime/AgentExecutionDisplay.tsx @@ -288,7 +288,7 @@ const ToolCallItem: React.FC<{ case 'awaiting_approval': return ?; case 'success': - return ; + return ; case 'failed': return (