From ee95fad7e5cbe27d54259d59baf380d4a3553ec5 Mon Sep 17 00:00:00 2001 From: liyuyun-lyy Date: Tue, 16 Sep 2025 21:24:24 +0800 Subject: [PATCH 1/6] feat: add support for iflow cli (#10198) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 本x --- packages/shared/config/constant.ts | 3 ++- src/main/services/CodeToolsService.ts | 4 ++++ src/renderer/src/pages/code/index.ts | 12 ++++++++++-- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/shared/config/constant.ts b/packages/shared/config/constant.ts index 18246cd1e7..3dc2a45a6a 100644 --- a/packages/shared/config/constant.ts +++ b/packages/shared/config/constant.ts @@ -216,5 +216,6 @@ export enum codeTools { qwenCode = 'qwen-code', claudeCode = 'claude-code', geminiCli = 'gemini-cli', - openaiCodex = 'openai-codex' + openaiCodex = 'openai-codex', + iFlowCli = 'iflow-cli' } diff --git a/src/main/services/CodeToolsService.ts b/src/main/services/CodeToolsService.ts index 6e3bb19022..1372bf1f88 100644 --- a/src/main/services/CodeToolsService.ts +++ b/src/main/services/CodeToolsService.ts @@ -51,6 +51,8 @@ class CodeToolsService { return '@openai/codex' case codeTools.qwenCode: return '@qwen-code/qwen-code' + case codeTools.iFlowCli: + return '@iflow-ai/iflow-cli' default: throw new Error(`Unsupported CLI tool: ${cliTool}`) } @@ -66,6 +68,8 @@ class CodeToolsService { return 'codex' case codeTools.qwenCode: return 'qwen' + case codeTools.iFlowCli: + return 'iflow' default: throw new Error(`Unsupported CLI tool: ${cliTool}`) } diff --git a/src/renderer/src/pages/code/index.ts b/src/renderer/src/pages/code/index.ts index 2c36da3ec6..f286704d39 100644 --- a/src/renderer/src/pages/code/index.ts +++ b/src/renderer/src/pages/code/index.ts @@ -19,7 +19,8 @@ export const CLI_TOOLS = [ { value: codeTools.claudeCode, label: 'Claude Code' }, { value: codeTools.qwenCode, label: 'Qwen Code' }, { value: codeTools.geminiCli, label: 'Gemini CLI' }, - { value: codeTools.openaiCodex, label: 'OpenAI Codex' } + { value: codeTools.openaiCodex, label: 'OpenAI Codex' }, + { value: codeTools.iFlowCli, label: 'iFlow CLI' } ] export const GEMINI_SUPPORTED_PROVIDERS = ['aihubmix', 'dmxapi', 'new-api'] @@ -35,7 +36,8 @@ export const CLI_TOOL_PROVIDER_MAP: Record Pr providers.filter((p) => p.type === 'gemini' || GEMINI_SUPPORTED_PROVIDERS.includes(p.id)), [codeTools.qwenCode]: (providers) => providers.filter((p) => p.type.includes('openai')), [codeTools.openaiCodex]: (providers) => - providers.filter((p) => p.id === 'openai' || OPENAI_CODEX_SUPPORTED_PROVIDERS.includes(p.id)) + providers.filter((p) => p.id === 'openai' || OPENAI_CODEX_SUPPORTED_PROVIDERS.includes(p.id)), + [codeTools.iFlowCli]: (providers) => providers.filter((p) => p.type.includes('openai')) } export const getCodeToolsApiBaseUrl = (model: Model, type: EndpointType) => { @@ -144,6 +146,12 @@ export const generateToolEnvironment = ({ env.OPENAI_MODEL = model.id env.OPENAI_MODEL_PROVIDER = modelProvider.id break + + case codeTools.iFlowCli: + env.IFLOW_API_KEY = apiKey + env.IFLOW_BASE_URL = baseUrl + env.IFLOW_MODEL_NAME = model.id + break } return env From a9093b1deaf83074cac21d25400fc8ba97ca2b87 Mon Sep 17 00:00:00 2001 From: Phantom <59059173+EurFelux@users.noreply.github.com> Date: Tue, 16 Sep 2025 22:31:38 +0800 Subject: [PATCH 2/6] chore: update biome format command to ignore unmatched files (#10207) Add --no-errors-on-unmatched flag to biome format commands in lint-staged configuration to prevent errors when no matching files are found --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b3da1832bf..9e42453df2 100644 --- a/package.json +++ b/package.json @@ -374,11 +374,11 @@ "packageManager": "yarn@4.9.1", "lint-staged": { "*.{js,jsx,ts,tsx,cjs,mjs,cts,mts}": [ - "biome format --write", + "biome format --write --no-errors-on-unmatched", "eslint --fix" ], "*.{json,yml,yaml,css,html}": [ - "biome format --write" + "biome format --write --no-errors-on-unmatched" ] } } From cc860e48b10d3ff398374c86dab82873f8836544 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 16 Sep 2025 22:45:10 +0800 Subject: [PATCH 3/6] fix: update navbar position handling in useAppInit hook - Added isLeftNavbar to the useNavbarPosition hook for improved layout management. - Adjusted background style logic to use isLeftNavbar instead of isTopNavbar for better compatibility with left-aligned navigation. - Simplified condition for transparent window styling on macOS. --- src/renderer/src/hooks/useAppInit.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/renderer/src/hooks/useAppInit.ts b/src/renderer/src/hooks/useAppInit.ts index 571e5877a8..ca61511696 100644 --- a/src/renderer/src/hooks/useAppInit.ts +++ b/src/renderer/src/hooks/useAppInit.ts @@ -38,7 +38,7 @@ export function useAppInit() { customCss, enableDataCollection } = useSettings() - const { isTopNavbar } = useNavbarPosition() + const { isTopNavbar, isLeftNavbar } = useNavbarPosition() const { minappShow } = useRuntime() const { setDefaultModel, setQuickModel, setTranslateModel } = useDefaultModel() const avatar = useLiveQuery(() => db.settings.get('image://avatar')) @@ -102,16 +102,15 @@ export function useAppInit() { }, [language]) useEffect(() => { - const transparentWindow = windowStyle === 'transparent' && isMac && !minappShow + const isMacTransparentWindow = windowStyle === 'transparent' && isMac - if (minappShow && isTopNavbar) { - window.root.style.background = - windowStyle === 'transparent' && isMac ? 'var(--color-background)' : 'var(--navbar-background)' + if (minappShow && isLeftNavbar) { + window.root.style.background = isMacTransparentWindow ? 'var(--color-background)' : 'var(--navbar-background)' return } - window.root.style.background = transparentWindow ? 'var(--navbar-background-mac)' : 'var(--navbar-background)' - }, [windowStyle, minappShow, theme, isTopNavbar]) + window.root.style.background = isMacTransparentWindow ? 'var(--navbar-background-mac)' : 'var(--navbar-background)' + }, [windowStyle, minappShow, theme]) useEffect(() => { if (isLocalAi) { From 7319fc5ef48d00c512df42dc12558c930e04afd7 Mon Sep 17 00:00:00 2001 From: kangfenmao Date: Tue, 16 Sep 2025 22:33:10 +0800 Subject: [PATCH 4/6] chore: bump version to v1.6.0-rc.1 --- electron-builder.yml | 31 ++++++++++++---------------- package.json | 2 +- src/renderer/src/hooks/useAppInit.ts | 4 ++-- 3 files changed, 16 insertions(+), 21 deletions(-) diff --git a/electron-builder.yml b/electron-builder.yml index 80722308e4..0660319150 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -126,24 +126,19 @@ artifactBuildCompleted: scripts/artifact-build-completed.js releaseInfo: releaseNotes: | ✨ 新功能: - - 重构知识库模块,提升文档处理能力和搜索性能 - - 新增 PaddleOCR 支持,增强文档识别能力 - - 支持自定义窗口控制按钮样式 - - 新增 AI SDK 包,扩展 AI 能力集成 - - 支持标签页拖拽重排序功能 - - 增强笔记编辑器的同步和日志功能 + - 集成 Perplexity SDK 和 Anthropic OAuth + - 支持 API 服务器模式,提供外部调用接口 + - 新增字体自定义设置功能 + - 笔记支持文件夹批量上传 + - 集成 HeroUI 和 Tailwind CSS 提升界面体验 - 🔧 性能优化: - - 优化 MCP 服务的日志记录和错误处理 - - 改进 WebView 服务的 User-Agent 处理 - - 优化迷你应用的标题栏样式和状态栏适配 - - 重构依赖管理,清理和优化 package.json + 🚀 性能优化: + - 优化大文件上传,支持 OpenAI 标准文件服务 + - 重构 MCP 服务,改进错误处理和状态管理 🐛 问题修复: - - 修复输入栏无限状态更新循环问题 - - 修复窗口控制提示框的鼠标悬停延迟 - - 修复翻译输入框粘贴多内容源的处理 - - 修复导航服务初始化时序问题 - - 修复 MCP 通过 JSON 添加时的参数转换 - - 修复模型作用域服务器同步时的 URL 格式 - - 标准化工具提示图标样式 + - 修复 WebSearch RAG 并发问题 + - 修复翻译页面长文本渲染布局问题 + - 修复笔记拖拽排序和无限循环问题 + - 修复 macOS CodeTool 工作目录错误 + - 修复多个 UI 组件的响应式设计问题 diff --git a/package.json b/package.json index 9e42453df2..16a9b58a87 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "CherryStudio", - "version": "1.6.0-beta.7", + "version": "1.6.0-rc.1", "private": true, "description": "A powerful AI assistant for producer.", "main": "./out/main/index.js", diff --git a/src/renderer/src/hooks/useAppInit.ts b/src/renderer/src/hooks/useAppInit.ts index ca61511696..e9e3b55706 100644 --- a/src/renderer/src/hooks/useAppInit.ts +++ b/src/renderer/src/hooks/useAppInit.ts @@ -38,7 +38,7 @@ export function useAppInit() { customCss, enableDataCollection } = useSettings() - const { isTopNavbar, isLeftNavbar } = useNavbarPosition() + const { isLeftNavbar } = useNavbarPosition() const { minappShow } = useRuntime() const { setDefaultModel, setQuickModel, setTranslateModel } = useDefaultModel() const avatar = useLiveQuery(() => db.settings.get('image://avatar')) @@ -110,7 +110,7 @@ export function useAppInit() { } window.root.style.background = isMacTransparentWindow ? 'var(--navbar-background-mac)' : 'var(--navbar-background)' - }, [windowStyle, minappShow, theme]) + }, [windowStyle, minappShow, theme, isLeftNavbar]) useEffect(() => { if (isLocalAi) { From 4f91a321a06f530a334de40be7c0a00677477558 Mon Sep 17 00:00:00 2001 From: SuYao Date: Wed, 17 Sep 2025 14:07:45 +0800 Subject: [PATCH 5/6] chore: update dependencies and VSCode settings (#10206) * chore: update dependencies and VSCode settings * chore * chore: ts --- .vscode/extensions.json | 3 +-- .vscode/settings.json | 3 +-- package.json | 3 +-- yarn.lock | 18 +++++------------- 4 files changed, 8 insertions(+), 19 deletions(-) diff --git a/.vscode/extensions.json b/.vscode/extensions.json index a08379caed..79046aa441 100644 --- a/.vscode/extensions.json +++ b/.vscode/extensions.json @@ -6,7 +6,6 @@ "bradlc.vscode-tailwindcss", "vitest.explorer", "oxc.oxc-vscode", - "biomejs.biome", - "typescriptteam.native-preview" + "biomejs.biome" ] } diff --git a/.vscode/settings.json b/.vscode/settings.json index 2d62fde832..141179f38c 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -47,6 +47,5 @@ "search.exclude": { "**/dist/**": true, ".yarn/releases/**": true - }, - "typescript.experimental.useTsgo": true + } } diff --git a/package.json b/package.json index 16a9b58a87..bcbcbd10a5 100644 --- a/package.json +++ b/package.json @@ -237,7 +237,6 @@ "diff": "^8.0.2", "docx": "^9.0.2", "dompurify": "^3.2.6", - "dotenv": "^17.2.2", "dotenv-cli": "^7.4.2", "electron": "37.4.0", "electron-builder": "26.0.15", @@ -333,7 +332,7 @@ "tsx": "^4.20.3", "turndown-plugin-gfm": "^1.0.2", "tw-animate-css": "^1.3.8", - "typescript": "^5.6.2", + "typescript": "^5.8.2", "undici": "6.21.2", "unified": "^11.0.5", "uuid": "^10.0.0", diff --git a/yarn.lock b/yarn.lock index 630c46c05c..1d414c0861 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13328,7 +13328,6 @@ __metadata: diff: "npm:^8.0.2" docx: "npm:^9.0.2" dompurify: "npm:^3.2.6" - dotenv: "npm:^17.2.2" dotenv-cli: "npm:^7.4.2" electron: "npm:37.4.0" electron-builder: "npm:26.0.15" @@ -13437,7 +13436,7 @@ __metadata: turndown: "npm:7.2.0" turndown-plugin-gfm: "npm:^1.0.2" tw-animate-css: "npm:^1.3.8" - typescript: "npm:^5.6.2" + typescript: "npm:^5.8.2" undici: "npm:6.21.2" unified: "npm:^11.0.5" uuid: "npm:^10.0.0" @@ -16631,13 +16630,6 @@ __metadata: languageName: node linkType: hard -"dotenv@npm:^17.2.2": - version: 17.2.2 - resolution: "dotenv@npm:17.2.2" - checksum: 10c0/be66513504590aff6eccb14167625aed9bd42ce80547f4fe5d195860211971a7060949b57108dfaeaf90658f79e40edccd3f233f0a978bff507b5b1565ae162b - languageName: node - linkType: hard - "dts-resolver@npm:^2.1.1": version: 2.1.1 resolution: "dts-resolver@npm:2.1.1" @@ -27775,7 +27767,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.0.0": +"typescript@npm:^5.0.0, typescript@npm:^5.8.2": version: 5.9.2 resolution: "typescript@npm:5.9.2" bin: @@ -27785,7 +27777,7 @@ __metadata: languageName: node linkType: hard -"typescript@npm:^5.4.3, typescript@npm:^5.6.2": +"typescript@npm:^5.4.3": version: 5.8.3 resolution: "typescript@npm:5.8.3" bin: @@ -27795,7 +27787,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.0.0#optional!builtin": +"typescript@patch:typescript@npm%3A^5.0.0#optional!builtin, typescript@patch:typescript@npm%3A^5.8.2#optional!builtin": version: 5.9.2 resolution: "typescript@patch:typescript@npm%3A5.9.2#optional!builtin::version=5.9.2&hash=5786d5" bin: @@ -27805,7 +27797,7 @@ __metadata: languageName: node linkType: hard -"typescript@patch:typescript@npm%3A^5.4.3#optional!builtin, typescript@patch:typescript@npm%3A^5.6.2#optional!builtin": +"typescript@patch:typescript@npm%3A^5.4.3#optional!builtin": version: 5.8.3 resolution: "typescript@patch:typescript@npm%3A5.8.3#optional!builtin::version=5.8.3&hash=5786d5" bin: From 1481149e51101fecd4409f658da766ab96ec28a5 Mon Sep 17 00:00:00 2001 From: one Date: Wed, 17 Sep 2025 14:18:48 +0800 Subject: [PATCH 6/6] fix: wrap MessageEditor with QuickPanelProvider (#10223) * fix: wrap MessageEditor with QuickPanelProvider * style: revert formatting --- src/renderer/src/pages/home/Chat.tsx | 32 ++++++++++++++-------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/renderer/src/pages/home/Chat.tsx b/src/renderer/src/pages/home/Chat.tsx index 4ea6bcdd57..d6d7f08d90 100644 --- a/src/renderer/src/pages/home/Chat.tsx +++ b/src/renderer/src/pages/home/Chat.tsx @@ -155,23 +155,23 @@ const Chat: FC = (props) => { flex={1} justify="space-between" style={{ maxWidth: chatMaxWidth, height: mainHeight }}> - - } - filter={contentSearchFilter} - includeUser={filterIncludeUser} - onIncludeUserChange={userOutlinedItemClickHandler} - /> - {messageNavigation === 'buttons' && } + + } + filter={contentSearchFilter} + includeUser={filterIncludeUser} + onIncludeUserChange={userOutlinedItemClickHandler} + /> + {messageNavigation === 'buttons' && } {isMultiSelectMode && }