diff --git a/docs/cli/commands.md b/docs/cli/commands.md index d258bc2d..aa056a43 100644 --- a/docs/cli/commands.md +++ b/docs/cli/commands.md @@ -145,16 +145,6 @@ Slash commands provide meta-level control over the CLI itself. - **`nodesc`** or **`nodescriptions`**: - **Description:** Hide tool descriptions, showing only the tool names. -- **`/quit-confirm`** - - **Description:** Show a confirmation dialog before exiting Qwen Code, allowing you to choose how to handle your current session. - - **Usage:** `/quit-confirm` - - **Features:** - - **Quit immediately:** Exit without saving anything (equivalent to `/quit`) - - **Generate summary and quit:** Create a project summary using `/summary` before exiting - - **Save conversation and quit:** Save the current conversation with an auto-generated tag before exiting - - **Keyboard shortcut:** Press **Ctrl+C** twice to trigger the quit confirmation dialog - - **Note:** This command is automatically triggered when you press Ctrl+C once, providing a safety mechanism to prevent accidental exits. - - **`/quit`** (or **`/exit`**) - **Description:** Exit Qwen Code immediately without any confirmation dialog. diff --git a/docs/cli/configuration-v1.md b/docs/cli/configuration-v1.md index 5127bbe2..2037db8d 100644 --- a/docs/cli/configuration-v1.md +++ b/docs/cli/configuration-v1.md @@ -671,4 +671,4 @@ Note: When usage statistics are enabled, events are sent to an Alibaba Cloud RUM - **Category:** UI - **Requires Restart:** No - **Example:** `"enableWelcomeBack": false` - - **Details:** When enabled, Qwen Code will automatically detect if you're returning to a project with a previously generated project summary (`.qwen/PROJECT_SUMMARY.md`) and show a dialog allowing you to continue your previous conversation or start fresh. This feature integrates with the `/summary` command and quit confirmation dialog. See the [Welcome Back documentation](./welcome-back.md) for more details. + - **Details:** When enabled, Qwen Code will automatically detect if you're returning to a project with a previously generated project summary (`.qwen/PROJECT_SUMMARY.md`) and show a dialog allowing you to continue your previous conversation or start fresh. This feature integrates with the `/summary` command. See the [Welcome Back documentation](./welcome-back.md) for more details. diff --git a/docs/features/welcome-back.md b/docs/features/welcome-back.md index 7175406b..1ce552ee 100644 --- a/docs/features/welcome-back.md +++ b/docs/features/welcome-back.md @@ -81,14 +81,6 @@ The Welcome Back feature works seamlessly with the `/summary` command: 2. **Automatic Detection:** Next time you start Qwen Code in this project, Welcome Back will detect the summary 3. **Resume Work:** Choose to continue and the summary will be loaded as context -### Quit Confirmation - -When exiting with `/quit-confirm` and choosing "Generate summary and quit": - -1. A project summary is automatically created -2. Next session will trigger the Welcome Back dialog -3. You can seamlessly continue your work - ## File Structure The Welcome Back feature creates and uses: diff --git a/packages/cli/src/i18n/locales/en.js b/packages/cli/src/i18n/locales/en.js index 3ab57edb..c2217757 100644 --- a/packages/cli/src/i18n/locales/en.js +++ b/packages/cli/src/i18n/locales/en.js @@ -110,7 +110,6 @@ export default { 'open full Qwen Code documentation in your browser', 'Configuration not available.': 'Configuration not available.', 'change the auth method': 'change the auth method', - 'Show quit confirmation dialog': 'Show quit confirmation dialog', 'Copy the last result or code snippet to clipboard': 'Copy the last result or code snippet to clipboard', @@ -690,18 +689,6 @@ export default { 'A custom command wants to run the following shell commands:': 'A custom command wants to run the following shell commands:', - // ============================================================================ - // Dialogs - Quit Confirmation - // ============================================================================ - 'What would you like to do before exiting?': - 'What would you like to do before exiting?', - 'Quit immediately (/quit)': 'Quit immediately (/quit)', - 'Generate summary and quit (/summary)': - 'Generate summary and quit (/summary)', - 'Save conversation and quit (/chat save)': - 'Save conversation and quit (/chat save)', - 'Cancel (stay in application)': 'Cancel (stay in application)', - // ============================================================================ // Dialogs - Pro Quota // ============================================================================ diff --git a/packages/cli/src/i18n/locales/zh.js b/packages/cli/src/i18n/locales/zh.js index 474753ae..adeb85f1 100644 --- a/packages/cli/src/i18n/locales/zh.js +++ b/packages/cli/src/i18n/locales/zh.js @@ -108,7 +108,6 @@ export default { '在浏览器中打开完整的 Qwen Code 文档', 'Configuration not available.': '配置不可用', 'change the auth method': '更改认证方法', - 'Show quit confirmation dialog': '显示退出确认对话框', 'Copy the last result or code snippet to clipboard': '将最后的结果或代码片段复制到剪贴板', @@ -655,15 +654,6 @@ export default { 'A custom command wants to run the following shell commands:': '自定义命令想要运行以下 shell 命令:', - // ============================================================================ - // Dialogs - Quit Confirmation - // ============================================================================ - 'What would you like to do before exiting?': '退出前您想要做什么?', - 'Quit immediately (/quit)': '立即退出 (/quit)', - 'Generate summary and quit (/summary)': '生成摘要并退出 (/summary)', - 'Save conversation and quit (/chat save)': '保存对话并退出 (/chat save)', - 'Cancel (stay in application)': '取消(留在应用程序中)', - // ============================================================================ // Dialogs - Pro Quota // ============================================================================ diff --git a/packages/cli/src/services/BuiltinCommandLoader.test.ts b/packages/cli/src/services/BuiltinCommandLoader.test.ts index 67f8ee72..9d649b2f 100644 --- a/packages/cli/src/services/BuiltinCommandLoader.test.ts +++ b/packages/cli/src/services/BuiltinCommandLoader.test.ts @@ -71,7 +71,6 @@ vi.mock('../ui/commands/modelCommand.js', () => ({ })); vi.mock('../ui/commands/quitCommand.js', () => ({ quitCommand: {}, - quitConfirmCommand: {}, })); vi.mock('../ui/commands/statsCommand.js', () => ({ statsCommand: {} })); vi.mock('../ui/commands/themeCommand.js', () => ({ themeCommand: {} })); diff --git a/packages/cli/src/services/BuiltinCommandLoader.ts b/packages/cli/src/services/BuiltinCommandLoader.ts index 8be63a8e..100fbef9 100644 --- a/packages/cli/src/services/BuiltinCommandLoader.ts +++ b/packages/cli/src/services/BuiltinCommandLoader.ts @@ -28,7 +28,7 @@ import { mcpCommand } from '../ui/commands/mcpCommand.js'; import { memoryCommand } from '../ui/commands/memoryCommand.js'; import { modelCommand } from '../ui/commands/modelCommand.js'; import { permissionsCommand } from '../ui/commands/permissionsCommand.js'; -import { quitCommand, quitConfirmCommand } from '../ui/commands/quitCommand.js'; +import { quitCommand } from '../ui/commands/quitCommand.js'; import { restoreCommand } from '../ui/commands/restoreCommand.js'; import { settingsCommand } from '../ui/commands/settingsCommand.js'; import { statsCommand } from '../ui/commands/statsCommand.js'; @@ -77,7 +77,6 @@ export class BuiltinCommandLoader implements ICommandLoader { modelCommand, ...(this.config?.getFolderTrust() ? [permissionsCommand] : []), quitCommand, - quitConfirmCommand, restoreCommand(this.config), statsCommand, summaryCommand, diff --git a/packages/cli/src/ui/AppContainer.tsx b/packages/cli/src/ui/AppContainer.tsx index ebcc14f6..edda3d4d 100644 --- a/packages/cli/src/ui/AppContainer.tsx +++ b/packages/cli/src/ui/AppContainer.tsx @@ -89,7 +89,6 @@ import { useSessionStats } from './contexts/SessionContext.js'; import { useGitBranchName } from './hooks/useGitBranchName.js'; import { useExtensionUpdates } from './hooks/useExtensionUpdates.js'; import { ShellFocusContext } from './contexts/ShellFocusContext.js'; -import { useQuitConfirmation } from './hooks/useQuitConfirmation.js'; import { t } from '../i18n/index.js'; import { useWelcomeBack } from './hooks/useWelcomeBack.js'; import { useDialogClose } from './hooks/useDialogClose.js'; @@ -446,8 +445,6 @@ export const AppContainer = (props: AppContainerProps) => { const { toggleVimEnabled } = useVimMode(); - const { showQuitConfirmation } = useQuitConfirmation(); - const { isSubagentCreateDialogOpen, openSubagentCreateDialog, @@ -493,7 +490,6 @@ export const AppContainer = (props: AppContainerProps) => { addConfirmUpdateExtensionRequest, openSubagentCreateDialog, openAgentsManagerDialog, - _showQuitConfirmation: showQuitConfirmation, }), [ openAuthDialog, @@ -507,7 +503,6 @@ export const AppContainer = (props: AppContainerProps) => { openPermissionsDialog, openApprovalModeDialog, addConfirmUpdateExtensionRequest, - showQuitConfirmation, openSubagentCreateDialog, openAgentsManagerDialog, ], @@ -520,7 +515,6 @@ export const AppContainer = (props: AppContainerProps) => { commandContext, shellConfirmationRequest, confirmationRequest, - quitConfirmationRequest, } = useSlashCommandProcessor( config, settings, @@ -969,7 +963,6 @@ export const AppContainer = (props: AppContainerProps) => { isFolderTrustDialogOpen, showWelcomeBackDialog, handleWelcomeBackClose, - quitConfirmationRequest, }); const handleExit = useCallback( @@ -983,25 +976,18 @@ export const AppContainer = (props: AppContainerProps) => { if (timerRef.current) { clearTimeout(timerRef.current); } - // Exit directly without showing confirmation dialog + // Exit directly handleSlashCommand('/quit'); return; } // First press: Prioritize cleanup tasks - // Special case: If quit-confirm dialog is open, Ctrl+C means "quit immediately" - if (quitConfirmationRequest) { - handleSlashCommand('/quit'); - return; - } - // 1. Close other dialogs (highest priority) /** * For AuthDialog it is required to complete the authentication process, * otherwise user cannot proceed to the next step. - * So a quit on AuthDialog should go with normal two press quit - * and without quit-confirm dialog. + * So a quit on AuthDialog should go with normal two press quit. */ if (isAuthDialogOpen) { setPressedOnce(true); @@ -1022,14 +1008,17 @@ export const AppContainer = (props: AppContainerProps) => { return; // Request cancelled, end processing } - // 3. Clear input buffer (if has content) + // 4. Clear input buffer (if has content) if (buffer.text.length > 0) { buffer.setText(''); return; // Input cleared, end processing } - // All cleanup tasks completed, show quit confirmation dialog - handleSlashCommand('/quit-confirm'); + // All cleanup tasks completed, set flag for double-press to quit + setPressedOnce(true); + timerRef.current = setTimeout(() => { + setPressedOnce(false); + }, CTRL_EXIT_PROMPT_DURATION_MS); }, [ isAuthDialogOpen, @@ -1037,7 +1026,6 @@ export const AppContainer = (props: AppContainerProps) => { closeAnyOpenDialog, streamingState, cancelOngoingRequest, - quitConfirmationRequest, buffer, ], ); @@ -1054,8 +1042,8 @@ export const AppContainer = (props: AppContainerProps) => { return; } - // On first press: set flag, start timer, and call handleExit for cleanup/quit-confirm - // On second press (within 500ms): handleExit sees flag and does fast quit + // On first press: set flag, start timer, and call handleExit for cleanup + // On second press (within timeout): handleExit sees flag and does fast quit if (!ctrlCPressedOnce) { setCtrlCPressedOnce(true); ctrlCTimerRef.current = setTimeout(() => { @@ -1196,7 +1184,6 @@ export const AppContainer = (props: AppContainerProps) => { !!confirmationRequest || confirmUpdateExtensionRequests.length > 0 || !!loopDetectionConfirmationRequest || - !!quitConfirmationRequest || isThemeDialogOpen || isSettingsDialogOpen || isModelDialogOpen || @@ -1245,7 +1232,6 @@ export const AppContainer = (props: AppContainerProps) => { confirmationRequest, confirmUpdateExtensionRequests, loopDetectionConfirmationRequest, - quitConfirmationRequest, geminiMdFileCount, streamingState, initError, @@ -1337,7 +1323,6 @@ export const AppContainer = (props: AppContainerProps) => { confirmationRequest, confirmUpdateExtensionRequests, loopDetectionConfirmationRequest, - quitConfirmationRequest, geminiMdFileCount, streamingState, initError, diff --git a/packages/cli/src/ui/commands/quitCommand.ts b/packages/cli/src/ui/commands/quitCommand.ts index fc9683c9..4e9da3a0 100644 --- a/packages/cli/src/ui/commands/quitCommand.ts +++ b/packages/cli/src/ui/commands/quitCommand.ts @@ -8,35 +8,6 @@ import { formatDuration } from '../utils/formatters.js'; import { CommandKind, type SlashCommand } from './types.js'; import { t } from '../../i18n/index.js'; -export const quitConfirmCommand: SlashCommand = { - name: 'quit-confirm', - get description() { - return t('Show quit confirmation dialog'); - }, - kind: CommandKind.BUILT_IN, - action: (context) => { - const now = Date.now(); - const { sessionStartTime } = context.session.stats; - const wallDuration = now - sessionStartTime.getTime(); - - return { - type: 'quit_confirmation', - messages: [ - { - type: 'user', - text: `/quit-confirm`, - id: now - 1, - }, - { - type: 'quit_confirmation', - duration: formatDuration(wallDuration), - id: now, - }, - ], - }; - }, -}; - export const quitCommand: SlashCommand = { name: 'quit', altNames: ['exit'], diff --git a/packages/cli/src/ui/commands/types.ts b/packages/cli/src/ui/commands/types.ts index 69d6e9d4..a2a352cb 100644 --- a/packages/cli/src/ui/commands/types.ts +++ b/packages/cli/src/ui/commands/types.ts @@ -100,12 +100,6 @@ export interface QuitActionReturn { messages: HistoryItem[]; } -/** The return type for a command action that requests quit confirmation. */ -export interface QuitConfirmationActionReturn { - type: 'quit_confirmation'; - messages: HistoryItem[]; -} - /** * The return type for a command action that results in a simple message * being displayed to the user. @@ -182,7 +176,6 @@ export type SlashCommandActionReturn = | ToolActionReturn | MessageActionReturn | QuitActionReturn - | QuitConfirmationActionReturn | OpenDialogActionReturn | LoadHistoryActionReturn | SubmitPromptActionReturn diff --git a/packages/cli/src/ui/components/DialogManager.tsx b/packages/cli/src/ui/components/DialogManager.tsx index 2f6f8636..d696c87a 100644 --- a/packages/cli/src/ui/components/DialogManager.tsx +++ b/packages/cli/src/ui/components/DialogManager.tsx @@ -36,10 +36,6 @@ import { WelcomeBackDialog } from './WelcomeBackDialog.js'; import { ModelSwitchDialog } from './ModelSwitchDialog.js'; import { AgentCreationWizard } from './subagents/create/AgentCreationWizard.js'; import { AgentsManagerDialog } from './subagents/manage/AgentsManagerDialog.js'; -import { - QuitConfirmationDialog, - QuitChoice, -} from './QuitConfirmationDialog.js'; interface DialogManagerProps { addItem: UseHistoryManagerReturn['addItem']; @@ -127,24 +123,6 @@ export const DialogManager = ({ /> ); } - if (uiState.quitConfirmationRequest) { - return ( - { - if (choice === QuitChoice.CANCEL) { - uiState.quitConfirmationRequest?.onConfirm(false, 'cancel'); - } else if (choice === QuitChoice.QUIT) { - uiState.quitConfirmationRequest?.onConfirm(true, 'quit'); - } else if (choice === QuitChoice.SUMMARY_AND_QUIT) { - uiState.quitConfirmationRequest?.onConfirm( - true, - 'summary_and_quit', - ); - } - }} - /> - ); - } if (uiState.confirmationRequest) { return ( = ({ {itemForDisplay.type === 'quit' && ( )} - {itemForDisplay.type === 'quit_confirmation' && ( - - )} {itemForDisplay.type === 'tool_group' && ( void; -} - -export const QuitConfirmationDialog: React.FC = ({ - onSelect, -}) => { - useKeypress( - (key) => { - if (key.name === 'escape') { - onSelect(QuitChoice.CANCEL); - } - }, - { isActive: true }, - ); - - const options: Array> = [ - { - key: 'quit', - label: t('Quit immediately (/quit)'), - value: QuitChoice.QUIT, - }, - { - key: 'summary-and-quit', - label: t('Generate summary and quit (/summary)'), - value: QuitChoice.SUMMARY_AND_QUIT, - }, - { - key: 'cancel', - label: t('Cancel (stay in application)'), - value: QuitChoice.CANCEL, - }, - ]; - - return ( - - - {t('What would you like to do before exiting?')} - - - - - ); -}; diff --git a/packages/cli/src/ui/contexts/UIStateContext.tsx b/packages/cli/src/ui/contexts/UIStateContext.tsx index 21ff5389..ac2f5f10 100644 --- a/packages/cli/src/ui/contexts/UIStateContext.tsx +++ b/packages/cli/src/ui/contexts/UIStateContext.tsx @@ -12,7 +12,6 @@ import type { ShellConfirmationRequest, ConfirmationRequest, LoopDetectionConfirmationRequest, - QuitConfirmationRequest, HistoryItemWithoutId, StreamingState, } from '../types.js'; @@ -69,7 +68,6 @@ export interface UIState { confirmationRequest: ConfirmationRequest | null; confirmUpdateExtensionRequests: ConfirmationRequest[]; loopDetectionConfirmationRequest: LoopDetectionConfirmationRequest | null; - quitConfirmationRequest: QuitConfirmationRequest | null; geminiMdFileCount: number; streamingState: StreamingState; initError: string | null; diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts index dc8fcea7..55fec0c3 100644 --- a/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts +++ b/packages/cli/src/ui/hooks/slashCommandProcessor.test.ts @@ -918,7 +918,6 @@ describe('useSlashCommandProcessor', () => { vi.fn(), // toggleVimEnabled vi.fn(), // setIsProcessing vi.fn(), // setGeminiMdFileCount - vi.fn(), // _showQuitConfirmation ), ); diff --git a/packages/cli/src/ui/hooks/slashCommandProcessor.ts b/packages/cli/src/ui/hooks/slashCommandProcessor.ts index 758eb972..553accb7 100644 --- a/packages/cli/src/ui/hooks/slashCommandProcessor.ts +++ b/packages/cli/src/ui/hooks/slashCommandProcessor.ts @@ -18,7 +18,6 @@ import { IdeClient, } from '@qwen-code/qwen-code-core'; import { useSessionStats } from '../contexts/SessionContext.js'; -import { formatDuration } from '../utils/formatters.js'; import type { Message, HistoryItemWithoutId, @@ -53,7 +52,6 @@ function serializeHistoryItemForRecording( const SLASH_COMMANDS_SKIP_RECORDING = new Set([ 'quit', - 'quit-confirm', 'exit', 'clear', 'reset', @@ -75,7 +73,6 @@ interface SlashCommandProcessorActions { addConfirmUpdateExtensionRequest: (request: ConfirmationRequest) => void; openSubagentCreateDialog: () => void; openAgentsManagerDialog: () => void; - _showQuitConfirmation: () => void; } /** @@ -115,10 +112,6 @@ export const useSlashCommandProcessor = ( prompt: React.ReactNode; onConfirm: (confirmed: boolean) => void; }>(null); - const [quitConfirmationRequest, setQuitConfirmationRequest] = - useState void; - }>(null); const [sessionShellAllowlist, setSessionShellAllowlist] = useState( new Set(), @@ -174,11 +167,6 @@ export const useSlashCommandProcessor = ( type: 'quit', duration: message.duration, }; - } else if (message.type === MessageType.QUIT_CONFIRMATION) { - historyItemContent = { - type: 'quit_confirmation', - duration: message.duration, - }; } else if (message.type === MessageType.COMPRESSION) { historyItemContent = { type: 'compression', @@ -449,66 +437,6 @@ export const useSlashCommandProcessor = ( }); return { type: 'handled' }; } - case 'quit_confirmation': - // Show quit confirmation dialog instead of immediately quitting - setQuitConfirmationRequest({ - onConfirm: (shouldQuit: boolean, action?: string) => { - setQuitConfirmationRequest(null); - if (!shouldQuit) { - // User cancelled the quit operation - do nothing - return; - } - if (shouldQuit) { - if (action === 'summary_and_quit') { - // Generate summary and then quit - handleSlashCommand('/summary') - .then(() => { - // Wait for user to see the summary result - setTimeout(() => { - handleSlashCommand('/quit'); - }, 1200); - }) - .catch((error) => { - // If summary fails, still quit but show error - addItemWithRecording( - { - type: 'error', - text: `Failed to generate summary before quit: ${ - error instanceof Error - ? error.message - : String(error) - }`, - }, - Date.now(), - ); - // Give user time to see the error message - setTimeout(() => { - handleSlashCommand('/quit'); - }, 1000); - }); - } else { - // Just quit immediately - trigger the actual quit action - const now = Date.now(); - const { sessionStartTime } = sessionStats; - const wallDuration = now - sessionStartTime.getTime(); - - actions.quit([ - { - type: 'user', - text: `/quit`, - id: now - 1, - }, - { - type: 'quit', - duration: formatDuration(wallDuration), - id: now, - }, - ]); - } - } - }, - }); - return { type: 'handled' }; case 'quit': actions.quit(result.messages); @@ -692,7 +620,6 @@ export const useSlashCommandProcessor = ( setSessionShellAllowlist, setIsProcessing, setConfirmationRequest, - sessionStats, ], ); @@ -703,6 +630,5 @@ export const useSlashCommandProcessor = ( commandContext, shellConfirmationRequest, confirmationRequest, - quitConfirmationRequest, }; }; diff --git a/packages/cli/src/ui/hooks/useDialogClose.ts b/packages/cli/src/ui/hooks/useDialogClose.ts index 70a06abc..298f4496 100644 --- a/packages/cli/src/ui/hooks/useDialogClose.ts +++ b/packages/cli/src/ui/hooks/useDialogClose.ts @@ -44,11 +44,6 @@ export interface DialogCloseOptions { // Welcome back dialog showWelcomeBackDialog: boolean; handleWelcomeBackClose: () => void; - - // Quit confirmation dialog - quitConfirmationRequest: { - onConfirm: (shouldQuit: boolean, action?: string) => void; - } | null; } /** @@ -96,9 +91,6 @@ export function useDialogClose(options: DialogCloseOptions) { return true; } - // Note: quitConfirmationRequest is NOT handled here anymore - // It's handled specially in handleExit - ctrl+c in quit-confirm should exit immediately - // No dialog was open return false; }, [options]); diff --git a/packages/cli/src/ui/hooks/useQuitConfirmation.ts b/packages/cli/src/ui/hooks/useQuitConfirmation.ts deleted file mode 100644 index fff0d488..00000000 --- a/packages/cli/src/ui/hooks/useQuitConfirmation.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * @license - * Copyright 2025 Google LLC - * SPDX-License-Identifier: Apache-2.0 - */ - -import { useState, useCallback } from 'react'; -import { QuitChoice } from '../components/QuitConfirmationDialog.js'; - -export const useQuitConfirmation = () => { - const [isQuitConfirmationOpen, setIsQuitConfirmationOpen] = useState(false); - - const showQuitConfirmation = useCallback(() => { - setIsQuitConfirmationOpen(true); - }, []); - - const handleQuitConfirmationSelect = useCallback((choice: QuitChoice) => { - setIsQuitConfirmationOpen(false); - - if (choice === QuitChoice.CANCEL) { - return { shouldQuit: false, action: 'cancel' }; - } else if (choice === QuitChoice.QUIT) { - return { shouldQuit: true, action: 'quit' }; - } else if (choice === QuitChoice.SUMMARY_AND_QUIT) { - return { shouldQuit: true, action: 'summary_and_quit' }; - } - - // Default to cancel if unknown choice - return { shouldQuit: false, action: 'cancel' }; - }, []); - - return { - isQuitConfirmationOpen, - showQuitConfirmation, - handleQuitConfirmationSelect, - }; -}; diff --git a/packages/cli/src/ui/types.ts b/packages/cli/src/ui/types.ts index bc9a6317..79e5621a 100644 --- a/packages/cli/src/ui/types.ts +++ b/packages/cli/src/ui/types.ts @@ -161,11 +161,6 @@ export type HistoryItemQuit = HistoryItemBase & { duration: string; }; -export type HistoryItemQuitConfirmation = HistoryItemBase & { - type: 'quit_confirmation'; - duration: string; -}; - export type HistoryItemToolGroup = HistoryItemBase & { type: 'tool_group'; tools: IndividualToolCallDisplay[]; @@ -256,7 +251,6 @@ export type HistoryItemWithoutId = | HistoryItemModelStats | HistoryItemToolStats | HistoryItemQuit - | HistoryItemQuitConfirmation | HistoryItemCompression | HistoryItemSummary | HistoryItemCompression @@ -278,7 +272,6 @@ export enum MessageType { MODEL_STATS = 'model_stats', TOOL_STATS = 'tool_stats', QUIT = 'quit', - QUIT_CONFIRMATION = 'quit_confirmation', GEMINI = 'gemini', COMPRESSION = 'compression', SUMMARY = 'summary', @@ -342,12 +335,6 @@ export type Message = duration: string; content?: string; } - | { - type: MessageType.QUIT_CONFIRMATION; - timestamp: Date; - duration: string; - content?: string; - } | { type: MessageType.COMPRESSION; compression: CompressionProps; @@ -404,7 +391,3 @@ export interface ConfirmationRequest { export interface LoopDetectionConfirmationRequest { onComplete: (result: { userSelection: 'disable' | 'keep' }) => void; } - -export interface QuitConfirmationRequest { - onConfirm: (shouldQuit: boolean, action?: string) => void; -}