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 │"