diff --git a/packages/cli/src/commands/dashboard-tui/app.tsx b/packages/cli/src/commands/dashboard-tui/app.tsx index 51c89657a..b789e78b7 100644 --- a/packages/cli/src/commands/dashboard-tui/app.tsx +++ b/packages/cli/src/commands/dashboard-tui/app.tsx @@ -750,10 +750,15 @@ function StatusModeGrid({ const logsShare = Math.max(1, middleHeight - SYSTEM_HEIGHT - bottomShare); // LogsPanel chrome: border 2 + title 1 + filter 1 = 4. const logsAvailableRows = Math.max(1, logsShare - 4); - // On very wide terminals, lift Stats up next to Logs so the bottom row only - // holds Utilities + Settings. Logs gets the row budget that Stats vacated. + // On very wide terminals, the left column stacks Stats + Utilities + Settings + // and Logs takes the full right column for its full height. Stats absorbs + // whatever vertical room Utilities/Settings don't claim. const wideLayout = cols >= 150; const wideLogsAvailableRows = Math.max(1, logsShare + bottomShare - 4); + // Fixed heights for Utilities (7 actions + 3 chrome) and Settings (9 keys + + // 3 chrome). Stats flex-grows above these so it gets the leftover space. + const UTILITIES_HEIGHT = 10; + const SETTINGS_HEIGHT = 12; tuiDebug("StatusModeGrid", { cols, rows, middleHeight, logsShare, bottomShare, focused, wideLayout }); return ( @@ -770,10 +775,20 @@ function StatusModeGrid({ {wideLayout ? ( <> - {/* Wide: Stats sits left of Logs and absorbs the bottom-row height. */} + {/* Wide: left column stacks Stats / Utilities / Settings; Logs fills + the right column for the full middle-area height. Stats flex-grows + so it claims any space Utilities/Settings don't need. */} - + + + + + + + + + - - - - - - - - ) : ( <>