diff --git a/src/renderer/src/assets/images/apps/doubao.png b/src/renderer/src/assets/images/apps/doubao.png new file mode 100644 index 00000000..11fb4c6c Binary files /dev/null and b/src/renderer/src/assets/images/apps/doubao.png differ diff --git a/src/renderer/src/assets/images/apps/gemini.png b/src/renderer/src/assets/images/apps/gemini.png new file mode 100644 index 00000000..63c42078 Binary files /dev/null and b/src/renderer/src/assets/images/apps/gemini.png differ diff --git a/src/renderer/src/assets/images/apps/wanzhi.jpg b/src/renderer/src/assets/images/apps/wanzhi.jpg new file mode 100644 index 00000000..f496b5d2 Binary files /dev/null and b/src/renderer/src/assets/images/apps/wanzhi.jpg differ diff --git a/src/renderer/src/assets/images/providers/aihubmix.jpg b/src/renderer/src/assets/images/providers/aihubmix.jpg index 65dbbd5a..ba96e631 100644 Binary files a/src/renderer/src/assets/images/providers/aihubmix.jpg and b/src/renderer/src/assets/images/providers/aihubmix.jpg differ diff --git a/src/renderer/src/assets/images/providers/anthropic.jpeg b/src/renderer/src/assets/images/providers/anthropic.jpeg deleted file mode 100644 index 6cb2e6ab..00000000 Binary files a/src/renderer/src/assets/images/providers/anthropic.jpeg and /dev/null differ diff --git a/src/renderer/src/assets/images/providers/anthropic.png b/src/renderer/src/assets/images/providers/anthropic.png new file mode 100644 index 00000000..22ab2b24 Binary files /dev/null and b/src/renderer/src/assets/images/providers/anthropic.png differ diff --git a/src/renderer/src/assets/images/providers/bytedance.png b/src/renderer/src/assets/images/providers/bytedance.png new file mode 100644 index 00000000..1537bcef Binary files /dev/null and b/src/renderer/src/assets/images/providers/bytedance.png differ diff --git a/src/renderer/src/assets/images/providers/dashscope.png b/src/renderer/src/assets/images/providers/dashscope.png index bf55dfac..912be730 100644 Binary files a/src/renderer/src/assets/images/providers/dashscope.png and b/src/renderer/src/assets/images/providers/dashscope.png differ diff --git a/src/renderer/src/assets/images/providers/doubao.png b/src/renderer/src/assets/images/providers/doubao.png index 11fb4c6c..d673efd8 100644 Binary files a/src/renderer/src/assets/images/providers/doubao.png and b/src/renderer/src/assets/images/providers/doubao.png differ diff --git a/src/renderer/src/assets/images/providers/github.png b/src/renderer/src/assets/images/providers/github.png new file mode 100644 index 00000000..be017308 Binary files /dev/null and b/src/renderer/src/assets/images/providers/github.png differ diff --git a/src/renderer/src/assets/images/providers/github.svg b/src/renderer/src/assets/images/providers/github.svg deleted file mode 100644 index bf1081a0..00000000 --- a/src/renderer/src/assets/images/providers/github.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/src/renderer/src/assets/images/providers/google.png b/src/renderer/src/assets/images/providers/google.png new file mode 100644 index 00000000..9613e23a Binary files /dev/null and b/src/renderer/src/assets/images/providers/google.png differ diff --git a/src/renderer/src/assets/images/providers/moonshot.png b/src/renderer/src/assets/images/providers/moonshot.png index de4aaba8..c77e0572 100644 Binary files a/src/renderer/src/assets/images/providers/moonshot.png and b/src/renderer/src/assets/images/providers/moonshot.png differ diff --git a/src/renderer/src/assets/images/providers/ocoolai.png b/src/renderer/src/assets/images/providers/ocoolai.png new file mode 100644 index 00000000..188e2a1d Binary files /dev/null and b/src/renderer/src/assets/images/providers/ocoolai.png differ diff --git a/src/renderer/src/assets/images/providers/openrouter.png b/src/renderer/src/assets/images/providers/openrouter.png index 7f2c18d1..30655eb2 100644 Binary files a/src/renderer/src/assets/images/providers/openrouter.png and b/src/renderer/src/assets/images/providers/openrouter.png differ diff --git a/src/renderer/src/assets/images/providers/perplexity.png b/src/renderer/src/assets/images/providers/perplexity.png new file mode 100644 index 00000000..91f0b30f Binary files /dev/null and b/src/renderer/src/assets/images/providers/perplexity.png differ diff --git a/src/renderer/src/assets/images/providers/silicon.png b/src/renderer/src/assets/images/providers/silicon.png index d54921c6..138f9030 100644 Binary files a/src/renderer/src/assets/images/providers/silicon.png and b/src/renderer/src/assets/images/providers/silicon.png differ diff --git a/src/renderer/src/assets/images/providers/step.png b/src/renderer/src/assets/images/providers/step.png new file mode 100644 index 00000000..a69d9730 Binary files /dev/null and b/src/renderer/src/assets/images/providers/step.png differ diff --git a/src/renderer/src/assets/images/providers/stepfun.png b/src/renderer/src/assets/images/providers/stepfun.png deleted file mode 100644 index 1cd91607..00000000 Binary files a/src/renderer/src/assets/images/providers/stepfun.png and /dev/null differ diff --git a/src/renderer/src/assets/images/providers/together.png b/src/renderer/src/assets/images/providers/together.png new file mode 100644 index 00000000..a790cbd5 Binary files /dev/null and b/src/renderer/src/assets/images/providers/together.png differ diff --git a/src/renderer/src/assets/images/providers/yi.png b/src/renderer/src/assets/images/providers/yi.png deleted file mode 100644 index 3700850b..00000000 Binary files a/src/renderer/src/assets/images/providers/yi.png and /dev/null differ diff --git a/src/renderer/src/assets/images/providers/zero-one.png b/src/renderer/src/assets/images/providers/zero-one.png new file mode 100644 index 00000000..0badfbd9 Binary files /dev/null and b/src/renderer/src/assets/images/providers/zero-one.png differ diff --git a/src/renderer/src/components/app/Sidebar.tsx b/src/renderer/src/components/app/Sidebar.tsx index 588011b3..c565eb51 100644 --- a/src/renderer/src/components/app/Sidebar.tsx +++ b/src/renderer/src/components/app/Sidebar.tsx @@ -99,11 +99,11 @@ const Container = styled.div` ` const AvatarImg = styled(Avatar)` - width: 32px; - height: 32px; + width: 31px; + height: 31px; background-color: var(--color-background-soft); margin-bottom: ${isMac ? '12px' : '12px'}; - margin-top: ${isMac ? '-5px' : '2px'}; + margin-top: ${isMac ? '0px' : '2px'}; border: none; cursor: pointer; ` diff --git a/src/renderer/src/config/minapp.ts b/src/renderer/src/config/minapp.ts deleted file mode 100644 index b344a264..00000000 --- a/src/renderer/src/config/minapp.ts +++ /dev/null @@ -1,103 +0,0 @@ -import AiAssistantAppLogo from '@renderer/assets/images/apps/360-ai.png' -import AiSearchAppLogo from '@renderer/assets/images/apps/ai-search.png' -import BaiduAiAppLogo from '@renderer/assets/images/apps/baidu-ai.png' -import DevvAppLogo from '@renderer/assets/images/apps/devv.png' -import MetasoAppLogo from '@renderer/assets/images/apps/metaso.webp' -import PerplexityAppLogo from '@renderer/assets/images/apps/perplexity.webp' -import PoeAppLogo from '@renderer/assets/images/apps/poe.webp' -import SensetimeAppLogo from '@renderer/assets/images/apps/sensetime.png' -import SparkDeskAppLogo from '@renderer/assets/images/apps/sparkdesk.png' -import TiangongAiLogo from '@renderer/assets/images/apps/tiangong.png' -import TencentYuanbaoAppLogo from '@renderer/assets/images/apps/yuanbao.png' -import ZhihuAppLogo from '@renderer/assets/images/apps/zhihu.png' -import MinApp from '@renderer/components/MinApp' -import { PROVIDER_CONFIG } from '@renderer/config/provider' -import { MinAppType } from '@renderer/types' - -const _apps: MinAppType[] = [ - { - id: '360-ai-so', - name: '360AI搜索', - logo: AiSearchAppLogo, - url: 'https://so.360.com/' - }, - { - id: '360-ai-bot', - name: 'AI 助手', - logo: AiAssistantAppLogo, - url: 'https://bot.360.com/' - }, - { - id: 'baidu-ai-chat', - name: '文心一言', - logo: BaiduAiAppLogo, - url: 'https://yiyan.baidu.com/' - }, - { - id: 'tencent-yuanbao', - name: '腾讯元宝', - logo: TencentYuanbaoAppLogo, - url: 'https://yuanbao.tencent.com/chat' - }, - { - id: 'sensetime-chat', - name: '商量', - logo: SensetimeAppLogo, - url: 'https://chat.sensetime.com/wb/chat' - }, - { - id: 'spark-desk', - name: 'SparkDesk', - logo: SparkDeskAppLogo, - url: 'https://xinghuo.xfyun.cn/desk' - }, - { - id: 'metaso', - name: '秘塔AI搜索', - logo: MetasoAppLogo, - url: 'https://metaso.cn/' - }, - { - id: 'poe', - name: 'Poe', - logo: PoeAppLogo, - url: 'https://poe.com' - }, - { - id: 'perplexity', - name: 'perplexity', - logo: PerplexityAppLogo, - url: 'https://www.perplexity.ai/' - }, - { - id: 'devv', - name: 'DEVV_', - logo: DevvAppLogo, - url: 'https://devv.ai/' - }, - { - id: 'tiangong-ai', - name: '天工AI', - logo: TiangongAiLogo, - url: 'https://www.tiangong.cn/' - }, - { - id: 'zhihu-zhiada', - name: '知乎直答', - logo: ZhihuAppLogo, - url: 'https://zhida.zhihu.com/' - } -] - -export function getAllMinApps() { - const list: MinAppType[] = (Object.entries(PROVIDER_CONFIG) as any[]) - .filter(([, config]) => config.app) - .map(([key, config]) => ({ id: key, ...config.app })) - .concat(_apps) - return list -} - -export function startMinAppById(id: string) { - const app = getAllMinApps().find((app) => app?.id === id) - app && MinApp.start(app) -} diff --git a/src/renderer/src/config/minapps.ts b/src/renderer/src/config/minapps.ts new file mode 100644 index 00000000..784bb309 --- /dev/null +++ b/src/renderer/src/config/minapps.ts @@ -0,0 +1,204 @@ +import AiAssistantAppLogo from '@renderer/assets/images/apps/360-ai.png' +import AiSearchAppLogo from '@renderer/assets/images/apps/ai-search.png' +import BaiduAiAppLogo from '@renderer/assets/images/apps/baidu-ai.png' +import BaicuanAppLogo from '@renderer/assets/images/apps/baixiaoying.webp' +import DevvAppLogo from '@renderer/assets/images/apps/devv.png' +import DoubaoAppLogo from '@renderer/assets/images/apps/doubao.png' +import GeminiAppLogo from '@renderer/assets/images/apps/gemini.png' +import KimiAppLogo from '@renderer/assets/images/apps/kimi.jpg' +import MetasoAppLogo from '@renderer/assets/images/apps/metaso.webp' +import PerplexityAppLogo from '@renderer/assets/images/apps/perplexity.webp' +import PoeAppLogo from '@renderer/assets/images/apps/poe.webp' +import SensetimeAppLogo from '@renderer/assets/images/apps/sensetime.png' +import SparkDeskAppLogo from '@renderer/assets/images/apps/sparkdesk.png' +import TiangongAiLogo from '@renderer/assets/images/apps/tiangong.png' +import WanZhiAppLogo from '@renderer/assets/images/apps/wanzhi.jpg' +import TencentYuanbaoAppLogo from '@renderer/assets/images/apps/yuanbao.png' +import YuewenAppLogo from '@renderer/assets/images/apps/yuewen.png' +import ZhihuAppLogo from '@renderer/assets/images/apps/zhihu.png' +import ClaudeAppLogo from '@renderer/assets/images/models/claude.png' +import HailuoModelLogo from '@renderer/assets/images/models/hailuo.png' +import QwenModelLogo from '@renderer/assets/images/models/qwen.png' +import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png' +import GroqProviderLogo from '@renderer/assets/images/providers/groq.png' +import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.png' +import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png' +import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' +import MinApp from '@renderer/components/MinApp' +import { MinAppType } from '@renderer/types' + +const _apps: MinAppType[] = [ + { + id: 'openai', + name: 'ChatGPT', + url: 'https://chatgpt.com/', + logo: OpenAiProviderLogo, + bodered: true + }, + { + id: 'gemini', + name: 'Gemini', + url: 'https://gemini.google.com/', + logo: GeminiAppLogo + }, + { + id: 'silicon', + name: 'SiliconFlow', + url: 'https://cloud.siliconflow.cn/playground/chat', + logo: SiliconFlowProviderLogo + }, + { + id: 'deepseek', + name: 'DeepSeek', + url: 'https://chat.deepseek.com/', + logo: DeepSeekProviderLogo + }, + { + id: 'yi', + name: '万知', + url: 'https://www.wanzhi.com/', + logo: WanZhiAppLogo, + bodered: true + }, + { + id: 'zhipu', + name: '智谱', + url: 'https://chatglm.cn/main/alltoolsdetail', + logo: ZhipuProviderLogo + }, + { + id: 'moonshot', + name: 'Kimi', + url: 'https://kimi.moonshot.cn/', + logo: KimiAppLogo + }, + { + id: 'baichuan', + name: '百小应', + url: 'https://ying.baichuan-ai.com/chat', + logo: BaicuanAppLogo + }, + { + id: 'dashscope', + name: '通义千问', + url: 'https://tongyi.aliyun.com/qianwen/', + logo: QwenModelLogo + }, + { + id: 'stepfun', + name: '跃问', + url: 'https://yuewen.cn/chats/new', + logo: YuewenAppLogo, + bodered: true + }, + { + id: 'doubao', + name: '豆包', + url: 'https://www.doubao.com/chat/', + logo: DoubaoAppLogo + }, + { + id: 'minimax', + name: '海螺', + url: 'https://hailuoai.com/', + logo: HailuoModelLogo + }, + { + id: 'groq', + name: 'Groq', + url: 'https://chat.groq.com/', + logo: GroqProviderLogo + }, + { + id: 'anthropic', + name: 'Claude', + url: 'https://claude.ai/', + logo: ClaudeAppLogo + }, + { + id: '360-ai-so', + name: '360AI搜索', + logo: AiSearchAppLogo, + url: 'https://so.360.com/' + }, + { + id: '360-ai-bot', + name: 'AI 助手', + logo: AiAssistantAppLogo, + url: 'https://bot.360.com/', + bodered: true + }, + { + id: 'baidu-ai-chat', + name: '文心一言', + logo: BaiduAiAppLogo, + url: 'https://yiyan.baidu.com/' + }, + { + id: 'tencent-yuanbao', + name: '腾讯元宝', + logo: TencentYuanbaoAppLogo, + url: 'https://yuanbao.tencent.com/chat', + bodered: true + }, + { + id: 'sensetime-chat', + name: '商量', + logo: SensetimeAppLogo, + url: 'https://chat.sensetime.com/wb/chat', + bodered: true + }, + { + id: 'spark-desk', + name: 'SparkDesk', + logo: SparkDeskAppLogo, + url: 'https://xinghuo.xfyun.cn/desk' + }, + { + id: 'metaso', + name: '秘塔AI搜索', + logo: MetasoAppLogo, + url: 'https://metaso.cn/' + }, + { + id: 'poe', + name: 'Poe', + logo: PoeAppLogo, + url: 'https://poe.com' + }, + { + id: 'perplexity', + name: 'perplexity', + logo: PerplexityAppLogo, + url: 'https://www.perplexity.ai/' + }, + { + id: 'devv', + name: 'DEVV_', + logo: DevvAppLogo, + url: 'https://devv.ai/' + }, + { + id: 'tiangong-ai', + name: '天工AI', + logo: TiangongAiLogo, + url: 'https://www.tiangong.cn/', + bodered: true + }, + { + id: 'zhihu-zhiada', + name: '知乎直答', + logo: ZhihuAppLogo, + url: 'https://zhida.zhihu.com/', + bodered: true + } +] + +export function getAllMinApps() { + return _apps as MinAppType[] +} + +export function startMinAppById(id: string) { + const app = getAllMinApps().find((app) => app?.id === id) + app && MinApp.start(app) +} diff --git a/src/renderer/src/config/provider.ts b/src/renderer/src/config/providers.ts similarity index 76% rename from src/renderer/src/config/provider.ts rename to src/renderer/src/config/providers.ts index 77997b68..c471cfcc 100644 --- a/src/renderer/src/config/provider.ts +++ b/src/renderer/src/config/providers.ts @@ -1,16 +1,11 @@ -import BaicuanAppLogo from '@renderer/assets/images/apps/baixiaoying.webp' -import KimiAppLogo from '@renderer/assets/images/apps/kimi.jpg' -import YuewenAppLogo from '@renderer/assets/images/apps/yuewen.png' -import HailuoModelLogo from '@renderer/assets/images/models/hailuo.png' -import QwenModelLogo from '@renderer/assets/images/models/qwen.png' import AiHubMixProviderLogo from '@renderer/assets/images/providers/aihubmix.jpg' -import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.jpeg' +import AnthropicProviderLogo from '@renderer/assets/images/providers/anthropic.png' import BaichuanProviderLogo from '@renderer/assets/images/providers/baichuan.png' +import BytedanceProviderLogo from '@renderer/assets/images/providers/bytedance.png' import DashScopeProviderLogo from '@renderer/assets/images/providers/dashscope.png' import DeepSeekProviderLogo from '@renderer/assets/images/providers/deepseek.png' -import DoubaoProviderLogo from '@renderer/assets/images/providers/doubao.png' -import GeminiProviderLogo from '@renderer/assets/images/providers/gemini.png' -import GithubProviderLogo from '@renderer/assets/images/providers/github.svg' +import GithubProviderLogo from '@renderer/assets/images/providers/github.png' +import GoogleProviderLogo from '@renderer/assets/images/providers/google.png' import GraphRagProviderLogo from '@renderer/assets/images/providers/graph-rag.png' import GroqProviderLogo from '@renderer/assets/images/providers/groq.png' import MinimaxProviderLogo from '@renderer/assets/images/providers/minimax.png' @@ -20,8 +15,8 @@ import OllamaProviderLogo from '@renderer/assets/images/providers/ollama.png' import OpenAiProviderLogo from '@renderer/assets/images/providers/openai.png' import OpenRouterProviderLogo from '@renderer/assets/images/providers/openrouter.png' import SiliconFlowProviderLogo from '@renderer/assets/images/providers/silicon.png' -import StepFunProviderLogo from '@renderer/assets/images/providers/stepfun.png' -import YiProviderLogo from '@renderer/assets/images/providers/yi.png' +import StepProviderLogo from '@renderer/assets/images/providers/step.png' +import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' export function getProviderLogo(providerId: string) { @@ -33,7 +28,7 @@ export function getProviderLogo(providerId: string) { case 'deepseek': return DeepSeekProviderLogo case 'yi': - return YiProviderLogo + return ZeroOneProviderLogo case 'groq': return GroqProviderLogo case 'zhipu': @@ -53,11 +48,11 @@ export function getProviderLogo(providerId: string) { case 'aihubmix': return AiHubMixProviderLogo case 'gemini': - return GeminiProviderLogo + return GoogleProviderLogo case 'stepfun': - return StepFunProviderLogo + return StepProviderLogo case 'doubao': - return DoubaoProviderLogo + return BytedanceProviderLogo case 'graphrag-kylin-mountain': return GraphRagProviderLogo case 'minimax': @@ -81,12 +76,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://platform.openai.com/api-keys', docs: 'https://platform.openai.com/docs', models: 'https://platform.openai.com/docs/models' - }, - app: { - id: 'openai', - name: 'ChatGPT', - url: 'https://chatgpt.com/', - logo: OpenAiProviderLogo } }, gemini: { @@ -98,12 +87,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://aistudio.google.com/app/apikey', docs: 'https://ai.google.dev/gemini-api/docs', models: 'https://ai.google.dev/gemini-api/docs/models/gemini' - }, - app: { - id: 'gemini', - name: 'Gemini', - url: 'https://gemini.google.com/', - logo: GeminiProviderLogo } }, silicon: { @@ -115,12 +98,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://cloud.siliconflow.cn/account/ak?referrer=clxty1xuy0014lvqwh5z50i88', docs: 'https://docs.siliconflow.cn/', models: 'https://docs.siliconflow.cn/docs/model-names' - }, - app: { - id: 'silicon', - name: 'SiliconFlow', - url: 'https://cloud.siliconflow.cn/playground/chat', - logo: SiliconFlowProviderLogo } }, deepseek: { @@ -132,12 +109,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://platform.deepseek.com/api_keys', docs: 'https://platform.deepseek.com/api-docs/', models: 'https://platform.deepseek.com/api-docs/' - }, - app: { - id: 'deepseek', - name: 'DeepSeek', - url: 'https://chat.deepseek.com/', - logo: DeepSeekProviderLogo } }, ocoolai: { @@ -171,12 +142,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://platform.lingyiwanwu.com/apikeys', docs: 'https://platform.lingyiwanwu.com/docs', models: 'https://platform.lingyiwanwu.com/docs#%E6%A8%A1%E5%9E%8B' - }, - app: { - id: 'yi', - name: 'Yi', - url: 'https://www.wanzhi.com/', - logo: YiProviderLogo } }, zhipu: { @@ -188,12 +153,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://open.bigmodel.cn/usercenter/apikeys', docs: 'https://open.bigmodel.cn/dev/howuse/introduction', models: 'https://open.bigmodel.cn/modelcenter/square' - }, - app: { - id: 'zhipu', - name: '智谱', - url: 'https://chatglm.cn/main/alltoolsdetail', - logo: ZhipuProviderLogo } }, moonshot: { @@ -205,12 +164,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://platform.moonshot.cn/console/api-keys', docs: 'https://platform.moonshot.cn/docs/', models: 'https://platform.moonshot.cn/docs/intro#%E6%A8%A1%E5%9E%8B%E5%88%97%E8%A1%A8' - }, - app: { - id: 'moonshot', - name: 'Kimi', - url: 'https://kimi.moonshot.cn/', - logo: KimiAppLogo } }, baichuan: { @@ -222,12 +175,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://platform.baichuan-ai.com/console/apikey', docs: 'https://platform.baichuan-ai.com/docs', models: 'https://platform.baichuan-ai.com/price' - }, - app: { - id: 'baichuan', - name: '百小应', - url: 'https://ying.baichuan-ai.com/chat', - logo: BaicuanAppLogo } }, dashscope: { @@ -239,12 +186,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://help.aliyun.com/zh/dashscope/developer-reference/acquisition-and-configuration-of-api-key', docs: 'https://help.aliyun.com/zh/dashscope/', models: 'https://dashscope.console.aliyun.com/model' - }, - app: { - id: 'dashscope', - name: '通义千问', - url: 'https://tongyi.aliyun.com/qianwen/', - logo: QwenModelLogo } }, stepfun: { @@ -256,12 +197,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://platform.stepfun.com/interface-key', docs: 'https://platform.stepfun.com/docs/overview/concept', models: 'https://platform.stepfun.com/docs/llm/text' - }, - app: { - id: 'stepfun', - name: '跃问', - url: 'https://yuewen.cn/chats/new', - logo: YuewenAppLogo } }, doubao: { @@ -273,12 +208,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://console.volcengine.com/ark/region:ark+cn-beijing/apiKey', docs: 'https://www.volcengine.com/docs/82379/1182403', models: 'https://console.volcengine.com/ark/region:ark+cn-beijing/endpoint' - }, - app: { - id: 'doubao', - name: '豆包', - url: 'https://www.doubao.com/chat/', - logo: DoubaoProviderLogo } }, minimax: { @@ -290,12 +219,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://platform.minimaxi.com/user-center/basic-information/interface-key', docs: 'https://platform.minimaxi.com/document/Announcement', models: 'https://platform.minimaxi.com/document/Models' - }, - app: { - id: 'minimax', - name: '海螺', - url: 'https://hailuoai.com/', - logo: HailuoModelLogo } }, 'graphrag-kylin-mountain': { @@ -323,12 +246,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://console.groq.com/keys', docs: 'https://console.groq.com/docs/quickstart', models: 'https://console.groq.com/docs/models' - }, - app: { - id: 'groq', - name: 'Groq', - url: 'https://chat.groq.com/', - logo: GroqProviderLogo } }, ollama: { @@ -350,12 +267,6 @@ export const PROVIDER_CONFIG = { apiKey: 'https://console.anthropic.com/settings/keys', docs: 'https://docs.anthropic.com/en/docs', models: 'https://docs.anthropic.com/en/docs/about-claude/models' - }, - app: { - id: 'anthropic', - name: 'Claude', - url: 'https://claude.ai/', - logo: AnthropicProviderLogo } }, aihubmix: { diff --git a/src/renderer/src/pages/apps/App.tsx b/src/renderer/src/pages/apps/App.tsx index 0ef3292a..02aa0379 100644 --- a/src/renderer/src/pages/apps/App.tsx +++ b/src/renderer/src/pages/apps/App.tsx @@ -1,5 +1,4 @@ import MinApp from '@renderer/components/MinApp' -import { useTheme } from '@renderer/context/ThemeProvider' import { MinAppType } from '@renderer/types' import { FC } from 'react' import styled from 'styled-components' @@ -9,15 +8,13 @@ interface Props { } const App: FC = ({ app }) => { - const { theme } = useTheme() - const onClick = () => { MinApp.start(app) } return ( - + {app.name} ) diff --git a/src/renderer/src/pages/apps/AppsPage.tsx b/src/renderer/src/pages/apps/AppsPage.tsx index d06b088f..0fd42985 100644 --- a/src/renderer/src/pages/apps/AppsPage.tsx +++ b/src/renderer/src/pages/apps/AppsPage.tsx @@ -1,7 +1,7 @@ import { SearchOutlined } from '@ant-design/icons' import { Navbar, NavbarCenter } from '@renderer/components/app/Navbar' import { Center } from '@renderer/components/Layout' -import { getAllMinApps } from '@renderer/config/minapp' +import { getAllMinApps } from '@renderer/config/minapps' import { Empty, Input } from 'antd' import { isEmpty } from 'lodash' import { FC, useMemo, useState } from 'react' diff --git a/src/renderer/src/pages/home/Messages/Message.tsx b/src/renderer/src/pages/home/Messages/Message.tsx index c002ab28..dcf47d87 100644 --- a/src/renderer/src/pages/home/Messages/Message.tsx +++ b/src/renderer/src/pages/home/Messages/Message.tsx @@ -2,7 +2,7 @@ import { SyncOutlined } from '@ant-design/icons' import UserPopup from '@renderer/components/Popups/UserPopup' import { FONT_FAMILY } from '@renderer/config/constant' import { APP_NAME, AppLogo, isLocalAi } from '@renderer/config/env' -import { startMinAppById } from '@renderer/config/minapp' +import { startMinAppById } from '@renderer/config/minapps' import { getModelLogo } from '@renderer/config/models' import { useTheme } from '@renderer/context/ThemeProvider' import { useAssistant } from '@renderer/hooks/useAssistant' @@ -56,6 +56,7 @@ const MessageItem: FC = ({ message, index, onDeleteMessage }) => { const avatarSource = useMemo(() => { if (isLocalAi) return AppLogo return message.modelId ? getModelLogo(message.modelId) : undefined + // eslint-disable-next-line react-hooks/exhaustive-deps }, [message.modelId, theme]) const avatarName = useMemo(() => firstLetter(assistant?.name).toUpperCase(), [assistant?.name]) diff --git a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx index dd8e236c..14d7123f 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx @@ -8,7 +8,7 @@ import { } from '@ant-design/icons' import VisionIcon from '@renderer/components/Icons/VisionIcon' import { getModelLogo, isVisionModel } from '@renderer/config/models' -import { PROVIDER_CONFIG } from '@renderer/config/provider' +import { PROVIDER_CONFIG } from '@renderer/config/providers' import { useTheme } from '@renderer/context/ThemeProvider' import { useProvider } from '@renderer/hooks/useProvider' import { checkApi } from '@renderer/services/api' diff --git a/src/renderer/src/pages/settings/ProviderSettings/index.tsx b/src/renderer/src/pages/settings/ProviderSettings/index.tsx index 982efca2..b2c3e4a0 100644 --- a/src/renderer/src/pages/settings/ProviderSettings/index.tsx +++ b/src/renderer/src/pages/settings/ProviderSettings/index.tsx @@ -1,6 +1,6 @@ import { DeleteOutlined, EditOutlined, PlusOutlined } from '@ant-design/icons' import { DragDropContext, Draggable, Droppable, DropResult } from '@hello-pangea/dnd' -import { getProviderLogo } from '@renderer/config/provider' +import { getProviderLogo } from '@renderer/config/providers' import { useAllProviders, useProviders } from '@renderer/hooks/useProvider' import { Provider } from '@renderer/types' import { droppableReorder, generateColorFromChar, getFirstCharacter, uuid } from '@renderer/utils' @@ -106,15 +106,15 @@ const ProvidersList: FC = () => { className={provider.id === selectedProvider?.id ? 'active' : ''} onClick={() => setSelectedProvider(provider)}> {provider.isSystem && ( - + )} {!provider.isSystem && ( - {getFirstCharacter(provider.name)} - + )} {provider.isSystem ? t(`provider.${provider.id}`) : provider.name} @@ -190,6 +190,10 @@ const ProviderListItem = styled.div` } ` +const ProviderLogo = styled(Avatar)` + border: 0.5px solid var(--color-border); +` + const ProviderItemName = styled.div` margin-left: 10px; overflow: hidden; diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index d8bafc49..d6cf4e7a 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -85,6 +85,7 @@ export type MinAppType = { name: string logo: string url: string + bodered?: boolean } export interface FileType {