@@ -10,6 +10,7 @@ import { ChatMessage } from '../../../types/chat'
1010import classNames from '~/lib/classNames'
1111import { IconX } from '@tabler/icons-react'
1212import { DEFAULT_QUERY_REWRITE_MODEL } from '../../../constants/ollama'
13+ import { useSystemSetting } from '~/hooks/useSystemSetting'
1314
1415interface ChatProps {
1516 enabled : boolean
@@ -51,6 +52,8 @@ export default function Chat({
5152
5253 const activeSession = sessions . find ( ( s ) => s . id === activeSessionId )
5354
55+ const { data : lastModelSetting } = useSystemSetting ( { key : 'chat.lastModel' , enabled } )
56+
5457 const { data : installedModels = [ ] , isLoading : isLoadingModels } = useQuery ( {
5558 queryKey : [ 'installedModels' ] ,
5659 queryFn : ( ) => api . getInstalledModels ( ) ,
@@ -127,12 +130,24 @@ export default function Chat({
127130 } ,
128131 } )
129132
130- // Set first model as selected by default
133+ // Set default model: prefer last used model, fall back to first installed if last model not available
131134 useEffect ( ( ) => {
132135 if ( installedModels . length > 0 && ! selectedModel ) {
133- setSelectedModel ( installedModels [ 0 ] . name )
136+ const lastModel = lastModelSetting ?. value as string | undefined
137+ if ( lastModel && installedModels . some ( ( m ) => m . name === lastModel ) ) {
138+ setSelectedModel ( lastModel )
139+ } else {
140+ setSelectedModel ( installedModels [ 0 ] . name )
141+ }
142+ }
143+ } , [ installedModels , selectedModel , lastModelSetting ] )
144+
145+ // Persist model selection
146+ useEffect ( ( ) => {
147+ if ( selectedModel ) {
148+ api . updateSetting ( 'chat.lastModel' , selectedModel )
134149 }
135- } , [ installedModels , selectedModel ] )
150+ } , [ selectedModel ] )
136151
137152 const handleNewChat = useCallback ( ( ) => {
138153 // Just clear the active session and messages - don't create a session yet
0 commit comments