diff --git a/packages/cli/src/config/settingsSchema.test.ts b/packages/cli/src/config/settingsSchema.test.ts index 43bf52c9..572bf12a 100644 --- a/packages/cli/src/config/settingsSchema.test.ts +++ b/packages/cli/src/config/settingsSchema.test.ts @@ -52,6 +52,7 @@ describe('SettingsSchema', () => { 'model', 'hasSeenIdeIntegrationNudge', 'folderTrustFeature', + 'enableWelcomeBack', ]; expectedSettings.forEach((setting) => { diff --git a/packages/cli/src/config/settingsSchema.ts b/packages/cli/src/config/settingsSchema.ts index f16b0714..664820bd 100644 --- a/packages/cli/src/config/settingsSchema.ts +++ b/packages/cli/src/config/settingsSchema.ts @@ -604,6 +604,16 @@ export const SETTINGS_SCHEMA = { description: 'Skip the next speaker check.', showInDialog: true, }, + enableWelcomeBack: { + type: 'boolean', + label: 'Enable Welcome Back', + category: 'UI', + requiresRestart: false, + default: true, + description: + 'Show welcome back dialog when returning to a project with conversation history.', + showInDialog: true, + }, } as const; type InferSettings = { diff --git a/packages/cli/src/ui/App.tsx b/packages/cli/src/ui/App.tsx index 5e7b04c2..e5dc3f91 100644 --- a/packages/cli/src/ui/App.tsx +++ b/packages/cli/src/ui/App.tsx @@ -624,7 +624,7 @@ const App = ({ config, settings, startupWarnings = [], version }: AppProps) => { welcomeBackChoice, handleWelcomeBackSelection, handleWelcomeBackClose, - } = useWelcomeBack(config, submitQuery, buffer); + } = useWelcomeBack(config, submitQuery, buffer, settings.merged); // Message queue for handling input during streaming const { messageQueue, addMessage, clearQueue, getQueuedMessagesText } = diff --git a/packages/cli/src/ui/hooks/useWelcomeBack.ts b/packages/cli/src/ui/hooks/useWelcomeBack.ts index 397fb79b..58d7b87d 100644 --- a/packages/cli/src/ui/hooks/useWelcomeBack.ts +++ b/packages/cli/src/ui/hooks/useWelcomeBack.ts @@ -10,6 +10,7 @@ import { type ProjectSummaryInfo, type Config, } from '@qwen-code/qwen-code-core'; +import { type Settings } from '../../config/settingsSchema.js'; export interface WelcomeBackState { welcomeBackInfo: ProjectSummaryInfo | null; @@ -30,6 +31,7 @@ export function useWelcomeBack( config: Config, submitQuery: (query: string) => void, buffer: { setText: (text: string) => void }, + settings: Settings, ): WelcomeBackState & WelcomeBackActions { const [welcomeBackInfo, setWelcomeBackInfo] = useState(null); @@ -42,6 +44,11 @@ export function useWelcomeBack( // Check for conversation history on startup const checkWelcomeBack = useCallback(async () => { + // Check if welcome back is enabled in settings + if (settings.enableWelcomeBack === false) { + return; + } + try { const info = await getProjectSummaryInfo(); if (info.hasHistory) { @@ -52,7 +59,7 @@ export function useWelcomeBack( // Silently ignore errors - welcome back is not critical console.debug('Welcome back check failed:', error); } - }, []); + }, [settings.enableWelcomeBack]); // Handle welcome back dialog selection const handleWelcomeBackSelection = useCallback(