fix: terminal flicker when subagent is executing

This commit is contained in:
tanzhenxin
2025-09-17 17:01:06 +08:00
parent 5f90472a7d
commit e552bc9609
5 changed files with 120 additions and 27 deletions

View File

@@ -723,8 +723,11 @@ const App = ({ config, settings, startupWarnings = [], version }: AppProps) => {
);
const { handleInput: vimHandleInput } = useVim(buffer, handleFinalSubmit);
const pendingHistoryItems = [...pendingSlashCommandHistoryItems];
pendingHistoryItems.push(...pendingGeminiHistoryItems);
const pendingHistoryItems = useMemo(() => {
const items = [...pendingSlashCommandHistoryItems];
items.push(...pendingGeminiHistoryItems);
return items.map((item, i) => ({ ...item, id: i }));
}, [pendingSlashCommandHistoryItems, pendingGeminiHistoryItems]);
const { elapsedTime, currentLoadingPhrase } =
useLoadingIndicator(streamingState);
@@ -1070,16 +1073,14 @@ const App = ({ config, settings, startupWarnings = [], version }: AppProps) => {
</Static>
<OverflowProvider>
<Box ref={pendingHistoryItemRef} flexDirection="column">
{pendingHistoryItems.map((item, i) => (
{pendingHistoryItems.map((item) => (
<HistoryItemDisplay
key={i}
key={item.id}
availableTerminalHeight={
constrainHeight ? availableTerminalHeight : undefined
}
terminalWidth={mainAreaWidth}
// TODO(taehykim): It seems like references to ids aren't necessary in
// HistoryItemDisplay. Refactor later. Use a fake id for now.
item={{ ...item, id: 0 }}
item={item}
isPending={true}
config={config}
isFocused={!isEditorDialogOpen}