+ {props.inlineProviderIcon ?
{providerIcon} : null}
{getDisplayModelName(model)}
+ {/* The inline icon is decorative, so name the provider for screen readers. */}
+ {props.inlineProviderIcon ? (
+ , {props.providerDisplayName}
+ ) : null}
{props.showNewBadge ? (
) : null}
- {props.showProvider && (
-
-
+ {props.subProvider ? (
+
+ {props.inlineProviderIcon ? null : providerIcon}
{providerLabel}
- )}
+ ) : null}
diff --git a/apps/web/src/components/chat/ModelPickerContent.tsx b/apps/web/src/components/chat/ModelPickerContent.tsx
index 2f2c91bc4e862..8ff7ab9c6a541 100644
--- a/apps/web/src/components/chat/ModelPickerContent.tsx
+++ b/apps/web/src/components/chat/ModelPickerContent.tsx
@@ -60,6 +60,7 @@ import { InlineButton } from "../ui/button";
import {
isProviderInstancePickerReady,
isProviderInstancePickerVisible,
+ shouldShowInstanceBadge,
type ProviderInstanceEntry,
} from "../../providerInstances";
import { providerModelKey, sortProviderModelItems } from "../../modelOrdering";
@@ -575,8 +576,8 @@ export const ModelPickerContent = memo(function ModelPickerContent(props: {
const isLocked = lockedProvider !== null;
const isSearching = searchQuery.trim().length > 0;
- // Inside one provider's tab the provider line repeats the selected rail icon on every row.
- const rowsMixProviders = isSearching || selectedInstanceId === "favorites";
+ // Rows that mix providers mark each with an inline icon; a provider's own tab already shows it on the rail.
+ const inlineProviderIcon = isSearching || selectedInstanceId === "favorites";
// Fit the tallest tab so switching tabs never resizes the popup and moves the rail under the cursor.
const tallestTabUnits = (() => {
const unitsByTab = new Map
();
@@ -592,7 +593,7 @@ export const ModelPickerContent = memo(function ModelPickerContent(props: {
for (const model of flatModels) {
if (!matchesLockedProvider(model)) continue;
const isFavorite = favoritesSet.has(providerModelKey(model.instanceId, model.slug));
- if (isFavorite) addRow("favorites", true);
+ if (isFavorite) addRow("favorites", Boolean(model.subProvider));
if (model.isLegacy && !isFavorite) {
tabsWithLegacyRow.add(model.instanceId);
} else {
@@ -993,6 +994,7 @@ export const ModelPickerContent = memo(function ModelPickerContent(props: {
}
const disabledReason =
getModelDisabledReason?.(model.instanceId, model.slug) ?? null;
+ const entry = entryByInstanceId.get(model.instanceId);
return (