diff --git a/src/browser/components/ChatInput/index.tsx b/src/browser/components/ChatInput/index.tsx index 57d8db3d0..95554265e 100644 --- a/src/browser/components/ChatInput/index.tsx +++ b/src/browser/components/ChatInput/index.tsx @@ -140,7 +140,7 @@ export const ChatInput: React.FC = (props) => { const inputRef = useRef(null); const modelSelectorRef = useRef(null); const [mode, setMode] = useMode(); - const { recentModels, addModel, evictModel } = useModelLRU(); + const { recentModels, addModel, evictModel, defaultModel, setDefaultModel } = useModelLRU(); const commandListId = useId(); const telemetry = useTelemetry(); const [vimEnabled, setVimEnabled] = usePersistedState(VIM_ENABLED_KEY, false, { @@ -178,6 +178,15 @@ export const ChatInput: React.FC = (props) => { [storageKeys.modelKey, addModel] ); + // When entering creation mode (or when the default model changes), reset the + // project-scoped model to the explicit default so manual picks don't bleed + // into subsequent creation flows. + useEffect(() => { + if (variant === "creation" && defaultModel) { + updatePersistedState(storageKeys.modelKey, defaultModel); + } + }, [variant, defaultModel, storageKeys.modelKey]); + // Creation-specific state (hook always called, but only used when variant === "creation") // This avoids conditional hook calls which violate React rules const creationState = useCreationWorkspace( @@ -972,6 +981,8 @@ export const ChatInput: React.FC = (props) => { recentModels={recentModels} onRemoveModel={evictModel} onComplete={() => inputRef.current?.focus()} + defaultModel={defaultModel} + onSetDefaultModel={setDefaultModel} /> ?