From a0bed3e7169eb6ce89b283b4c1dc0107e3851572 Mon Sep 17 00:00:00 2001 From: Seth Troisi Date: Mon, 5 May 2025 17:52:29 +0000 Subject: Have /clear clear content by remounting (#250) --- packages/cli/src/ui/App.tsx | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'packages/cli/src/ui/App.tsx') diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index 194a18cf..e116c524 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -4,7 +4,7 @@ * SPDX-License-Identifier: Apache-2.0 */ -import React, { useState, useMemo, useCallback } from 'react'; +import React, { useCallback, useMemo, useRef, useState } from 'react'; import { Box, Static, Text, useStdout } from 'ink'; import { StreamingState, type HistoryItem } from './types.js'; import { useGeminiStream } from './hooks/useGeminiStream.js'; @@ -44,13 +44,18 @@ export const App = ({ config, settings, cliVersion }: AppProps) => { handleThemeHighlight, } = useThemeCommand(settings); + const [staticKey, setStaticKey] = useState(0); + const refreshStatic = useCallback(() => { + setStaticKey((prev) => prev + 1); + }, [setStaticKey]); + const { streamingState, submitQuery, initError, debugMessage, slashCommands, - } = useGeminiStream(setHistory, config, openThemeDialog); + } = useGeminiStream(setHistory, refreshStatic, config, openThemeDialog); const { elapsedTime, currentLoadingPhrase } = useLoadingIndicator(streamingState); @@ -124,7 +129,10 @@ export const App = ({ config, settings, cliVersion }: AppProps) => { * content is set it'll flush content to the terminal and move the area which it's "clearing" * down a notch. Without Static the area which gets erased and redrawn continuously grows. */} - + {(item, index) => { if (item === 'header') { return ( -- cgit v1.2.3