diff --git a/packages/cli/src/ui/components/SettingsDialog.tsx b/packages/cli/src/ui/components/SettingsDialog.tsx index b0e25b40be..e4f782cda0 100644 --- a/packages/cli/src/ui/components/SettingsDialog.tsx +++ b/packages/cli/src/ui/components/SettingsDialog.tsx @@ -453,6 +453,31 @@ export function SettingsDialog({ const showScrollUp = items.length > effectiveMaxItemsToShow; const showScrollDown = items.length > effectiveMaxItemsToShow; + const saveRestartRequiredSettings = () => { + const restartRequiredSettings = + getRestartRequiredFromModified(modifiedSettings); + const restartRequiredSet = new Set(restartRequiredSettings); + + if (restartRequiredSet.size > 0) { + saveModifiedSettings( + restartRequiredSet, + pendingSettings, + settings, + selectedScope, + ); + + // Remove saved keys from global pending changes + setGlobalPendingChanges((prev) => { + if (prev.size === 0) return prev; + const next = new Map(prev); + for (const key of restartRequiredSet) { + next.delete(key); + } + return next; + }); + } + }; + useKeypress( (key) => { const { name, ctrl } = key; @@ -699,28 +724,7 @@ export function SettingsDialog({ } if (showRestartPrompt && name === 'r') { // Only save settings that require restart (non-restart settings were already saved immediately) - const restartRequiredSettings = - getRestartRequiredFromModified(modifiedSettings); - const restartRequiredSet = new Set(restartRequiredSettings); - - if (restartRequiredSet.size > 0) { - saveModifiedSettings( - restartRequiredSet, - pendingSettings, - settings, - selectedScope, - ); - - // Remove saved keys from global pending changes - setGlobalPendingChanges((prev) => { - if (prev.size === 0) return prev; - const next = new Map(prev); - for (const key of restartRequiredSet) { - next.delete(key); - } - return next; - }); - } + saveRestartRequiredSettings(); setShowRestartPrompt(false); setRestartRequiredSettings(new Set()); // Clear restart-required settings @@ -730,6 +734,8 @@ export function SettingsDialog({ if (editingKey) { commitEdit(editingKey); } else { + // Save any restart-required settings before closing + saveRestartRequiredSettings(); onSelect(undefined, selectedScope); } }