feat: add default variant support in settings and UI components

This commit is contained in:
Bohdan Triapitsyn
2026-01-08 16:08:51 +02:00
parent 8e777a94c2
commit ab731fdc79
9 changed files with 330 additions and 95 deletions
@@ -276,6 +276,7 @@ export const ModelControls: React.FC<ModelControlsProps> = ({ className }) => {
currentModelId,
currentVariant,
currentAgentName,
settingsDefaultVariant,
setProvider,
setModel,
setCurrentVariant,
@@ -865,7 +866,7 @@ export const ModelControls: React.FC<ModelControlsProps> = ({ className }) => {
}, [currentAgentName, currentSessionId, getAgentModelForSession, tryApplyModelSelection, agents, contextHydrated]);
React.useEffect(() => {
if (!contextHydrated || !currentSessionId || !currentAgentName) {
if (!contextHydrated || !currentAgentName) {
setCurrentVariant(undefined);
return;
}
@@ -875,6 +876,28 @@ export const ModelControls: React.FC<ModelControlsProps> = ({ className }) => {
return;
}
if (availableVariants.length === 0) {
setCurrentVariant(undefined);
return;
}
if (currentVariant && !availableVariants.includes(currentVariant)) {
setCurrentVariant(undefined);
return;
}
// Draft state (no session yet): seed from settings default, but don't override
// user selection while drafting.
if (!currentSessionId) {
if (!currentVariant) {
const desired = settingsDefaultVariant && availableVariants.includes(settingsDefaultVariant)
? settingsDefaultVariant
: undefined;
setCurrentVariant(desired);
}
return;
}
const savedVariant = getAgentModelVariantForSession(
currentSessionId,
currentAgentName,
@@ -882,12 +905,11 @@ export const ModelControls: React.FC<ModelControlsProps> = ({ className }) => {
currentModelId,
);
if (savedVariant && !availableVariants.includes(savedVariant)) {
setCurrentVariant(undefined);
return;
}
const resolvedSaved = savedVariant && availableVariants.includes(savedVariant)
? savedVariant
: undefined;
setCurrentVariant(savedVariant);
setCurrentVariant(resolvedSaved);
}, [
availableVariants,
contextHydrated,
@@ -895,8 +917,10 @@ export const ModelControls: React.FC<ModelControlsProps> = ({ className }) => {
currentAgentName,
currentProviderId,
currentModelId,
currentVariant,
getAgentModelVariantForSession,
setCurrentVariant,
settingsDefaultVariant,
]);
const handleVariantSelect = React.useCallback((variant: string | undefined) => {