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) => {