diff --git a/package.json b/package.json index 464e1629..61aec997 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "CherryStudio", - "version": "0.8.24", + "version": "0.8.25", "private": true, "description": "A powerful AI assistant for producer.", "main": "./out/main/index.js", diff --git a/src/renderer/src/config/models.ts b/src/renderer/src/config/models.ts index eee2af0f..8702e1f1 100644 --- a/src/renderer/src/config/models.ts +++ b/src/renderer/src/config/models.ts @@ -121,6 +121,7 @@ import WenxinModelLogo from '@renderer/assets/images/models/wenxin.png' import WenxinModelLogoDark from '@renderer/assets/images/models/wenxin_dark.png' import YiModelLogo from '@renderer/assets/images/models/yi.png' import YiModelLogoDark from '@renderer/assets/images/models/yi_dark.png' +import { getProviderByModel } from '@renderer/services/AssistantService' import { Model } from '@renderer/types' import OpenAI from 'openai' @@ -1058,5 +1059,6 @@ export function isSupportedModel(model: OpenAI.Models.Model): boolean { } export function isWebSearchModel(model: Model): boolean { - return model?.provider === 'gemini' && model?.id === 'gemini-2.0-flash-exp' + const provider = getProviderByModel(model) + return (provider.id === 'gemini' || provider?.type === 'gemini') && model?.id === 'gemini-2.0-flash-exp' } diff --git a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx index cff7f6d5..ce7eef2b 100644 --- a/src/renderer/src/pages/home/Tabs/SettingsTab.tsx +++ b/src/renderer/src/pages/home/Tabs/SettingsTab.tsx @@ -1,7 +1,13 @@ import { CheckOutlined, QuestionCircleOutlined, ReloadOutlined } from '@ant-design/icons' import { HStack } from '@renderer/components/Layout' import Scrollbar from '@renderer/components/Scrollbar' -import { DEFAULT_CONTEXTCOUNT, DEFAULT_MAX_TOKENS, DEFAULT_TEMPERATURE } from '@renderer/config/constant' +import { + DEFAULT_CONTEXTCOUNT, + DEFAULT_MAX_TOKENS, + DEFAULT_TEMPERATURE, + isMac, + isWindows +} from '@renderer/config/constant' import { codeThemes } from '@renderer/context/SyntaxHighlighterProvider' import { useAssistant } from '@renderer/hooks/useAssistant' import { useSettings } from '@renderer/hooks/useSettings' @@ -351,9 +357,9 @@ const SettingsTab: FC = (props) => { menuItemSelectedIcon={} options={[ { value: 'Enter', label: 'Enter' }, - { value: 'Shift+Enter', label: `Shift + Enter` }, - { value: 'Ctrl+Enter', label: `Ctrl + Enter` }, - { value: 'Command+Enter', label: `CommandOrControl + Enter` } + { value: 'Shift+Enter', label: 'Shift + Enter' }, + { value: 'Ctrl+Enter', label: 'Ctrl + Enter' }, + { value: 'Command+Enter', label: `${isMac ? '⌘' : isWindows ? 'Win' : 'Super'} + Enter` } ]} onChange={(value) => setSendMessageShortcut(value)} style={{ width: 135 }} diff --git a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx index 7cecede5..af753245 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/EditModelsPopup.tsx @@ -1,6 +1,7 @@ import { LoadingOutlined, MinusOutlined, PlusOutlined, QuestionCircleOutlined } from '@ant-design/icons' import VisionIcon from '@renderer/components/Icons/VisionIcon' -import { getModelLogo, isVisionModel, SYSTEM_MODELS } from '@renderer/config/models' +import WebSearchIcon from '@renderer/components/Icons/WebSearchIcon' +import { getModelLogo, isVisionModel, isWebSearchModel, SYSTEM_MODELS } from '@renderer/config/models' import { useProvider } from '@renderer/hooks/useProvider' import { fetchModels } from '@renderer/services/ApiService' import { Model, Provider } from '@renderer/types' @@ -127,6 +128,7 @@ const PopupContainer: React.FC = ({ provider: _provider, resolve }) => { {model.name} {isVisionModel(model) && } + {isWebSearchModel(model) && } {isFreeModel(model) && ( Free diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 37e57883..07be4f0e 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -712,7 +712,7 @@ const migrateConfig = { }, '46': (state: RootState) => { if ( - state.settings.translateModelPrompt.includes( + state.settings?.translateModelPrompt?.includes( 'If the target language is the same as the source language, do not translate' ) ) { @@ -729,23 +729,25 @@ const migrateConfig = { return state }, '48': (state: RootState) => { - state.shortcuts.shortcuts.forEach((shortcut) => { - shortcut.system = shortcut.key !== 'new_topic' - }) - state.shortcuts.shortcuts.push({ - key: 'toggle_show_assistants', - shortcut: [isMac ? 'Command' : 'Ctrl', '['], - editable: true, - enabled: true, - system: false - }) - state.shortcuts.shortcuts.push({ - key: 'toggle_show_topics', - shortcut: [isMac ? 'Command' : 'Ctrl', ']'], - editable: true, - enabled: true, - system: false - }) + if (state.shortcuts) { + state.shortcuts.shortcuts.forEach((shortcut) => { + shortcut.system = shortcut.key !== 'new_topic' + }) + state.shortcuts.shortcuts.push({ + key: 'toggle_show_assistants', + shortcut: [isMac ? 'Command' : 'Ctrl', '['], + editable: true, + enabled: true, + system: false + }) + state.shortcuts.shortcuts.push({ + key: 'toggle_show_topics', + shortcut: [isMac ? 'Command' : 'Ctrl', ']'], + editable: true, + enabled: true, + system: false + }) + } return state } }