Skip to content

Commit 07640f9

Browse files
committed
fix: resolve claude-sonnet-4-5 model selection issue for Claude Code provider
- Removed problematic useEffect that was causing race condition with user selection - Updated Select component to use apiModelId directly for providers that use it - Added comprehensive test coverage for claude-code model selection - Fixes issue where claude-sonnet-4-5 couldn't be selected and would revert to claude-sonnet-4-20250514 Fixes #8428
1 parent 3e47e88 commit 07640f9

File tree

2 files changed

+396
-7
lines changed

2 files changed

+396
-7
lines changed

webview-ui/src/components/settings/ApiOptions.tsx

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,8 @@ const ApiOptions = ({
196196
apiConfiguration.openRouterModelId in routerModels.openrouter,
197197
})
198198

199-
// Update `apiModelId` whenever `selectedModelId` changes.
200-
useEffect(() => {
201-
if (selectedModelId && apiConfiguration.apiModelId !== selectedModelId) {
202-
setApiConfigurationField("apiModelId", selectedModelId)
203-
}
204-
}, [selectedModelId, setApiConfigurationField, apiConfiguration.apiModelId])
199+
// Removed the effect that was causing race condition with user selection
200+
// The apiModelId is now properly set directly in the onValueChange callback
205201

206202
// Debounced refresh model updates, only executed 250ms after the user
207203
// stops typing.
@@ -683,7 +679,34 @@ const ApiOptions = ({
683679
<div>
684680
<label className="block font-medium mb-1">{t("settings:providers.model")}</label>
685681
<Select
686-
value={selectedModelId === "custom-arn" ? "custom-arn" : selectedModelId}
682+
value={
683+
selectedModelId === "custom-arn"
684+
? "custom-arn"
685+
: // For providers that use apiModelId, use the actual value from config
686+
// to avoid race conditions with useSelectedModel hook
687+
selectedProvider === "claude-code" ||
688+
selectedProvider === "anthropic" ||
689+
selectedProvider === "bedrock" ||
690+
selectedProvider === "cerebras" ||
691+
selectedProvider === "qwen-code" ||
692+
selectedProvider === "openai-native" ||
693+
selectedProvider === "gemini" ||
694+
selectedProvider === "deepseek" ||
695+
selectedProvider === "doubao" ||
696+
selectedProvider === "moonshot" ||
697+
selectedProvider === "mistral" ||
698+
selectedProvider === "xai" ||
699+
selectedProvider === "groq" ||
700+
selectedProvider === "chutes" ||
701+
selectedProvider === "vertex" ||
702+
selectedProvider === "sambanova" ||
703+
selectedProvider === "zai" ||
704+
selectedProvider === "fireworks" ||
705+
selectedProvider === "featherless" ||
706+
selectedProvider === "roo"
707+
? apiConfiguration.apiModelId || selectedModelId
708+
: selectedModelId
709+
}
687710
onValueChange={(value) => {
688711
setApiConfigurationField("apiModelId", value)
689712

0 commit comments

Comments
 (0)