fix: provider-aware model selection to prevent cross-provider conflicts

When multiple providers share the same model name, the selector now
uses both model ID and provider as the unique identifier instead of
model name alone. Backend returns default_provider alongside default
model, and model switching sends provider to the config.

Fixes #52

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ekko
2026-04-19 15:05:05 +08:00
parent b4f809d8b5
commit 8a4ab2d69d
4 changed files with 13 additions and 6 deletions
+4
View File
@@ -18,6 +18,7 @@ export const useAppStore = defineStore('app', () => {
const updating = ref(false)
const modelGroups = ref<AvailableModelGroup[]>([])
const selectedModel = ref('')
const selectedProvider = ref('')
const healthPollTimer = ref<ReturnType<typeof setInterval>>()
// Settings
@@ -56,6 +57,7 @@ export const useAppStore = defineStore('app', () => {
const res = await fetchAvailableModels()
modelGroups.value = res.groups
selectedModel.value = res.default
selectedProvider.value = res.default_provider || ''
} catch {
// ignore
}
@@ -68,6 +70,7 @@ export const useAppStore = defineStore('app', () => {
const provider = providerOverride || group?.provider || ''
await updateDefaultModel({ default: modelId, provider })
selectedModel.value = modelId
selectedProvider.value = provider || ''
} catch (err: any) {
console.error('Failed to switch model:', err)
}
@@ -117,6 +120,7 @@ export const useAppStore = defineStore('app', () => {
doUpdate,
modelGroups,
selectedModel,
selectedProvider,
streamEnabled,
sessionPersistence,
maxTokens,