feat(ui): Re-apply Dense Tool Output features

This commit is contained in:
Jarrod Whelan
2026-02-09 20:46:37 -08:00
parent eb94284256
commit 142ccf2140
27 changed files with 1165 additions and 621 deletions
+22 -4
View File
@@ -20,6 +20,8 @@ import { MAX_GEMINI_MESSAGE_LINES } from '../constants.js';
import { useConfirmingTool } from '../hooks/useConfirmingTool.js';
import { ToolConfirmationQueue } from './ToolConfirmationQueue.js';
import { useConfig } from '../contexts/ConfigContext.js';
import { VERBOSITY_MAPPING, Verbosity } from '../types.js';
import { useSettings } from '../contexts/SettingsContext.js';
const MemoizedHistoryItemDisplay = memo(HistoryItemDisplay);
const MemoizedAppHeader = memo(AppHeader);
@@ -32,6 +34,7 @@ export const MainContent = () => {
const { version } = useAppContext();
const uiState = useUIState();
const config = useConfig();
const settings = useSettings();
const isAlternateBuffer = useAlternateBuffer();
const confirmingTool = useConfirmingTool();
@@ -53,9 +56,24 @@ export const MainContent = () => {
availableTerminalHeight,
} = uiState;
const currentVerbosity =
VERBOSITY_MAPPING[settings.merged.output?.verbosity ?? 'info'] ??
Verbosity.INFO;
const filteredHistory = useMemo(
() =>
uiState.history.filter((item) => {
const itemType = item.type;
const itemVerbosity =
item.verbosity ?? VERBOSITY_MAPPING[itemType] ?? Verbosity.INFO;
return itemVerbosity <= currentVerbosity;
}),
[uiState.history, currentVerbosity],
);
const historyItems = useMemo(
() =>
uiState.history.map((h) => (
filteredHistory.map((h) => (
<MemoizedHistoryItemDisplay
terminalWidth={mainAreaWidth}
availableTerminalHeight={staticAreaMaxItemHeight}
@@ -67,7 +85,7 @@ export const MainContent = () => {
/>
)),
[
uiState.history,
filteredHistory,
mainAreaWidth,
staticAreaMaxItemHeight,
uiState.slashCommands,
@@ -116,10 +134,10 @@ export const MainContent = () => {
const virtualizedData = useMemo(
() => [
{ type: 'header' as const },
...uiState.history.map((item) => ({ type: 'history' as const, item })),
...filteredHistory.map((item) => ({ type: 'history' as const, item })),
{ type: 'pending' as const },
],
[uiState.history],
[filteredHistory],
);
const renderItem = useCallback(