diff --git a/packages/ui/src/components/chat/ChatMessage.tsx b/packages/ui/src/components/chat/ChatMessage.tsx index ce369ee8..1309cbf4 100644 --- a/packages/ui/src/components/chat/ChatMessage.tsx +++ b/packages/ui/src/components/chat/ChatMessage.tsx @@ -25,6 +25,7 @@ import { filterVisibleParts, normalizeParts } from './message/partUtils'; import { normalizeUserDisplayParts } from './message/normalizeUserDisplayParts'; import { flattenAssistantTextParts } from '@/lib/messages/messageText'; import { isLikelyProviderAuthFailure, PROVIDER_AUTH_FAILURE_MESSAGE } from '@/lib/messages/providerAuthError'; +import { getProviderModelDisplayName } from '@/lib/modelDisplay'; import { lazyWithChunkRecovery } from '@/lib/chunkLoadRecovery'; import type { TurnGroupingContext } from './lib/turns/types'; import { copyTextToClipboard } from '@/lib/clipboard'; @@ -168,7 +169,7 @@ const ChatMessage: React.FC = ({ streamPerfCount('ui.chat_message.render.streaming'); } - const providers = useConfigStore.getState().providers; + const providers = useConfigStore((state) => state.providers); const { showReasoningTraces, stickyUserHeader, chatRenderMode, showExpandedBashTools, showExpandedEditTools } = useUIStore( useShallow((state) => ({ showReasoningTraces: state.showReasoningTraces, @@ -363,17 +364,10 @@ const ChatMessage: React.FC = ({ const modelName = React.useMemo(() => { if (isUser) return undefined; - if (providerID && modelID && providers.length > 0) { - const provider = providers.find((p) => p.id === providerID); - if (provider?.models && Array.isArray(provider.models)) { - const model = provider.models.find((m: Record) => (m as Record).id === modelID); - const modelObj = model as Record | undefined; - const name = modelObj?.name; - return typeof name === 'string' ? name : undefined; - } - } - - return undefined; + const provider = providerID && providers.length > 0 + ? providers.find((p) => p.id === providerID) + : undefined; + return getProviderModelDisplayName(provider, modelID) || undefined; }, [isUser, providerID, modelID, providers]); const modelHasVariants = React.useMemo(() => { diff --git a/packages/ui/src/components/chat/MobileModelButton.tsx b/packages/ui/src/components/chat/MobileModelButton.tsx index fc550e70..568ef820 100644 --- a/packages/ui/src/components/chat/MobileModelButton.tsx +++ b/packages/ui/src/components/chat/MobileModelButton.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { cn } from '@/lib/utils'; import { useConfigStore } from '@/stores/useConfigStore'; import { getModelDisplayName } from './mobileControlsUtils'; +import { useI18n } from '@/lib/i18n'; interface MobileModelButtonProps { onOpenModel: () => void; @@ -9,10 +10,11 @@ interface MobileModelButtonProps { } export const MobileModelButton: React.FC = ({ onOpenModel, className }) => { + const { t } = useI18n(); const currentModelId = useConfigStore((state) => state.currentModelId); const getCurrentProvider = useConfigStore((state) => state.getCurrentProvider); const currentProvider = getCurrentProvider(); - const modelLabel = getModelDisplayName(currentProvider, currentModelId); + const modelLabel = getModelDisplayName(currentProvider, currentModelId, t('chat.modelControls.selectModel')); return (