@@ -19,7 +19,11 @@ import { useAppStore, type ThemeMode, THEME_STORAGE_KEY } from '@/store/app-stor
1919import { useSetupStore } from '@/store/setup-store' ;
2020import { useAuthStore } from '@/store/auth-store' ;
2121import { waitForMigrationComplete , resetMigrationState } from './use-settings-migration' ;
22- import type { GlobalSettings } from '@automaker/types' ;
22+ import {
23+ DEFAULT_OPENCODE_MODEL ,
24+ getAllOpencodeModelIds ,
25+ type GlobalSettings ,
26+ } from '@automaker/types' ;
2327
2428const logger = createLogger ( 'SettingsSync' ) ;
2529
@@ -424,6 +428,27 @@ export async function refreshSettingsFromServer(): Promise<boolean> {
424428
425429 const serverSettings = result . settings as unknown as GlobalSettings ;
426430 const currentAppState = useAppStore . getState ( ) ;
431+ const validOpencodeModelIds = new Set ( getAllOpencodeModelIds ( ) ) ;
432+ const incomingEnabledOpencodeModels =
433+ serverSettings . enabledOpencodeModels ?? currentAppState . enabledOpencodeModels ;
434+ const sanitizedOpencodeDefaultModel = validOpencodeModelIds . has (
435+ serverSettings . opencodeDefaultModel ?? currentAppState . opencodeDefaultModel
436+ )
437+ ? ( serverSettings . opencodeDefaultModel ?? currentAppState . opencodeDefaultModel )
438+ : DEFAULT_OPENCODE_MODEL ;
439+ const sanitizedEnabledOpencodeModels = Array . from (
440+ new Set ( incomingEnabledOpencodeModels . filter ( ( modelId ) => validOpencodeModelIds . has ( modelId ) ) )
441+ ) ;
442+
443+ if ( ! sanitizedEnabledOpencodeModels . includes ( sanitizedOpencodeDefaultModel ) ) {
444+ sanitizedEnabledOpencodeModels . push ( sanitizedOpencodeDefaultModel ) ;
445+ }
446+
447+ const persistedDynamicModelIds =
448+ serverSettings . enabledDynamicModelIds ?? currentAppState . enabledDynamicModelIds ;
449+ const sanitizedDynamicModelIds = persistedDynamicModelIds . filter (
450+ ( modelId ) => ! modelId . startsWith ( 'amazon-bedrock/' )
451+ ) ;
427452
428453 // Save theme to localStorage for fallback when server settings aren't available
429454 if ( serverSettings . theme ) {
@@ -447,6 +472,9 @@ export async function refreshSettingsFromServer(): Promise<boolean> {
447472 phaseModels : serverSettings . phaseModels ,
448473 enabledCursorModels : serverSettings . enabledCursorModels ,
449474 cursorDefaultModel : serverSettings . cursorDefaultModel ,
475+ enabledOpencodeModels : sanitizedEnabledOpencodeModels ,
476+ opencodeDefaultModel : sanitizedOpencodeDefaultModel ,
477+ enabledDynamicModelIds : sanitizedDynamicModelIds ,
450478 autoLoadClaudeMd : serverSettings . autoLoadClaudeMd ?? false ,
451479 keyboardShortcuts : {
452480 ...currentAppState . keyboardShortcuts ,
0 commit comments