From 0d9824cb81b8796fd58cc92dd4300a8d59241c17 Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 2 Mar 2026 22:15:59 +0800 Subject: [PATCH] fix(chat): keep mode switch selection without auto rollback --- app/(chat)/page.tsx | 6 +----- components/multimodal-input.tsx | 11 ++++++++--- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/(chat)/page.tsx b/app/(chat)/page.tsx index 6a6775e68..0c70b742b 100644 --- a/app/(chat)/page.tsx +++ b/app/(chat)/page.tsx @@ -116,14 +116,10 @@ async function NewChatPage() { const cookieModel = initialModelId ? visibleModels.find(({ model }) => model.id === initialModelId) : undefined; - const cookieIsVideoModel = Boolean( - cookieModel && VIDEO_PROVIDER_TYPES.has(cookieModel.provider.type) - ); if ( !initialModelId || - !cookieModel || - (cookieIsVideoModel && Boolean(nanoBananaModel)) + !cookieModel ) { if (nanoBananaModel) { initialModelId = nanoBananaModel.model.id; diff --git a/components/multimodal-input.tsx b/components/multimodal-input.tsx index 2992989f1..0f9f277fc 100644 --- a/components/multimodal-input.tsx +++ b/components/multimodal-input.tsx @@ -1529,8 +1529,13 @@ function PureModelSelectorCompact({ useEffect(() => { if (displayModels.length === 0) return; - const currentExists = displayModels.some((m) => m.id === selectedModelId); - if (currentExists) return; + const currentExistsInDisplay = displayModels.some((m) => m.id === selectedModelId); + if (currentExistsInDisplay) return; + + const currentExistsInAll = allModels.some((m) => m.id === selectedModelId); + if (currentExistsInAll) { + return; + } const fallbackImageModel = modeFilteredModels.find((model) => isNanoBananaProModel(model)) || @@ -1546,7 +1551,7 @@ function PureModelSelectorCompact({ startTransition(() => { saveChatModelAsCookie(fallbackModelId); }); - }, [canShowAutoModel, displayModels, modeFilteredModels, onModelChange, selectedModelId]); + }, [allModels, canShowAutoModel, displayModels, modeFilteredModels, onModelChange, selectedModelId]); // 自动选择模型的逻辑 - 必须在所有条件 return 之前定义 const selectBestModel = useCallback(() => {