feat: update miniapp logo
@ -80,11 +80,12 @@ afterPack: scripts/after-pack.js
|
|||||||
afterSign: scripts/notarize.js
|
afterSign: scripts/notarize.js
|
||||||
releaseInfo:
|
releaseInfo:
|
||||||
releaseNotes: |
|
releaseNotes: |
|
||||||
消息分组支持网格模式
|
翻译增加历史记录
|
||||||
知识库支持多选
|
为单个消息增加导出功能
|
||||||
知识库添加目录支持显示进度
|
支持 PlantUML 显示和预览
|
||||||
知识库支持 DRAFTS, EPUB、代码等
|
修复知识库状态指示器显示问题
|
||||||
知识库支持调节匹配度阈值
|
模型思考内容支持折叠设置和复制
|
||||||
添加 NotebookLM, Coze 小程序
|
编辑助手名字支持选择 Emoji
|
||||||
增加话题提示词
|
删除话题需要二次确认
|
||||||
OpenRouter 支持 Web 搜索
|
话题右键菜单增加复制选项
|
||||||
|
修复暂停对话之后消息被覆盖问题
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 722 B After Width: | Height: | Size: 18 KiB |
1
src/renderer/src/assets/images/apps/dify.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg fill="currentColor" fill-rule="evenodd" height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Dify</title><clipPath id="lobe-icons-dify-fill"><path d="M1 0h10.286c6.627 0 12 5.373 12 12s-5.373 12-12 12H1V0z"></path></clipPath><foreignObject clip-path="url(#lobe-icons-dify-fill)" height="24" style="background:conic-gradient(from 180deg at 50% 50%, #0222C3, #8FB1F4, #FFFFFF)" width="24"></foreignObject></svg>
|
||||||
|
After Width: | Height: | Size: 480 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 20 KiB |
BIN
src/renderer/src/assets/images/apps/grok.webp
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 20 KiB |
BIN
src/renderer/src/assets/images/apps/kimi.webp
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 724 B |
|
Before Width: | Height: | Size: 13 KiB |
BIN
src/renderer/src/assets/images/apps/sparkdesk.webp
Normal file
|
After Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 14 KiB |
BIN
src/renderer/src/assets/images/apps/yuanbao.webp
Normal file
|
After Width: | Height: | Size: 4.0 KiB |
|
Before Width: | Height: | Size: 14 KiB |
@ -24,6 +24,7 @@ const MinAppIcon: FC<Props> = ({ app, size = 48, style }) => {
|
|||||||
width: `${size}px`,
|
width: `${size}px`,
|
||||||
height: `${size}px`,
|
height: `${size}px`,
|
||||||
backgroundColor: _app.background,
|
backgroundColor: _app.background,
|
||||||
|
...app.style,
|
||||||
...style
|
...style
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@ -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 BoltAppLogo from '@renderer/assets/images/apps/bolt.svg?url'
|
||||||
import CozeAppLogo from '@renderer/assets/images/apps/coze.webp?url'
|
import CozeAppLogo from '@renderer/assets/images/apps/coze.webp?url'
|
||||||
import DevvAppLogo from '@renderer/assets/images/apps/devv.png?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 DoubaoAppLogo from '@renderer/assets/images/apps/doubao.png?url'
|
||||||
import DuckDuckGoAppLogo from '@renderer/assets/images/apps/duckduckgo.webp?url'
|
import DuckDuckGoAppLogo from '@renderer/assets/images/apps/duckduckgo.webp?url'
|
||||||
import FeloAppLogo from '@renderer/assets/images/apps/felo.png?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 GeminiAppLogo from '@renderer/assets/images/apps/gemini.png?url'
|
||||||
import GensparkLogo from '@renderer/assets/images/apps/genspark.jpg?url'
|
import GensparkLogo from '@renderer/assets/images/apps/genspark.jpg?url'
|
||||||
import GithubCopilotLogo from '@renderer/assets/images/apps/github-copilot.webp?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 HikaLogo from '@renderer/assets/images/apps/hika.webp?url'
|
||||||
import HuggingChatLogo from '@renderer/assets/images/apps/huggingchat.svg?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 LambdaChatLogo from '@renderer/assets/images/apps/lambdachat.webp?url'
|
||||||
import LeChatLogo from '@renderer/assets/images/apps/lechat.png?url'
|
import LeChatLogo from '@renderer/assets/images/apps/lechat.png?url'
|
||||||
import MetasoAppLogo from '@renderer/assets/images/apps/metaso.webp?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 ZhipuProviderLogo from '@renderer/assets/images/apps/qingyan.png?url'
|
||||||
import QwenlmAppLogo from '@renderer/assets/images/apps/qwenlm.webp?url'
|
import QwenlmAppLogo from '@renderer/assets/images/apps/qwenlm.webp?url'
|
||||||
import SensetimeAppLogo from '@renderer/assets/images/apps/sensetime.png?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 ThinkAnyLogo from '@renderer/assets/images/apps/thinkany.webp?url'
|
||||||
import TiangongAiLogo from '@renderer/assets/images/apps/tiangong.png?url'
|
import TiangongAiLogo from '@renderer/assets/images/apps/tiangong.png?url'
|
||||||
import WanZhiAppLogo from '@renderer/assets/images/apps/wanzhi.jpg?url'
|
import WanZhiAppLogo from '@renderer/assets/images/apps/wanzhi.jpg?url'
|
||||||
import WPSLingXiLogo from '@renderer/assets/images/apps/wpslingxi.webp?url'
|
import WPSLingXiLogo from '@renderer/assets/images/apps/wpslingxi.webp?url'
|
||||||
import XiaoYiAppLogo from '@renderer/assets/images/apps/xiaoyi.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 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 ClaudeAppLogo from '@renderer/assets/images/models/claude.png?url'
|
||||||
import HailuoModelLogo from '@renderer/assets/images/models/hailuo.png?url'
|
import HailuoModelLogo from '@renderer/assets/images/models/hailuo.png?url'
|
||||||
import QwenModelLogo from '@renderer/assets/images/models/qwen.png?url'
|
import QwenModelLogo from '@renderer/assets/images/models/qwen.png?url'
|
||||||
@ -148,7 +147,10 @@ export const DEFAULT_MIN_APPS: MinAppType[] = [
|
|||||||
name: '百度AI搜索',
|
name: '百度AI搜索',
|
||||||
logo: BaiduAiSearchLogo,
|
logo: BaiduAiSearchLogo,
|
||||||
url: 'https://chat.baidu.com/',
|
url: 'https://chat.baidu.com/',
|
||||||
bodered: true
|
bodered: true,
|
||||||
|
style: {
|
||||||
|
padding: 5
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'tencent-yuanbao',
|
id: 'tencent-yuanbao',
|
||||||
@ -201,13 +203,6 @@ export const DEFAULT_MIN_APPS: MinAppType[] = [
|
|||||||
url: 'https://www.tiangong.cn/',
|
url: 'https://www.tiangong.cn/',
|
||||||
bodered: true
|
bodered: true
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 'zhihu-zhiada',
|
|
||||||
name: '知乎直答',
|
|
||||||
logo: ZhihuAppLogo,
|
|
||||||
url: 'https://zhida.zhihu.com/',
|
|
||||||
bodered: true
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
id: 'hugging-chat',
|
id: 'hugging-chat',
|
||||||
name: 'HuggingChat',
|
name: 'HuggingChat',
|
||||||
@ -254,7 +249,10 @@ export const DEFAULT_MIN_APPS: MinAppType[] = [
|
|||||||
name: 'ThinkAny',
|
name: 'ThinkAny',
|
||||||
logo: ThinkAnyLogo,
|
logo: ThinkAnyLogo,
|
||||||
url: 'https://thinkany.ai/',
|
url: 'https://thinkany.ai/',
|
||||||
bodered: true
|
bodered: true,
|
||||||
|
style: {
|
||||||
|
padding: 5
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'hika',
|
id: 'hika',
|
||||||
@ -333,7 +331,10 @@ export const DEFAULT_MIN_APPS: MinAppType[] = [
|
|||||||
name: 'Dify',
|
name: 'Dify',
|
||||||
logo: DifyAppLogo,
|
logo: DifyAppLogo,
|
||||||
url: 'https://cloud.dify.ai/apps',
|
url: 'https://cloud.dify.ai/apps',
|
||||||
bodered: true
|
bodered: true,
|
||||||
|
style: {
|
||||||
|
padding: 5
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
id: 'wpslingxi',
|
id: 'wpslingxi',
|
||||||
|
|||||||
@ -252,6 +252,7 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// @ts-expect-error `stream` is not typed
|
||||||
for await (const chunk of stream) {
|
for await (const chunk of stream) {
|
||||||
if (window.keyv.get(EVENT_NAMES.CHAT_COMPLETION_PAUSED)) {
|
if (window.keyv.get(EVENT_NAMES.CHAT_COMPLETION_PAUSED)) {
|
||||||
break
|
break
|
||||||
@ -259,7 +260,6 @@ export default class OpenAIProvider extends BaseProvider {
|
|||||||
|
|
||||||
const delta = chunk.choices[0]?.delta
|
const delta = chunk.choices[0]?.delta
|
||||||
|
|
||||||
// @ts-expect-error `reasoning_content` not supported by OpenAI for now
|
|
||||||
if (delta?.reasoning_content) {
|
if (delta?.reasoning_content) {
|
||||||
hasReasoningContent = true
|
hasReasoningContent = true
|
||||||
}
|
}
|
||||||
|
|||||||
@ -30,7 +30,7 @@ const persistedReducer = persistReducer(
|
|||||||
{
|
{
|
||||||
key: 'cherry-studio',
|
key: 'cherry-studio',
|
||||||
storage,
|
storage,
|
||||||
version: 70,
|
version: 71,
|
||||||
blacklist: ['runtime'],
|
blacklist: ['runtime'],
|
||||||
migrate
|
migrate
|
||||||
},
|
},
|
||||||
|
|||||||
@ -1084,7 +1084,7 @@ const migrateConfig = {
|
|||||||
return state
|
return state
|
||||||
},
|
},
|
||||||
'71': (state: RootState) => {
|
'71': (state: RootState) => {
|
||||||
const appIds = ['dify', 'wpslingxi', 'lechat', 'abacus', 'lambdachat']
|
const appIds = ['dify', 'wpslingxi', 'lechat', 'abacus', 'lambdachat', 'baidu-ai-search']
|
||||||
|
|
||||||
if (state.minapps) {
|
if (state.minapps) {
|
||||||
appIds.forEach((id) => {
|
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
|
state.settings.thoughtAutoCollapse = true
|
||||||
|
|
||||||
return state
|
return state
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
import OpenAI from 'openai'
|
import OpenAI from 'openai'
|
||||||
|
import React from 'react'
|
||||||
import { BuiltinTheme } from 'shiki'
|
import { BuiltinTheme } from 'shiki'
|
||||||
|
|
||||||
export type Assistant = {
|
export type Assistant = {
|
||||||
id: string
|
id: string
|
||||||
name: string
|
name: string
|
||||||
@ -151,6 +151,7 @@ export type MinAppType = {
|
|||||||
url: string
|
url: string
|
||||||
bodered?: boolean
|
bodered?: boolean
|
||||||
background?: string
|
background?: string
|
||||||
|
style?: React.CSSProperties
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FileType {
|
export interface FileType {
|
||||||
|
|||||||