From e76fdb20a727eaad7aba996b78d5bbdeb49bddc7 Mon Sep 17 00:00:00 2001 From: Basit Balogun Date: Mon, 25 May 2026 15:40:19 +0100 Subject: [PATCH] feat(code): persist and restore last selected model on task create MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wire up the existing but unused `lastUsedModel` / `setLastUsedModel` in settingsStore so the model picker remembers the user's choice across task creations — same pattern already used for reasoning effort and mode. Closes #1839 --- .../task-detail/components/TaskInput.tsx | 4 +++- .../task-detail/hooks/usePreviewConfig.ts | 16 +++++++++++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx b/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx index b6e3fb96c..c0662a69c 100644 --- a/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx +++ b/apps/code/src/renderer/features/task-detail/components/TaskInput.tsx @@ -96,6 +96,7 @@ export function TaskInput({ defaultInitialTaskMode, lastUsedInitialTaskMode, setLastUsedReasoningEffort, + setLastUsedModel, } = useSettingsStore(); const editorRef = useRef(null); @@ -493,9 +494,10 @@ export function TaskInput({ (value: string) => { if (modelOption) { setConfigOption(modelOption.id, value); + setLastUsedModel(value); } }, - [modelOption, setConfigOption], + [modelOption, setConfigOption, setLastUsedModel], ); const handleThoughtChange = useCallback( diff --git a/apps/code/src/renderer/features/task-detail/hooks/usePreviewConfig.ts b/apps/code/src/renderer/features/task-detail/hooks/usePreviewConfig.ts index 94a6dfbe7..4dbd1abf7 100644 --- a/apps/code/src/renderer/features/task-detail/hooks/usePreviewConfig.ts +++ b/apps/code/src/renderer/features/task-detail/hooks/usePreviewConfig.ts @@ -111,6 +111,7 @@ export function usePreviewConfig( lastUsedInitialTaskMode, defaultReasoningEffort, lastUsedReasoningEffort, + lastUsedModel, } = useSettingsStore.getState(); // Use the mode option's existing currentValue (set by the server @@ -186,7 +187,20 @@ export function usePreviewConfig( return opt; }); - setConfigOptions(withEffort); + const withModel = withEffort.map((opt) => { + if (opt.category !== "model" || opt.type !== "select") return opt; + if (!lastUsedModel) return opt; + const validValues = flattenValues( + opt.options as Array<{ + value?: string; + options?: Array<{ value: string }>; + }>, + ); + if (!validValues.includes(lastUsedModel)) return opt; + return { ...opt, currentValue: lastUsedModel } as SessionConfigOption; + }); + + setConfigOptions(withModel); setIsLoading(false); }) .catch((error) => {