summaryrefslogtreecommitdiff
path: root/packages/cli/src/ui/components/HistoryDisplay.tsx
diff options
context:
space:
mode:
authorTaylor Mullen <[email protected]>2025-04-25 17:11:08 -0700
committerN. Taylor Mullen <[email protected]>2025-04-26 16:08:05 -0700
commit5be89befeff9c4d4f3ab9f508f030bc153fdd06b (patch)
tree9d4f679a0e7292132cab04fdd3c24062fcd66ce8 /packages/cli/src/ui/components/HistoryDisplay.tsx
parentaa65a4a1fc3f51589c7633217f9d3c8bd0141abb (diff)
feat: Fix flickering in iTerm + scrolling + performance issues.
- Refactors history display using Ink's <Static> component to prevent flickering and improve performance by rendering completed items statically. - Introduces ConsolePatcher component to capture and display console.log, console.warn, and console.error output within the Ink UI, addressing native handling issues. - Introduce a new content splitting mechanism to work better for static items. Basically when content gets too long we will now split content into multiple blocks for Gemini messages to ensure that we can statically cache larger pieces of history. Fixes: - https://b.corp.google.com/issues/411450097 - https://b.corp.google.com/issues/412716309
Diffstat (limited to 'packages/cli/src/ui/components/HistoryDisplay.tsx')
-rw-r--r--packages/cli/src/ui/components/HistoryDisplay.tsx43
1 files changed, 0 insertions, 43 deletions
diff --git a/packages/cli/src/ui/components/HistoryDisplay.tsx b/packages/cli/src/ui/components/HistoryDisplay.tsx
deleted file mode 100644
index 914b84c2..00000000
--- a/packages/cli/src/ui/components/HistoryDisplay.tsx
+++ /dev/null
@@ -1,43 +0,0 @@
-/**
- * @license
- * Copyright 2025 Google LLC
- * SPDX-License-Identifier: Apache-2.0
- */
-
-import React from 'react';
-import { Box } from 'ink';
-import type { HistoryItem } from '../types.js';
-import { UserMessage } from './messages/UserMessage.js';
-import { GeminiMessage } from './messages/GeminiMessage.js';
-import { InfoMessage } from './messages/InfoMessage.js';
-import { ErrorMessage } from './messages/ErrorMessage.js';
-import { ToolGroupMessage } from './messages/ToolGroupMessage.js';
-import { PartListUnion } from '@google/genai';
-
-interface HistoryDisplayProps {
- history: HistoryItem[];
- onSubmit: (value: PartListUnion) => void;
-}
-
-export const HistoryDisplay: React.FC<HistoryDisplayProps> = ({
- history,
- onSubmit,
-}) => (
- // No grouping logic needed here anymore
- <Box flexDirection="column">
- {history.map((item) => (
- <Box key={item.id} marginBottom={1}>
- {/* Render standard message types */}
- {item.type === 'user' && <UserMessage text={item.text} />}
- {item.type === 'gemini' && <GeminiMessage text={item.text} />}
- {item.type === 'info' && <InfoMessage text={item.text} />}
- {item.type === 'error' && <ErrorMessage text={item.text} />}
-
- {/* Render the tool group component */}
- {item.type === 'tool_group' && (
- <ToolGroupMessage toolCalls={item.tools} onSubmit={onSubmit} />
- )}
- </Box>
- ))}
- </Box>
-);