diff --git a/electron-builder.yml b/electron-builder.yml
index 99b06e38..7d749059 100644
--- a/electron-builder.yml
+++ b/electron-builder.yml
@@ -80,11 +80,12 @@ afterPack: scripts/after-pack.js
afterSign: scripts/notarize.js
releaseInfo:
releaseNotes: |
- 消息分组支持网格模式
- 知识库支持多选
- 知识库添加目录支持显示进度
- 知识库支持 DRAFTS, EPUB、代码等
- 知识库支持调节匹配度阈值
- 添加 NotebookLM, Coze 小程序
- 增加话题提示词
- OpenRouter 支持 Web 搜索
+ 翻译增加历史记录
+ 为单个消息增加导出功能
+ 支持 PlantUML 显示和预览
+ 修复知识库状态指示器显示问题
+ 模型思考内容支持折叠设置和复制
+ 编辑助手名字支持选择 Emoji
+ 删除话题需要二次确认
+ 话题右键菜单增加复制选项
+ 修复暂停对话之后消息被覆盖问题
diff --git a/src/renderer/src/assets/images/apps/baidu-ai-search.webp b/src/renderer/src/assets/images/apps/baidu-ai-search.webp
index 125cad54..7456b76d 100644
Binary files a/src/renderer/src/assets/images/apps/baidu-ai-search.webp and b/src/renderer/src/assets/images/apps/baidu-ai-search.webp differ
diff --git a/src/renderer/src/assets/images/apps/dify.svg b/src/renderer/src/assets/images/apps/dify.svg
new file mode 100644
index 00000000..cd2c6d27
--- /dev/null
+++ b/src/renderer/src/assets/images/apps/dify.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/renderer/src/assets/images/apps/dify.webp b/src/renderer/src/assets/images/apps/dify.webp
deleted file mode 100644
index 1a3620e4..00000000
Binary files a/src/renderer/src/assets/images/apps/dify.webp and /dev/null differ
diff --git a/src/renderer/src/assets/images/apps/grok.png b/src/renderer/src/assets/images/apps/grok.png
deleted file mode 100644
index 8482ff8b..00000000
Binary files a/src/renderer/src/assets/images/apps/grok.png and /dev/null differ
diff --git a/src/renderer/src/assets/images/apps/grok.webp b/src/renderer/src/assets/images/apps/grok.webp
new file mode 100644
index 00000000..cc96de79
Binary files /dev/null and b/src/renderer/src/assets/images/apps/grok.webp differ
diff --git a/src/renderer/src/assets/images/apps/kimi.jpg b/src/renderer/src/assets/images/apps/kimi.jpg
deleted file mode 100644
index a7b3b0c7..00000000
Binary files a/src/renderer/src/assets/images/apps/kimi.jpg and /dev/null differ
diff --git a/src/renderer/src/assets/images/apps/kimi.webp b/src/renderer/src/assets/images/apps/kimi.webp
new file mode 100644
index 00000000..7346965a
Binary files /dev/null and b/src/renderer/src/assets/images/apps/kimi.webp differ
diff --git a/src/renderer/src/assets/images/apps/lambdachat.webp b/src/renderer/src/assets/images/apps/lambdachat.webp
index d291dcf9..3c83f84b 100644
Binary files a/src/renderer/src/assets/images/apps/lambdachat.webp and b/src/renderer/src/assets/images/apps/lambdachat.webp differ
diff --git a/src/renderer/src/assets/images/apps/sparkdesk.png b/src/renderer/src/assets/images/apps/sparkdesk.png
deleted file mode 100644
index 9a173550..00000000
Binary files a/src/renderer/src/assets/images/apps/sparkdesk.png and /dev/null differ
diff --git a/src/renderer/src/assets/images/apps/sparkdesk.webp b/src/renderer/src/assets/images/apps/sparkdesk.webp
new file mode 100644
index 00000000..a712cb52
Binary files /dev/null and b/src/renderer/src/assets/images/apps/sparkdesk.webp differ
diff --git a/src/renderer/src/assets/images/apps/yuanbao.png b/src/renderer/src/assets/images/apps/yuanbao.png
deleted file mode 100644
index e9ab2efb..00000000
Binary files a/src/renderer/src/assets/images/apps/yuanbao.png and /dev/null differ
diff --git a/src/renderer/src/assets/images/apps/yuanbao.webp b/src/renderer/src/assets/images/apps/yuanbao.webp
new file mode 100644
index 00000000..6b3e5947
Binary files /dev/null and b/src/renderer/src/assets/images/apps/yuanbao.webp differ
diff --git a/src/renderer/src/assets/images/apps/zhihu.png b/src/renderer/src/assets/images/apps/zhihu.png
deleted file mode 100644
index eb42f024..00000000
Binary files a/src/renderer/src/assets/images/apps/zhihu.png and /dev/null differ
diff --git a/src/renderer/src/components/Icons/MinAppIcon.tsx b/src/renderer/src/components/Icons/MinAppIcon.tsx
index 99469d19..ea7da8a0 100644
--- a/src/renderer/src/components/Icons/MinAppIcon.tsx
+++ b/src/renderer/src/components/Icons/MinAppIcon.tsx
@@ -24,6 +24,7 @@ const MinAppIcon: FC = ({ app, size = 48, style }) => {
width: `${size}px`,
height: `${size}px`,
backgroundColor: _app.background,
+ ...app.style,
...style
}}
/>
diff --git a/src/renderer/src/config/minapps.ts b/src/renderer/src/config/minapps.ts
index afc98898..65f23df2 100644
--- a/src/renderer/src/config/minapps.ts
+++ b/src/renderer/src/config/minapps.ts
@@ -7,7 +7,7 @@ import BaicuanAppLogo from '@renderer/assets/images/apps/baixiaoying.webp?url'
import BoltAppLogo from '@renderer/assets/images/apps/bolt.svg?url'
import CozeAppLogo from '@renderer/assets/images/apps/coze.webp?url'
import DevvAppLogo from '@renderer/assets/images/apps/devv.png?url'
-import DifyAppLogo from '@renderer/assets/images/apps/dify.webp?url'
+import DifyAppLogo from '@renderer/assets/images/apps/dify.svg?url'
import DoubaoAppLogo from '@renderer/assets/images/apps/doubao.png?url'
import DuckDuckGoAppLogo from '@renderer/assets/images/apps/duckduckgo.webp?url'
import FeloAppLogo from '@renderer/assets/images/apps/felo.png?url'
@@ -15,10 +15,10 @@ import FlowithAppLogo from '@renderer/assets/images/apps/flowith.svg?url'
import GeminiAppLogo from '@renderer/assets/images/apps/gemini.png?url'
import GensparkLogo from '@renderer/assets/images/apps/genspark.jpg?url'
import GithubCopilotLogo from '@renderer/assets/images/apps/github-copilot.webp?url'
-import GrokAppLogo from '@renderer/assets/images/apps/grok.png?url'
+import GrokAppLogo from '@renderer/assets/images/apps/grok.webp?url'
import HikaLogo from '@renderer/assets/images/apps/hika.webp?url'
import HuggingChatLogo from '@renderer/assets/images/apps/huggingchat.svg?url'
-import KimiAppLogo from '@renderer/assets/images/apps/kimi.jpg?url'
+import KimiAppLogo from '@renderer/assets/images/apps/kimi.webp?url'
import LambdaChatLogo from '@renderer/assets/images/apps/lambdachat.webp?url'
import LeChatLogo from '@renderer/assets/images/apps/lechat.png?url'
import MetasoAppLogo from '@renderer/assets/images/apps/metaso.webp?url'
@@ -30,15 +30,14 @@ import PoeAppLogo from '@renderer/assets/images/apps/poe.webp?url'
import ZhipuProviderLogo from '@renderer/assets/images/apps/qingyan.png?url'
import QwenlmAppLogo from '@renderer/assets/images/apps/qwenlm.webp?url'
import SensetimeAppLogo from '@renderer/assets/images/apps/sensetime.png?url'
-import SparkDeskAppLogo from '@renderer/assets/images/apps/sparkdesk.png?url'
+import SparkDeskAppLogo from '@renderer/assets/images/apps/sparkdesk.webp?url'
import ThinkAnyLogo from '@renderer/assets/images/apps/thinkany.webp?url'
import TiangongAiLogo from '@renderer/assets/images/apps/tiangong.png?url'
import WanZhiAppLogo from '@renderer/assets/images/apps/wanzhi.jpg?url'
import WPSLingXiLogo from '@renderer/assets/images/apps/wpslingxi.webp?url'
import XiaoYiAppLogo from '@renderer/assets/images/apps/xiaoyi.webp?url'
-import TencentYuanbaoAppLogo from '@renderer/assets/images/apps/yuanbao.png?url'
+import TencentYuanbaoAppLogo from '@renderer/assets/images/apps/yuanbao.webp?url'
import YuewenAppLogo from '@renderer/assets/images/apps/yuewen.png?url'
-import ZhihuAppLogo from '@renderer/assets/images/apps/zhihu.png?url'
import ClaudeAppLogo from '@renderer/assets/images/models/claude.png?url'
import HailuoModelLogo from '@renderer/assets/images/models/hailuo.png?url'
import QwenModelLogo from '@renderer/assets/images/models/qwen.png?url'
@@ -148,7 +147,10 @@ export const DEFAULT_MIN_APPS: MinAppType[] = [
name: '百度AI搜索',
logo: BaiduAiSearchLogo,
url: 'https://chat.baidu.com/',
- bodered: true
+ bodered: true,
+ style: {
+ padding: 5
+ }
},
{
id: 'tencent-yuanbao',
@@ -201,13 +203,6 @@ export const DEFAULT_MIN_APPS: MinAppType[] = [
url: 'https://www.tiangong.cn/',
bodered: true
},
- {
- id: 'zhihu-zhiada',
- name: '知乎直答',
- logo: ZhihuAppLogo,
- url: 'https://zhida.zhihu.com/',
- bodered: true
- },
{
id: 'hugging-chat',
name: 'HuggingChat',
@@ -254,7 +249,10 @@ export const DEFAULT_MIN_APPS: MinAppType[] = [
name: 'ThinkAny',
logo: ThinkAnyLogo,
url: 'https://thinkany.ai/',
- bodered: true
+ bodered: true,
+ style: {
+ padding: 5
+ }
},
{
id: 'hika',
@@ -333,7 +331,10 @@ export const DEFAULT_MIN_APPS: MinAppType[] = [
name: 'Dify',
logo: DifyAppLogo,
url: 'https://cloud.dify.ai/apps',
- bodered: true
+ bodered: true,
+ style: {
+ padding: 5
+ }
},
{
id: 'wpslingxi',
diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts
index 74d13194..50cfb3f4 100644
--- a/src/renderer/src/providers/OpenAIProvider.ts
+++ b/src/renderer/src/providers/OpenAIProvider.ts
@@ -252,6 +252,7 @@ export default class OpenAIProvider extends BaseProvider {
})
}
+ // @ts-expect-error `stream` is not typed
for await (const chunk of stream) {
if (window.keyv.get(EVENT_NAMES.CHAT_COMPLETION_PAUSED)) {
break
@@ -259,7 +260,6 @@ export default class OpenAIProvider extends BaseProvider {
const delta = chunk.choices[0]?.delta
- // @ts-expect-error `reasoning_content` not supported by OpenAI for now
if (delta?.reasoning_content) {
hasReasoningContent = true
}
diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts
index fbe7fee5..0b0abc28 100644
--- a/src/renderer/src/store/index.ts
+++ b/src/renderer/src/store/index.ts
@@ -30,7 +30,7 @@ const persistedReducer = persistReducer(
{
key: 'cherry-studio',
storage,
- version: 70,
+ version: 71,
blacklist: ['runtime'],
migrate
},
diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts
index ca9848f7..731c408f 100644
--- a/src/renderer/src/store/migrate.ts
+++ b/src/renderer/src/store/migrate.ts
@@ -1084,7 +1084,7 @@ const migrateConfig = {
return state
},
'71': (state: RootState) => {
- const appIds = ['dify', 'wpslingxi', 'lechat', 'abacus', 'lambdachat']
+ const appIds = ['dify', 'wpslingxi', 'lechat', 'abacus', 'lambdachat', 'baidu-ai-search']
if (state.minapps) {
appIds.forEach((id) => {
@@ -1095,6 +1095,10 @@ const migrateConfig = {
})
}
+ // remove zhihu-zhiada
+ state.minapps.enabled = state.minapps.enabled.filter((app) => app.id !== 'zhihu-zhiada')
+ state.minapps.disabled = state.minapps.disabled.filter((app) => app.id !== 'zhihu-zhiada')
+
state.settings.thoughtAutoCollapse = true
return state
diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts
index fc81352e..e9f29ad8 100644
--- a/src/renderer/src/types/index.ts
+++ b/src/renderer/src/types/index.ts
@@ -1,6 +1,6 @@
import OpenAI from 'openai'
+import React from 'react'
import { BuiltinTheme } from 'shiki'
-
export type Assistant = {
id: string
name: string
@@ -151,6 +151,7 @@ export type MinAppType = {
url: string
bodered?: boolean
background?: string
+ style?: React.CSSProperties
}
export interface FileType {