diff --git a/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap index 72a031d7f3..e539cec78e 100644 --- a/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/AlternateBufferQuittingDisplay.test.tsx.snap @@ -43,10 +43,12 @@ Tips for getting started: │ ✓ tool1 Description for tool 1 │ │ │ ╰──────────────────────────────────────────────────────────────────────────╯ + ╭──────────────────────────────────────────────────────────────────────────╮ │ ✓ tool2 Description for tool 2 │ │ │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[`AlternateBufferQuittingDisplay > renders with empty history and no pending items > empty 1`] = ` @@ -87,10 +89,12 @@ Tips for getting started: │ ✓ tool1 Description for tool 1 │ │ │ ╰──────────────────────────────────────────────────────────────────────────╯ + ╭──────────────────────────────────────────────────────────────────────────╮ │ ✓ tool2 Description for tool 2 │ │ │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[`AlternateBufferQuittingDisplay > renders with pending items but no history > with_pending_no_history 1`] = ` diff --git a/packages/cli/src/ui/components/__snapshots__/MainContent.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/MainContent.test.tsx.snap index 0d3bb5beec..8fbe2bd11e 100644 --- a/packages/cli/src/ui/components/__snapshots__/MainContent.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/MainContent.test.tsx.snap @@ -28,7 +28,8 @@ AppHeader(full) │ Line 20 │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ -ShowMoreLines" +ShowMoreLines +" `; exports[`MainContent > MainContent Tool Output Height Logic > 'ASB mode - Unfocused shell' 1`] = ` @@ -53,7 +54,8 @@ AppHeader(full) │ Line 19 █ │ │ Line 20 █ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ -ShowMoreLines" +ShowMoreLines +" `; exports[`MainContent > MainContent Tool Output Height Logic > 'Normal mode - Constrained height' 1`] = ` @@ -77,7 +79,8 @@ exports[`MainContent > MainContent Tool Output Height Logic > 'Normal mode - Con │ Line 19 │ │ Line 20 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ -ShowMoreLines" +ShowMoreLines +" `; exports[`MainContent > MainContent Tool Output Height Logic > 'Normal mode - Unconstrained height' 1`] = ` @@ -101,5 +104,6 @@ exports[`MainContent > MainContent Tool Output Height Logic > 'Normal mode - Unc │ Line 19 │ │ Line 20 │ ╰──────────────────────────────────────────────────────────────────────────────────────────────╯ -ShowMoreLines" +ShowMoreLines +" `; diff --git a/packages/cli/src/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap b/packages/cli/src/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap index b987b709e7..4b3d479a48 100644 --- a/packages/cli/src/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap +++ b/packages/cli/src/ui/components/__snapshots__/ModelStatsDisplay.test.tsx.snap @@ -158,28 +158,6 @@ exports[` > should handle long role name layout 1`] = ` ╰──────────────────────────────────────────────────────────────────────────────────────────────────╯" `; -exports[` > should handle models with long names (gemini-3-*-preview) without layout breaking 1`] = ` -"╭──────────────────────────────────────────────────────────────────────────────╮ -│ │ -│ Auto (Gemini 3) Stats For Nerds │ -│ │ -│ │ -│ Metric gemini-3-pro-preview gemini-3-flash-preview │ -│ ────────────────────────────────────────────────────────────────────────── │ -│ API │ -│ Requests 10 20 │ -│ Errors 0 (0.0%) 0 (0.0%) │ -│ Avg Latency 200ms 50ms │ -│ Tokens │ -│ Total 6,000 12,000 │ -│ ↳ Input 1,000 2,000 │ -│ ↳ Cache Reads 500 (25.0%) 1,000 (25.0%) │ -│ ↳ Thoughts 100 200 │ -│ ↳ Tool 50 100 │ -│ ↳ Output 4,000 8,000 │ -╰──────────────────────────────────────────────────────────────────────────────╯" -`; - exports[` > should not display conditional rows if no model has data for them 1`] = ` "╭──────────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ diff --git a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx index 4c8abc3189..c9c7171277 100644 --- a/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx +++ b/packages/cli/src/ui/components/messages/ToolGroupMessage.tsx @@ -100,10 +100,11 @@ export const ToolGroupMessage: React.FC = ({ displayStatus !== ToolCallStatus.Confirming ); }), + [toolCalls], ); - const staticHeight = /* border */ 2 + /* marginBottom */ 1; + const staticHeight = /* border */ 2; // If all tools are filtered out (e.g., in-progress AskUser tools, confirming tools), // only render if we need to close a border from previous @@ -147,6 +148,7 @@ export const ToolGroupMessage: React.FC = ({ */ width={terminalWidth} paddingRight={TOOL_MESSAGE_HORIZONTAL_MARGIN} + marginBottom={1} > {visibleToolCalls.map((tool, index) => { const isFirst = index === 0; diff --git a/packages/cli/src/ui/components/messages/__snapshots__/ToolGroupMessage.test.tsx.snap b/packages/cli/src/ui/components/messages/__snapshots__/ToolGroupMessage.test.tsx.snap index 05c832d46d..91ec0579af 100644 --- a/packages/cli/src/ui/components/messages/__snapshots__/ToolGroupMessage.test.tsx.snap +++ b/packages/cli/src/ui/components/messages/__snapshots__/ToolGroupMessage.test.tsx.snap @@ -5,7 +5,8 @@ exports[` > Ask User Filtering > filtering logic for status= │ x Ask User │ │ │ │ error message │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Ask User Filtering > filtering logic for status='success' and hasResult='test result' 1`] = ` @@ -13,7 +14,8 @@ exports[` > Ask User Filtering > filtering logic for status= │ ✓ Ask User │ │ │ │ test result │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Ask User Filtering > shows other tools when ask_user is filtered out 1`] = ` @@ -21,7 +23,8 @@ exports[` > Ask User Filtering > shows other tools when ask_ │ ✓ other-tool A tool for testing │ │ │ │ Test result │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Border Color Logic > uses gray border when all tools are successful and no shell commands 1`] = ` @@ -33,7 +36,8 @@ exports[` > Border Color Logic > uses gray border when all t │ ✓ another-tool A tool for testing │ │ │ │ Test result │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Border Color Logic > uses yellow border for shell commands even when successful 1`] = ` @@ -41,7 +45,8 @@ exports[` > Border Color Logic > uses yellow border for shel │ ✓ run_shell_command A tool for testing │ │ │ │ Test result │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Golden Snapshots > renders empty tool calls array 1`] = `""`; @@ -50,13 +55,13 @@ exports[` > Golden Snapshots > renders header when scrolled "╭──────────────────────────────────────────────────────────────────────────╮ │ ✓ tool-1 Description 1. This is a long description that will need to b… │ │──────────────────────────────────────────────────────────────────────────│ -│ line5 │ █ -│ │ █ +│ │ ▄ │ ✓ tool-2 Description 2 │ █ │ │ █ │ line1 │ █ │ line2 │ █ -╰──────────────────────────────────────────────────────────────────────────╯ █" +╰──────────────────────────────────────────────────────────────────────────╯ █ + █" `; exports[` > Golden Snapshots > renders mixed tool calls including shell command 1`] = ` @@ -68,7 +73,8 @@ exports[` > Golden Snapshots > renders mixed tool calls incl │ ⊷ run_shell_command Run command │ │ │ │ Test result │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Golden Snapshots > renders multiple tool calls with different statuses (only visible ones) 1`] = ` @@ -80,7 +86,8 @@ exports[` > Golden Snapshots > renders multiple tool calls w │ x error-tool This tool failed │ │ │ │ Test result │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Golden Snapshots > renders single successful tool call 1`] = ` @@ -88,7 +95,8 @@ exports[` > Golden Snapshots > renders single successful too │ ✓ test-tool A tool for testing │ │ │ │ Test result │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Golden Snapshots > renders tool call with outputFile 1`] = ` @@ -97,16 +105,17 @@ exports[` > Golden Snapshots > renders tool call with output │ │ │ Test result │ │ Output too long and was saved to: /path/to/output.txt │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Golden Snapshots > renders two tool groups where only the last line of the previous group is visible 1`] = ` -"╰──────────────────────────────────────────────────────────────────────────╯ -╭──────────────────────────────────────────────────────────────────────────╮ +"╭──────────────────────────────────────────────────────────────────────────╮ │ ✓ tool-2 Description 2 │ -│ │ ▄ -│ line1 │ █ -╰──────────────────────────────────────────────────────────────────────────╯ █" +│ │ +│ line1 │ ▄ +╰──────────────────────────────────────────────────────────────────────────╯ █ + █" `; exports[` > Golden Snapshots > renders with limited terminal height 1`] = ` @@ -118,7 +127,8 @@ exports[` > Golden Snapshots > renders with limited terminal │ ✓ another-tool Another tool │ │ │ │ More output here │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; exports[` > Golden Snapshots > renders with narrow terminal width 1`] = ` @@ -126,7 +136,8 @@ exports[` > Golden Snapshots > renders with narrow terminal │ ✓ very-long-tool-name-that-mig… │ │ │ │ Test result │ -╰──────────────────────────────────╯" +╰──────────────────────────────────╯ +" `; exports[` > Height Calculation > calculates available height correctly with multiple tools with results 1`] = ` @@ -141,5 +152,6 @@ exports[` > Height Calculation > calculates available height │ │ │ ✓ test-tool A tool for testing │ │ │ -╰──────────────────────────────────────────────────────────────────────────╯" +╰──────────────────────────────────────────────────────────────────────────╯ +" `; diff --git a/packages/cli/src/ui/components/messages/__snapshots__/ToolResultDisplayOverflow.test.tsx.snap b/packages/cli/src/ui/components/messages/__snapshots__/ToolResultDisplayOverflow.test.tsx.snap index 5d64da232b..3854b291db 100644 --- a/packages/cli/src/ui/components/messages/__snapshots__/ToolResultDisplayOverflow.test.tsx.snap +++ b/packages/cli/src/ui/components/messages/__snapshots__/ToolResultDisplayOverflow.test.tsx.snap @@ -4,11 +4,13 @@ exports[`ToolResultDisplay Overflow > should display "press ctrl-o" hint when co "╭──────────────────────────────────────────────────────────────────────────╮ │ ✓ test-tool a test tool │ │ │ -│ ... first 46 lines hidden ... │ +│ ... first 45 lines hidden ... │ +│ line 46 │ │ line 47 │ │ line 48 │ │ line 49 │ │ line 50 │ ╰──────────────────────────────────────────────────────────────────────────╯ - Press ctrl-o to show more lines" + Press ctrl-o to show more lines +" `; diff --git a/packages/cli/src/ui/components/messages/__snapshots__/ToolStickyHeaderRegression.test.tsx.snap b/packages/cli/src/ui/components/messages/__snapshots__/ToolStickyHeaderRegression.test.tsx.snap index 58cb3697f3..06914fed05 100644 --- a/packages/cli/src/ui/components/messages/__snapshots__/ToolStickyHeaderRegression.test.tsx.snap +++ b/packages/cli/src/ui/components/messages/__snapshots__/ToolStickyHeaderRegression.test.tsx.snap @@ -2,7 +2,7 @@ exports[`ToolMessage Sticky Header Regression > verifies that ShellToolMessage in a ToolGroupMessage in a ScrollableList has sticky headers 1`] = ` "╭────────────────────────────────────────────────────────────────────────╮ █ -│ ✓ Shell Command Description for Shell Command │ █ +│ ✓ Shell Command Description for Shell Command │ ▀ │ │ │ shell-01 │ │ shell-02 │" @@ -10,7 +10,7 @@ exports[`ToolMessage Sticky Header Regression > verifies that ShellToolMessage i exports[`ToolMessage Sticky Header Regression > verifies that ShellToolMessage in a ToolGroupMessage in a ScrollableList has sticky headers 2`] = ` "╭────────────────────────────────────────────────────────────────────────╮ -│ ✓ Shell Command Description for Shell Command │ ▄ +│ ✓ Shell Command Description for Shell Command │ │────────────────────────────────────────────────────────────────────────│ █ │ shell-06 │ ▀ │ shell-07 │"