Move summarize button inside of context view (#4015)

This commit is contained in:
David Katz
2025-08-12 11:36:29 -04:00
committed by GitHub
parent 3201381354
commit dab1415fdd
5 changed files with 103 additions and 12 deletions
+16 -11
View File
@@ -1,5 +1,5 @@
import React, { useRef, useState, useEffect, useMemo } from 'react';
import { FolderKey } from 'lucide-react';
import { FolderKey, ScrollText } from 'lucide-react';
import { Tooltip, TooltipContent, TooltipTrigger } from './ui/Tooltip';
import { Button } from './ui/button';
import type { View } from '../App';
@@ -12,7 +12,6 @@ import { Message } from '../types/message';
import { DirSwitcher } from './bottom_menu/DirSwitcher';
import ModelsBottomBar from './settings/models/bottom_bar/ModelsBottomBar';
import { BottomMenuModeSelection } from './bottom_menu/BottomMenuModeSelection';
import { ManualCompactButton } from './context_management/ManualCompactButton';
import { AlertType, useAlerts } from './alerts';
import { useToolCount } from './alerts/useToolCount';
import { useConfig } from './ConfigContext';
@@ -110,7 +109,7 @@ export default function ChatInput({
const { alerts, addAlert, clearAlerts } = useAlerts();
const dropdownRef = useRef<HTMLDivElement>(null);
const toolCount = useToolCount();
const { isLoadingCompaction } = useChatContextManager();
const { isLoadingCompaction, handleManualCompaction } = useChatContextManager();
const { getProviders, read } = useConfig();
const { getCurrentModelAndProvider, currentModel, currentProvider } = useModelAndProvider();
const [tokenLimit, setTokenLimit] = useState<number>(TOKEN_LIMIT_DEFAULT);
@@ -420,7 +419,7 @@ export default function ChatInput({
autoShow: true, // Auto-show token limit warnings
});
} else {
// Show info alert only when not in warning/error state
// Show info alert with summarize button
addAlert({
type: AlertType.Info,
message: 'Context window',
@@ -428,6 +427,11 @@ export default function ChatInput({
current: numTokens,
total: tokenLimit,
},
showSummarizeButton: true,
onSummarize: () => {
handleManualCompaction(messages, setMessages);
},
summarizeIcon: <ScrollText size={12} />,
});
}
} else if (isTokenLimitLoaded && tokenLimit) {
@@ -439,6 +443,14 @@ export default function ChatInput({
current: 0,
total: tokenLimit,
},
showSummarizeButton: messages.length > 0,
onSummarize:
messages.length > 0
? () => {
handleManualCompaction(messages, setMessages);
}
: undefined,
summarizeIcon: messages.length > 0 ? <ScrollText size={12} /> : undefined,
});
}
@@ -1286,13 +1298,6 @@ export default function ChatInput({
</Tooltip>
<div className="w-px h-4 bg-border-default mx-2" />
<BottomMenuModeSelection />
{messages.length > 0 && (
<ManualCompactButton
messages={messages}
isLoading={isLoading}
setMessages={setMessages}
/>
)}
<div className="w-px h-4 bg-border-default mx-2" />
<div className="flex items-center h-full">
<Tooltip>