Commit Graph

3306 Commits

Author SHA1 Message Date
Phantom
bef0180e4c
feat: web search icons (#9147)
* feat(类型): 添加WebSearchProviderIds常量并更新WebSearchProvider类型

* refactor(web-search): 重构网络搜索提供商配置和logo获取逻辑

将webSearchProviders.ts中的提供商logo获取函数移动到使用组件中
并优化提供商配置的类型定义

* feat(WebSearchButton): 添加不同搜索引擎的图标支持

为WebSearchButton组件添加多个搜索引擎的图标支持,包括Baidu、Google、Bing等

* feat(types): 添加预处理和网页搜索提供者的类型校验函数

添加 PreprocessProviderId 和 WebSearchProviderId 的类型校验函数 isPreprocessProviderId 和 isWebSearchProviderId,用于验证字符串是否为有效的提供者 ID

* refactor(types): 重命名ApiProviderUnion并添加更新函数类型

添加用于更新不同类型API提供者的函数类型,提高类型安全性

* refactor(websearch): 将搜索提供商配置提取到单独文件

将websearch store中的搜索提供商配置提取到单独的配置文件,提高代码可维护性

* refactor(PreprocessSettings): 移除未使用的 system 选项禁用逻辑

由于 system 字段实际未使用,移除相关代码以简化逻辑

* refactor(api-key-popup): 移除providerKind参数,改用providerId判断类型

* refactor(preprocessProviders): 使用类型定义优化预处理提供者配置

将 providerId 参数类型从 string 改为 PreprocessProviderId
为 PREPROCESS_PROVIDER_CONFIG 添加类型定义

* refactor(hooks): 使用PreprocessProviderId类型替换字符串类型参数

* refactor(hooks): 使用 WebSearchProviderId 类型替换字符串类型参数

将 useWebSearchProvider 钩子的 id 参数类型从 string 改为 WebSearchProviderId,提高类型安全性

* refactor(knowledge): 将providerId类型改为PreprocessProviderId

* refactor(PreprocessSettings): 移除未使用的options相关代码

清理PreprocessSettings组件中已被注释掉的options状态和相关逻辑,简化代码结构

* refactor(WebSearchProviderSetting): 将providerId类型从string改为WebSearchProviderId

* refactor(websearch): 移除WebSearchProvider类型中不必要的id字段约束

* style(WebSearchButton): 调整图标大小和样式以保持视觉一致性

* fix(ApiKeyListPopup): 修正LLM提供者判断逻辑

使用'models'属性检查替代原有逻辑,更准确地判断是否为LLM provider

* fix(ApiKeyListPopup): 修复预处理provider判断逻辑

处理mistral同时提供预处理和llm服务的情况,避免误判
2025-08-14 23:19:17 +08:00
SuYao
37dccd93e9
fix: modelname (#9183) 2025-08-14 20:06:57 +08:00
Teo
bf30bf28a9
fix(TopicMessages): fix topic style (#9178)
* fix(TopicMessages): fix topic style
2025-08-14 16:55:08 +08:00
Jason Young
1bf380a921
fix: auto-close panel when no commands match (#7824) (#8784)
* fix(QuickPanel): auto-close panel when no commands match (#7824)

Fixes the issue where QuickPanel remains visible when user types
invalid slash commands. Now the panel intelligently closes after
300ms when no matching commands are found.

- Add smart delayed closing mechanism for unmatched searches
- Optimize memory management with proper timer cleanup
- Preserve existing trigger behavior for / and @ symbols

* feat(inputbar): intelligent @ symbol handling on model selection panel close

- Add smart @ character deletion when user selects models and closes panel with ESC/Backspace
- Preserve @ character when user closes panel without selecting any models
- Implement action tracking using useRef to detect user model interactions
- Support both ESC key and Backspace key for consistent behavior
- Use React setState instead of DOM manipulation for proper state management

Resolves user experience issue where @ symbol always remained after closing model selection panel

* perf(QuickPanel): optimize timer management and fix React anti-patterns

- Move side effects from useMemo to useEffect for proper React lifecycle
- Add automatic timer cleanup on component unmount and dependency changes
- Remove unnecessary timer creation/destruction on each search input
- Improve memory management and prevent potential memory leaks
- Maintain existing smart auto-close functionality with better performance

Fixes React anti-pattern where side effects were executed in useMemo,
which should be a pure function. This improves performance especially
when users type quickly in the search input.

* refactor(QuickPanel): remove redundant timer cleanup useEffect

Remove duplicate timer cleanup logic as the existing useEffect at line 141-164
already handles component unmount cleanup properly.

* refactor(QuickPanel): optimize useEffect dependencies and timer cleanup logic

- Replace overly broad `ctx` dependency with precise `[ctx.isVisible, searchText, list.length, ctx.close]`
- Move timer cleanup before visibility check to ensure proper cleanup on panel hide
- Add early return when panel is invisible to prevent unnecessary timer creation
- Improve performance by avoiding redundant effect executions
- Fix edge case where timers might not be cleared when panel becomes invisible

Addresses review feedback about dependency array optimization while maintaining
existing auto-close functionality and improving memory management.

* feat(QuickPanel): implement smart re-opening with dependency optimization

Features:
- Implement smart re-opening during deletion with real-time matching
- Only reopen panel when actual matches exist to avoid unnecessary interactions
- Add intelligent @ symbol handling on model selection panel close
- Optimize search text length limits (≤10 chars) for performance

Fixes:
- Fix useMemo dependency from overly broad [ctx, searchText] to precise [ctx.isVisible, ctx.symbol, ctx.list, searchText]
- Resolve trailing whitespace formatting issues
- Eliminate ESLint exhaustive-deps warnings while maintaining stability
- Prevent unnecessary re-renders when unrelated ctx properties change

Performance improvements ensure optimal QuickPanel responsiveness while maintaining
existing auto-close functionality and improving user experience.

* fix(ci): add eslint-disable comment for exhaustive-deps warning

The useEffect dependency array [ctx.isVisible, searchText, list.length, ctx.close]
is intentionally precise to avoid unnecessary re-renders when unrelated ctx
properties change. Adding ctx object would cause performance degradation.

* refactor(QuickPanel): remove smart re-opening logic during deletion

- Remove 62 lines of complex deletion detection logic from Inputbar component
- Eliminates performance overhead from frequent string matching during typing
- Reduces code complexity and potential edge cases
- Maintains simple and predictable QuickPanel behavior
- Improves maintainability by removing unnecessary "smart" features

The deletion-triggered smart reopening feature added unnecessary complexity
without significant user benefit. Users can simply type / or @ again to
reopen panels when needed.
2025-08-14 16:35:14 +08:00
周子健
a4c61bcd66
fix: @cherry/memory i18n key wrong (#9164) 2025-08-14 10:00:45 +08:00
one
a172a1052a
refactor: use hook useTemporaryValue in Table, CitationList, TranslatePage (#9134) 2025-08-13 16:58:50 +08:00
Phantom
f4ef2ec934
fix: remove gpt-5-chat from OpenAI reasoning models (#9136)
fix: 从OpenAI推理模型判断中移除gpt-5-chat
2025-08-13 16:30:24 +08:00
one
4cda5f1787
feat(Markdown): support disabling single dollar math (#9131)
* feat(Markdown): support disabling single dollar math

* fix: lint error
2025-08-13 16:14:59 +08:00
Teo
ceef19e55b
feat: add message outline (#9090)
* feat: add message outline feature
2025-08-13 14:57:58 +08:00
Phantom
0634baf780
fix(providers): qiniu doesn't support developer role (#9125)
fix(providers): 更新不支持developer角色的提供商列表
2025-08-13 14:51:23 +08:00
one
d424bb1224
fix: codeblock special view (#9120)
* Revert "fix(CodeBlockView): initial view mode (#9047)"

This reverts commit 28e6135f8c.

* fix: code block border radius

* chore: bump mermaid to 11.9.0
2025-08-13 14:41:13 +08:00
anghunk
f97943006e
fix: set the inconsistency of column background color issue (#9109) 2025-08-13 11:53:44 +08:00
one
ea8b7f317d
fix: selection toolbar in CodeViewer (#9103) 2025-08-13 11:37:31 +08:00
kangfenmao
2dd2bee940 refactor(settings): reorganize the menu layout in the settings page
- Introduced QuickPhraseSettings component for managing quick phrases with add, edit, and delete functionality.
- Added PreprocessSettings component to configure document preprocessing options, including provider selection.
- Updated SettingsPage to include links to the new Quick Phrase and Preprocess settings.
- Removed the deprecated ToolSettings component and its associated routes.
- Enhanced WebSearchSettings with new compression settings and improved UI for managing web search providers.
2025-08-13 10:54:35 +08:00
one
df587fc61f
chore: use destroyOnHidden instead of deprecated destroyOnClose (#9102)
* chore: use destroyOnHidden instead of deprecated destroyOnClose

* Update src/renderer/src/components/MinApp/MinappPopupContainer.tsx

* Update src/renderer/src/pages/settings/SelectionAssistantSettings/components/SelectionFilterListModal.tsx

---------

Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
2025-08-13 10:08:36 +08:00
Phantom
7c2a9d141e
fix: web search button memory leak (#9100)
* refactor(InputbarTools): 重命名getMenuItems为menuItems以提高可读性

* docs(Inputbar): 添加内存泄露风险注释

* Revert "refactor(InputbarTools): 重命名getMenuItems为menuItems以提高可读性"

This reverts commit 6076d5b74c.

* perf(WebSearchButton): 使用startTransition优化性能并移除setTimeout

移除setTimeout延迟更新,减少内存泄露,改用startTransition来优化UI卡顿问题,提升用户体验
2025-08-13 10:05:40 +08:00
亢奋猫
1c7b7a1a55
feat: add code tools (#9043)
* feat: add code tools

* feat(CodeToolsService): add CLI executable management and installation check

- Introduced methods to determine the CLI executable name based on the tool.
- Added functionality to check if a package is installed and create the necessary bin directory if it doesn't exist.
- Enhanced the run method to handle installation and execution of CLI tools based on their installation status.
- Updated terminal command handling for different operating systems with improved comments and error messages.

* feat(ipService): implement IP address country detection and npm registry URL selection

- Added a new module for IP address country detection using the ipinfo.io API.
- Implemented functions to check if the user is in China and to return the appropriate npm registry URL based on the user's location.
- Updated AppUpdater and CodeToolsService to utilize the new ipService functions for improved user experience based on geographical location.
- Enhanced error handling and logging for better debugging and user feedback.

* feat: remember cli model

* feat(CodeToolsService): update options for auto-update functionality

- Refactored the options parameter in CodeToolsService to replace checkUpdate and forceUpdate with autoUpdateToLatest.
- Updated logic to handle automatic updates when the CLI tool is already installed.
- Modified related UI components to reflect the new auto-update option.
- Added corresponding translations for the new feature in multiple languages.

* feat(CodeToolsService): enhance CLI tool launch with debugging support

- Added detailed logging for CLI tool launch process, including environment variables and options.
- Implemented a temporary batch file for Windows to facilitate debugging and command execution.
- Improved error handling and cleanup for the temporary batch file after execution.
- Updated terminal command handling to use the new batch file for safer execution.

* refactor(CodeToolsService): simplify command execution output

- Removed display of environment variable settings during command execution in the CLI tool.
- Updated comments for clarity on the command execution process.

* feat(CodePage): add model filtering logic for provider selection

- Introduced a modelPredicate function to filter out embedding, rerank, and text-to-image models from the available providers.
- Updated the ModelSelector component to utilize the new predicate for improved model selection experience.

* refactor(CodeToolsService): improve logging and cleanup for CLI tool execution

- Updated logging to display only the keys of environment variables during CLI tool launch for better clarity.
- Introduced a variable to store the path of the temporary batch file for Windows.
- Enhanced cleanup logic to remove the temporary batch file after execution, improving resource management.

* feat(Router): replace CodePage with CodeToolsPage and add new page for code tools

- Updated Router to import and route to the new CodeToolsPage instead of the old CodePage.
- Introduced CodeToolsPage component, which provides a user interface for selecting CLI tools and models, managing directories, and launching code tools with enhanced functionality.

* refactor(CodeToolsService): improve temporary file management and cleanup

- Removed unused variable for Windows batch file path.
- Added a cleanup task to delete the temporary batch file after 10 seconds to enhance resource management.
- Updated logging to ensure clarity during the execution of CLI tools.

* refactor(CodeToolsService): streamline environment variable handling for CLI tool execution

- Introduced a utility function to remove proxy-related environment variables before launching terminal processes.
- Updated logging to display only the relevant environment variable keys, enhancing clarity during execution.

* refactor(MCPService, CodeToolsService): unify proxy environment variable handling

- Replaced custom proxy removal logic with a shared utility function `removeEnvProxy` to streamline environment variable management across services.
- Updated logging to reflect changes in environment variable handling during CLI tool execution.
2025-08-12 11:54:38 +08:00
kangfenmao
793ccf978e feat(ProviderSettings): add API options settings and popup for providers
- Introduced ApiOptionsSettings component to manage API options for providers.
- Added ApiOptionsSettingsPopup for displaying API options in a modal.
- Updated ProviderSetting to include a button for opening the API options popup for non-system providers.
- Refactored imports and adjusted layout in ProviderSetting for better UI consistency.
2025-08-12 11:53:38 +08:00
kangfenmao
ef57e543c6 fervert: feat(ProviderSettings): resizable provider settings (#9004)
This reverts commit 5713a278cd.
2025-08-12 11:32:04 +08:00
Phantom
42800a6195
style(Inputbar): use primary color for inputbar tools (#9058)
style(Inputbar): 将激活状态图标颜色从--color-link改为--color-primary
2025-08-12 11:26:44 +08:00
Phantom
be29f163a3
refactor(models.ts): Adjust the logo matching order of the GPT-5 model (#9073)
* refactor(models.ts): 调整GPT-5模型logo匹配顺序

* refactor(models): 简化GPT-5模型logo的正则匹配模式

* Revert "Update gpt-5.png"

This reverts commit 1e8143eb8c.
2025-08-12 11:25:05 +08:00
beyondkmp
207f2e1689
refactor(proxy): update proxy handling logic in useAppInit and GeneralSettings (#9081)
- Simplified proxy setting logic by removing unnecessary dispatches for 'system' and 'none' modes.
- Updated useAppInit to set proxy to undefined for 'system' mode and clarified direct mode handling with comments.
2025-08-12 11:21:47 +08:00
Phantom
4fd00af273
feat: support swap auto detected language in translate page (#9072)
* feat(translate): 支持自动检测语言时交换语言并添加异常处理

* fix(i18n): 更新翻译错误信息并添加缺失的翻译项

* docs(translate): 添加与自动检测相关的交换条件检查注释

* fix(translate): 为翻译结果添加类型声明
2025-08-12 11:20:18 +08:00
牡丹凤凰
1e8143eb8c Update gpt-5.png 2025-08-11 22:06:08 +08:00
kangfenmao
809a532a6c refactor(translate): reorganize translation settings and remove deprecated components
- Removed TranslateSettings and TranslateModelSettings components to streamline the translation settings interface.
- Introduced CustomLanguageSettings and TranslatePromptSettings components for better management of custom languages and prompt settings.
- Updated ModelSettings to utilize the new TranslateSettingsPopup for handling translation-related configurations.
- Enhanced the overall structure and readability of the translation settings page.
2025-08-11 18:10:56 +08:00
Phantom
c666361611
fix: trace usage (#9018)
* fix(openai): 移除不必要的类型断言并更新类型定义

更新OpenAIApiClient中的usage处理逻辑,移除不必要的类型断言
在sdk.ts中更新OpenAISdkRawChunk类型定义,明确包含可能的cost字段

* fix(openai): 修复流式响应中完成信号触发逻辑

调整完成信号的触发条件,不再区分 OpenRouter 和其他提供商
统一等待 usage 信息后再触发完成信号,以统一适配 OpenAI Chat Completions API

* fix(sdk类型): 将OpenAISdkRawChunk中的usage字段改为可选

* refactor(openai): 移除对OpenRouter的特殊处理逻辑
2025-08-11 17:05:05 +08:00
beyondkmp
5771d0c9e8
refactor: file path improve (#8990)
* refactor(FileManager): streamline file path handling in FilesPage and ImageBlock components

* refactor(file): implement getSafeFilePath utility for consistent file path handling across loaders and preprocessors

* refactor(FileStorage): replace getSafeFilePath with fileStorage.getFilePathById for consistent file path retrieval across services

* refactor(file): unify file path retrieval across loaders and preprocessors for improved consistency

* refactor(Inputbar, MessageEditor): replace getFileExtension with file.ext for improved file type handling

* refactor(FileStorage): simplify getFilePathById method by removing redundant checks for file path retrieval

* fix(FileStorage): update getFilePathById to ensure file.path is consistent with generated filePath

* refactor(FileStorage): simplify getFilePathById method by removing unnecessary file path consistency checks

* fix(FileStorage): update duplicate file check to use file.path for accurate detection

* fix(FileStorage): correct file path usage in uploadFile method for accurate duplicate detection

* fix(loader): update file path retrieval to use file.path for consistency across loaders
2025-08-11 16:35:46 +08:00
陈天寒
bfd2f9d156
fix(aws-bedrock): add auto get model list (#9052)
* fix(aws-bedrock): add auto get model list

* fix(aws-bedrock): fix type definition
2025-08-11 16:20:11 +08:00
kangfenmao
30b7028dd8 refactor(translate): streamline TranslatePage layout and component structure
- Removed unused imports and components to simplify the codebase.
- Refactored the token count calculation for improved readability.
- Adjusted the layout of the operation bar and input/output containers for better spacing and alignment.
- Enhanced the copy button functionality and visibility within the output area.
- Updated styles for consistency and improved user experience.
2025-08-11 16:11:47 +08:00
SuYao
6f420f88b1
feat(AnthropicVertexClient): add client compatibility type method (#9029)
* feat(AnthropicVertexClient): add client compatibility type method

* feat(aiCore): add support for AnthropicVertexAPIClient compatibility
2025-08-11 15:01:30 +08:00
Phantom
08457055b0
fix(translate): don't use stale state when saving translate history (#9049)
fix(translate): 修复从store获取过时状态的问题
2025-08-11 14:34:26 +08:00
Phantom
5713a278cd
feat(ProviderSettings): resizable provider settings (#9004)
* feat(ProviderSettings): 添加Splitter组件实现左右面板布局

移除固定的最小宽度限制,使用Splitter组件实现可调整的左右面板布局

* style(ProviderSetting): 优化提供商名称显示样式

将 ProviderName 组件从 span 改为 Typography.Text 以支持文本溢出省略
添加 flex 布局属性确保标题区域正确布局

* feat(ProviderSetting): 添加中间省略文本组件并优化HostPreview显示

在ProviderSetting页面中引入EllipsisMiddle组件,用于处理长文本的中间省略显示
重构hostPreview为HostPreview组件,使用EllipsisMiddle优化长URL的展示效果

* fix(ProviderSettings): 修复Splitter.Panel默认大小未设置问题

* Revert "feat(ProviderSetting): 添加中间省略文本组件并优化HostPreview显示"

This reverts commit bfbba8f5db.

* refactor: improve splitter style

* refactor: improve dragger divider size

---------

Co-authored-by: one <wangan.cs@gmail.com>
2025-08-11 14:09:45 +08:00
Phantom
46c247149e
fix(models): gpt-5 support (#9042)
fix(models): 修正gpt-5模型ID的正则表达式匹配模式

更新gpt-5模型ID的正则表达式以支持数字和连字符的组合
2025-08-11 14:08:04 +08:00
one
28e6135f8c
fix(CodeBlockView): initial view mode (#9047) 2025-08-11 13:59:03 +08:00
Phantom
d0cf3179a2
feat(translate): brand new translate feature (#8513)
* refactor(translate): 将翻译设置组件抽离为独立文件

* refactor(translate): 统一变量名translateHistory为translateHistories

* perf(translate): 翻译页面的输入处理性能优化

添加防抖函数来优化文本输入和键盘事件的处理,减少不必要的状态更新和翻译请求

* refactor(translate): 将输入区域组件抽离为独立文件

重构翻译页面,将输入区域相关逻辑和UI抽离到单独的InputArea组件中
优化代码结构,提高可维护性

buggy: waiting for merge

* revert: 恢复main的translate page

* refactor(translate): 缓存源语言状态

* refactor(translate): 提取翻译设置组件

将翻译设置功能提取为独立组件,减少主页面代码复杂度

* build: 添加 react-transition-group 及其类型定义依赖

* refactor(translate): 将翻译历史组件拆分为独立文件并优化布局结构

* refactor(translate): 调整翻译页面布局和样式

统一操作栏的padding样式,将输入和输出区域的容器样式分离以提高可维护性

* feat(翻译): 添加语言交换功能

添加源语言与目标语言交换功能按钮
为AWS Bedrock添加i18n

* fix(自动翻译): 在翻译提示中添加去除前缀的说明

在翻译提示中添加说明,要求翻译时去除文本中的"[to be translated]"前缀

* feat(translate): 实现翻译历史列表的虚拟滚动以提高性能

添加虚拟列表组件并应用于翻译历史页面,优化长列表渲染性能

* refactor(translate): 移除未使用的InputArea组件

* feat(translate): 添加模型选择器到翻译页面并移除设置中的模型选择

将模型选择器从翻译设置移动到翻译页面主界面,优化模型选择流程

* style(translate): 为输出占位文本添加不可选中样式

* feat(翻译): 添加自定义语言支持

- 新增 CustomTranslateLanguage 类型定义
- 在数据库中增加 translate_languages 表和相关 CRUD 操作
- 实现自定义语言的添加、删除、更新和查询功能

* feat(翻译设置): 新增自定义语言管理和翻译模型配置功能

添加翻译设置页面,包含自定义语言表格、添加/编辑模态框、翻译模型选择和提示词配置

* feat(翻译设置): 实现自定义语言管理功能

添加自定义语言表格组件及模态框,支持增删改查操作
修复数据库字段命名不一致问题,将langcode改为langCode
新增内置语言代码列表用于校验
添加多语言支持及错误提示

* docs(TranslateService): 为自定义语言功能添加JSDoc注释

* feat(翻译): 添加获取所有翻译语言选项的功能

新增getTranslateOptions函数,用于合并内置翻译语言和自定义语言选项。当获取自定义语言失败时,自动回退到只返回内置语言选项。

* refactor(translate): 重构翻译功能代码,优化语言选项管理和类型定义

- 将翻译语言选项管理集中到useTranslate钩子中
- 修改LanguageCode类型为string以支持自定义语言
- 废弃旧的getLanguageByLangcode方法,提供新的实现
- 统一各组件对翻译语言选项的获取方式
- 优化类型定义,移除冗余类型TranslateLanguageVarious

* refactor(translate): 重构翻译相关组件,提取LanguageSelect为独立组件并优化代码结构

* fix(AssistantService): 添加对未知目标语言的错误处理

当目标语言未知时抛出错误并记录日志,防止后续处理异常

* refactor(TranslateSettings): 重命名并重构自定义语言设置组件

将 CustomLanguageTable 重命名为 CustomLanguageSettings 并重构其实现
增加对自定义语言的增删改查功能
调整加载状态的高度以适应新组件

* style(settings): 调整设置页面布局样式以改善显示效果

移除重复的高度和padding设置,统一在内容容器中设置高度

* refactor(translate): 重命名变量

将 builtinTranslateLanguageOptions 重命名为 builtinLanguages 以提高代码可读性
更新相关引用以保持一致性

* refactor(TranslateSettings): 使用useCallback优化删除函数以避免不必要的重渲染

* feat(翻译设置): 为自定义语言设置添加标签本地化

为自定义语言设置中的"Value"和"langCode"字段添加中文标签

* style(TranslateSettings): 为SettingGroup添加flex样式以改善布局

* style(TranslateSettings): 表格样式调整

* docs(技术文档): 添加translate_languages表的技术文档

添加translate_languages表的技术说明文档,包含表结构、字段定义及业务约束说明

* feat(翻译): 添加对不支持语言的错误处理并规范化语言代码

- 在翻译服务中添加对不支持语言的错误提示
- 将自定义语言的langCode统一转为小写
- 完善QwenMT模型的语言映射表

* docs(messageUtils): 标记废弃的函数

* feat(消息工具): 添加通过ID查找翻译块的功能并优化翻译错误处理

添加findTranslationBlocksById函数通过消息ID从状态中查询翻译块
在翻译失败时清理无效的翻译块并显示错误提示

* fix(ApiService): 修复翻译请求错误处理逻辑

捕获翻译请求中的错误并通过onError回调传递,避免静默失败

* fix(translate): 调整双向翻译语言显示的最小宽度

* fix(translate): 修复语言交换条件判断逻辑

添加对双向翻译的限制检查,防止在双向翻译模式下错误交换语言

* feat(i18n): 添加翻译功能的自定义语言支持

* refactor(store): 将 targetLanguage 类型从 string 改为 LanguageCode

* refactor(types): 将语言代码类型从字符串改为LanguageCode

* refactor: 统一使用@logger导入loggerService

将项目中从@renderer/services/LoggerService导入loggerService的引用改为从@logger导入,以统一日志服务的引用方式

* refactor(translate): 移除旧的VirtualList组件并替换为DynamicVirtualList

* refactor(translate): 移除未使用的useCallback导入

* refactor(useTranslate): 调整导入语句顺序以保持一致性

* fix(translate): 修复 useEffect 依赖项缺失问题

* refactor: 调整导入顺序

* refactor(i18n): 移除未使用的翻译字段并更新部分翻译内容

* fix(ApiService): 将completions方法替换为completionsForTrace以修复追踪问题

* refactor(TranslateSettings): 替换Spin组件为自定义加载图标

使用SvgSpinners180Ring替换antd的Spin组件以保持UI一致性

* refactor(TranslateSettings): 替换 HStack 为 Space 组件以优化布局

* style(TranslateSettings): 为删除按钮添加危险样式以提升视觉警示

* style(TranslateSettings): 移除表格容器中多余的justify-content属性

* fix(TranslateSettings): 添加默认emoji旗帜

* refactor(translate): 将语言映射函数移动到translate配置文件

将mapLanguageToQwenMTModel函数及相关映射表从utils模块移动到config/translate模块

* fix(translate): 修复couldTranslate语义错误

* docs(i18n): 更新日语翻译中的错误翻译

* refactor(translate): 将历史记录列表改为抽屉组件并优化样式

* fix(TranslateService): 修复添加自定义语言时缺少await的问题

* fix(TranslateService): 修复变量名错误,使用正确的langCode参数

在添加自定义语言时,错误地使用了value变量而非langCode参数,导致重复检查失效。修正为使用正确的参数名并更新相关错误信息。

* refactor(TranslateSettings): 使用函数式更新优化状态管理

* style(TranslatePromptSettings): 替换按钮为自定义样式组件

使用styled-components创建自定义ResetButton组件替换antd的Button
统一按钮样式与整体设计风格

* style(settings): 调整设置页面内边距从20px减少到10px

* refactor(translate): 类型重命名

将Language更名为TranslateLanguage
将LanguageCode更名为TranslateLanguageCode

* refactor(LanguageSelect): 提取默认语言渲染逻辑到独立函数

将重复的语言渲染逻辑提取为 defaultLanguageRenderer 函数,减少代码重复并提高可维护性

* refactor(TranslateSettings): 使用antd Form重构自定义语言模态框表单逻辑

重构自定义语言模态框,将原有的手动状态管理改为使用antd Form组件管理表单状态
表单验证逻辑整合到handleSubmit中,提高代码可维护性
修复emoji显示不同步的问题

* feat(翻译设置): 添加自定义语言表单的帮助文本和布局优化

为自定义语言表单的语言代码和语言名称字段添加帮助文本提示
重构表单布局,使用更合理的表单项排列方式

* refactor(TranslateSettings): 调整 CustomLanguageModal 中 EmojiPicker 的布局结构

* style(TranslateSettings): 调整自定义语言模态框按钮容器的内边距

* feat(翻译设置): 添加语言代码为空时的错误提示并优化表单验证

将表单验证逻辑从手动校验改为使用antd Form的rules属性
添加语言代码为空的错误提示信息
移除未使用的导入和日志代码

* feat(翻译设置): 改进自定义语言表单验证和错误处理

- 添加语言已存在的错误提示信息
- 使用国际化文本替换硬编码错误信息
- 重构表单布局,移除不必要的样式组件
- 增加语言代码存在性验证
- 改进表单标签和帮助信息的显示方式

* fix(i18n): 修正语言代码占位符的大小写格式

* style(translate): 移除设置页面中多余的翻译图标

* refactor(translate): 移动 OperationBar 样式并调整 LanguageSelect 宽度

将 OperationBar 样式从独立文件移至 TranslatePage 组件内
为 LanguageSelect 添加最小宽度并移除硬编码宽度

* refactor(设置页): 替换LanguageSelect为Selector组件以统一样式

* feat(翻译): 重构翻译功能并添加历史记录管理

将翻译相关逻辑从useTranslate钩子移动到TranslatePage组件
添加翻译历史记录的保存、删除和清空功能
在输入框底部显示预估token数量

* refactor(translate): 重构翻译页面代码结构并添加注释

将相关hooks和状态分组整理,添加清晰的注释说明各功能块作用
优化代码可读性和维护性

* refactor(TranslateService): 移除store依赖并优化错误处理

- 移除对store的依赖,直接使用getDefaultTranslateAssistant获取翻译助手
- 将翻译失败的错误消息从'failed'改为更明确的'empty'

* feat(翻译): 优化翻译服务错误处理和错误信息展示

重构翻译服务逻辑,将错误处理和模型检查移至统一入口。添加翻译结果为空时的错误提示,并改进错误信息展示,包含具体错误原因。同时简化翻译页面调用逻辑,使用统一的翻译服务接口。

* style(translate): 为token计数添加右侧内边距以改善视觉间距

* refactor(translate): 移除useTranslate中未使用的状态并优化组件结构

将translatedContent和translating状态从useTranslate钩子中移除,改为在TranslatePage组件中直接使用redux状态
简化useTranslate的文档注释,仅保留核心功能描述

* refactor(LanguageSelect): 提取剩余props避免重复传递

避免将extraOptionsAfter等已解构的props再次传递给Select组件

* docs(i18n): 更新多语言翻译文件,添加缺失的翻译字段

* refactor(translate): 将历史记录操作移至TranslateService

* style(LanguageSelect): 移除多余的 Space.Compact 包装

* fix(TranslateSettings): 修复编辑自定义语言时重复校验语言代码的问题

* refactor(translate): 调整翻译页面布局结构,优化操作栏样式

将输入输出区域整合为统一容器,调整操作栏宽度和间距
移动设置和历史按钮到输出操作栏,简化布局结构

* style(translate): 调整操作栏样式间距

* refactor(窗口): 将窗口最小尺寸常量提取到共享配置中

将硬编码的窗口最小宽度和高度值替换为从共享配置导入的常量,提高代码可维护性

* refactor(translate): 重构翻译页面操作栏布局

将操作栏从三个独立部分改为网格布局,使用InnerOperationBar组件统一样式
移除冗余的operationBarWidth变量,简化样式代码

* refactor(translate): 替换自定义复制按钮为原生按钮组件

移除自定义的CopyButton组件,直接使用Ant Design的原生Button组件来实现复制功能,保持UI一致性并减少冗余代码

* refactor(translate): 重构翻译页面操作栏布局

将操作按钮从左侧移动到右侧,并移除不必要的HStack组件
调整翻译按钮位置并保留其工具提示功能

* fix(translate): 修复语言选择器宽度不一致问题

为源语言和目标语言选择器添加统一的宽度样式,保持UI一致性

* feat(窗口): 添加获取窗口尺寸和监听窗口大小变化的功能

添加 Windows_GetSize IPC 通道用于获取窗口当前尺寸
添加 Windows_Resize IPC 通道用于监听窗口大小变化
新增 useWindowSize hook 方便在渲染进程中使用窗口尺寸

* feat(窗口大小): 优化窗口大小变化处理并添加响应式布局

使用debounce优化窗口大小变化的处理,避免频繁触发更新
为翻译页面添加响应式布局,根据窗口宽度和导航栏位置动态调整模型选择器宽度

* feat(WindowService): 添加窗口最大化/还原时的尺寸变化事件

在窗口最大化或还原时发送尺寸变化事件,以便界面可以响应这些状态变化

* refactor(hooks): 将窗口大小变化的日志级别从debug改为silly

* feat(翻译配置): 添加对粤语的语言代码支持

为翻译配置添加对'zh-yue'语言代码的处理,返回对应的'Cantonese'值

* fix(TranslateSettings): 修复自定义语言模态框中语言代码重复校验问题

当编辑已存在的自定义语言时,如果输入的语言代码已存在且与原代码不同,则抛出错误提示

* fix: 修复拼写错误,将"Unkonwn"改为"Unknown"

* fix(useTranslate): 添加加载状态检查防止未加载时返回错误数据

当翻译语言尚未加载完成时,返回UNKNOWN而非尝试查找语言

* feat(组件): 添加模型选择按钮组件用于选择模型

* refactor(translate): 重构翻译页面模型选择器和按钮布局

简化模型选择逻辑,移除未使用的代码和复杂样式计算
将ModelSelector替换为ModelSelectButton组件
将TranslateButton提取为独立组件

* refactor(hooks): 重命名并完善窗口尺寸钩子函数

将 useWindow.ts 重命名为 useWindowSize.ts 并添加详细注释

* docs(i18n): 修正语言代码标签的大小写

* style(TranslateSettings): 调整自定义语言模态框中表单标签的宽度

* fix(CustomLanguageModal): disable mask closing for the custom language modal

* style: 调整组件间距和图标大小

优化 TranslatePage 内容容器的内边距和间距,并增大 ModelSelectButton 的图标尺寸

* style(translate): 调整翻译历史列表项高度和样式结构

重构翻译历史列表项的样式结构,将高度从120px增加到140px,并拆分样式组件以提高可维护性

* fix(translate): 点击翻译历史item后关闭drawer

---------

Co-authored-by: suyao <sy20010504@gmail.com>
2025-08-11 13:33:31 +08:00
Phantom
96a4c95a3a
feat: context message in message group (#8833)
* stash

* docs(newMessage): 修正注释中的拼写错误

* refactor(MessageGroup): 优化组件逻辑和状态管理

重构消息组件的状态管理和逻辑顺序,提升代码可读性
将相关状态和逻辑分组,并提取公共变量

* feat(消息组件): 添加消息有用性更新功能

在MessageGroup组件中实现onUpdateUseful回调,用于更新消息的有用状态
当标记某条消息为有用时,自动取消其他消息的有用标记

* fix(i18n): 更新多语言翻译文件中的键值

- 将中文简体中的"useful"键值从"有用"改为"设置为上下文"
- 在其他语言文件中为"useful"键添加待翻译标记
- 在部分语言文件中添加"merge"、"longRunning"等新键的待翻译标记

* feat(消息组): 添加群组上下文消息标识和有用消息提示

为消息组添加上下文消息标识功能,当消息被标记为有用时显示特殊标识
优化消息菜单栏的有用按钮提示文本
修复消息菜单栏依赖项数组不完整的问题

* feat(i18n): 更新多语言翻译文件并改进自动翻译脚本

为"useful"字段添加label和tip翻译,完善多个语言的翻译内容
改进自动翻译脚本,使用语言映射替换文件名

* docs(i18n): 更新多语言文件中上下文提示的翻译文本

* docs(messageUtils): 标记废弃工具调用结果消息构造函数

标记 `构造带工具调用结果的消息内容` 函数为废弃状态,后续将移除

* refactor(消息过滤): 重命名filterContextMessages为filterAfterContextClearMessages以更准确描述功能

* fix(MessageGroup): 修复依赖数组中缺少groupContextMessageId的问题

* feat(消息过滤): 添加根据上下文数量过滤消息的功能

* refactor(消息过滤): 拆分消息过滤逻辑并添加日志

将filterUsefulMessages函数拆分为多个独立函数,提高代码可维护性
添加日志输出以便调试消息过滤过程

* refactor(消息过滤): 优化聊天消息过滤逻辑并添加调试日志

重构消息过滤流程,将原有单步过滤拆分为多步处理
添加调试日志以跟踪各阶段过滤结果

* refactor(messageUtils): 移除未使用的logger并优化消息过滤逻辑

移除未使用的logger导入和调用,添加filterAdjacentUserMessaegs过滤步骤优化消息处理流程

* refactor(消息服务): 重构获取上下文消息数量的逻辑

使用 filterContextMessages 工具函数替代 lodash 的 takeRight 和手动计算逻辑

* fix(消息工具): 修复分组消息排序顺序错误

* fix(消息过滤): 优化消息组过滤逻辑,保留有用消息或最后一条消息

修改 filterUsefulMessages 函数注释以更清晰说明过滤逻辑
在 MessageGroup 组件中使用 lodash 的 last 方法获取最后一条消息

* fix(MessageGroup): 修复消息有用性更新逻辑的错误

处理消息有用性状态更新时,添加对消息存在性的检查并优化状态切换逻辑

* fix(Messages): 修复分组消息内部顺序不正确的问题

由于displayMessages是倒序的,导致分组后的消息内部顺序也是倒序的。通过toReversed()将每个分组内部的消息顺序再次反转,确保正确显示

* fix(消息过滤): 修改未标记有用消息的保留策略,从保留最后一条改为第一条

* fix: 将onUpdateUseful属性改为可选以处理未定义情况

* refactor(ApiService): 移除冗余的日志记录调用

* docs(types): 去除Message类型中useful字段的过时注释

* refactor(messageUtils): 移除分组消息中的冗余排序操作

原代码在分组消息时已经按原始索引顺序添加,无需再次排序
2025-08-10 18:17:56 +08:00
George·Dong
6b8ba9d273
feat: add max backups for NutStore (#9020) 2025-08-10 15:25:49 +08:00
Pleasure1234
27c9ceab9f
fix: support gpt-5 (#8945)
* Update models.ts

* Update models.ts

* Update models.ts

* feat: add OpenAI verbosity setting for GPT-5 model

Introduces a new 'verbosity' option for the OpenAI GPT-5 model, allowing users to control the level of detail in model output. Updates settings state, migration logic, UI components, and i18n translations to support this feature.

* fix(models): 修正gpt-5模型判断逻辑以支持包含gpt-5的模型ID

* fix(i18n): 修正繁体中文和希腊语的翻译错误

* fix(models): 优化OpenAI推理模型判断逻辑

* fix(OpenAIResponseAPIClient): 不再为response api添加stream_options

* fix: update OpenAI model check and add verbosity setting

Changed GPT-5 model detection to use includes instead of strict equality. Added default 'verbosity' property to OpenAI settings in migration logic.

* feat(models): 添加 GPT-5 系列模型的图标和配置

添加 GPT-5、GPT-5-chat、GPT-5-mini 和 GPT-5-nano 的图标文件,并在 models.ts 中配置对应的模型 logo

* Merge branch 'main' into fix-gpt5

* Add verbosity setting to OpenAI API client

Introduces a getVerbosity method in BaseApiClient to retrieve verbosity from settings, and passes this value in the OpenAIResponseAPIClient request payload. This enables configurable response verbosity for OpenAI API interactions.

* Upgrade OpenAI package to 5.12.2 and update patch

Replaced the OpenAI dependency from version 5.12.0 to 5.12.2 and updated related patch files and references in package.json and yarn.lock. Also updated a log message in BaseApiClient.ts for clarity.

* fix: add type and property checks for tool call handling

Improves robustness by adding explicit checks for 'function' property and 'type' when parsing tool calls and estimating tokens. Also adds error handling for unknown tool call types in mcp-tools and updates related test logic.

* feat(模型配置): 添加gpt5模型支持及相关配置

- 在模型类型中新增gpt5支持
- 添加gpt5系列模型检测函数
- 更新推理选项配置和国际化文本
- 调整effort ratio数值

* fix(ThinkingButton): 为gpt-5及后续模型添加minimal到low的选项回退映射

* feat(i18n): 更新思维链长度的中文翻译并调整对应图标

为思维链长度的"minimal"选项添加中文翻译"微念",同时调整各选项对应的灯泡图标亮度

* feat(i18n): 为推理努力设置添加"minimal"选项并调整英文文案

* fix: openai patch

* wip: OpenAISettingsGroup display

* fix: 修复OpenAISettingsGroup组件中GPT5条件下的渲染逻辑

* refactor(OpenAISettingsGroup): 优化设置项的分组和分隔符逻辑

* feat(模型配置): 添加gpt-5到visionAllowedModels列表

* feat(模型配置): 添加gpt-5到函数调用支持列表

将gpt-5及其变体添加到FUNCTION_CALLING_MODELS支持列表,同时将gpt-5-chat添加到排除列表

* fix: 在OpenAI推理模型检查中添加gpt-5-chat支持

* Update OpenAISettingsGroup.tsx

* feat(模型支持): 添加对verbosity模型的支持判断

新增isSupportVerbosityModel函数用于判断是否支持verbosity模型
替换原有isGPT5SeriesModel判断逻辑,统一使用新函数

* fix: 修复支持详细程度模型的判断逻辑

使用 getLowerBaseModelName 处理模型 ID 以确保大小写不敏感的比较

* feat: 添加对gpt-5模型的网络搜索支持但不包括chat变体

* fix(models): 修复gpt5模型支持选项缺少'off'的问题

* fix: 添加gpt-5到支持Flex Service Tier的模型列表

* refactor(aiCore): 优化OpenAI verbosity类型定义和使用

移除OpenAIResponseAPIClient中冗余的OpenAIVerbosity导入
在BaseApiClient中明确getVerbosity返回类型为OpenAIVerbosity
简化OpenAIResponseAPIClient中verbosity的类型断言

* fix(openai): 仅在支持verbosity的模型中添加verbosity参数

* fix(i18n): 修正OpenAI设置中不一致的翻译

* fix: modify low effort ratio

* fix(openai): 修复GPT5系列模型在启用网页搜索时不能使用minimal reasoning_effort的问题

* fix(openai): 修复GPT5系列模型在启用web搜索时不能使用minimal推理的问题

---------

Co-authored-by: icarus <eurfelux@gmail.com>
Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
2025-08-10 14:27:26 +08:00
Phantom
67b560da08
fix(github models): get id instead of name (#9008)
* fix(openai): 修正模型ID字段从name改为id

* fix(providers): 更新github api的url路径
2025-08-09 14:28:16 +08:00
Phantom
8823dc6a52
fix: remove deprecated (#9006)
* refactor: 移除已弃用的ProviderSettingsPopup组件

* refactor(providers): 重命名函数以更准确描述其功能

* fix(openai): 修正服务层级和数组内容支持的判断逻辑

使用新的提供者检查函数替代原有的布尔值判断,提高代码可维护性

* refactor(mcp-tools): 将参数isCompatibleMode重命名为noSupportArrayContent以更清晰表达意图

* refactor(providers): 移除不再使用的provider配置属性

清理多个系统provider中已不再使用的配置属性,包括isNotSupportArrayContent、isNotSupportStreamOptions和isNotSupportDeveloperRole,以简化配置结构
2025-08-09 13:59:33 +08:00
Phantom
33128195fe
fix(providers): update GitHub Models api url (#9003)
* fix(providers): 更新 GitHub Models 的 API 地址和基础路径

修复 GitHub Models 的 API 地址配置错误,并调整基础路径以适配其特殊接口结构

* Update providers.ts

---------

Co-authored-by: Pleasure1234 <3196812536@qq.com>
2025-08-09 02:42:23 +08:00
Phantom
6c5088f071
fix(aiCore): FinalChunkConsumerMiddleware throw error (#8993)
* fix(aiCore): 修复中间件错误处理和日志输出问题

修复FinalChunkConsumerMiddleware中错误无法被ErrorHandlerMiddleware捕获的问题,并优化日志输出格式

* fix: 移除检查API时的冗余日志记录
2025-08-09 02:22:09 +08:00
Phantom
c97ece946a
Fix/translate selection (#8943)
* refactor(translate): 重构翻译窗口使用翻译服务接口

* refactor(translate): 重构翻译功能,提取翻译服务为独立模块

将翻译相关逻辑从ApiService中提取到独立的TranslateService模块
简化组件中翻译功能的调用方式,移除重复代码

* fix(selection): 防止流式输出完成后的重复处理

添加finished标志位,在收到LLM_RESPONSE_COMPLETE时标记完成,避免后续chunk继续处理

* fix(TranslateService): 修复翻译失败时的错误处理和日志记录

改进翻译服务的错误处理逻辑,添加日志记录以便排查问题

* fix(翻译服务): 修正未配置模型时的错误提示信息
2025-08-09 00:06:15 +08:00
Phantom
5647d6e6d4
feat: enable thinking control (#8946)
* feat(types): 添加AtLeast泛型类型用于定义至少包含指定键的对象

新增AtLeast泛型类型,用于表示一个对象至少包含类型T中指定的所有键(值类型为U),同时允许包含其他任意string类型的键(值类型也必须是U)。该类型在providers.ts中被用于定义PROVIDER_LOGO_MAP的类型约束,并调整了NOT_SUPPORTED_REANK_PROVIDERS和ONLY_SUPPORTED_DIMENSION_PROVIDERS的类型定义。

* feat(provider): 添加 enable_thinking 支持并重构 API 选项配置

将分散的 provider API 选项配置重构为统一的 ProviderApiOptions 类型
添加对 enable_thinking 参数的支持
实现配置迁移逻辑将旧配置转换为新格式

* fix(providers): 修正provider权限检查逻辑

将权限检查从直接访问provider属性改为通过apiOptions访问,确保一致性

* refactor(providers): 重命名并扩展 enable_thinking 参数支持检查

将 isSupportQwen3EnableThinkingProvider 重命名为 isSupportEnableThinkingProvider 并扩展其功能
现在支持通过 apiOptions.isNotSupportEnableThinking 配置来禁用 enable_thinking 参数
同时保持对 Qwen3 等模型的原有支持逻辑

* refactor(providers): 修改 isSupportEnableThinkingProvider 为黑名单逻辑

* fix(providers): 修复数组内容支持判断逻辑

检查 provider.apiOptions?.isNotSupportArrayContent 而非直接检查 provider.isNotSupportArrayContent

* docs(providers): 添加关于NOT_SUPPORT_QWEN3_ENABLE_THINKING_PROVIDER的注释

* fix(store): 更新持久化存储版本号至129

* feat(i18n): 为多语言文件添加 enable_thinking 参数支持

* refactor(ProviderSettings): 移除重复的provider展开操作符

更新ApiOptionsSettings组件,移除updateProviderTransition中不必要的provider展开操作符

* test(utils): 修复测试文件中provider的类型定义

将provider对象明确标记为const并添加satisfies Provider类型约束,确保类型安全

* fix(providers): 修正NOT_SUPPORTED_REANK_PROVIDERS变量名拼写错误并添加lmstudio

修复NOT_SUPPORTED_REANK_PROVIDERS变量名拼写错误为NOT_SUPPORTED_RERANK_PROVIDERS,并添加lmstudio到不支持重排的提供商列表
2025-08-09 00:05:40 +08:00
kangfenmao
73dc3325df refactor(ApiService): streamline tool usage logic and enhance MCP tool handling
Updated the logic for determining tool usage by consolidating conditions into a single variable. Improved the handling of MCP tools by filtering active servers and checking for enabled tools before sending notifications. Removed redundant code and ensured that tool execution completion notifications are sent based on the new logic.
2025-08-08 23:48:00 +08:00
Pleasure1234
3b7a99ff52
feat: add language filter to local web search queries (#8976)
* feat: add language filter to local web search queries

Integrates user's language setting into search queries by applying a language filter based on the provider (Google, Bing, or others). This improves search relevance for localized results.

* fix: update language filter logic in LocalSearchProvider

Refactored applyLanguageFilter to use provider.id instead of provider.name for search engine identification. Adjusted filtering for Google, Bing, and Baidu, and removed default language filter for other providers.

* Update LocalSearchProvider.ts
2025-08-08 21:03:04 +08:00
Phantom
97a63ea5b2
fix: user custom params should always overwrite other params (#8907)
* fix(aws-bedrock): 未支持自定义参数

* refactor(AnthropicAPIClient): 简化消息创建参数逻辑

移除不必要的MessageCreateParams类型,直接在commonParams中设置stream参数

* refactor(openai): 简化API客户端参数处理逻辑

移除冗余的stream参数分支逻辑,直接在commonParams中设置stream相关参数

* docs(aiCore): 添加注释说明用户自定义参数应覆盖其他参数

* feat(openai): 添加流式输出选项支持

当流式输出启用且提供者支持时,包含stream_options以包含使用情况信息

* fix(openai): 移除冗余的逻辑判断
2025-08-08 16:58:31 +08:00
Phantom
da5372637b
refactor(models): always use lowercase model id (#8936)
* refactor(models): 统一使用getLowerBaseModelName处理模型ID比较

修改多个模型判断函数,统一使用getLowerBaseModelName处理模型ID的比较逻辑,提高代码一致性和可维护性

* refactor(models): 统一变量名baseName为modelId以提高代码可读性
2025-08-08 16:57:09 +08:00
Phantom
40282cd39d
fix: input bar covers chat nav buttons (#8935)
refactor(消息组件): 将ChatNavigation从Messages移到Chat组件中

重构消息组件结构,将ChatNavigation组件从Messages.tsx移动到Chat.tsx中
2025-08-08 15:57:51 +08:00
Phantom
339b915437
feat: developer mode help (#8952)
* feat(开发者模式): 添加开发者模式帮助提示信息

在开发者模式开关旁添加提示信息,说明启用后可以使用调用链功能查看模型调用过程的数据流

* docs(i18n): 为开发者模式添加帮助文本说明功能
2025-08-08 15:49:46 +08:00
Phantom
d84c9e3230
refactor(SpanManagerService): remove trace warning (#8951)
refactor(SpanManagerService): 移除开发者模式下的冗余日志警告

移除在非开发者模式下关于追踪启用的冗余警告日志,这些日志对用户无实际帮助且可能造成干扰
2025-08-08 12:36:13 +08:00
George·Dong
4860d03c38
feat(knowledge): add save topic to knowledge (#8731) 2025-08-08 10:10:29 +08:00
Phantom
b112797a3e
fix(qwen): qwen thinking control (#8938)
* refactor(qwen): 重构Qwen模型思考控制逻辑

重命名函数并统一处理Qwen模型的思考控制逻辑,简化代码结构

* refactor(models): 重命名isQwenAlwaysThinkingModel为isQwenAlwaysThinkModel

统一函数命名风格,提高代码一致性
2025-08-08 00:50:19 +08:00
George·Dong
32c28e32cd
feat(Nutstore): 添加坚果云备份文本 (#8940) 2025-08-08 00:39:24 +08:00
one
9129625365
feat: draggable on filtering (#8929)
feat: support dnd on filtering
2025-08-08 00:39:10 +08:00
Peter Wang
ff58efcbf3
fix: make regex of gemma3 can match ollama's format (#3847 #6626) (#8941) 2025-08-08 00:38:24 +08:00
Phantom
b38b2f16fc
fix: fallback when invalid reasoning effort (#8857)
* refactor(types): 扩展思考模型类型并优化相关类型定义

添加 ThinkingModelType 和 ThinkingOption 类型以支持更多模型
引入 ThinkingOptionConfig 和 ReasoningEffortConfig 类型配置
重构 ReasoningEffortOptions 为 ReasoningEffortOption 并更新相关引用

* feat(模型配置): 添加模型推理配置映射表并重构ThinkingButton组件

将模型支持的推理选项配置集中管理,新增MODEL_SUPPORTED_REASONING_EFFORT和MODEL_SUPPORTED_OPTIONS映射表
提取getThinkModelType方法用于统一判断模型类型,简化ThinkingButton组件逻辑

* fix(OpenAIApiClient): 添加对reasoning_effort参数的有效性检查

当模型不支持指定的reasoning_effort值时,回退到第一个支持的值

* fix: 修正判断模型类型的条件函数

* refactor(types): 使用 Record 类型替代映射类型语法

简化类型定义,提升代码可读性和一致性
2025-08-07 23:56:47 +08:00
Phantom
201fcf9f45
refactor(ModelEditContent): improve experience when choosing model types (#8847)
* feat(标签组件): 新增多种模型标签组件并重构标签引用路径

新增RerankerTag、EmbeddingTag、ReasoningTag、VisionTag和ToolsCallingTag组件
将CustomTag移动至Tags目录并更新所有引用路径
重构ModelTagsWithLabel组件使用新的标签组件

* feat(标签组件): 导出CustomTagProps并增强所有标签组件的props传递

- 导出CustomTagProps接口供其他组件使用
- 在所有标签组件中添加...restProps以支持更多自定义属性
- 新增WebSearchTag组件
- 统一各标签组件的props类型定义方式

* refactor(组件): 统一标签组件的showLabel属性命名

将shouldShowLabel重命名为showLabel以保持命名一致性

* feat(Tags): 为 CustomTag 组件添加 disabled 状态支持

当 disabled 为 true 时,标签颜色将变为灰色

* feat(Tags): 为 CustomTag 组件添加 onClick 事件支持并修复关闭事件冒泡

添加 onClick 属性以支持标签点击事件
修复关闭按钮点击事件冒泡问题

* fix(Tags): 修复CustomTag组件点击状态样式问题

添加$clickable属性以控制鼠标指针样式
确保当onClick存在时显示手型指针

* refactor(ProviderSettings): 替换复选框为标签组件展示模型能力

移除旧的复选框实现,改用专用标签组件展示模型能力类型
简化相关逻辑代码,提升可维护性
调整模态框宽度为自适应内容

* refactor(ProviderSettings): 重构模型编辑弹窗的布局和样式

将模型能力选择部分移动到顶部并优化布局
移除重复的类型标题并调整按钮位置
统一模态框宽度为固定值

* fix(ProviderSettings): 将 Space.Compact 替换为 Space 以修复布局问题

* feat(模型设置): 添加模型类型选择警告提示并优化交互

新增 WarnTooltip 组件用于显示模型类型选择的警告信息
修改模型类型选择交互逻辑,允许用户切换 vision 类型
更新中文翻译文本,使警告信息更准确

* refactor(components): 重构模型能力标签组件并集中管理

将分散的模型能力标签组件移动到统一的 ModelCapabilities 目录
新增 WebSearchTag 组件并优化现有标签组件结构

* feat(组件): 新增带有警告图标的Tooltip组件

* refactor(ProviderSettings): 优化模型能力标签的交互逻辑和性能

使用useMemo和useCallback优化模型类型选择和计算逻辑
重构标签组件导入路径和交互方式

* feat(Tags): 为 CustomTag 组件添加 style 属性支持

允许通过 style 属性自定义标签的样式,提供更灵活的样式控制

* refactor(ProviderSettings): 优化模型类型选择逻辑和UI交互

- 移除冗余代码并简化模型能力选择逻辑
- 添加互斥类型检查防止同时选择不兼容的模型类型
- 为重置按钮添加图标和工具提示提升用户体验
- 统一所有类型标签的禁用状态样式

* fix(ProviderSettings): 为重置按钮添加type="text"属性以修复样式问题

* refactor(组件): 移除GlobalOutlined图标并使用WebSearchTag组件替代

简化WebSearch模型的标签显示逻辑,使用统一的WebSearchTag组件替代手动创建的CustomTag,提高代码复用性和可维护性

* fix(组件): 更换deprecated属性

* feat(组件): 为CustomTag添加inactive状态并优化禁用逻辑

为CustomTag组件新增inactive属性,用于控制标签的视觉禁用状态
将disabled属性与点击事件解耦,优化禁用状态下的交互行为
更新相关调用代码以适配新的属性结构

* style(ProviderSettings): 调整 ModelEditContent 组件中 Flex 布局的换行属性

* fix(ProviderSettings): 移除Modal组件中固定的width属性

* fix(components): 为WebSearchTag组件添加size属性以保持一致性

* fix(ProviderSettings): 使用uniqueObjectArray防止模型能力重复

确保模型能力列表中的项唯一,避免重复添加相同类型的模型能力
2025-08-07 20:41:21 +08:00
Phantom
9ad0dc36b7
feat: more control for service tier (#8888)
* feat(types): 添加对服务层参数的支持并完善Provider类型

为Provider类型添加isSupportServiceTier和serviceTier字段以支持服务层参数
添加isOpenAIServiceTier类型守卫函数验证服务层类型
扩展SystemProviderId枚举类型并添加ProviderSupportedServiceTier类型

* refactor(types): 将 isSystemProvider 移动到 types 模块并重构系统提供商 ID 定义

将 isSystemProvider 函数从 config/providers.ts 移动到 types/index.ts 以更好组织代码
重构系统提供商 ID 为 SystemProviderIds 常量对象并添加类型检查函数
更新所有引用 isSystemProvider 的导入路径

* refactor(llm): 将系统提供商数组改为配置对象结构

重构系统提供商数据结构,从数组改为键值对象配置,便于维护和扩展

* refactor(providers): 将系统提供商配置移动到config/providers文件

* refactor: 重命名函数isSupportedFlexServiceTier为isSupportFlexServiceTierModel

统一函数命名风格,提高代码可读性

* refactor(types): 优化OpenAIServiceTier类型定义和校验逻辑

将OpenAIServiceTier定义为常量枚举类型,提升类型安全性
使用Object.values优化类型校验性能
统一服务层参数支持标志命名风格为isNotSupport前缀

* feat(OpenAI): 添加priority服务层级选项

在OpenAIServiceTiers类型和设置选项中新增priority服务层级

* refactor(store): 移除未使用的OpenAIServiceTiers和SystemProviderIds导入

* fix(OpenAISettingsGroup): 添加priority到FALL_BACK_SERVICE_TIER映射

* feat(provider): 支持在提供商设置中配置 service_tier 参数

将 service_tier 配置从全局设置迁移到提供商设置中,并添加相关 UI 和逻辑支持

* refactor(service-tier): 统一服务层级命名并添加Groq支持

将OpenAIServiceTiers的常量值从大写改为小写以保持命名一致性
新增GroqServiceTiers及相关类型守卫
重构BaseApiClient中的服务层级处理逻辑以支持多供应商

* fix(store): 更新持久化存储版本至128并添加迁移逻辑

添加从127到128版本的迁移逻辑,将openAI的serviceTier设置迁移至provider配置

* feat(设置): 添加 Groq 服务层级选项并更新相关翻译

为 Groq 提供商添加特定的服务层级选项(on_demand 和 performance),同时更新中文翻译文件以包含新的选项

* feat(i18n): 添加服务层级和长运行模式的多语言支持

* fix(ProviderSettings): 修正服务层级选项的变量名错误

* refactor(providers): 将 PROVIDER_CONFIG 重命名为 PROVIDER_URLS 并更新相关引用

* refactor(types): 优化类型守卫使用 Object.hasOwn 替代 Object.values

简化类型守卫实现,使用 Object.hasOwn 直接检查属性存在性,提升代码简洁性

* chore: 更新 openai 依赖至 5.12.0 版本

* fix(openai): 修复 service_tier 类型断言问题

groq 有不同的 service tier 配置,不符合 openai 接口类型,因此需要显式类型断言

* fix(openai): 处理空输入时返回默认空字符串

* fix(openai): 修复 Groq 服务层级类型不匹配问题

将 service_tier 强制转换为 OpenAIServiceTier 类型,因为 Groq 的服务层级配置与 OpenAI 接口类型不兼容

* fix(测试): 修正系统提供者名称匹配测试的预期结果

将 matchKeywordsInProvider 和 matchKeywordsInModel 测试中对 'SystemProvider' 的预期结果从 false 改为 true,以匹配实际功能需求

* test(api): 添加SYSTEM_MODELS到模拟配置中

* refactor(config): 更新系统模型配置和类型定义

- 将vertexai和dashscope的模型配置从空数组更新为对应的系统模型
- 修改SYSTEM_MODELS的类型定义以包含SystemProviderId
- 移除未使用的模型配置如o3、gitee-ai和zhinao

* test(match): 更新系统提供商的测试用例以匹配id而非name

* test(services): 更新ApiService测试中的模型配置模拟

修改测试文件中的模型配置模拟,使用vi.importActual获取原始模块并扩展模拟实现,移除不再使用的SYSTEM_MODELS导入

* fix(openai): 更新openai依赖版本并修复嵌入模型处理逻辑

修复openai客户端中嵌入模型处理逻辑,当模型名称包含"jina"时不使用base64编码
移除平台相关头信息以解决兼容性问题
更新package.json中openai依赖版本至5.12.0

* refactor(OpenAISettingsGroup): 移除不必要的fallback逻辑

* Revert "refactor(OpenAISettingsGroup): 移除不必要的fallback逻辑"

This reverts commit 2837f73cf6.

* fix(OpenAISettingsGroup): 修复服务层级回退逻辑以支持Groq提供商

当服务层级模式不在可选范围内时,根据提供商类型设置不同的默认值。对于Groq提供商使用on_demand,其他情况使用auto。

* refactor(types): 简化类型定义从值类型改为键类型

将SystemProviderId、OpenAIServiceTier和GroqServiceTier的类型定义从获取值类型改为直接使用键类型,使代码更简洁

* chore: 更新 openai 依赖至 5.12.0 并应用补丁

* test(naming): 添加getFancyProviderName的测试用例

* test(utils): 添加对系统提供商名称的匹配测试

添加对系统提供商名称"Alibaba"的匹配测试,确保matchKeywordsInModel函数能正确识别系统提供商的名称

* test(utils): 更新系统提供者的i18n名称匹配测试

添加对系统提供者i18n名称匹配的额外测试用例,验证不匹配情况

* chore: 删除旧补丁

* fix(openai): 为commonParams添加类型注解以增强类型安全

* fix(aiCore): 服务层级设置返回未定义而非默认值

* test(匹配逻辑): 更新系统提供商的i18n名称匹配测试

修改测试用例以明确系统提供商不应通过name字段匹配
添加对'Alibaba'的匹配测试
2025-08-07 17:31:08 +08:00
kangfenmao
ffb23909fa fix: remove provider missing worning 2025-08-07 16:31:40 +08:00
kangfenmao
075dfd00ca refactor(HtmlArtifactsPopup): improve preview handling and state synchronization
- Updated internal state synchronization for HTML content and preview.
- Enhanced preview refresh logic to check for content changes every 2 seconds.
- Improved comments for clarity and consistency in English.
2025-08-07 16:31:40 +08:00
one
3211e3db26
fix: lower popup height (#8921) 2025-08-07 16:25:30 +08:00
kangfenmao
ee5e420419 feat(ApiService): enhance chat completion handling with chunk reception
- Added onChunkReceived call to fetchChatCompletion to improve response handling.
- Removed redundant onChunkReceived call from the completion parameters section in fetchChatCompletion.
2025-08-07 15:34:43 +08:00
beyondkmp
d44fa1775c
refactor(ProxyManager): don't filter proxy in system proxy (#8919)
refactor(ProxyManager): streamline proxy configuration and bypass rules handling

- Simplified proxy configuration logic in registerIpc by directly assigning bypass rules.
- Removed redundant bypass rules assignment in ProxyManager, initializing it as an empty array.
- Updated GeneralSettings to conditionally render based on custom proxy mode only.
2025-08-07 15:18:53 +08:00
kangfenmao
87b74db9fc feat(ErrorBlock): enhance error handling with closable alerts and message integration
- Added message prop to ErrorBlock for improved context.
- Implemented closable alerts for error messages, allowing users to remove error blocks.
- Updated MessageErrorInfo component to handle message and block props effectively.
2025-08-07 14:06:32 +08:00
JI4JUN
bcb71f68c0 feat: support 302ai sso (#8887)
* feat: support 302.AI sso

* fix: modified the name of 302.AI provider

* feat: support SSO login functionality for 302.AI
2025-08-07 13:38:23 +08:00
Phantom
18f52f2717
fix(mcp): builtin mcp objects cannot be serialized (#8903)
* fix(mcp): 修复无法序列化的问题

* refactor(i18n): 重构MCP服务器描述的国际化和错误处理

移除MCPServer接口中的descriptionI18nKey字段,改为使用统一的getLabel函数处理国际化
添加getBuiltInMcpServerDescriptionLabel函数集中管理MCP服务器描述
在标签翻译失败时添加错误日志记录

* feat(i18n): 添加 Poe 供应商的多语言支持并重构标签获取逻辑

* refactor(i18n): 优化标签翻译函数中的变量使用

* refactor(i18n): 将参数key重命名为id以提升可读性
2025-08-07 13:36:44 +08:00
kangfenmao
80b2fabea0 refactor(DraggableList): simplify cursor styles and enhance drag handle visibility
- Removed unnecessary cursor styles from draggable items in the VirtualRow component.
- Updated snapshot tests to reflect changes in cursor styles.
- Introduced a new DragHandle component in ProviderSettings for improved drag interaction, with hover effects to enhance user experience.
2025-08-07 13:32:17 +08:00
Phantom
4ce1218d6f
fix: drag providers caused crash (#8906)
* feat(ProviderSettings): 在搜索时禁用列表拖拽功能

当搜索文本不为空时,禁用可拖拽列表的拖拽功能,避免用户在搜索时意外拖动项目

* fix(DraggableList): 修复拖拽列表项在禁用状态下的光标样式

* style(ProviderSettings): 移除列表项的cursor: grab样式

* style(ProviderSettings): 禁止用户选择列表项文本

* fix(ProviderSettings): 为ProviderLogo添加draggable="false"属性防止拖动

* test(DraggableVirtualList): 更新快照测试添加抓取光标样式
2025-08-07 13:19:48 +08:00
Phantom
ea890c41af feat: support gpt-oss (#8908)
* feat(models): 添加gpt-oss到函数调用模型列表

* feat(模型配置): 添加gpt-oss模型logo配置

* fix: 修复OpenAI推理模型判断逻辑

使用getLowerBaseModelName获取模型基础名称后再进行判断,增加对gpt-oss模型的支持
2025-08-07 12:34:53 +08:00
Phantom
3435dfe5e3
fix(settings): reading undefined caused crash (#8901)
* fix(settings): 修复OpenAI推理条件中provider未定义的判断问题

修复useProvider钩子中provider可能为undefined时的模型获取逻辑

* feat(provider): 添加供应商不存在时的默认回退逻辑

当供应商不存在时,自动回退到默认供应商并显示警告信息

* feat(i18n): 添加缺失供应商的警告信息翻译

* fix(SettingsTab): 移除对provider的冗余检查
2025-08-07 12:33:25 +08:00
kangfenmao
6283ffdfe4 fix(HomeTabs): correct tab positioning logic for topic selection 2025-08-07 12:23:16 +08:00
one
c8dbcf7b6d
fix(CodeViewer): conditional contain content (#8898)
* fix(CodeViewer): conditional contain content

* perf: add will-change

* refactor: padding right

* refactor: update will-change
2025-08-07 11:50:17 +08:00
Phantom
8a0570f383
fix(providers): fix conditions (#8899)
fix(providers): 修正多个提供商支持条件的逻辑判断

将逻辑运算符从"||"改为"&&"以正确判断提供商是否支持特定功能
2025-08-07 10:29:44 +08:00
Phantom
3c5fa06d57
fix: handle json string chunk (#8896)
* fix(ai客户端): 处理非JSON格式的响应数据块

添加对非JSON格式响应数据块的解析处理,当解析失败时抛出包含本地化错误信息的异常

* feat(i18n): 添加聊天响应无效数据格式的错误提示和多语言支持

为聊天响应添加无效数据格式的错误提示,并更新多个语言文件以支持该功能
2025-08-07 00:12:52 +08:00
Pleasure1234
ddbf710727
feat: add toggle to disable thinking mode in ThinkingButton (#8856)
Introduces logic to allow users to disable thinking mode directly from the ThinkingButton if supported. Tooltip text now reflects the action to close when thinking is enabled and 'off' is available.
2025-08-06 20:54:35 +08:00
one
d05d1309ca
refactor(Preview,CodeBlock): preview components and tools (#8565)
* refactor(CodeBlockView): generalize tool and preview

Generalize code tool to action tool
- CodeTool -> ActionTool
- usePreviewTools -> useImagePreview
- rename code tool classname from icon to tool-icon

Generalize preview
- move image preview components to Preview dir
- simplify file names

* refactor(useImageTools): simplify implementation, add pan

* refactor(Preview): move image tools to floating toolbar

* refactor: add enableDrag, enable zooming for SvgPreview

* test: add tests for preview components

* feat(Preview): add download buttons to dropdown

* refactor(Preview): remove setTools from preview, improve SvgPreview

* refactor: add useTemporaryValue

* test: add tests for hooks

* test: add tests for CodeToolButton and CodeToolbar

* refactor(PreviewTool): add a setting item to enable preview tools

* test: update snapshot

* refactor: extract more code tools to hooks, add tests

* refactor: extract tools from CodeEditor and CodeViewer

* test: add tests for new tool hooks

* refactor(CodeEditor): change collapsible to expanded, change wrappable to unwrapped

* refactor: migrate codePreview to codeViewer

* docs: CodeBlockView

* refactor: add custom file icons, center the reset button

* refactor: improve code quality

* refactor: improve migration by deprecating codePreview

* refactor: improve PlantUml and svgToCanvas

* fix: plantuml style

* test: fix tests

* fix: button icon

* refactor(SvgPreview): debounce rendering

* feat(PreviewTool): add a dialog tool

* fix: remove isValidPlantUML, improve plantuml rendering

* refactor: extract shadow dom renderer

* refactor: improve plantuml error messages

* test: add tests for ImageToolbar and ImageToolButton

* refactor: add ImagePreviewLayout to simplify layout and tests

* refactor: add useDebouncedRender, update docs

* chore: clean up unused props

* refactor: clean transformation before copy/download/preview

* refactor: update migrate version

* refactor: style refactoring and fixes

- show header background in split view
- fix status bar radius
- reset special view transformation on theme change
- fix wrap tool icon
- add a divider to split view
- improve split view toggling (switch back to previous view)
- revert copy tool to separate tools
- fix top border radius for special views

* refactor: move GraphvizPreview to shadow DOM

- use renderString
- keep renderSvgInShadowHost api consistent with others

* fix: tests, icons, deleted files

* refactor: use ResetIcon in ImageToolbar

* test: remove unnecessary tests

* fix: min height for special preview

* fix: update migrate
2025-08-06 20:09:49 +08:00
Konv Suu
e94458317a
fix(agents): cancel import situation (#8883)
fix(agents): 修复未处理的代理导入情况
2025-08-06 19:27:02 +08:00
chenxue
ef208bf9e5
feat(aihubmix): support gpt oss models (#8884)
Update AihubmixAPIClient.ts

Co-authored-by: zhaochenxue <zhaochenxue@bixin.cn>
2025-08-06 18:09:42 +08:00
kangfenmao
4805e07106 Revert "feat(cherry-store): add cherry store (#8683)"
This reverts commit 4d79c96a4b.
2025-08-06 14:29:55 +08:00
MyPrototypeWhat
4d79c96a4b
feat(cherry-store): add cherry store (#8683)
* feat(discover): implement Discover feature with routing and UI components

- Added a new Discover page with sidebar and main content areas.
- Integrated routing for Discover, including subcategories and tabs.
- Created components for Discover sidebar and main content.
- Updated localization files to include new Discover titles and labels.
- Refactored existing components to accommodate the new Discover feature.
- Enhanced sidebar icons and navigation for better user experience.

* feat(discover): enhance Discover page with Tailwind CSS integration and routing improvements

- Added Tailwind CSS import to the entry point for styling.
- Updated the ThemeProvider to dynamically apply Tailwind themes based on user selection.
- Refactored Discover page to utilize new ROUTERS structure for better routing management.
- Simplified category handling in useDiscoverCategories hook by leveraging ROUTERS_ENTRIES.
- Introduced InternalCategory interface for better type management in Discover components.
- Cleaned up unused code and comments for improved readability.

* fix: update import statement for linguist-languages in update-languages.ts

* fix: standardize import quotes and improve localization files

- Updated import statements in use-mobile.ts and motionVariants.ts to use single quotes for consistency.
- Added new localization entries for the "discover" section in multiple language files, including English, Japanese, Russian, Traditional Chinese, Greek, Spanish, French, and Portuguese.

* refactor(discover): simplify Discover page structure and improve routing logic

- Refactored DiscoverPage component to streamline tab and sidebar handling.
- Updated routing logic to utilize a new ROUTERS_MAP for better category management.
- Removed unused props and simplified state management in useDiscoverCategories hook.
- Enhanced DiscoverSidebar and DiscoverMain components for improved clarity and performance.
- Adjusted CherryStoreType enum values for consistency in path definitions.

* fix: update file upload body type in MineruPreprocessProvider

- Changed the body of the fetch request from a Buffer to a Uint8Array to ensure proper handling of binary data during PDF uploads.

* fix: ensure Blob creation uses a copy of byte arrays for image handling

- Updated Blob creation in ImageGenerationMiddleware, ImageViewer, and MessageImage components to use `slice()` on byte arrays, preventing potential mutations of the original data.

* chore: update Vite React SWC plugin and adjust Electron config for conditional styling

- Upgraded `@vitejs/plugin-react-swc` from version 3.9.0 to 3.11.0 for improved performance and features.
- Modified Electron Vite configuration to conditionally apply styled-components plugin based on the VITEST environment variable.
- Updated snapshot tests for `InputEmbeddingDimension` and `Spinner` components to reflect style changes.

* chore: upgrade @swc/plugin-styled-components to version 9.0.2 in package.json and yarn.lock

* refactor: streamline styled-components plugin configuration in Electron Vite setup

- Consolidated the styled-components plugin configuration in the Electron Vite config file for improved readability and maintainability.
- Removed conditional application of the plugin based on the VITEST environment variable, ensuring consistent styling behavior across environments.

* i18n: update translations for discover section across multiple languages

- Replaced placeholder text with accurate translations for the "discover" section in English, Japanese, Russian, Traditional Chinese, Greek, Spanish, French, and Portuguese.
- Ensured consistency in terminology and improved clarity in user-facing messages.

* i18n: update "discover" title translations across multiple languages

- Updated the "discover" title in English, Japanese, Russian, Traditional Chinese, Greek, Spanish, French, and Portuguese to ensure accurate and consistent terminology.
- Adjusted related key mappings in the localization files for improved clarity in user-facing messages.

* chore: update lucide-react to version 0.536.0 and clean up tsconfig paths

* fix: update input style in snapshot tests and format message mentions in MessageContent component
2025-08-06 14:13:31 +08:00
Phantom
281c545a8f
feat(model): support step models (#8853)
feat(模型配置): 添加对Step系列模型的支持

添加Step-1o和Step-1v到视觉允许模型列表
新增isStepReasoningModel函数判断Step系列推理模型
2025-08-06 09:58:54 +08:00
Phantom
87e603af31
refactor(providers): support more provider to remove /no_think command for qwen3 (#8855)
* feat(providers): 添加对Qwen3思考模式的支持判断

新增`isSupportQwen3EnableThinkingProvider`函数用于判断提供商是否支持Qwen3的enable_thinking参数控制思考模式

* docs(providers): 添加函数注释说明各提供商的API支持情况

* docs(providers): 修正 stream_options 参数的注释描述
2025-08-05 22:59:25 +08:00
Phantom
c6cc1baae1
fix(models): some qwen3 models cannot disable thinking (#8854)
* fix(models): 修正qwen3模型thinking系列的支持判断

修复qwen3模型中thinking系列不应支持控制思考的逻辑错误

* Revert "fix(models): 修正qwen3模型thinking系列的支持判断"

This reverts commit 189d878dc3.

* feat(OpenAIApiClient): 添加对Qwen3235BA22B模型的支持

处理Qwen3235BA22B模型的特殊逻辑,当检测到该模型时禁用enable_thinking
2025-08-05 22:49:37 +08:00
one
a3b8c722a7
refactor: improve style for antd select virtual list scrollbar (#8841) 2025-08-05 16:16:40 +08:00
one
cb2d7c060c
feat(Markdown): enable github markdown alert (#8842) 2025-08-05 14:56:15 +08:00
one
63b126b530
refactor: health check timeout (#8837)
* refactor: enable model edit/remove on checking

* refactor: add timeout setting to healthcheck popup

* fix: type
2025-08-05 11:49:46 +08:00
SuYao
aac4adea1a
feat: disable mask closing for various popups across the application (#8832)
Some checks failed
Nightly Build / cleanup-artifacts (push) Has been cancelled
Nightly Build / check-repository (push) Has been cancelled
Nightly Build / nightly-build (macos-latest) (push) Has been cancelled
Nightly Build / nightly-build (ubuntu-latest) (push) Has been cancelled
Nightly Build / nightly-build (windows-latest) (push) Has been cancelled
Nightly Build / Build-Summary (push) Has been cancelled
* feat: disable mask closing for various popups across the application

- Updated multiple popup components to prevent closing when clicking outside, enhancing user experience and preventing accidental dismissals.
- Affected components include ImportAgentPopup, QuickPhrasesButton, NewAppButton, EditMcpJsonPopup, TopicNamingModalPopup, CustomHeaderPopup, and QuickPhraseSettings.

This change aims to improve the usability of modal dialogs by ensuring users must explicitly confirm or cancel their actions.

* feat: implement click outside to save edits in TopicsTab

- Added a useEffect hook to handle clicks outside the editing input, triggering save on blur.
- Updated onClick behavior for topic items to prevent switching while editing.
- Enhanced cursor style for better user experience during editing.

This change improves the editing experience by ensuring that edits are saved when the user clicks outside the input field.

* feat: integrate in-place editing for topic names in TopicsTab

- Added useInPlaceEdit hook to manage topic name editing, improving user experience.
- Removed previous editing logic and integrated new editing flow with save and cancel functionalities.
- Updated UI interactions to reflect the new editing state, ensuring a smoother editing process.

This change enhances the editing experience by allowing users to edit topic names directly within the list, streamlining the workflow.
2025-08-05 10:55:28 +08:00
Phantom
4f0638ac4f
perf(ApiService): speed up api check (#8830)
* fix(ApiService): 加速api检查

修改createAbortPromise为泛型函数以支持不同类型
在checkApi中添加中止控制器和任务ID管理
当接收到chunk时立即中止请求并验证中止状态

* fix(ApiService): 修复API检查失败时的错误处理

在API检查失败时添加错误处理回调并统一错误消息

* fix(ApiService): 修复API检查中流错误处理逻辑

捕获流处理中的错误并正确抛出,移除冗余的成功状态检查

* fix(ApiService): 为API检查添加超时处理

为embedding模型和普通模型检查添加15秒超时处理,防止长时间无响应
使用Promise.race实现超时控制,并在超时时抛出错误或中止请求

* fix: 修复在finally块中错误移除abortController的问题

将removeAbortController从内部finally块移到外部finally块,确保在API检查完成后正确清理资源
2025-08-05 10:00:28 +08:00
one
028884ded6
refactor: animate auto get dimension (#8831) 2025-08-05 09:55:37 +08:00
kangfenmao
ce804ce02b style(ModelList): adjust GroupHeader height and update icon in ModelListItem 2025-08-04 23:41:48 +08:00
Luke Galea
c9837eaa71
feat: add OpenAI o3 model support with enhanced tool calling (#8253)
* feat: add OpenAI o3 model support with enhanced tool calling

- Add o3 and o3-mini model definitions with reasoning effort support
- Implement o3-compatible strict schema validation for MCP tools
- Add comprehensive o3 schema processing with DRY improvements
- Extract reusable schema processing functions for maintainability
- Add 15+ test cases validating o3 strict mode requirements
- Fix schema composition keyword handling with loop-based approach
- Ensure ALL object schemas have complete required arrays for o3
- Support tool calling with proper o3 schema transformations

This enables OpenAI o3 models to work properly with MCP tool calling
while improving code organization and test coverage.

Signed-off-by: Luke Galea <luke@ideaforge.org>

* Remove redundant reference in HtmlArtifactsPopup.tsx

* refactor: move filterProperties to mcp-schema, fix tests

---------

Signed-off-by: Luke Galea <luke@ideaforge.org>
Co-authored-by: one <wangan.cs@gmail.com>
Co-authored-by: suyao <sy20010504@gmail.com>
2025-08-04 23:19:21 +08:00
Phantom
636a430eb9
fix: better mcp tool match and feedback (#8825)
* feat(mcp): 添加多工具匹配时的警告提示

当匹配到多个MCP工具或未匹配到所需工具时,显示相应的警告信息。同时在i18n中添加对应的翻译字段。

* feat(i18n): 添加MCP工具警告信息和模型列表刷新功能的多语言支持

* fix(mcp): 修复工具调用解析错误并优化日志消息

添加对工具调用解析错误的处理,当解析失败时显示错误信息
统一工具调用相关的日志消息格式,使用字符串插值替代拼接

* feat(i18n): 为MCP工具添加解析错误的多语言支持
2025-08-04 23:08:37 +08:00
且以代码诉平生
d8d0ab5fc4
fix the query for agents with the same name is not fully displayed (#8826)
* fix[AgentsPage]: fix using name deduplication leads to the loss of agents with the same name

* fix[agents-zh]: fix id 499 the problem of markdown display

* fix[agent]: agent search adds descriptive text search
2025-08-04 21:59:16 +08:00
beyondkmp
efda20c143
feat: support bypass proxy (#8791)
* feat(ProxyManager): implement SelectiveDispatcher for localhost handling

- Added SelectiveDispatcher to manage proxy and direct connections based on the hostname.
- Introduced isLocalhost function to check for localhost addresses.
- Updated ProxyManager to bypass proxy for localhost in dispatch methods and set proxy bypass rules.
- Enhanced global dispatcher setup to utilize SelectiveDispatcher for both EnvHttpProxyAgent and SOCKS dispatcher.

* refactor(ProxyManager): update axios configuration to use fetch adapter

- Changed axios to use the 'fetch' adapter for proxy requests.
- Removed previous proxy settings for axios, streamlining the configuration.
- Updated HTTP methods to bind with the new proxy agent.

* feat(Proxy): add support for proxy bypass rules

- Updated IPC handler to accept optional bypass rules for proxy configuration.
- Enhanced ProxyManager to store and utilize bypass rules for localhost and other specified addresses.
- Modified settings and UI components to allow users to input and manage bypass rules.
- Added translations for bypass rules in multiple languages.

* feat(ProxyManager): add HTTP_PROXY environment variable support

- Added support for the HTTP_PROXY environment variable in ProxyManager to enhance proxy configuration capabilities.

* lint

* refactor(ProxyManager): optimize bypass rules handling

- Updated bypass rules initialization to split the rules string into an array for improved performance.
- Simplified the isByPass function to directly check against the array of bypass rules.
- Enhanced configuration handling to ensure bypass rules are correctly parsed from the provided settings.

* refactor(ProxyManager): streamline bypass rules initialization

- Consolidated the initialization of bypass rules by directly splitting the default rules string into an array.
- Updated configuration handling to ensure bypass rules are correctly assigned without redundant splitting.

* style(GeneralSettings): adjust proxy bypass rules input width to improve UI layout

* refactor(ProxyManager): enhance proxy configuration logging and handling

- Added proxy bypass rules to the configuration method for improved flexibility.
- Updated logging to include bypass rules for better debugging.
- Refactored the setGlobalProxy method to accept configuration parameters directly, streamlining proxy setup.
- Adjusted the useAppInit hook to handle proxy settings more cleanly.

* refactor(ProxyManager): implement close and destroy methods for proxy dispatcher

- Added close and destroy methods to the SelectiveDispatcher class for better resource management.
- Updated ProxyManager to handle the lifecycle of the proxyDispatcher, ensuring proper closure and destruction.
- Enhanced error handling during dispatcher closure and destruction to prevent resource leaks.

* refactor(ProxyManager): manage proxy agent lifecycle

- Introduced proxyAgent property to ProxyManager for better management of the proxy agent.
- Implemented error handling during the destruction of the proxy agent to prevent potential issues.
- Updated the proxy setup process to ensure the proxy agent is correctly initialized and cleaned up.

* refactor(ProxyManager): centralize default bypass rules management

- Moved default bypass rules to a shared constant for consistency across components.
- Updated ProxyManager and GeneralSettings to utilize the centralized bypass rules.
- Adjusted migration logic to set default bypass rules from the shared constant, ensuring uniformity in configuration.
2025-08-04 19:24:28 +08:00
one
0e1df2460e
refactor: align lucide icons in antd button, use more lucide icons (#8805)
* refactor: align lucide icons in antd button

* refactor(AssistantsTab): use lucide icon and typography in add assistant button

* refactor: use lucide icons for assistant item dropdown

* refactor: use lucide icons in topic item dropdown

* refactor: use lucide icon in InfoTooltip, align ApiOptionsSettings expand icon

* refactor: use lucide icons in TokenCount

* refactor: use brush in assistant item dropdown

* test: update snapshot

* test: mock tooltip

* fix: token count alignment

* refactor: update icons in MessageMenubar, bump antd

* refactor: use lucide icons in MessageTools, make colors consistent

* refactor: use lucide icons in ProviderSetting

* test: simplify test with mocks

* refactor: use lucide icons in knowledge base dropdown

* refactor: export all custom icons, use EditIcon for lucide pen

* refactor: use lucide copy for CopyIcon, update tests

* refactor: use lucide icons in MessageMenubar

* refactor: improve pause and send button style

* refactor: export SvgSpinners180Ring as LoadingIcon

* refactor: use lucide icons in Agents, use DeleteIcon

* refactor: use Pencil as EditIcon

* fix: i18n key missing

* refactor: use lucide icons in Files

* refactor: use lucide icons in KnowledgeBase items

* refactor: use lucide icons in assistant settings

* refactor: use lucide icons in memory settings, add UserSelector

* chore: remove duplicate memory component

* refactor: use lucide icons in ProviderList

* refactor: use lucide icons in QuickPhraseSettings

* refactor: use lucide icons in McpSettings

* refactor: use lucide icons in DataSettings

* refactor: use lucide icons in DefaultAssistantSettings

* refactor: add icon to save

* refactor: add lucide-custom

* fix: icon position in ModelEditContent

* refactor: use ListMinus in ManageModelsList

* refactor: improve TokenCount alignment

* fix: topic pin/unpin i18n

* fix: self review

* fix: simplify knowledge base dropdown

* fix: remove plus icon color

* refactor: add ResetIcon and RefreshIcon
2025-08-04 19:07:04 +08:00
beyondkmp
e8b3d44400
refactor: update theme handling in TabContainer and Sidebar components (#8816)
* refactor: update theme handling in TabContainer and Sidebar components

* refactor: replace setTheme with toggleTheme and update theme state management
* feat: add Monitor icon for additional theme state in both components

* feat(DisplaySettings): replace theme icons with lucide icons for improved visual representation

* updated light and dark theme icons to use Sun and Moon from lucide
* replaced SyncOutlined with Monitor icon for system theme option

* format code

* feat(TabContainer): add tooltip for theme toggle button with translation support

* integrated Tooltip component to provide contextual information for the theme toggle button
* utilized useTranslation hook for internationalization of tooltip text
* imported getThemeModeLabel to enhance theme description
2025-08-04 16:50:34 +08:00
Konv Suu
90c1fff54a
feat(miniapp): add banner attribute to google login tip (#8813) 2025-08-04 16:10:11 +08:00
Phantom
0be7d97c3f
fix(OpenAIApiClient): fix multiple reasoning content handling (#8767)
* refactor(OpenAIApiClient): 优化思考状态处理逻辑

简化思考状态的跟踪逻辑,将isFirstThinkingChunk替换为更清晰的isThinking标志

* fix(openai): 提前检查推理状态

* fix(OpenAIApiClient): 调整reasoning_content检查逻辑位置以修复处理顺序问题

* refactor(OpenAIApiClient): 优化流式响应处理的状态管理逻辑

重构流式响应处理中的状态变量和逻辑,将isFirstTextChunk改为accumulatingText以更准确描述状态
调整thinking状态和文本累积状态的判断位置,提高代码可读性和维护性

* fix(openai): 修复文本内容处理中的逻辑错误

* fix(ThinkingTagExtractionMiddleware): 修复首次文本块未正确标记的问题

* fix(ThinkingTagExtractionMiddleware): 添加调试日志以跟踪chunk处理逻辑

添加详细的silly级别日志,帮助调试不同chunk类型的处理流程

* refactor(aiCore): 移除ThinkChunkMiddleware及相关逻辑

清理不再使用的ThinkChunkMiddleware中间件及其相关导入和插入逻辑

* style(middleware): 修改日志消息中的措辞从'pass through'为'passed'

* refactor(ThinkingTagExtractionMiddleware): 优化思考标签提取中间件的状态管理

用 accumulatingText 状态替代 isFirstTextChunk,更清晰地管理文本积累状态
简化逻辑,在完成思考或提取到思考内容时更新状态
添加注释

* fix(ThinkingTagExtractionMiddleware): 修复accumulatingText默认值错误

将accumulatingText的默认值从true改为false,避免初始状态下错误地累积内容

* fix(aiCore): 修复思考标签提取中间件和OpenAI客户端的逻辑错误

修正ThinkingTagExtractionMiddleware中accumulatingText状态判断条件
优化OpenAIApiClient中思考和文本块的状态管理
添加测试用例验证多段思考和文本块的处理

* refactor(aiCore): 移除调试日志以减少日志噪音
2025-08-04 15:50:40 +08:00
one
84604a176b
refactor: align model list buttons, use lucide icons (#8803)
* refactor: align model list buttons, use lucide icons

* refactor: align provider setting icons
2025-08-04 01:05:33 +08:00
SuYao
5ee9731d28
fix(models): add 'qwen-plus-latest' entry and update regex patterns for model token limits (#8804) 2025-08-04 00:44:52 +08:00
Phantom
da96459bff
feat(ProviderSettings): add more api options for non-system providers (#7794)
* feat(ProviderSettings): Move compatibility mode settings to AddProviderPopup

* feat(provider): 添加兼容性提示工具组件

为不支持数组格式用户消息的API添加兼容性提示工具组件,并在多语言文件中新增相关翻译

* refactor(ProviderSetting): 重构提供商兼容模式设置,将选项移至设置页面并添加提示

移除添加提供商弹窗中的兼容模式选项,将其移至提供商设置页面
为兼容模式添加提示说明,优化用户体验

* docs(i18n): 为多语言文件添加misc翻译项

* refactor(组件): 移除InfoTooltip组件并直接使用Tooltip

* chore(scripts): 优化翻译提示词

* feat(i18n): 为兼容模式添加多语言标签和提示信息

为不支持数组格式用户消息的API添加兼容模式的多语言标签和提示信息,并更新相关组件引用

* feat(provider): 添加对stream_options和developer_role的支持

- 在Provider类型中新增isSupportStreamOptions和isSupportDeveloperRole字段
- 新增ApiOptionsSettings组件用于配置API选项
- 实现stream_options和developer_role的开关功能
- 添加相关i18n翻译

* feat(provider): 添加对数组格式 message content 的支持

- 新增数组内容支持配置项及国际化文案
- 重构 provider 类型定义,将支持属性改为不支持属性
- 添加数组内容支持判断逻辑
- 更新迁移逻辑以处理新字段

* refactor(provider): 优化API选项设置界面和类型定义

重构API选项设置组件,使用InfoTooltip显示帮助信息
调整i18n文案结构,分离标签和帮助文本
添加过渡效果更新provider状态

* fix(providers): 修复提供者功能支持判断逻辑

修改提供者功能支持判断逻辑,优先检查提供者的特定属性

* refactor(openai): 调整导入语句顺序并移除重复导入

* fix(ProviderSettings): 当options为空时返回null避免渲染错误

* fix(ProviderSettings): 当provider为系统时隐藏API选项设置

当provider标记为系统时,不应显示API选项设置,避免用户误操作

* fix(迁移): 修复内置提供商迁移逻辑并更新API选项设置

迁移旧配置时,修正内置提供商的识别逻辑,确保已删除的内置提供商标记正确
同时更新所有提供商的API选项设置

* refactor(provider): 重构系统提供商判断逻辑

使用 INITIAL_PROVIDERS 列表来判断系统提供商,替代直接使用 isSystem 字段
添加 SystemProvider 类型并更新相关类型定义
修复多处使用 isSystem 字段的判断逻辑

* refactor(store): 重命名INITIAL_PROVIDERS为SYSTEM_PROVIDERS以更准确描述用途

* feat(i18n): 添加i18n

* refactor(ProviderSettings): 移除SYSTEM_PROVIDERS依赖并简化菜单逻辑

处理遗留的系统提供商数据,不再依赖已删除的SYSTEM_PROVIDERS常量

* fix(ProviderSettings): 修复提供商头像显示逻辑,优先使用获取到的logo

当获取到提供商logo时直接显示,不再检查是否为系统提供商
2025-08-03 23:51:33 +08:00
one
f9365dfa14
refactor(ManageModelsPopup): better animation and feedback (#8797)
* refactor(ManageModelsPopup): pass providerId, add loadModels, rename loading state

* feat: add a button to reload models

* refactor: better transition for ManageModelsPopup

* style: fix lint
2025-08-03 21:40:59 +08:00
Phantom
63198ee3d2
refactor(ModelList): improve group style (#8761)
* refactor(ModelList): 重构模型列表组件结构,优化分组渲染逻辑

将扁平化列表结构改为嵌套结构,提升分组模型的渲染性能
移除不必要的状态依赖,简化组件逻辑
添加分组容器样式,改善视觉呈现

* Revert "refactor(ModelList): 重构模型列表组件结构,优化分组渲染逻辑"

This reverts commit f60f6267e6.

* refactor(ModelList): 优化模型列表的渲染和样式

- 使用startTransition优化折叠/展开性能
- 重构数据结构,将单个模型渲染改为批量渲染
- 改进组头和模型项的样式和布局

* Revert "refactor(ModelList): 优化模型列表的渲染和样式"

This reverts commit e18286c70e.

* feat(模型列表): 优化模型列表项的样式和分组显示

添加last属性标记列表最后一项,优化分组标题和列表项的样式
移除多余的底部间距,调整边框圆角以提升视觉一致性

* refactor: 移除调试用的console.log语句

* style(ManageModelsList): 调整分组标题的内边距以改善视觉间距

* style(ModelList): 移动按钮位置

* style(ManageModelsList): 调整列表项和分组标题的高度以优化空间使用

* style(ManageModelsList): 为滚动容器添加圆角边框样式
2025-08-03 11:00:04 +08:00
Phantom
fb2dccc7ff
fix(Inputbar): input bar auto focus (#8756)
* fix(Inputbar): 简化输入框自动聚焦逻辑

* fix(Inputbar): 修复依赖数组缺失导致的焦点问题

添加 assistant.mcpServers 和 mentionedModels 到依赖数组,确保 textarea 在相关数据变化时能正确获取焦点

* fix(Inputbar): 添加knowledge_bases到useEffect依赖数组以修复潜在问题

* fix(Inputbar): 添加缺失的依赖项到useEffect中

* fix(Inputbar): 清空消息时自动聚焦输入框

确保当消息列表为空时,输入框自动获得焦点,提升用户体验

* refactor(Inputbar): 提取聚焦文本域逻辑到单独的回调函数

将多处直接操作textareaRef.current?.focus()的逻辑提取到focusTextarea回调函数中,提高代码复用性和可维护性
2025-08-02 23:23:08 +08:00
one
9e405f0604
perf: model select popup (#8766)
- use DynamicVirtualList in SelectModelPopup
- use DynamicVirtualList in QuickPanelView
- remove react-window
- simplify SelectModelPopup states, improve maintainability
2025-08-02 23:17:14 +08:00
LiuVaayne
82923a7c64
fix(MCP): add missing /mcp suffix to TokenFlux sync URLs (#8777) 2025-08-02 14:54:35 +08:00
Phantom
c52bb47fef
feat(llm): add provider Poe (#8758)
* feat(llm): 添加Poe作为新的LLM提供商

- 在SYSTEM_MODELS中添加Poe的GPT-4o模型
- 在INITIAL_PROVIDERS中新增Poe提供商配置
- 添加Poe提供商logo资源文件
- 更新migrate.ts处理版本127的迁移逻辑
- 增加Poe提供商的相关文档链接配置

* feat(provider): 添加对开发者角色支持提供商的检查功能

在OpenAI客户端中根据提供商支持情况动态设置角色
2025-08-02 14:45:09 +08:00
Caelan
2ced1b2d71
feature/dmxapi_painting_custom_size (#8689)
* 修改生成图片尺寸

* fix:known problem

* fix:Switching but no recovery occurred

* fix:The problem of loading images

* fix:text i18n
2025-08-01 20:55:57 +08:00
one
43dc1e06e4
perf: shiki code block (#8763)
* perf: inlining completeLineTokens and use memo for minor improvements

* chore: bump shiki to 3.9.1

* refactor: improve token line

* refactor: add plainTokenStyle
2025-08-01 20:13:37 +08:00
Konv Suu
3010f20d13
fix: conditional auto-focus based on last focused component (#8739) 2025-08-01 15:23:03 +08:00
one
e2b13ade95
perf: improve model list loading (#8751)
* refactor(ModelList): use spin as a wrapper

* perf: improve SvgSpinners180Ring
2025-08-01 14:57:27 +08:00
beyondkmp
488a01d7d7
fix: flush redux persist data when app quit and update (#8741)
* feat(database): enable strict transaction durability for CherryStudio database

- Updated the Dexie database initialization to include `chromeTransactionDurability: 'strict'`, enhancing data integrity during transactions.

* feat(app): enhance application shutdown process and data flushing

- Added functionality to flush storage data and cookies before quitting the application, ensuring data integrity.
- Introduced a new `handleBeforeQuit` function to centralize cleanup logic for both manual and update-triggered quits.
- Updated logging to provide better insights during the shutdown process.
- Modified ProxyManager to use debug level for unchanged proxy configurations.
- Added `persistor` to the global window object and implemented `handleSaveData` to flush Redux state before quitting.

* format code

* feat(ipc): add App_SaveData channel and implement data saving on window close

- Introduced a new IPC channel `App_SaveData` for saving application data.
- Updated `WindowService` to send a save data message when the main window is closed.
- Enhanced `useAppInit` hook to handle the `App_SaveData` event and trigger data saving logic.

* refactor(env): remove persistor from global window object

- Removed the `persistor` property from the global `window` object in both `env.d.ts` and `index.ts` files, streamlining the application state management.
2025-08-01 14:47:11 +08:00
Konv Suu
b7394c98a4
feat: add smooth transition animation to narrow mode toggle (#8740) 2025-08-01 14:45:08 +08:00
SuYao
a789a59ad8
refactor(ApiService): comment out built-in tools import and usage (#8744) 2025-08-01 11:27:41 +08:00
kangfenmao
9b678b0d95 fix(i18n): update error message for model selection in multiple languages 2025-08-01 11:22:39 +08:00
kangfenmao
f9c1aabe85 refactor: remove agents.json file 2025-08-01 11:11:43 +08:00
one
2711cf5c27
refactor: add a custom dynamic virtual list component (#8711)
- add a custom dynamic virtual list component
  - add tests
  - support autohide
  - used in  ManageModelsList, ModelListGroup, KnowledgePage, FileList
- improve DraggableVirtualList
  - use name DraggableVirtualList directly, make it flex by default
  - use DraggableVirtualList in ProviderList
2025-08-01 11:00:48 +08:00
Phantom
9217101032
fix(prompt): remove think tool (#8733)
fix(prompt): 移除THINK_TOOL_PROMPT中的详细指令并更新相关测试

思考工具提示词插入在system prompt会影响模型输出
2025-08-01 10:03:24 +08:00
beyondkmp
53aa88a659
feat(database): enable strict transaction durability for CherryStudio database (#8737)
- Updated the Dexie database initialization to include `chromeTransactionDurability: 'strict'`, enhancing data integrity during transactions.
2025-08-01 10:00:52 +08:00
kangfenmao
c76aa03566 refactor: remove api server 2025-07-31 21:51:19 +08:00
kangfenmao
1efefad3ee refactor: remove mac ocr 2025-07-31 21:51:16 +08:00
kangfenmao
c214a6e56e feat: add API server settings component and integrate into tool settings
- Introduced a new ApiServerSettings component for managing API server configurations.
- Updated ToolSettings to include API server options and controls.
- Enhanced GeneralSettings to improve proxy settings management.
- Refactored UI elements for better organization and user experience.
2025-07-31 21:50:58 +08:00
kangfenmao
50a9518de7 Revert "fix: resolve issue of top navigation bar being obscured by miniapp (#8517)"
This reverts commit 0f7091f3a8.
2025-07-31 21:50:58 +08:00
one
925cc6bb9b
refactor: add feedback on saving assistant prompt (#8726) 2025-07-31 21:20:16 +08:00
Konv Suu
0113447481
feat: add multi-select mode wrapper for message component (#8653)
* feat: add multi-select mode wrapper for message component

* fix: update

* update

* update

* chore: minor updates

* fix: add drag threshold
2025-07-31 21:06:22 +08:00
熊可狸
10b7c70a59
fix(prompt): resolve variable replacement in function mode and add UI features (#6581)
* fix(prompt): fix variable replacement in function mode

* fix(i18n): update available variables in prompt tip

* feat(prompt):  replace prompt variable in Prompt and AssistantPromptSettings components

* fix(prompt): add fallback value if replace failed

* feat(prompt): add hook and settings for automatic prompt replacement

* feat(prompt): add supported variables and utility function to check if they exist

* feat(prompt): enhance variable handling in prompt settings and tooltips

* feat(i18n): add prompt settings translations for multiple languages

* refactor(prompt): remove debug log from prompt processing

* fix(prompt): handle model name variables and improve prompt processing

* fix: correct variable replacement setting and update migration defaults

* remove prompt settings

* refactor: simplify model name replacement logic

- Remove unnecessary assistant parameter from buildSystemPrompt function
- Update all API clients to use the simplified function signature
- Centralize model name replacement logic in promptVariableReplacer
- Improve code maintainability by reducing parameter coupling

* fix: eslint error

* refactor: remove unused interval handling in usePromptProcessor

* test: add tests, remove redundant replacing

* feat: animate prompt substitution

* chore: prepare for merge

* refactor: update utils

* refactor: remove getStoreSettings

* refactor: update utils

* style(Message/Prompt): 禁止文本选中以提升用户体验

* fix(Prompt): 修复内存泄漏问题,清除内部定时器

* refactor: move prompt replacement to api service

---------

Co-authored-by: one <wangan.cs@gmail.com>
Co-authored-by: icarus <eurfelux@gmail.com>
2025-07-31 19:11:31 +08:00
George·Dong
e634279481
feat(models): refine Qwen model support and token limits (#8716) 2025-07-31 19:08:17 +08:00
tomsun28
0de9e5eb24
refactor: update new zhipu ai dev docs website link (#8713)
update new zhipu ai docs website link

Co-authored-by: gongchao <chao.gong@aminer.cn>
2025-07-31 18:00:08 +08:00
one
6d0867c27d
fix: do not exit on emoji picker (#8702)
* fix: do not exit on emoji picker

* fix: emoji picker in default assistant setting
2025-07-31 10:31:12 +08:00
LiuVaayne
eb4f218c7d
feat: make API server default to closed/disabled (#8691)
*  feat: make API server default to closed/disabled

- Add `enabled` field to ApiServerConfig interface with default value false
- Update Redux store to include apiServer.enabled setting (defaults to false)
- Add setApiServerEnabled action to control server state
- Modify main process to only auto-start API server if explicitly enabled
- Update UI to show enable/disable toggle in API server settings
- Add migrations to handle existing configurations
- Server controls now only visible when API server is enabled

The API server will no longer start automatically on application launch
unless explicitly enabled by the user through the settings interface.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* 🔧 chore: improve build and lint commands

- Move typecheck and i18n checks to lint command for better developer experience
- Simplify build:check to focus on linting and testing
- Ensure all quality checks run together during development

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-31 09:54:23 +08:00
SuYao
7ae7f13ad1
refactor(ApiService): optimize memory search handling and improve error logging (#8671)
* refactor(ApiService): optimize memory search handling and improve error logging

- Updated fetchExternalTool to handle memory search in a separate promise, ensuring better management of asynchronous operations.
- Enhanced error logging for memory search failures to improve debugging.
- Removed redundant memory search result storage logic from the main result handling section.

* refactor(ApiService): streamline external tool fetching and memory search handling

- Simplified the fetchExternalTool function by separating web and knowledge search calls into individual await statements.
- Improved memory search handling by awaiting the searchMemory function directly, ensuring better asynchronous flow.
- Updated result storage logic to ensure memory search results are stored correctly after fetching.
2025-07-31 09:50:24 +08:00
one
80409cd94e
fix(ModelList): stop propagation (#8685) 2025-07-30 20:32:24 +08:00
one
236a6bdcb0
perf(ModelList): provider settings and model list responsiveness (#8667)
- improve responsiveness for provider switching
- improve ModelList performance
  - use startTransition
  - use virtual list for model groups
  - remove excessive ModelEditContent, add EditModelPopup
  - add model count
- improve model management popup
  - rename to ManageModelsPopup
  - use virtual list with sticky group name
  - use SvgSpinners180Ring for spin
2025-07-30 19:15:08 +08:00
kangfenmao
b629cd236d feat(i18n): update localization files to include new API server controls and descriptions
- Added "Start" and "Stop" labels in English, Japanese, Russian, Chinese (Simplified and Traditional) locales.
- Introduced "Authorization Header" title and descriptions for API key and port fields across all locales.
- Removed deprecated API documentation unavailable messages for a cleaner user experience.
2025-07-30 16:01:01 +08:00
Jason Young
0cafaafdf2
test: add tests for aiCore/middleware/utils (#8645)
- Add tests for createErrorChunk function
- Add tests for capitalize function
- Add tests for isAsyncIterable function
- Achieve 100% test coverage
2025-07-30 14:42:37 +08:00
自由的世界人
88f607e350
fix: apiserver display (#8669) 2025-07-30 14:28:10 +08:00
LiuVaayne
d0b2f18d9a
feat: Support Cherry Studio as a Service (CSaaS) (#8098) 2025-07-30 12:38:07 +08:00
kangfenmao
47c909dda4 feat(TabContainer, PinnedMinapps): enhance tab navigation and improve minapp switch indicator
- Added a new handleTabClick function to streamline tab navigation and hide the minapp popup when a tab is clicked.
- Implemented an animation for the minapp switch indicator in the TopNavbarOpenedMinappTabs component, improving visual feedback during tab switching.
- Refactored the rendering of minapp items to use Tooltip for better accessibility and user experience.
- Removed unnecessary StyledLink components to simplify the structure of the navigation items.
2025-07-30 12:00:59 +08:00
beyondkmp
bee933dd72
fix(AppUpdater): simplify error logging and update version check logic (#8656)
* fix(AppUpdater): simplify error logging and update version check logic

- Updated error logging to use a more concise format.
- Changed logging messages for update events to be more consistent.
- Modified the update check logic to return null when no update is available.
- Enhanced the app initialization hook to include update availability in the state dispatch.

* fix(useAppInit): simplify update state dispatch logic by removing update availability check
2025-07-30 11:59:41 +08:00
SuYao
7436b34a96
feat: add support for Qwen 3-235B-A22B thinking model detection (#8641)
- Introduced a new function to check if a model is the Qwen 3-235B-A22B thinking model.
- Updated the ThinkingButton component to utilize the new detection function for improved model handling.
2025-07-30 00:18:21 +08:00
Phantom
78173ae24e
refactor(aiCore): extract MixedBaseAPIClient as abstract class (#8618)
refactor(aiCore): 提取MixedBaseAPIClient基类重构API客户端

将AihubmixAPIClient和NewAPIClient的公共逻辑提取到MixedBaseAPIClient基类
减少代码重复,提高可维护性
2025-07-29 21:22:16 +08:00
beyondkmp
3a2a9d26eb
fix: remove compareVersions utility and update version check logic in AboutSettings (#8640) 2025-07-29 20:10:11 +08:00
王叔叔
0f7091f3a8
fix: resolve issue of top navigation bar being obscured by miniapp (#8517)
* 修复顶部导航栏被小程序遮挡的问题

* chore: 删除多余文件

* fix: remove redundant changes

* style: modify padding

* fix(TabContainer): 切换页面时隐藏小程序弹窗

* fix(WebviewContainer): 修正顶部导航栏存在时的webview高度计算

当顶部导航栏存在时,高度计算需要减去两个导航栏高度变量

* fix(TabContainer): 在添加新标签时隐藏minapp弹窗

* fix(MinappPopupContainer): 修复按钮组在顶部导航栏时的边距问题

根据导航栏位置动态调整按钮组的右边距,当导航栏在顶部时不添加额外边距

* feat(useAppInit): 根据导航栏位置调整窗口背景色

根据导航栏位置(isTopNavbar)动态调整窗口背景色,当导航栏在顶部时使用固定背景色,否则保持原有逻辑

* feat(miniapps): 优化顶部导航栏中固定应用标签的样式和交互

重构顶部导航栏中固定应用标签的布局,添加应用名称显示
调整悬停和激活状态的样式,提升用户体验

* fix: 修正顶部导航栏在有 pinned 应用时的背景色显示问题

当有 pinned 应用时,顶部导航栏应显示背景色,之前逻辑错误地要求至少两个应用才显示

* refactor(PinnedMinapps): 移除多余的Tooltip组件并优化结构

* style(PinnedMinapps): 优化顶部导航项的悬停和激活样式

调整悬停效果,移除圆形背景改为底部边框高亮
激活状态改为1px边框并移除冗余的圆角设置

---------

Co-authored-by: xinming wong <xinmingwong@xinmingdeMacBook-Air.local>
Co-authored-by: icarus <eurfelux@gmail.com>
2025-07-29 19:42:52 +08:00
kangfenmao
385c6d6aab Revert "feat(contentsearch): optimize searchbar UI (#8556)"
This reverts commit eb309563a9.
2025-07-29 18:25:07 +08:00
陈天寒
f1b52869a9
integrate AWS Bedrock API (#8383)
* feat(AWS Bedrock): integrate AWS Bedrock API client and configuration

* feat(AWS Bedrock): add AWS Bedrock settings management and UI integration

* refactor(AWS Bedrock): refactor AWS Bedrock API client and settings management with vertexai

* fix: lint error

* refactor: update aws bedrock placeholder

* refactor(i18n):update i18n content with aws bedrock

* feat(AwsBedrockAPIClient): enhance message handling, add image support

* fix: code review suggestion

* feat(test): add aws bedrock utils unit test

* feat(AwsBedrockAPIClient): enhance getEmbeddingDimensions method to support dynamic model dimension retrieval

* fix(AwsBedrockAPIClient): Modify the processing logic when the embedded dimension cannot be parsed, throw an error instead of returning the default value

* chore(package): Reorganize AWS SDK dependencies in package.json
2025-07-29 17:55:55 +08:00
Phantom
b716a7446a
perf: part of memory leak (#8619)
* fix: 修复多个组件中的内存泄漏问题

清理setTimeout和事件监听器以避免内存泄漏
优化useEffect中的异步操作清理逻辑

* fix: review comments
2025-07-29 17:41:56 +08:00
自由的世界人
27af64f2bd
fix: change jschardet to chardet (#8577)
* fix: change jschardet to chardet

* Update file.test.ts

* fix: error

* fix: test fail

* fix: test error

* Update file.test.ts

* fix: optimize details

* Update file.test.ts

* Update file.ts

* Update file.ts

* Update file.test.ts
2025-07-29 17:27:36 +08:00
George·Dong
7098489f15
fix/export-roletext-level (#8634)
* fix(export): update titleSection from h3 to h2 for clarity

* test(export): update export test for f46234
2025-07-29 17:14:38 +08:00
one
89fff8e963
fix: reset pyodide globals between runs (#8620) 2025-07-29 16:56:59 +08:00
SuYao
2b750b6d29
refactor(ModelEditContent): enhance model capabilities management and… (#8562)
* refactor(ModelEditContent): enhance model capabilities management and introduce uniqueObjectArray utility

- Updated ModelEditContent to improve handling of model capabilities, ensuring user selections are accurately reflected.
- Introduced a new utility function, uniqueObjectArray, to filter out duplicate objects in arrays, enhancing data integrity.
- Refactored logic for updating model capabilities to utilize the new utility, streamlining the process and improving code clarity.

* refactor(ModelEditContent): enhance model capabilities management with useEffect and improved type handling

- Added useEffect to manage model capabilities based on user selections and showMoreSettings state.
- Refactored logic to streamline the handling of default and selected model types, improving clarity and maintainability.
- Utilized useRef to track changed types, ensuring accurate updates to model capabilities during user interactions.

* refactor(ModelEditContent): optimize model capabilities update logic with getUnion utility

- Enhanced the model capabilities management by integrating the getUnion utility to streamline the merging of selected types and unselected capabilities.
- Improved clarity in the useEffect hook for managing model capabilities based on user selections and the showMoreSettings state.
- Refactored condition checks for updating user selections to ensure accurate handling of model capabilities during interactions.

* refactor(ModelEditContent): improve model capabilities reset logic and enhance debugging

- Introduced a cloneDeep utility to preserve original model capabilities for reset functionality.
- Updated the handleResetTypes function to restore original capabilities instead of clearing them.
- Added console logs for better debugging and tracking of model capabilities during updates.

* feat(ModelEditContent): track user modifications for model capabilities

- Added a state variable to track if the user has modified model capabilities.
- Updated the handleTypeChange function to set the modification flag when types are changed.
- Modified the reset button to only display when there are user modifications, enhancing the user interface and interaction clarity.
2025-07-29 12:18:41 +08:00
Phantom
f599bc80a1
fix: no /no_think for qwen3 anymore if provider is dashscope (#8616)
fix(openai): 修复Qwen思考模式在dashscope提供商下的错误判断
2025-07-29 09:30:08 +08:00
Phantom
eea9f7a1f6
feat(translate): support background execution of translation tasks (#7892)
* feat(translate): 支持后台执行翻译任务

- 新增translate store模块管理翻译状态
- 实现useTranslate hook封装翻译逻辑
- 重构TranslatePage组件使用新的翻译逻辑

* feat(翻译): 添加翻译成功提醒并跟踪当前路由

在翻译完成后添加成功提示,但仅在非翻译页面显示
添加activeRoute状态以跟踪当前路由路径

* refactor(useTranslate): 移除调试用的console.log语句

* fix: update dependencies in effect hooks for improved reactivity

* Revert "fix: update dependencies in effect hooks for improved reactivity"

This reverts commit bb6734c628.

* feat(i18n): 为翻译状态添加"完成"的本地化文本

* refactor(store): 将translating状态从translate迁移到runtime模块

简化translate模块状态管理,将translating状态移至更合适的runtime模块

* feat(i18n): 添加未知语言支持

为语言类型和翻译配置添加未知语言选项,当检测到未知语言代码时返回默认未知语言配置

* reafactor(translate): 添加翻译历史记录管理功能并优化翻译流程

- 在useTranslate钩子中新增deleteHistory和clearHistory方法
- 将翻译历史管理逻辑从页面组件移至useTranslate钩子
- 优化翻译流程,自动获取默认翻译助手
- 调整语言参数类型为Language接口

* refactor(translate): 移除翻译完成时的路由检查逻辑

删除不再使用的activeRoute状态及相关代码,简化翻译完成时的通知逻辑

* feat(翻译): 增强翻译钩子函数的错误处理和日志记录

添加完整的异常处理逻辑和日志记录服务到翻译钩子函数
为翻译操作和保存历史记录添加详细的错误处理
增加JSDoc注释以提升代码可读性和维护性

* feat(i18n): 添加翻译历史保存失败的错误提示

* feat(i18n): 添加翻译未知错误的提示信息

为翻译功能添加未知错误的提示信息,并在捕获异常时显示该提示

* fix(translate): 添加翻译模型检查并处理错误情况

当翻译模型未配置时,添加错误日志记录并抛出异常。在useTranslate中捕获异常并显示错误信息给用户。

* perf(useTranslate): 使用 throttle 优化翻译响应性能

避免频繁触发翻译内容更新,通过 lodash 的 throttle 函数限制更新频率为 100ms

* fix: 修复不支持温度和top_p参数的模型判断逻辑

添加对QwenMT模型的判断,确保其被正确识别为不支持温度和top_p参数

---------

Co-authored-by: 自由的世界人 <3196812536@qq.com>
2025-07-29 09:29:49 +08:00
Konv Suu
072b52708f
feat: improve builtin mcp sever display style (#8470)
* feat: improve builtin mcp sever display style

* update

* update

* chore: minor changes

* remove useless code
2025-07-29 02:19:31 +08:00
Phantom
4e6ac847e2
fix: show something reasonable when missing embedding model (#8600)
* feat(组件): 在ModelSelector中添加模型删除错误提示和国际化支持

为ModelSelector组件添加了模型被删除时的错误提示,并引入react-i18next实现国际化支持

* feat(i18n): 添加模型删除错误提示和多语言支持

为知识库错误提示添加"model_deleted"多语言字段
移除重复的翻译条目并添加增量文本输出相关翻译

* style(ModelSelector): 修改已删除模型提示文字颜色为错误状态色

* fix(i18n): 更新模型无效的错误提示信息

将错误提示从“模型已被删除”改为“未选择模型或已删除”,以更准确地反映错误情况
2025-07-29 00:31:34 +08:00
SuYao
51835e32c5
fix(think-tool): update prompt handling logic and improve comments (#8538)
* fix(think-tool): update prompt handling logic and improve comments

* fix: ut
2025-07-28 23:54:41 +08:00
Phantom
d5dd5bc88a
fix(WebSearchSettings): responsive table layout (#8606)
fix(WebSearchSettings): 修复黑名单设置表格布局导致的响应性问题
2025-07-28 23:10:28 +08:00
SuYao
42918cf306
feat(models): add support for Zhipu model and enhance reasoning checks (#8609)
* feat(models): add support for Zhipu model and enhance reasoning checks

- Introduced support for the new Zhipu model (GLM-4.5) in the models configuration.
- Added functions to check if the Zhipu model supports reasoning and thinking tokens.
- Updated the ThinkingButton component to recognize Zhipu model options and integrate them into the reasoning effort logic.
- Ensured that the reasoning checks are streamlined to include the new Zhipu model alongside existing models.

* feat(models): expand Zhipu model support and refine reasoning checks

- Added new Zhipu models: GLM-4.5-Flash, GLM-4.5-AIR, GLM-4.5-AIRX, and GLM-4.5-X to the models configuration.
- Enhanced the isZhipuReasoningModel function to include checks for the new models and ensure robust reasoning validation.
- Removed redundant checks for 'glm-z1' from the isReasoningModel function to streamline logic.
2025-07-28 22:46:24 +08:00
beyondkmp
18521c93b4
fix(LocalBackup): streamline local backup relative directory handling (#8595)
* fix(LocalBackup): streamline local backup directory handling

- Added a new state to manage the resolved local backup directory in LocalBackupSettings.
- Updated the LocalBackupManager component to use the resolved directory instead of the raw input.
- Enhanced the backupToLocal and restoreFromLocal functions to resolve the local backup directory path before use, improving reliability.

* refactor(Backup): remove setLocalBackupDir functionality

- Removed the setLocalBackupDir method and its associated IPC channel handling from the BackupManager and IpcChannel.
- Updated LocalBackupSettings to eliminate direct calls to setLocalBackupDir, instead resolving the local backup directory path directly.
- Cleaned up related code in the BackupService to streamline local backup operations.

* format code
2025-07-28 21:57:04 +08:00
lihqi
536aa68389
feat: add Top-P parameter toggle with default enabled state and improved UI styling (#8137)
* feat: add Top-P parameter toggle with default enabled state and improved UI styling

* fix: resolve undefined enableTopP issue in ppio models by using getAssistantSettings

* refactor(api): Unify getTopP method to BaseApiClient

* feat(settings): adjust layout of Top-P setting in assistant model settings

* feat: add temperature parameter toggle control with UI and multi-language support

* fix: Fix lint error

* fix: Sort these imports

* style(settings): refactor model settings layout and styles

* chore: yarn sync:i18n
2025-07-28 21:27:31 +08:00
beyondkmp
c4182a950f
fix: add isPathInside functionality to check path relationships (#8590)
* feat(ipc): add isPathInside functionality to check path relationships

- Introduced a new IPC channel for checking if a path is inside another path, enhancing path validation capabilities.
- Implemented the isPathInside function in the file utility, which accurately determines parent-child path relationships, handling edge cases.
- Updated relevant components to utilize the new isPathInside function for validating app data and backup paths, ensuring better user experience and error handling.
- Added comprehensive tests for isPathInside to cover various scenarios, including edge cases and error handling.

* format code
2025-07-28 15:45:52 +08:00
Phantom
5bafb3f1b7
feat(inputbar): drop text into inputbar (#8579)
feat(输入栏): 添加从拖拽事件获取文本的功能

新增getTextFromDropEvent工具函数,用于从拖拽事件中提取文本数据
在Inputbar组件中集成该功能,支持拖拽文本到输入框
2025-07-28 01:10:57 +08:00
George·Dong
eb309563a9
feat(contentsearch): optimize searchbar UI (#8556) 2025-07-27 22:34:05 +08:00
Phantom
392f1e0a24
fix(ModelEditContent): preserve model price settings (#8560)
fix(ModelEditContent): 为价格输入字段添加默认值
2025-07-27 21:56:30 +08:00
自由的世界人
2e87c76b6e
fix: pangu-pro-moe not reasoning (#8572) 2025-07-27 19:30:46 +08:00
Phantom
8ffdb4d1c2
perf(i18n): improve performance when getting i18n text (#8548)
* refactor(i18n): 重构国际化标签映射为独立的键值映射对象

对象定义移出函数以优化性能

* docs(i18n): 更新国际化文档中的动态翻译推荐做法

修改中英文文档,添加通过维护键映射表来避免动态翻译键缺失的最佳实践

* chore(ProviderService): 添加注释

* chore: 移动注释位置

* refactor(ProviderService): 将获取提供者名称的逻辑移到utils中

移除冗余代码并使用统一的工具函数getFancyProviderName来获取提供者名称
2025-07-27 17:30:52 +08:00
Phantom
46d98c2b22
feat(assistants): place copied assistant after the original one (#8557)
* feat(assistants): 复制助手功能插入到原助手后

添加 insertAssistant 方法用于在指定位置插入助手
实现 copyAssistant 功能用于复制助手并插入到原助手后面
更新相关组件以使用新的复制功能

* fix(useAssistant): 修复助手索引检查逻辑错误

原条件判断错误导致未找到索引时仍执行更新操作,现修正为仅在索引存在时更新

* fix(useAssistant): 添加错误处理及国际化支持

捕获插入助手时的异常并显示错误提示
添加react-i18next的翻译功能用于错误消息
2025-07-27 11:17:45 +08:00
George·Dong
dfceed8751
feat(models): add Grok 4 model and update reasoning regex (#8545)
* feat(models): add Grok 4 model and update reasoning regex

* feat(models): add grok-4 to vision model
2025-07-27 01:18:11 +08:00
SuYao
fd01653164
refactor(OpenAIApiClient, models, ThinkingButton): streamline reasoning model checks and enhance support for Perplexity models (#8487)
- Removed the specific check for Grok models in OpenAIApiClient and consolidated it with the general reasoning effort model check.
- Added support for a new Perplexity model, 'sonar-deep-research', in the models configuration.
- Updated the reasoning model checks to include Perplexity models in the models.ts file.
- Enhanced the ThinkingButton component to recognize and handle Perplexity model options.
2025-07-26 23:48:45 +08:00
Phantom
4611e2c058
feat(mcp): add shouldConfig flag and i18n support for builtin MCPServer description (#8440)
* feat(mcp): 添加shouldConfig字段用于标记需要配置的服务器

在MCPServer接口中添加shouldConfig字段,用于标识需要额外配置的服务器
修改BuiltinMCPServersSection组件,根据shouldConfig字段显示配置提示标签
更新内置服务器列表,为需要配置的服务器添加shouldConfig字段

* feat(i18n): 添加内置服务器描述的多语言支持

* feat(mcp): 为内置MCP服务器添加国际化描述支持

将内置MCP服务器的描述从硬编码改为通过i18n获取,支持多语言显示

* feat(i18n): 添加内置MCP服务器的多语言描述

为内置MCP服务器添加多语言描述文本,包括中文、英文、日文等语言版本
同时优化mcp.ts中的描述文本引用方式,直接使用完整路径而非拼接前缀

* feat(mcp): 为内置服务器添加默认描述并修复无效描述显示

为内置MCP服务器添加默认描述字段,并在UI中使用国际化文本替换硬编码的"Invalid description"。同时为所有语言环境添加"no"键作为默认描述文本。
2025-07-26 23:38:32 +08:00
SuYao
65257eb3d5
Fix/qwen-mt (#8527)
* feat(ModelList): add support for 'supported_text_delta' in model configuration

- Introduced a new boolean property 'supported_text_delta' to the model configuration, allowing models to indicate support for text delta outputs.
- Updated the AddModelPopup and ModelEditContent components to handle this new property, including UI elements for user interaction.
- Enhanced migration logic to set default values for existing models based on compatibility checks.
- Added corresponding translations for the new property in the i18n files.

* feat(OpenAIApiClient): enhance support for Qwen MT model and system message handling

- Added support for Qwen MT model in OpenAIApiClient, including translation options based on target language.
- Updated system message handling to accommodate models that do not support system messages.
- Introduced utility functions to identify Qwen MT models and their compatibility with text delta outputs.
- Enhanced TextChunkMiddleware to handle text accumulation based on model capabilities.
- Updated model configuration to include Qwen MT in the list of excluded models for function calling.

* feat(i18n): add translations for 'supported_text_delta' in multiple languages

- Introduced new translation entries for the 'supported_text_delta' property in English, Japanese, Russian, and Traditional Chinese localization files.
- Updated the corresponding labels and tooltips to enhance user experience across different languages.

* refactor(ModelEditContent): reposition 'supported_text_delta' input for improved UI layout

- Moved the 'supported_text_delta' Form.Item from its previous location to enhance the user interface and maintain consistency in the model editing experience.
- Ensured that the switch input for 'supported_text_delta' is now displayed in a more logical order within the form.

* fix(TextChunkMiddleware): update condition for supported_text_delta check

- Changed the condition in TextChunkMiddleware to explicitly check for 'supported_text_delta' being false, improving clarity in the logic.
- Updated test cases to reflect the new structure of model configurations, ensuring 'supported_text_delta' is consistently set to true for relevant models.

* feat(migrate): add support for 'supported_text_delta' in assistant models

- Updated migration logic to set 'supported_text_delta' for both default and specific models within assistants.
- Implemented checks to ensure compatibility with text delta outputs, enhancing model configuration consistency.

* feat(ModelList): add 'supported_text_delta' to model addition logic

- Enhanced the model addition process in EditModelsPopup, NewApiAddModelPopup, and NewApiBatchAddModelPopup to include the 'supported_text_delta' property.
- Ensured consistency across components by setting 'supported_text_delta' to true when adding models, improving compatibility with text delta outputs.

* feat(migrate): streamline model text delta support in migration logic

- Refactored migration logic to utilize a new helper function for updating the 'supported_text_delta' property across various model types, enhancing code clarity and reducing redundancy.
- Ensured that all relevant models, including those in assistants and LLM providers, are correctly configured for text delta compatibility during migration.

* feat(OpenAIApiClient): integrate language mapping for Qwen MT model translations

- Updated the OpenAIApiClient to utilize a new utility function for mapping target languages to Qwen MT model names, enhancing translation accuracy.
- Refactored migration logic to ensure default tool use mode is set for assistants lacking this configuration, improving user experience.
- Added a new utility function for language mapping in the utils module, supporting better integration with translation features.

* feat(ModelList): update model addition logic to determine 'supported_text_delta'

- Integrated a new utility function to assess model compatibility with text delta outputs during the model addition process in AddModelPopup.
- Simplified the logic for setting the 'supported_text_delta' property, enhancing clarity and ensuring accurate model configuration.

* feat(ModelList): unify model addition logic for 'supported_text_delta'

- Refactored model addition across AddModelPopup, EditModelsPopup, NewApiAddModelPopup, and NewApiBatchAddModelPopup to consistently determine 'supported_text_delta' using a utility function.
- Simplified the logic for setting 'supported_text_delta', enhancing clarity and ensuring accurate model configuration across components.
2025-07-26 17:33:46 +08:00
George·Dong
81b6350501
feat(export): citation export control (#8519)
* feat(export): add option to exclude citations in Markdown export

* feat(export): add option to standardize citations in Markdown export

* chore(i18n): sync i18n

* test(export): add processCitations utility tests for citation handling

* refactor(export): improve citation processing and optimize markdown format

* test(export): clarify markdown formatting expectations in message tests
2025-07-26 17:30:38 +08:00
Phantom
b2de157c3c
fix(i18n): add i18n for data restore (#8533)
fix(i18n): 添加备份解压成功的多语言翻译

在备份恢复流程中增加解压成功状态的多语言翻译,并定义进度阶段的类型
2025-07-26 16:17:53 +08:00
SuYao
6d1e58b130
feat(models): add support for new Qwen model and update effort ratio (#8537)
* feat(models): add support for new Qwen model and update effort ratio

- Introduced support for the 'qwen3-235b-a22b-thinking' model with a max token limit of 81,920.
- Updated the model options in ThinkingButton to include 'qwen_3235ba22b_thinking'.
- Adjusted the effort ratio for 'low' from 0.2 to 0.05 for improved performance.

* chore: remove
2025-07-26 16:15:31 +08:00
Phantom
e7ad3e6935
feat(translate): add Ukrainian (#8528)
feat(i18n): 添加乌克兰语支持
2025-07-26 11:58:33 +08:00
自由的世界人
07f2a663c1
fix: #8531 (#8535) 2025-07-26 11:33:12 +08:00
SuYao
26bd9203e1
feat: long run mcp (#8499)
* feat(MCPService, MCPSettings, MessageTools): enhance long-running server support and UI integration

- Added support for long-running server configurations in MCPService, allowing for timeout adjustments based on server settings.
- Introduced a new `longRunning` property in MCPSettings to manage server behavior and UI elements accordingly.
- Integrated a ProgressBar component in MessageTools to visually represent progress for long-running operations, improving user experience.

* refactor(IpcChannel, MCPService, MessageTools): remove progress IPC channel and integrate progress handling

- Removed the `Mcp_SetProgress` channel from `IpcChannel` and its associated handlers in `ipc.ts` and `preload/index.ts`.
- Integrated progress handling directly in `McpService` to send progress updates to the main window.
- Updated `MessageTools` to display progress using Ant Design's `Progress` component, enhancing the user interface for long-running operations.
- Deleted the `ProgressBar` component as its functionality has been replaced by the new progress handling approach.

* feat(MCPService): add maxTotalTimeout configuration for long-running operations

- Introduced a new `maxTotalTimeout` property in MCPService to define a maximum timeout duration for long-running server operations, enhancing control over server behavior based on the `longRunning` setting.

* refactor(MCPService): remove unused notification handler for cancelled operations

* Removed the CancelledNotificationHandler from MCPService to streamline notification handling and improve code clarity.
* Updated MessageTools component to simplify rendering logic for status indicators, enhancing readability and maintainability.
2025-07-26 11:08:32 +08:00
one
08c5f82a04
refactor(Knowledge): simplify dimension settings, support base migration (#8315)
* refactor(knowledge): simplify dimension settings, support base migration

Embedding dimension
- remove 'auto set dimension', let the user take control
- reuse findModelById
- improve error messages for VoyageEmbeddings

Knowledgebase migration
- enable migration when model or dimension changes
- add knowledgeThunk to reuse code

KnowledgeSettings
- unify UI for AddKnowledgeBasePopup and EditKnowledgeBasePopup
- refactor KnowledgeSettings, split it to smaller components

Tests:
- knowledgeThunk
- InputEmbeddingDimension
- KnowledgeBaseFormModal
- GeneralSettingsPanel
- AdvancedSettingsPanel
- InfoTooltip

Misc.
- add InfoTooltip
- remove MemoriesSettingsModal

* fix: i18n and vitest config
2025-07-26 10:54:06 +08:00
fullex
b2935d800e
fix: remove mistaken console.log 2025-07-26 09:17:16 +08:00
Phantom
36a22129a1
fix(i18n): standardize i18n usage (#8525)
* fix(数据设置): 修复菜单项标题未使用翻译函数的问题

* refactor(i18n): 使用labelMap集中管理翻译键以提升维护性

将分散在各处的翻译键集中管理到labelMap中,统一通过映射获取翻译文本
替换直接使用i18n.t的调用为从labelMap获取,减少重复代码
修复部分未考虑Linux平台的翻译描述

* fix(NewApiPage): 将未知提供者的值设为undefined以保持一致

* refactor(i18n): 将labelMap替换为动态获取标签的函数

重构国际化标签的获取方式,从静态对象改为动态函数,以支持语言切换时实时更新标签内容

* feat(i18n): 添加文件字段标签的国际化支持

将文件字段的标签文本提取到i18n模块中统一管理,便于维护和翻译

* refactor(utils): 移除调试用的console.log语句
2025-07-25 22:03:31 +08:00
MyPrototypeWhat
84157f7bd8
refactor(useSmoothStream): optimize chunk handling and state management (#8514)
* refactor(useSmoothStream): optimize chunk handling and state management

- Replaced state management with refs for chunk queue to improve performance and reduce unnecessary re-renders.
- Introduced Intl.Segmenter for better character segmentation based on language support.
- Updated rendering logic to ensure final text is displayed correctly when the stream ends.
- Cleaned up unused effects and comments for improved code clarity.

* refactor(useSmoothStream): move segmenter initialization outside of addChunk function

- Moved the initialization of Intl.Segmenter to the top of the file for better performance and to avoid redundant instantiation within the addChunk callback.
- This change enhances the efficiency of chunk processing in the useSmoothStream hook.
2025-07-25 19:16:22 +08:00
Phantom
6cc29c5005
chore(i18n): forced nested structure to support i18n ally (#8457)
* chore(i18n): 更新i18n文件为嵌套结构以适应插件

* feat(i18n): 添加自动翻译脚本处理待翻译文本

添加自动翻译脚本auto-translate-i18n.ts,用于处理以[to be translated]开头的待翻译文本
在package.json中添加对应的运行命令auto:i18n

* chore(i18n): 更新嵌套结构

* chore(i18n): 更新多语言翻译文件并改进翻译逻辑

更新了多个语言的翻译文件,替换了"[to be translated]"标记为实际翻译内容
改进auto-translate-i18n.ts中的翻译逻辑,添加错误处理和日志输出
部分数组格式的翻译描述自动改为对象格式

* fix(i18n): 修复嵌套结构检查并改进错误处理

添加对嵌套结构中使用点符号的检查,确保使用严格嵌套结构
改进错误处理,在检查失败时输出更清晰的错误信息

* fix(测试): 更新下载失败测试中的翻译键名

* test(下载): 移除重复的下载失败翻译并更新测试

* feat(eslint): 添加规则,警告不建议在t()函数中使用模板字符串

* style: 使用单引号替换模板字符串中的反引号

* docs(.vscode): 添加i18n-ally扩展推荐到vscode配置

* fix: 在自动翻译脚本中停止进度条显示

确保在脚本执行完成后正确停止进度条,避免控制台输出混乱

* fix(i18n): 修复模型列表添加确认对话框的翻译键名

更新多语言文件中模型管理部分的翻译结构,将"add_listed"从字符串改为包含"confirm"和"key"的对象
同时修正EditModelsPopup组件中对应的翻译键引用

* chore: 注释掉i18n-ally命名空间配置

* docs: 添加国际化(i18n)最佳实践文档

添加中英文双语的技术文档,详细介绍项目中的i18n实现方案、工具链和最佳实践
包含i18n ally插件使用指南、自动化脚本说明以及代码规范要求

* docs(国际化): 更新i18n文档中的键名格式示例

将文档中错误的flat格式示例从下划线命名改为点分隔命名,以保持一致性

* refactor(i18n): 统一翻译键名从.key后缀改为.label后缀

* chore(i18n): sort

* refactor(locales): 使用 Object.fromEntries 重构 locales 对象

* feat(i18n): 添加机器翻译的语言支持

新增希腊语、西班牙语、法语和葡萄牙语的机器翻译支持,并调整语言资源加载顺序
2025-07-25 17:36:04 +08:00
LiuVaayne
20438989f8
feat(MCPSettings): enhance JSON loading to inherit all MCPServer fields (#8498)
Use spread operator to copy all fields from parsed JSON instead of manually
mapping specific fields. This ensures all MCPServer properties including
headers, timeout, dxtVersion, and other optional fields are preserved during
JSON import.

Previously missing fields:
- headers: Record<string, string>
- timeout: number
- dxtVersion: string
- dxtPath: string
- Other optional MCPServer properties

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-25 16:56:43 +08:00
beyondkmp
03b996d626
feat: support Relative Path Input for Backup Directory (#8471)
* chore(env): add .env.example file and update .gitignore

- Introduced a new .env.example file with NODE_OPTIONS configuration.
- Updated .gitignore to exclude .env.example from being ignored.
- Added instructions in dev.md for copying .env.example to .env.

* fix(MessageTools): improve error handling and logging in message preview rendering (#8453)

- Enhanced the rendering logic for message previews by adding a try-catch block to handle JSON parsing errors more gracefully.
- Updated the error handling to provide clearer error messages in the preview when exceptions occur.
- Added debug logging to track the rendering process of message content.

* refactor(Theme): update theme management to use setTheme function

- Replaced toggleTheme with setTheme for more explicit theme handling.
- Removed unused SunMoon icon from TabContainer and Sidebar components.
- Updated theme icon rendering logic to directly reflect the current theme state.
- Adjusted ThemeProvider to include setTheme in context for better theme management.

* refactor(ModelList): streamline button layout and improve accessibility

- Removed tooltip wrappers from manage and add model buttons for a cleaner UI.
- Introduced a new Flex container for primary and default buttons, enhancing layout consistency.
- Updated button rendering to improve accessibility and user experience.

* feat(ModelList): add bulk add/remove functionality for models with confirmation dialog

- Implemented onAddAll and onRemoveAll functions to handle bulk actions for models.
- Added confirmation dialog for adding all models to the list, enhancing user experience.
- Updated translations for confirmation messages in multiple languages.

* chore(languages): update languages with a script (#8445)

* chore(languages): update languages with a script

* refactor: update languages and merge it into constants

* refactor: add usf and ush

* refactor(ipc): enhance write permission check and add untildify utility

- Updated the hasWritePermission function to resolve paths using the new untildify utility, improving path handling.
- Modified IPC handler to await the permission check for better asynchronous handling.
- Introduced a new untildify function to convert paths starting with '~' to the user's home directory.

* fix(ModelEdit): enhance model type management and introduce new selection logic (#8420)

* fix(ModelEdit): enhance model type management and introduce new selection logic

- Added support for 'rerank' model type in the ModelEditContent component.
- Refactored type selection logic to utilize new utility functions for finding differences and unions in model types.
- Updated model type handling to include user selection status, improving user experience in type management.
- Adjusted migration logic to initialize newType for existing models, ensuring backward compatibility.
- Introduced isUserSelectedModelType utility to streamline model type checks across the application.

* refactor(isFunctionCallingModel): simplify model type check logic

- Replaced the inline check for 'function_calling' model type with a call to the new utility function isUserSelectedModelType, enhancing code clarity and maintainability.

* feat(collection): add utility functions for array operations

- Introduced `findIntersection`, `findDifference`, and `findUnion` functions to handle array operations with support for custom key selectors and comparison functions.
- Removed previous implementations from `index.ts` to streamline utility exports.
- Added comprehensive tests for new functions covering basic types and object types with various edge cases.

* refactor(collection): rename utility functions for clarity

- Renamed `findIntersection`, `findDifference`, and `findUnion` to `getIntersection`, `getDifference`, and `getUnion` respectively for improved clarity and consistency in naming.
- Updated corresponding tests to reflect the new function names, ensuring all tests pass with the updated utility functions.

* refactor(ModelEditContent): update model type management and improve selection logic

- Replaced utility function calls to `findDifference` and `findUnion` with `getDifference` and `getUnion` for consistency.
- Introduced temporary state management for model types to enhance user selection handling.
- Added a reset functionality for model type selections, improving user experience.
- Updated the rendering logic to conditionally disable certain model types based on user selections.

* fix(ModelEditContent): enhance model type selection logic with conditional disabling

- Introduced logic to conditionally disable 'rerank' and 'embedding' model types based on user selections.
- Updated the state management for model types to ensure correct user selection handling.
- Improved the confirmation modal to reflect the updated selection logic for better user experience.

* fix(ModelEditContent): refine model type selection and update confirmation logic

- Enhanced the logic for model type selection to ensure accurate user selections for 'rerank' and 'embedding'.
- Updated the confirmation modal to reflect changes in selection handling, improving user experience.
- Adjusted state management to correctly handle updates based on selected model types.

* fix(models): update model support logic to include 'qwen3-235b-a22b-instruct'

* refactor(models): rename 'newType' to 'capabilities' and update related logic in ModelEditContent and migration scripts

* feat(ipc): add App_ResolvePath channel and update path handling

- Introduced a new IPC channel `App_ResolvePath` to resolve file paths, enhancing path management.
- Updated the `hasWritePermission` function to log the original directory instead of the resolved one.
- Modified the `LocalBackupSettings` component to utilize the new `resolvePath` method for improved directory validation.

* add ut

* fix comments

* fix clear manually

* delete duplicate var

---------

Co-authored-by: kangfenmao <kangfenmao@qq.com>
Co-authored-by: SuYao <sy20010504@gmail.com>
Co-authored-by: one <wangan.cs@gmail.com>
2025-07-25 16:51:59 +08:00
SuYao
5918f800d7
fix/mcp-bug (#8518)
* fix/mcp-bug

* chore: upgrade version

* refactor: remove optional
2025-07-25 16:42:03 +08:00
one
8290b909a2
feat: use code editor in prompt settings (#8456)
* refactor(CodeEditor): add fontSize to props

* feat: use CodeEditor in assistant prompt settings

* refactor(font): add code font family for windows

* refactor: support Sarasa
2025-07-25 15:40:01 +08:00
one
42a07f8ebf
refactor(MessageEditor): lower minrows to 1, add padding (#8434)
* refactor(MessageEditor): lower minrows to 1

* refactor: increase padding

* refactor: simplify padding
2025-07-25 15:06:32 +08:00
chenxue
1a4d64595c
fix: aihubmix provider generate image logic (#8478)
fix: aihubmix provider generate image

Co-authored-by: zhaochenxue <zhaochenxue@bixin.cn>
2025-07-25 14:14:32 +08:00
SuYao
f87975f49f
refactor(ThinkChunkMiddleware): remove reasoning check for improved logic clarity (#8505)
- Removed the reasoning check from the ThinkChunkMiddleware to streamline the processing logic.
- This change enhances the middleware's efficiency by focusing on handling streams directly without the reasoning condition.
2025-07-25 11:52:34 +08:00
kangfenmao
baad783d64 refactor(MCPSettings): update navigation and enhance scroll position handling
- Updated navigation logic in `useMCPServers` and `McpServersList` to use server IDs in the URL for better routing.
- Implemented scroll position memory in `McpServersList` to enhance user experience when navigating back to the server list.
- Adjusted route parameters in `MCPSettings` to retrieve server IDs from the URL, improving data handling and clarity.
2025-07-25 10:29:17 +08:00
SuYao
d8c5c31e61
fix(mcp-tools): enhance tool lookup logic to support partial matches (#8473)
* fix(mcp-tools): enhance tool lookup logic to support partial matches

- Updated the tool lookup logic in `geminiFunctionCallToMcpTool` to include partial matches for both tool IDs and names, improving the flexibility of tool identification.

* refactor(mcp-tools): simplify tool lookup logic for improved clarity

- Refactored the tool lookup logic in `geminiFunctionCallToMcpTool` to streamline the identification process by consolidating checks for tool IDs and names into a single variable. This enhances readability and maintains functionality for partial matches.
2025-07-25 00:14:09 +08:00
SuYao
4c0167cc03
Feat/vertex-claude-support (#7564)
* feat(migrate): add default settings for assistants during migration

- Introduced a new migration step to assign default settings for assistants that lack configuration.
- Default settings include temperature, context count, and other parameters to ensure consistent behavior across the application.

* chore(store): increment version number to 115 for persisted reducer

* feat(vertex-sdk): integrate Anthropic Vertex SDK and add access token retrieval

- Added support for the new `@anthropic-ai/vertex-sdk` in the project.
- Introduced a new IPC channel `VertexAI_GetAccessToken` to retrieve access tokens.
- Implemented `getAccessToken` method in `VertexAIService` to handle service account authentication.
- Updated the `IpcChannel` enum and related IPC handlers to support the new functionality.
- Enhanced the `VertexAPIClient` to utilize the `AnthropicVertexClient` for model handling.
- Refactored existing code to accommodate the integration of the Vertex SDK and improve modularity.

* feat(vertex-ai): enhance VertexAI settings and API host management

- Added a new method to format the API host URL in both AnthropicVertexClient and VertexAPIClient.
- Updated getBaseURL methods to utilize the new formatting logic.
- Enhanced VertexAISettings component to include an input for API host configuration, with help text for user guidance.
- Updated localization files to include new help text for the API host field in multiple languages.

* fix(vertex-sdk): update baseURL handling and patch dependencies

- Refactored baseURL assignment in AnthropicVertexClient to ensure it defaults to undefined when the URL is empty.
- Updated yarn.lock to reflect changes in dependency resolution and checksum for @anthropic-ai/vertex-sdk patch.

* refactor(VertexAISetting): use provider.id rather than provider

* refactor: improve API host formatting in AnthropicVertexClient

- Updated the `formatApiHost` method to streamline host URL handling.
- Introduced a helper function to determine if the original host should be used based on its format.
- Ensured consistent appending of the `/v1/` path for valid API requests.

* fix: handle empty host in AnthropicVertexClient

- Added a check in the `getBaseURL` method to return the host if it is empty, preventing potential errors.
- Included a console log for the base URL to aid in debugging and verification of the URL formatting.

* feat(AnthropicVertexClient): add logging for authentication errors and mock client in tests

- Introduced logging functionality in AnthropicVertexClient to replace console.error with logger service for better error tracking.
- Added mock implementation for AnthropicVertexClient in tests to enhance testing capabilities.
- Updated package.json to include the @aws-sdk/client-s3 dependency.

* feat(tests): add comprehensive tests for client compatibility types

- Introduced a new test file to validate compatibility types for various API clients including OpenAI, Anthropic, Gemini, Aihubmix, NewAPI, and Vertex.
- Implemented mock services to facilitate testing and ensure isolation of client behavior.
- Added tests for both direct API clients and decorator pattern clients, ensuring correct compatibility type returns.
- Enhanced middleware compatibility logic tests to verify correct identification of compatible clients.

---------

Co-authored-by: one <wangan.cs@gmail.com>
2025-07-24 23:46:32 +08:00
kangfenmao
0bb3061f8d refactor(ModelEditContent): rename state variable for clarity and update model capabilities handling
- Renamed `tempModelTypes` to `modelCapabilities` for improved clarity in the ModelEditContent component.
- Updated state management and logic to consistently use the new `modelCapabilities` variable throughout the component, enhancing readability and maintainability.
2025-07-24 19:16:08 +08:00
SuYao
e85ea61063
fix(AiProvider): remove unnecessary middleware removal logic for… (#8437)
* refactor(AiProvider): remove unnecessary middleware removal logic for improved clarity

* feat(PPIOAPIClient): add compatibility type check for OpenAIAPIClient
2025-07-24 18:59:32 +08:00
kangfenmao
cd68736263 style(MinAppsPage): adjust padding for AppsContainerWrapper based on navbar position
- Increased padding for the AppsContainerWrapper to 50px for better spacing.
- Added conditional padding for when the navbar is positioned at the top, reverting to 20px for improved layout consistency.
2025-07-24 18:08:03 +08:00
kangfenmao
16a4ddc8fa chore(version): 1.5.3 2025-07-24 17:58:26 +08:00
kangfenmao
ce93104e2d refactor(ChatNavbar, Navbar): simplify toggle functions and remove unused fullscreen hook
- Removed unnecessary useCallback functions for toggling assistants and topics, directly using the toggle functions instead.
- Eliminated the unused fullscreen hook import to clean up the code.
- Updated click handlers in the Navbar components for better readability and efficiency.
2025-07-24 17:54:35 +08:00
SuYao
d302785241
fix(RawStreamListenerMiddleware): update model check (#8433)
* fix(RawStreamListenerMiddleware): update model check for Anthropic API integration

- Replaced provider type check with model ID check to enhance compatibility with Claude models.
- Improved clarity in the middleware logic for handling raw output from the SDK.

* refactor(RawStreamListenerMiddleware): enhance model identification for Anthropic integration

- Introduced a new utility function `isAnthropicModel` to streamline model checks across the codebase.
- Updated middleware logic to utilize the new function for improved clarity and maintainability.
- Adjusted related tests to ensure compatibility with the updated model identification approach.

* test(ApiService.test): add mock for isAnthropicModel to enhance test coverage for model identification
2025-07-24 17:47:00 +08:00
SuYao
2721930294 fix(ThinkingTagExtraction): add new tag configuration for 'kimi-vl-a3b-thinking' model (#8459)
* feat(ThinkingTagExtraction): add new tag configuration for 'kimi-vl-a3b-thinking' model and update model regex patterns in config

- Introduced a new tag configuration for the 'kimi-vl-a3b-thinking' model in ThinkingTagExtractionMiddleware.
- Updated models.ts to include regex patterns for 'kimi-vl-a3b-thinking', 'llama-guard-4', and 'llama-4' to enhance model compatibility.

* feat(models): add regex pattern for 'gemma3' model to enhance model compatibility
2025-07-24 17:35:28 +08:00
kangfenmao
a16585ca51 refactor(ModelEditContent): remove maskClosable prop for improved modal behavior 2025-07-24 17:33:27 +08:00
shijuanfeng
6102f88025
feat: Update Moonshot(Kimi) configs (#8372)
* feat:update kimi setting

* feat:update kimi logo

* mergei18n

* 仅修复 eslint error

Improves code readability by reformatting Moonshot provider configuration and related ternary expressions. Indentation and spacing are adjusted for consistency, with no functional changes.

* change kimi logo to 200x200

* update

* update 2 warnings in AssistantModelSettings.tsx

* fix: lint error

* fix: test error

---------

Co-authored-by: 自由的世界人 <3196812536@qq.com>
Co-authored-by: xiaochen <gongxiaochen@msh.team>
2025-07-24 17:24:07 +08:00
SuYao
6c44f7fe24
fix(ModelEdit): enhance model type management and introduce new selection logic (#8420)
* fix(ModelEdit): enhance model type management and introduce new selection logic

- Added support for 'rerank' model type in the ModelEditContent component.
- Refactored type selection logic to utilize new utility functions for finding differences and unions in model types.
- Updated model type handling to include user selection status, improving user experience in type management.
- Adjusted migration logic to initialize newType for existing models, ensuring backward compatibility.
- Introduced isUserSelectedModelType utility to streamline model type checks across the application.

* refactor(isFunctionCallingModel): simplify model type check logic

- Replaced the inline check for 'function_calling' model type with a call to the new utility function isUserSelectedModelType, enhancing code clarity and maintainability.

* feat(collection): add utility functions for array operations

- Introduced `findIntersection`, `findDifference`, and `findUnion` functions to handle array operations with support for custom key selectors and comparison functions.
- Removed previous implementations from `index.ts` to streamline utility exports.
- Added comprehensive tests for new functions covering basic types and object types with various edge cases.

* refactor(collection): rename utility functions for clarity

- Renamed `findIntersection`, `findDifference`, and `findUnion` to `getIntersection`, `getDifference`, and `getUnion` respectively for improved clarity and consistency in naming.
- Updated corresponding tests to reflect the new function names, ensuring all tests pass with the updated utility functions.

* refactor(ModelEditContent): update model type management and improve selection logic

- Replaced utility function calls to `findDifference` and `findUnion` with `getDifference` and `getUnion` for consistency.
- Introduced temporary state management for model types to enhance user selection handling.
- Added a reset functionality for model type selections, improving user experience.
- Updated the rendering logic to conditionally disable certain model types based on user selections.

* fix(ModelEditContent): enhance model type selection logic with conditional disabling

- Introduced logic to conditionally disable 'rerank' and 'embedding' model types based on user selections.
- Updated the state management for model types to ensure correct user selection handling.
- Improved the confirmation modal to reflect the updated selection logic for better user experience.

* fix(ModelEditContent): refine model type selection and update confirmation logic

- Enhanced the logic for model type selection to ensure accurate user selections for 'rerank' and 'embedding'.
- Updated the confirmation modal to reflect changes in selection handling, improving user experience.
- Adjusted state management to correctly handle updates based on selected model types.

* fix(models): update model support logic to include 'qwen3-235b-a22b-instruct'

* refactor(models): rename 'newType' to 'capabilities' and update related logic in ModelEditContent and migration scripts
2025-07-24 17:17:26 +08:00
one
0453402242
chore(languages): update languages with a script (#8445)
* chore(languages): update languages with a script

* refactor: update languages and merge it into constants

* refactor: add usf and ush
2025-07-24 15:57:09 +08:00
kangfenmao
d3c348f8f2 feat(ModelList): add bulk add/remove functionality for models with confirmation dialog
- Implemented onAddAll and onRemoveAll functions to handle bulk actions for models.
- Added confirmation dialog for adding all models to the list, enhancing user experience.
- Updated translations for confirmation messages in multiple languages.
2025-07-24 15:50:35 +08:00
kangfenmao
c262fd75e1 refactor(ModelList): streamline button layout and improve accessibility
- Removed tooltip wrappers from manage and add model buttons for a cleaner UI.
- Introduced a new Flex container for primary and default buttons, enhancing layout consistency.
- Updated button rendering to improve accessibility and user experience.
2025-07-24 15:43:26 +08:00
kangfenmao
38c1181359 refactor(Theme): update theme management to use setTheme function
- Replaced toggleTheme with setTheme for more explicit theme handling.
- Removed unused SunMoon icon from TabContainer and Sidebar components.
- Updated theme icon rendering logic to directly reflect the current theme state.
- Adjusted ThemeProvider to include setTheme in context for better theme management.
2025-07-24 15:43:20 +08:00
SuYao
85347885bd
fix(MessageTools): improve error handling and logging in message preview rendering (#8453)
- Enhanced the rendering logic for message previews by adding a try-catch block to handle JSON parsing errors more gracefully.
- Updated the error handling to provide clearer error messages in the preview when exceptions occur.
- Added debug logging to track the rendering process of message content.
2025-07-24 15:17:01 +08:00
kangfenmao
06dd581fc3 chore(env): add .env.example file and update .gitignore
- Introduced a new .env.example file with NODE_OPTIONS configuration.
- Updated .gitignore to exclude .env.example from being ignored.
- Added instructions in dev.md for copying .env.example to .env.
2025-07-24 15:02:03 +08:00
kangfenmao
3cb5530866 test: update snapshots for Spinner and Table components to include aria-hidden attribute 2025-07-24 14:13:54 +08:00
kangfenmao
a50c411099 chore(deps): update lucide-react to version 0.525.0 and enhance i18n configuration
- Updated lucide-react dependency from 0.487.0 to 0.525.0 in package.json and yarn.lock.
- Added fallback language configuration in i18n setup for improved localization support.
- Refactored Tabs component to utilize classNames for conditional styling.
- Adjusted TopicsTab component's style for better layout management.
- Introduced a button in AboutSettings to open documentation based on the user's language preference.
2025-07-24 12:01:13 +08:00
kangfenmao
49469160b0 feat(shortcuts): add support for 'commandorcontrol' key handling based on OS 2025-07-24 12:01:06 +08:00
Phantom
52c087fd22
chore(i18n): improve i18n translation scripts (#8441)
* refactor(i18n): 迁移i18n脚本至TypeScript并添加进度条

- 将check-i18n.js和sync-i18n.js迁移为TypeScript版本
- 添加cli-progress依赖以显示翻译进度条
- 更新package.json中的i18n相关脚本
- 移除不再使用的sort.js工具文件

* refactor(i18n): 重构翻译同步脚本以支持多目录

将翻译文件目录变量重命名为更清晰的名称,并添加对translate目录的支持
优化文件路径处理逻辑,使用path.basename获取文件名

* chore: update i18n

* docs(i18n): 更新翻译目录的README说明

更新README文件以更清晰地说明翻译文件的生成方式和使用注意事项

* style(DMXAPISettings): 添加关于国际化的FIXME注释

在PlatformOptions上方添加注释,提醒此处需要国际化处理
2025-07-24 10:21:48 +08:00
SuYao
185045f805
fix(inputSchemas): convert input schemas to JSON schema format for consistency across DifyKnowledgeServer and FileSystemServer (#8444)
* fix(inputSchemas): convert input schemas to JSON schema format for consistency across DifyKnowledgeServer and FileSystemServer

* fix(AnthropicAPIClient): handle empty accumulated JSON input gracefully and improve auto-approval logic for built-in tools
2025-07-24 10:17:45 +08:00
Phantom
1677cb7321
fix(messages): Scroll position (#8360)
* feat(消息上下文): 添加消息滚动上下文以保持滚动位置

添加MessagesContext来管理消息列表的滚动位置
在MessageEditor中调整文本区域大小时保持滚动位置

* fix(消息滚动): 修复发送新消息不跟随滚动的问题

* refactor(Messages): 移除不必要的消息完成时的自动滚动逻辑

* refactor(MessageEditor): 移除调试日志语句

* fix(Messages): 避免直接操作dom

* fix(MessageEditor): 修复文本区域自动滚动和焦点问题

确保编辑器挂载时自动滚动到光标位置
将焦点设置和滚动逻辑分离到单独的useEffect中,确保仅在组件挂载时执行一次

* fix(Messages): 移除冗余的日志记录并添加注释

移除在滚动事件处理中的日志记录
添加注释说明为何不使用平滑滚动

* refactor(messages): 移除MessagesContext和相关逻辑

* refactor(Messages): 移除冗余的scrollTo函数并内联滚动逻辑

简化滚动到底部的实现,直接使用requestAnimationFrame内联处理
2025-07-24 00:23:53 +08:00
SuYao
f5b6a4be49
fix(OpenAIResponseAPIClient): add self-referential compatibility type check to prevent circular calls (#8424)
fixOpenAIResponseAPIClient): add self-referential compatibility type check to prevent circular calls
2025-07-23 23:34:13 +08:00
SuYao
5f5dfd13c7
fix(ApiService): move return statement for AI completions (#8422)
fix(ApiService): move return statement for AI completions to improve code clarity
2025-07-23 22:12:53 +08:00
SuYao
5ed6912e0b
fix(ApiService.test): add getClientCompatibilityType mock to Anthropic API client for enhanced testing (#8421) 2025-07-23 19:41:40 +08:00
kangfenmao
fcda7ed51e refactor(Chat): simplify max width calculation in useChatMaxWidth hook for improved layout handling 2025-07-23 17:56:04 +08:00
SuYao
5745aea914
feat(ApiService.test): add tests for Anthropic API client integration… (#8211)
* feat(ApiService.test): add tests for Anthropic API client integration and response handling

- Introduced mock implementation for AnthropicAPIClient to simulate completions and response transformations.
- Added test cases to validate the streaming of chunks with correct types and content for the Anthropic model.
- Enhanced existing tests to ensure compatibility with both Gemini and Anthropic API clients.

* feat(ApiService.test): enhance tests for Anthropic API client with streaming support

- Added new test cases for streaming responses from the Anthropic API client, validating chunk types and content.
- Refactored existing tests to differentiate between non-streaming and streaming chunk generators.
- Updated mock implementations to support both streaming and non-streaming scenarios for comprehensive testing.

* test: add test for thinking tag extraction middleware

* revert: unrelated changes

---------

Co-authored-by: one <wangan.cs@gmail.com>
2025-07-23 17:53:35 +08:00
SuYao
84e78560f4
refactor: streamline system prompt handling and introduce built-in tools (#7714)
* refactor: streamline system prompt handling and introduce built-in tools

- Removed the static SYSTEM_PROMPT_THRESHOLD from BaseApiClient and replaced it with a constant in constant.ts.
- Updated API clients (AnthropicAPIClient, GeminiAPIClient, OpenAIApiClient, OpenAIResponseAPIClient) to simplify system prompt logic by eliminating unnecessary checks and using new utility functions for prompt building.
- Introduced built-in tools functionality, including a new 'think' tool, to enhance the tool usage experience.
- Refactored ApiService to integrate built-in tools and adjust system prompt modifications accordingly.
- Added utility functions for managing built-in tools in mcp-tools.ts and created a new tools index for better organization.

* refactor(tests): update prompt tests to use new buildSystemPromptWithTools function

- Renamed the function used in prompt tests from buildSystemPrompt to buildSystemPromptWithTools to reflect recent changes in prompt handling.
- Adjusted test cases to ensure compatibility with the updated function, maintaining the integrity of user prompt handling.

* refactor(ApiService, mcp-tools, prompt): enhance tool usage and prompt handling

- Updated ApiService to improve system prompt construction based on tool usage mode, ensuring clearer logic for tool integration.
- Enhanced mcp-tools with a new response structure for the 'think' tool, allowing for better handling of tool responses.
- Expanded prompt utility functions to include detailed instructions for using the 'think' tool, improving user guidance.
- Refactored tests to validate new prompt building logic and tool integration, ensuring robust functionality across scenarios.

* fix: enhance prompt

* feat(McpToolChunkMiddleware): enhance tool call handling with built-in tool support

- Added support for built-in tools in the parseAndCallTools function, allowing for conditional tool invocation based on tool type.
- Implemented a check to return early if the tool call response is null, improving error handling.
2025-07-23 17:27:39 +08:00
Tron
82bdbaa0f4
feat: allow siyuan-note export path to use Sprig template expressions (#8356)
* feat: allow siyuan-note export path to use Sprig template expressions

* Update export.ts

* feat: allow siyuan-note export path to use Sprig template expressions #8356

* feat: allow siyuan-note export path to use Sprig template expressions #8356

* Update export.ts

* feat: allow siyuan-note export path to use Sprig template expressions #8356

delete empty line
2025-07-23 17:25:20 +08:00
MyPrototypeWhat
2b7dfc0e88
fix(useSmoothStream): remove unnecessary comments and markdown displayedContent (#8416)
refactor(useSmoothStream): remove unnecessary comments and improve state initialization in Markdown component

- Cleaned up comments in useSmoothStream for clarity.
- Updated displayedContent state initialization in Markdown to handle post-processing conditionally.
2025-07-23 17:18:30 +08:00
SuYao
71b527b67c
feat/hunyuan-a13b (#8405)
* refactor(AiProvider): enhance client compatibility checks and middleware handling

- Updated AiProvider to use a compatibility type check for API clients, improving type safety and middleware management.
- Implemented getClientCompatibilityType in AihubmixAPIClient, NewAPIClient, and OpenAIResponseAPIClient to return actual client types.
- Added support for Hunyuan models in various model checks and updated the ThinkingButton component to reflect these changes.
- Improved logging for middleware construction in AiProvider.

* test(ApiService): add client compatibility type checks for mock API clients

* fix: minimax-m1 reasoning export btw

---------

Co-authored-by: Pleasurecruise <3196812536@qq.com>
2025-07-23 16:19:54 +08:00
kangfenmao
65b1d8819d style(AssistantsDrawer): add background color and adjust wrapper width for improved UI consistency 2025-07-23 15:21:02 +08:00
Phantom
622d15d5d7
fix(TopicsTab): persist pending state via Redux and update after task completion (#8376)
* fix(TopicsTab): pending状态将自动关闭并不再由组件管理

* feat(消息状态): 添加话题完成状态指示器及相关逻辑

- 在消息状态中新增fulfilledByTopic字段记录话题完成状态
- 添加setTopicFulfilled action用于更新话题完成状态
- 在话题切换时重置完成状态为false
- 在加载完成后设置完成状态为true
- 添加完成状态指示器组件并显示在话题列表中

* fix(TopicsTab): 修复不切换话题时未重置当前话题fulfilled状态的问题

* refactor(messageThunk): 重命名 handleChangeLoadingOfTopic 为 finishTopicLoading

提高函数命名清晰度,更准确描述其功能
2025-07-23 14:50:44 +08:00
亢奋猫
75b8a5a6a7 feat: new ui (#8322)
* feat: ui switch

* chore: update migration version to 122 and adjust settings topic position

* refactor: replace PinnedApps component with SidebarPinnedApps and SidebarOpenedMinappTabs for improved structure

* feat(i18n): add launchpad apps and minapps translations for multiple languages

* style: update MinAppIcon and IconContainer dimensions for improved UI consistency

* refactor: remove unused SidebarContainer component from AppsPage

* refactor: adjust Navbar padding and enhance search functionality in AgentsPage

* feat(minapps): implement MinApps page and enhance mini app management features

- Added MinAppsPage for managing mini applications.
- Introduced NewAppButton for adding custom mini apps.
- Created MiniAppSettings for configuring mini app settings.
- Enhanced mini app icon management with MiniAppIconsManager.
- Updated Router to include MinAppsPage and replaced AppsPage with MinAppsPage.
- Added translations for new mini app features in multiple languages.

* wip

* refactor: rename App component to MinApp and streamline LaunchpadPage logic

- Renamed App component to MinApp for clarity.
- Removed unnecessary state management in LaunchpadPage.
- Simplified minapp sorting logic by directly using openedKeepAliveMinapps.

* feat(i18n): update translations for multiple languages and restructure title entries

- Added missing title entries for various sections in English, Japanese, Russian, Chinese (Simplified and Traditional).
- Restructured the launchpad and minapp translations for better organization.
- Enhanced navbar display settings translations across all supported languages.

* feat: add header prop to DraggableVirtualList and implement Add Topic button in TopicsTab

- Introduced a new `header` prop in the DraggableVirtualList component to allow custom header content.
- Added an Add Topic button in the TopicsTab with a corresponding styled component and translation support for multiple languages.
- Updated styles in AssistantsTab and adjusted overflow behavior in Tabs index for better UI experience.

* style: adjust margins and max-width for improved layout in various components

- Updated margin-top in HtmlArtifactsCard for consistent spacing.
- Set max-width in MessageGroup to enhance responsiveness based on navbar position.
- Modified Add Topic button in TopicsTab to emit an event for better functionality.

* fix: correct state property name in migration for navbar position

- Updated the migration logic to set the correct state property from `topicPosition` to `navbarPosition` for proper configuration handling.

* fix: adjust traffic light position and navbar height for improved UI consistency

- Updated traffic light position in WindowService to enhance layout.
- Adjusted navbar height in color.scss for better alignment across components.
- Modified TabContainer to track last settings path and improve navigation handling.

* style: update AddTopicButton styling for improved hover effect in TopicsTab

- Changed AddTopicButton from a button to a div for better styling flexibility.
- Removed dashed border and added background color on hover for enhanced user experience.
- Retained border-radius for consistent design across components.

* feat: add TextBadge component and integrate into Display and Memory settings

- Introduced a new TextBadge component for displaying styled badges.
- Integrated TextBadge into DisplaySettings to highlight the navbar title as "New".
- Replaced inline badge implementation in MemorySettings with the new TextBadge component for consistency and improved maintainability.

* fix: adjust tab and navbar styling for improved UI consistency

- Increased height of title bar overlays for better visual balance.
- Updated tab creation logic to prevent duplicate tabs for specific paths.
- Modified tab icon and close button sizes for a more compact design.
- Enhanced tab spacing and padding for improved layout across components.

* style: update PinnedMinapps component for improved UI consistency

- Increased icon size and adjusted border radius for better visual appeal.
- Modified TopNavContainer padding and margin for enhanced layout.
- Reduced dimensions of TopNavIcon for a more compact design.

* refactor: enhance TabsContainer logic and styling for improved tab management

- Introduced a new `removeSpecialTabs` function to manage special tab removal more effectively.
- Updated tab filtering logic to utilize a dedicated `specialTabs` array for better maintainability.
- Adjusted styling in PinnedMinapps for consistent icon sizing and background color improvements.

* style: adjust layout and padding for improved UI consistency in Chat and Inputbar components

- Updated main height calculation in Chat component to account for additional spacing.
- Modified padding in Inputbar component for better alignment when navbar is positioned at the top.
- Ensured consistent minimum height in Tabs component to match updated navbar height calculations.

* refactor: update app menu item text keys for improved localization

- Changed text keys in the app menu items from specific titles to a more generalized 'title' namespace for better consistency and maintainability.
- Ensured that the visual representation of the menu items remains unchanged while enhancing the localization structure.

* refactor: simplify sidebar toggle logic in ChatNavbar and Navbar components

- Removed unnecessary cooldown logic when toggling the visibility of assistants and topics.
- Updated HomePage to conditionally render the Navbar based on the sidebar state for improved UI responsiveness.

* refactor: streamline Chat component and introduce useChatMaxWidth hook

- Consolidated max width calculation logic into a new `useChatMaxWidth` hook for better reusability.
- Removed unused variables and simplified state management in the Chat component.
- Updated MessageGroup to utilize the new `useChatMaxWidth` hook for consistent layout handling.

* refactor: remove FloatingSidebar component and integrate AssistantsDrawer for improved UI management

- Deleted the FloatingSidebar component to streamline the codebase.
- Introduced AssistantsDrawer for managing assistant interactions, enhancing user experience.
- Updated Navbar and ChatNavbar components to utilize AssistantsDrawer instead of FloatingSidebar for better responsiveness and maintainability.

* refactor: implement TabsService for improved tab management functionality

- Introduced TabsService to centralize tab operations, including closing and setting active tabs.
- Updated TabsContainer and LaunchpadPage components to utilize TabsService for closing tabs, enhancing code maintainability.
- Made minor UI adjustments in PinnedMinapps for consistent icon sizing and layout improvements.

* fix: prevent default event behavior when not in fullscreen mode

- Updated WindowService to conditionally call event.preventDefault() only when the main window is not in fullscreen, improving event handling logic.
2025-07-23 14:36:39 +08:00
fullex
c2086fdb15
refactor[Logger]: strict type check for Logger (#8363)
* fix: strict type check of logger

* feat: logger format in renderer

* fix: error type
2025-07-23 13:24:03 +08:00
one
736f73a726
refactor: match provider and model using a consistent method (#7933)
* refactor: match provider and model using a consistent method

* refactor: use keywords matching across model selectors

* refactor: update match, reuse getFancyProviderName

* refactor: use modelSelectFilter in knowledgebase settings

* refactor: use filter in ModelList

* refactor: add filterModelsByKeywords

* refactor: add getModelSelectOptions

* style: better function names

* fix: update effect dependencies in popup and panel components

Adjusted dependency arrays in HtmlArtifactsPopup and QuickPanelView to ensure correct effect execution. This change improves state synchronization and prevents unnecessary updates.

* refactor: use match in memory settings

* refactor: add avatar to model selector

* refactor: simplify utils, move select options to components

* docs: add comments

* refactor: move filter to SelectOptions

* test: add tests for SelectOptions

* test: remove type mock

* refactor: use match in EditModelsPopup

* refactor: use SelectOptions in SelectProviderModelPopup, add more tests

* fix: api check model select

* refactor: improve websearch rag model select style

* refactor: add a ModelSelector

* test: update tests for ModelSelector

* docs: comments

---------

Co-authored-by: 自由的世界人 <3196812536@qq.com>
2025-07-23 10:45:09 +08:00
SuYao
d0649d29fb
feat(MCP): outputschema (#7881)
* feat(MCP): outputschema

* fix: mark outputschema optional

* fix: upgrade zod v4
2025-07-23 10:12:00 +08:00
one
eebed6d399
refactor(MessageEditor): improve editor style (#8387) 2025-07-23 10:06:17 +08:00
Konv Suu
e688b2959c
fix: use lru-cache lib to improve alive minApp (#8187)
* feat: use lru-cache lib to improve alive minApp

* update

* update

* update

* Remove unused dependency

* update

* update

* update

* update

* fix warning

* update
2025-07-23 00:48:13 +08:00
Phantom
27977fc02b
fix(models): support new qwen3 model (#8380)
feat(models): 添加对qwen-plus-0714和qwen-turbo-0715模型的支持
2025-07-22 18:30:23 +08:00
Jason Young
ea3b8a4d64
fix: ensure add button is always visible for empty model providers (#8374)
* fix: ensure add button is always visible for empty model providers

- Move add button outside of isEmpty(models) condition to fix regression
- Keep manage and health check buttons conditional (only show when models exist)
- Fixes issue where users cannot add first model to custom providers
- Maintains clean UI by hiding management features when no content exists

Resolves the UX blocker introduced in commit 2b0c46bf where all buttons
were hidden for empty providers, preventing users from adding initial models.

* fix: remove isEmpty check to always show model management buttons

Remove isEmpty(models) conditions for manage, search, and health check buttons
to ensure all functionality is available even with empty model lists.
2025-07-22 16:28:27 +08:00
MyPrototypeWhat
54fca3d1a3
feat: implement useSmoothStream hook for dynamic text rendering (#8070)
* feat: implement useSmoothStream hook for dynamic text rendering

- Added a new custom hook `useSmoothStream` to manage smooth text streaming with adjustable delays.
- Integrated `useSmoothStream` into the Markdown component to enhance content display during streaming.
- Implemented logic to handle content updates and reset conditions based on block status.

* feat: enhance chunk processing in useSmoothStream hook

- Updated the `addChunk` function to split text into characters for Chinese and words for English using a regular expression.
- Improved text rendering logic to support mixed language content more effectively.

* refactor: improve regular expression for chunk processing in useSmoothStream hook

- Updated the regular expression to enhance text splitting capabilities, allowing for better handling of mixed language content, including Chinese characters and alphanumeric sequences.

* refactor: simplify character processing in useSmoothStream hook

- Replaced the regular expression for character extraction with a direct conversion of the chunk to an array of characters.
- This change streamlines the chunk processing logic, enhancing performance and readability.

* feat: add post-processing capability to Markdown component

- Enhanced the Markdown component to accept an optional post-processing function for text manipulation during streaming.
- Updated MainTextBlock to utilize the new postProcess prop, allowing for dynamic content adjustments based on citation references.

* fix: update mock Markdown component to support post-processing

- Modified the mock implementation of the Markdown component to accept and apply an optional postProcess function, ensuring that the test environment accurately reflects the updated functionality introduced in the previous commit.
2025-07-22 16:09:00 +08:00
George·Dong
8bf84b26f3
feat(constant): add Godot scene files(.tscn) (#8362)
* feat(constant): add Godot scene files(.tscn)

* fix(AttachmentPreview): consolidate file extension checks
2025-07-22 00:45:13 +08:00
Phantom
8c58060716
feat(i18n): add i18n missing key error (#8358)
feat(i18n): 添加缺失翻译键的日志记录

当检测到缺失的翻译键时,记录错误日志以便于调试和维护
2025-07-21 22:20:42 +08:00
one
929f7445ed
feat(CodeBlock): support matplotlib in code execution (#8069)
* feat(CodeBlock): support matplotlib in code execution

* refactor: update output style and docs

* refactor: use ImageViewer

* refactor: manage service config, increase timeout and retry count

* refactor: improve worker message logging

* chore: upgrade pyodide to 0.28.0

* docs: fix typos
2025-07-21 21:19:06 +08:00
one
2b0c46bfdb
refactor: model list and health check (#7997)
* refactor(ProviderSetting): add a backtop to provider setting

* refactor: decouple ModelList from ProviderSetting

* refactor: move modellist to a single dir

* refactor: allow more props for CollapsibleSearchBar

* refactor: split ModelList into ModelList, ModelListGroup and ModelListItem

* refactor: simplify health check types, improve file structure

* refactor: split HealthStatusIndicator from list items

* refactor: better indicator tooltip

* refactor: improve model search, simplify some expressions

* refactor: further simplify ModelList by extracting onHealthCheck

* refactor: remove double scroller from EditModelsPopup

* revert: remove backtop

* fix: i18n order

* refactor: sort buttons
2025-07-21 15:57:08 +08:00
Phantom
e7fd97deef
feat: add test case for mcp response in apiservice (#8300)
* refactor: 将工具调用逻辑移动到中间件文件

* feat(日志): 在流处理中添加调试日志记录

添加对分块数据的调试日志记录,便于跟踪流处理过程中的数据流动

* test(api-service): 添加工具调用响应测试用例
2025-07-21 14:48:24 +08:00
Konv Suu
8967a82107
fix: update installing status immediately (#8339) 2025-07-21 12:44:00 +08:00
fullex
7b58883d33
fix(PreloadAPI): change Obsidian api from global window to window.api (#8320)
* fix: change Obsidian API from global window into window.apiI

* fix: format
2025-07-21 10:20:47 +08:00
beyondkmp
38a731aa8f
fix: improve proxy configuration handling and logging in ProxyManager (#8334)
* fix: improve proxy configuration handling and logging in ProxyManager

* fix: reduce proxy refresh interval from 30 seconds to 10 seconds in ProxyManager

* format log

* change log level

* delete duplicate call api
2025-07-21 10:19:51 +08:00
Jason Young
bfc3b0e54e
fix: persistent "Searching..." indicators for o3 model web search (#8328)
* fix: fix persistent "Searching..." indicators for o3 model web search

- Add missing LLM_WEB_SEARCH_IN_PROGRESS event in OpenAIAPIClient
- Prevent duplicate CitationBlock creation
- Ensure search status updates correctly after completion

Fixes #8307

* fix: prevent duplicate citation blocks in web search callbacks

- Add checks in onExternalToolInProgress and onLLMWebSearchInProgress
- Return early if citationBlockId already exists
- Fixes persistent "Searching..." indicator for o3 model web search
2025-07-21 10:17:27 +08:00
Caelan
37508493fb
feat: dmxapi painting dynamic model (#8302)
* 模型调整为动态

* 模型调整为动态

* 代码优化,新增类型

* 代码优化,新增类型

* 调整locales的顺序

* 修复lint报错
2025-07-21 10:15:40 +08:00
fullex
5204438c0c
refactor[Logger]: filtering logs with environment variable (#8299)
refactor(Logger): enhance logging with environment variable support

- Updated LoggerService to utilize environment variables for filtering logs by level and module in development mode.
- Modified the logging level handling to use constants from the logger configuration.
- Enhanced documentation to include details on using environment variables for log filtering in both English and Chinese documentation files.
- Cleaned up unused type definitions related to logging.
2025-07-21 09:37:48 +08:00
happyZYM
ebe7cce161
feat: use openrouter's builtin metric (#8314) 2025-07-20 21:22:25 +08:00
kangfenmao
bfe83c0256 feat: add developer mode settings 2025-07-20 15:37:38 +08:00
alickreborn0
3b123863b5
feat: Support LLM Tracing by Alibaba Cloud EDAS product (#7895)
* feat: add tracing modules

* Initial commit

* fix: problem

* fix: update trace web

* fix: trace view

* fix: trace view

* fix: fix some problem

* fix: knowledge and mcp trace

* feat: save trace to user home dir

* feat: open trace with electron browser window

* fix: root trace outputs

* feat: trace internationalization and add trace icon

* feat: add trace title

* feat: update

* package.json添加windows运行script

* feat: update window title

* fix: mcp trace param

* fix: error show

* fix: listTool result

* fix: merge error

* feat: add stream usage and response

* feat: change trace stream

* fix: change stream adapter

* fix: span detail show problem

* fix: process show by time

* fix: stream outputs

* fix: merge problem

* fix: stream outputs

* fix: output text

* fix: EDAS support text

* fix: change trace footer style

* fix: topicId is loaded multiple times

* fix: span reload problem & attribute with cache

* fix: refresh optimization

* Change Powered by text.

* resolve upstream conflicts

* fix: build-time type exception

* fix: exceptions not used when building

* fix: recend no trace

* fix: resend trace list

* fix: delete temporary files

* feat: trace for resend

* fix: trace for resend message with edit

* fix: directory structure and construction method of mcp-trace

* fix: change CRLF to LF

* fix: add function call outputs

* Revert "fix: change CRLF to LF"

* fix: reorganize multi-model display

* fix: append model trace binding topic

* fix: some problems

* fix: code optimization

* fix: delete async

* fix: UI optimization

* fix: sort import

---------

Co-authored-by: 崔顺发 <csf01409784@alibaba-inc.com>
Co-authored-by: 管鑫荣 <gxr01409783@alibaba-inc.com>
2025-07-20 14:53:35 +08:00
SuYao
411c5bc94e
fix: azure openai embed (#8250)
* fix/Azure embed

* fix/azure-patch1
2025-07-20 09:38:57 +08:00
Phantom
71dfec6875
chore(i18n): Separate check-i18n and sync-i18n; add auto sort i18n (#8206)
* feat(i18n): 优化i18n check脚本

* fix: 移除重复的代码行和错误信息

* fix: 重新排序

* fix: i18n sort

* test

* test

* test

* test

* test

* test

* feat(i18n): 添加同步翻译脚本并重构检查脚本

重构 check-i18n 脚本为纯检查功能,不再自动修改翻译文件
新增 sync-i18n 脚本用于自动同步翻译文件结构
更新 package.json 添加 sync:i18n 命令
移除不再需要的 husky pre-commit.js 钩子

* docs(i18n): 移除未使用的测试翻译文本

* feat(scripts): 添加对象键名排序功能及测试

添加 lexicalSort 函数和 sortedObjectByKeys 函数用于按字典序排序对象键名
新增测试用例验证排序功能

* feat(i18n): 添加翻译文件键值排序检查功能

添加对i18n翻译文件键值字典序的检查功能,确保翻译文件保持一致的排序结构

* refactor(i18n): 优化同步逻辑并添加键排序功能

移除syncRecursively的返回值检查,简化同步流程
添加对翻译文件的键排序功能,使用sortedObjectByKeys工具
确保主模板和翻译文件在同步后都保持有序

* fix(i18n): 重新排序翻译文件

* style(scripts): 格式化sort.js

* chore: 将 test:sort 重命名为 test:scripts
2025-07-19 23:26:40 +08:00
Phantom
0149cfbd21
fix: get empty response when using MCP by functional method (#8296)
* feat: 添加日志记录以调试中间件处理流程

在多个中间件中添加日志记录以跟踪chunk处理流程
在AiProvider中添加日志记录以调试中间件移除逻辑

* fix(openai): 修复tool_call chunk被跳过的问题

添加对choice.delta.content为null情况的处理
同时添加日志输出用于调试chunk数据

* fix(openai): 修复流式响应中空内容判断逻辑

* fix(openai): 修复流式响应中tool_calls内容判断逻辑
2025-07-19 23:23:53 +08:00
fullex
2e77792042
fix[Logger]: in renderer worker (#8284)
* docs: enhance LoggerService documentation and usage guidelines

- Added details about `initWindowSource` method, emphasizing its return of the LoggerService instance for method chaining.
- Introduced a section on using LoggerService within `worker` threads, highlighting the need to call `initWindowSource` first.
- Updated both English and Chinese documentation files to reflect these changes, ensuring clarity in usage instructions for developers.

* docs: update LoggerService documentation and improve environment checks

- Enhanced documentation for using LoggerService in worker threads, clarifying logging support limitations in main and renderer processes.
- Added environment checks for development and production modes directly in the LoggerService.
- Removed the unused env utility file to streamline the codebase.

* refactor(ShikiStreamService): update highlighter management and improve test assertions

- Modified the highlighter management in ShikiStreamService to clear the reference instead of disposing it directly, as it is now managed by AsyncInitializer.
- Enhanced unit tests to verify the initialization of worker and main highlighters, ensuring that either one is active but not both, and updated assertions related to highlighter disposal.
2025-07-19 15:28:36 +08:00
one
2e1f63fe96
fix(AddMcp): mismatched mcp tag type (#8286)
* fix(AddMcp): mismatched mcp tag type

* refactor: simplify tag filter
2025-07-19 14:19:59 +08:00
one
e8f1b229b2
refactor(SelectionAssistant): prevent selecting footer buttons (#8281) 2025-07-18 22:25:30 +08:00
SuYao
92513024b5
fix/selection-not-copy (#8276)
* fix/selection-not-copy

* fix: abort not copy

* test: add actionUtil test

Update onStream callback to accept content parameter and set copyable content
during streaming instead of only at completion. Removes redundant content
tracking in ActionUtils and properly passes content to callbacks as it's
received. Adds test directory structure for components.

* refactor: improve streaming content handling and fix error states

Refine content handling in ActionUtils by tracking content internally rather than
passing it through onStream callbacks. Properly set error status in message
updates and ensure content is finalized on errors. Fix typo in test filename.

* fix: show error

* chore: remove unuse

* chore: remove console
2025-07-18 19:21:20 +08:00
LANYUN
5488c950aa
feat: update provider.ts, add models (#8278)
* fix:修改地址,Update providers.ts

* fix:修改地址,Update providers.ts

* fix: 添加蓝耘模型列表
2025-07-18 17:01:40 +08:00
fullex
7764ffc8bb
refactor[Logger]: replace console logging with logger service (#8271)
* refactor: replace console logging with logger service across multiple components

- Updated various files to utilize the logger service instead of console.log for improved logging consistency and error tracking.
- Enhanced logging levels to better categorize messages, including debug and error levels.
- Refactored logging in components such as ApiClientFactory, KnowledgeService, and MemoryProcessor to align with the new logging standards.

* refactor: update logging level in App component from error to info

- Changed the logging level in the App component to provide a more appropriate context for initialization messages, enhancing clarity in the logging output.

* refactor(logging): replace console.log with logger service in middleware and update ESLint comments

- Updated the logging implementation in the createSimpleLoggingMiddleware function to use logger.debug and logger.error instead of console.log and console.error for improved logging consistency.
- Added eslint-disable comments for restricted syntax in preload and useAppInit hooks to suppress warnings.
2025-07-18 16:01:03 +08:00
fullex
f9c5ca258a
fix[Logger]: update ESLint configuration (#8269)
* chore: update ESLint configuration and LoggerService formatting

- Refactored ESLint configuration to include custom rules for LoggerService, applying them specifically to the src directory while ignoring test and mock files.
- Commented out date formatting options in LoggerService for improved clarity in development logging.

* fix: add eslint-disable comments for restricted syntax in LoggerService

- Added eslint-disable comments to suppress warnings for restricted syntax in LoggerService for both main and renderer services.
- Improved error handling by logging messages when the window source is not initialized in the renderer LoggerService.
2025-07-18 14:22:55 +08:00
_WD_
b90a8423f1
fix: API call error for Grok reasoning model via OpenRouter (#8252)
fix: openrouter reasoning disabled error
2025-07-18 10:10:24 +08:00
SuYao
7c268088d4
feat: vertexai websearch support (#8260) 2025-07-18 10:09:41 +08:00
fullex
40f9601379
refactor: Unified Logger / 统一日志管理 (#8207)
* Revert "feat: optimize minapp cache with LRU (#8160)"

This reverts commit f0043b4be5.

* feat: integrate logger service and enhance logging throughout the application

- Added a new LoggerService to standardize logging across the application.
- Replaced console.error and console.warn calls with logger methods for improved consistency and error tracking.
- Introduced a new IPC channel for logging messages to the main process.
- Updated various components and services to utilize the new logging system, enhancing error handling and debugging capabilities.

* refactor: enhance logging and error handling across various components

- Integrated the LoggerService for consistent logging throughout the application.
- Updated multiple components and services to utilize the new logging system, improving error tracking and debugging capabilities.
- Refactored file handling and error management in several services to enhance reliability and clarity.
- Improved the structure and readability of the codebase by removing redundant checks and simplifying logic.

* chore: update TypeScript configuration and enhance test setup

- Added test mock paths to tsconfig.web.json for improved test coverage.
- Configured Vitest to include a setup file for main tests, ensuring consistent test environment.
- Updated IPC logger context for better clarity in logging.
- Enhanced LoggerService to handle undefined values gracefully.
- Mocked LoggerService globally in renderer tests to streamline testing process.

* refactor: standardize logging across ProxyManager and ReduxService

- Replaced instances of Logger with logger for consistent logging implementation.
- Improved logging clarity in ProxyManager's configureProxy method and ReduxService's state handling.
- Enhanced error logging in ReduxService to align with the new logging system.

* refactor: reorganize LoggerService for improved clarity and consistency

- Moved the definition of SYSTEM_INFO, APP_VERSION, and DEFAULT_LEVEL to enhance code organization.
- Simplified the getIsDev function in the renderer LoggerService for better readability.
- Updated logging conditions to ensure messages are logged correctly based on context.

* docs: add usage instructions for LoggerService and clean up logging code

- Included important usage instructions for LoggerService in both English and Chinese.
- Commented out the console transport in LoggerService to streamline logging.
- Improved logging message formatting in MCPService for clarity.
- Removed redundant logging statements in SelectionService to enhance code cleanliness.

* refactor: update LoggerService documentation paths and enhance logging implementation

- Changed the documentation paths for LoggerService usage instructions to `docs/technical/how-to-use-logger-en.md` and `docs/technical/how-to-use-logger-zh.md`.
- Replaced console logging with the loggerService in various components, including `MCPSettings`, `BlockManager`, and multiple callback files, to ensure consistent logging practices across the application.
- Improved the clarity and context of log messages for better debugging and monitoring.

* docs: emphasize logger usage guidelines in documentation

- Added a note in both English and Chinese documentation to discourage the use of `console.xxx` for logging unless necessary, promoting consistent logging practices across the application.
2025-07-18 09:40:56 +08:00
George·Dong
ee32942f71
feat(minapp): add Google login tip for untrusted browser issue (#8230)
* feat(minapp): add Google login tip for untrusted browser issue

* feat(miniapp): add open Google button for Google Login popup

* feat(minapp): replace custom alert with Ant Design Alert component
2025-07-18 00:22:55 +08:00
kangfenmao
dc6ec2ba78 refactor(ThinkingEffect): adjust container height and padding for improved layout 2025-07-17 19:43:57 +08:00
Teo
7fb7061ca7
refactor(ThinkingEffect): improve thinking effect logic and styles 2025-07-17 19:43:13 +08:00
Teo
e85ea1ff28
refactor(ThinkingEffect): optimize thinking effect (#8232)
* refactor(ThinkingEffect): optimize message rendering and adjust styles

- Removed unnecessary motion components and simplified message rendering logic.
- Updated line height and container dimensions for better layout consistency.
- Adjusted padding and width in styled components for improved visual appearance.

* fix(ThinkingBlock): remove margin-top from snapshot for consistent styling

* refactor(Message): remove unnecessary padding adjustments for assistant messages
2025-07-17 17:40:56 +08:00
SuYao
fe91d4b56a
fix(OpenAIResponseAPIClient): refine client selection logic for non-chat models (#8238)
- Updated the getClient method to ensure the OpenAIResponseAPIClient is only returned for non-chat completion models, improving model compatibility checks.
2025-07-17 17:38:20 +08:00
Jason Young
9218ac237b
test: add comprehensive tests for ApiClientFactory (#8124)
* test: add comprehensive tests for ApiClientFactory

- Test all special ID client mappings (aihubmix, new-api, ppio)
- Test all standard provider type mappings
- Test edge cases and default behavior
- Test isOpenAIProvider utility function
- Achieve full coverage of factory logic

* test: fix ApiClientFactory test for OpenAIResponseAPIClient changes

- Add getClient mock method to OpenAIResponseAPIClient mock
- Fix provider id from 'azure' to 'azure-openai' to match actual configuration
- Ensure tests properly reflect the new OpenAIResponseAPIClient implementation

* test: refactor ApiClientFactory tests and move isOpenAIProvider to utils

- Simplify test data creation with createTestProvider helper
- Move isOpenAIProvider to utils and fix vertexai handling
- Update related imports
2025-07-17 16:59:18 +08:00
SuYao
6560369b98
refactor(ActionUtils): streamline message processing logic (#8226)
* refactor(ActionUtils): streamline message processing logic

- Removed unnecessary content accumulation for thinking and text blocks.
- Updated handling of message chunks to directly use incoming text for updates.
- Improved state management for thinking and text blocks during streaming.
- Enhanced the logic for creating and updating message blocks to ensure proper status and content handling.

* chore: remove log

* feat(ActionUtils): update message block instruction during processing

- Added dispatch to update the message block instruction with the current block ID when processing messages.
- Enhanced state management for message updates to ensure accurate tracking of block instructions during streaming.

* feat(ActionUtils): enhance message processing with text block content tracking

- Introduced a new variable to store the content of the text block during message processing.
- Updated the logic to dispatch the current text block content upon completion of message chunks, improving state management and accuracy in message updates.

* feat(ActionUtils): refine message processing error handling and status updates

- Enhanced the logic to update the message status based on error conditions, ensuring accurate representation of message states.
- Improved handling of text block content during processing, allowing for better state management and completion tracking.
- Streamlined the dispatch of updates for message blocks, particularly in error scenarios, to maintain consistency in message processing.

* feat(messageThunk): export throttled block update functions for improved message processing

- Changed the visibility of `throttledBlockUpdate` and `cancelThrottledBlockUpdate` functions to export, allowing their use in other modules.
- Updated `processMessages` in ActionUtils to utilize the newly exported functions for handling message updates, enhancing the efficiency of block updates during message processing.

* fix(ActionUtils): correct text block content handling in message processing

- Changed the declaration of `textBlockContent` to a constant to prevent unintended modifications.
- Updated the logic in `processMessages` to use the text block ID for throttled updates instead of the content, ensuring accurate message updates during processing.

* feat(HomeWindow): improve message processing with throttled updates

- Integrated `throttledBlockUpdate` and `cancelThrottledBlockUpdate` for managing thinking and text block updates, enhancing performance during message streaming.
- Updated logic to handle chunk types more effectively, ensuring accurate content updates and status management for message blocks.
- Streamlined the dispatch of message updates upon completion and error handling, improving overall state management.
2025-07-17 16:09:43 +08:00
kangfenmao
30b080efbd fix: handle optional list length in DraggableVirtualList and update padding in QuickPanel 2025-07-17 13:49:11 +08:00
kangfenmao
f01b7075fb refactor: replace message with window.message 2025-07-17 13:21:00 +08:00
beyondkmp
ff72c007c0
feat: add data parsing functionality in handleProvidersProtocolUrl (#8218)
* feat: add data parsing functionality in handleProvidersProtocolUrl

- Introduced a new ParseData function to decode and parse base64 encoded data from the URL parameters.
- Added error handling to log when data is null or invalid, improving robustness of the handleProvidersProtocolUrl function.

* fix: update data parsing in handleProvidersProtocolUrl and ProvidersList

- Modified ParseData function to return a JSON string instead of an object for consistency.
- Simplified data extraction in ProvidersList by directly parsing the addProviderData without base64 decoding, improving readability and performance.

* fix: improve data parsing in handleProvidersProtocolUrl

- Updated ParseData function to log the parsed result for better debugging.
- Enhanced data extraction by replacing URL-safe characters back to their original form before parsing, ensuring accurate data retrieval.

* fix: enhance error logging in ParseData function

- Updated the ParseData function to log errors when parsing fails, improving debugging capabilities and robustness in handling invalid data.

* format code
2025-07-17 13:15:29 +08:00
Konv Suu
6bdb157af3
fix: set os attribute correctly to body (#8225)
* feat: add os constants

* update
2025-07-17 12:03:21 +08:00
SuYao
7549972048
hotfix: enhance assistant topic validation in useActiveTopic hook (#8213)
fix: enhance assistant topic validation in useActiveTopic hook

Updated the useActiveTopic hook to ensure that the assistant and its topics are properly validated before accessing properties. This prevents potential errors when data is not fully loaded.
2025-07-17 11:48:25 +08:00
SuYao
720c5d6080
fix: thinking not display (#8222)
* feat(ThinkingTagExtraction): accumulate thinking content for improved processing

- Introduced an `accumulatedThinkingContent` variable to gather content from multiple chunks before enqueuing.
- Updated the `ThinkingDeltaChunk` to use the accumulated content instead of individual extraction results, enhancing the coherence of thinking messages.

* feat(OpenAIAPIClient): enhance chunk processing for reasoning and content extraction

- Updated the OpenAIAPIClient to handle additional fields in response chunks, including `reasoning_content` and `reasoning`, improving the extraction of relevant information.
- Introduced a new mock implementation for testing OpenAI completions, ensuring accurate handling of thinking and text chunks in the response.
- Enhanced unit tests to validate the processing of OpenAI thinking chunks, ensuring expected behavior and output.
2025-07-17 11:40:15 +08:00
Phantom
d750f1ceed
feat(Knowledge): show dimensions (#8169)
* feat(知识设置): 添加维度显示并调整弹窗高度

在知识设置弹窗中添加维度显示字段,并将弹窗高度从450px调整为550px以适应新增内容

* fix(知识设置): 将维度输入框改为显示未设置时的默认文本
2025-07-17 10:04:16 +08:00
MyPrototypeWhat
7e471bfea4
feat: implement BlockManager and associated callbacks for message str… (#8167)
* feat: implement BlockManager and associated callbacks for message streaming

- Introduced BlockManager to manage message blocks with smart update strategies.
- Added various callback handlers for different message types including text, image, citation, and tool responses.
- Enhanced state management for active blocks and transitions between different message types.
- Created utility functions for handling block updates and transitions, improving overall message processing flow.
- Refactored message thunk to utilize BlockManager for better organization and maintainability.

This implementation lays the groundwork for more efficient message streaming and processing in the application.

* refactor: clean up BlockManager and callback implementations

- Removed redundant assignments of lastBlockType in various callback files.
- Updated error handling logic to ensure correct message status updates.
- Added console logs for debugging purposes in BlockManager and citation callbacks.
- Enhanced smartBlockUpdate method call in citation callbacks for better state management.

* refactor: streamline BlockManager and callback logic

- Removed unnecessary accumulated content variables in text and thinking callbacks.
- Updated content handling in callbacks to directly use incoming text instead of accumulating.
- Enhanced smartBlockUpdate calls for better state management in message streaming.
- Cleaned up console log statements for improved readability and debugging.
2025-07-17 10:03:14 +08:00
one
aa254a3772
refactor(Markdown): disable single-tilde strikethrough (#8209) 2025-07-17 09:57:37 +08:00
one
9ac2b70df3
fix: repect multi-model style on model mentioning (#8204) 2025-07-17 09:28:13 +08:00
Phantom
8384bbfc0a
fix: handle mentions when resending message (#7819)
* fix(messageThunk): 修复重置消息时模型未正确继承的问题

* fix(消息重发): 修复重发消息时模型选择逻辑

确保当原始消息模型被提及时才使用该模型,否则使用助手默认模型

* style(PasteService): 统一文件换行符为LF格式

* Revert "style(PasteService): 统一文件换行符为LF格式"

This reverts commit 37a1443b73.

* refactor(messageThunk): 优化消息重发逻辑,分离新旧消息处理

将消息重发逻辑拆分为处理已有消息和新增提及模型消息两部分
简化条件判断,移除冗余代码

* style(messageThunk): 移除多余的空行

* fix(消息重传): 单条无提及消息重传时使用助手模型

当重传单条无提及消息时,使用助手模型进行重传,其他情况保持原有逻辑

* Revert "fix(消息重传): 单条无提及消息重传时使用助手模型"

This reverts commit 2e369174e7.

* fix(消息重发): 修改重发消息时模型设置逻辑
2025-07-16 19:36:45 +08:00
one
f84509c824
chore: update check-i18n scripts and remove duplicate keys (#8203) 2025-07-16 17:44:07 +08:00
⌞L⌝
f0d86cbaec
feat: add support for 302AI provider in MCP settings (#7755)
* feat: add support for 302AI provider in MCP settings

- Introduced new provider for 302AI, including token management and server synchronization functionality.
- Updated SyncServersPopup to integrate 302AI provider.
- Added new file for 302AI provider utilities, including token storage and server fetching logic.

* fix: re-merge main
2025-07-16 17:40:30 +08:00
fullex
3132150fb8
Revert "feat: optimize minapp cache with LRU (#8160)" (#8205)
This reverts commit f0043b4be5.
2025-07-16 17:34:50 +08:00
SuYao
0930201e5d
Fix/mcp bug (#8189)
* feat(models): enhance function calling model detection and update migration logic

- Added support for 'gemini-1' in FUNCTION_CALLING_EXCLUDED_MODELS.
- Updated isFunctionCallingModel to handle optional model input.
- Modified migration logic to change tool use mode for assistants using function calling models.

* feat(models): add new models to vision and function calling lists

- Added 'kimi-thinking-preview' to visionAllowedModels.
- Added 'kimi-k2' to FUNCTION_CALLING_MODELS.
- Updated migration logic to ensure compatibility with new model settings.

* refactor(TextChunkMiddleware): streamline text accumulation logic and improve response handling

- Simplified the logic for accumulating text content and updating the internal state.
- Ensured that the final text is consistently used in response callbacks.
- Removed redundant code for handling text completion in the ToolUseExtractionMiddleware.
- Added mock state for MCP tools in tests to enhance coverage for tool use extraction.

* refactor(BaseApiClient): remove unused content extraction utility

- Replaced the usage of getContentWithTools with getMainTextContent in the getMessageContent method.
- Cleaned up imports by removing the unused getContentWithTools function.
2025-07-16 15:04:19 +08:00
one
df218ee6c8
hotfix: error on deleting assistant (#8190)
fix: error on deleting assistant
2025-07-16 14:16:08 +08:00
happyZYM
27c39415c2
fix: add compatibility for webdav servers that do not support streaming (#7992)
* fix: add compatibility for webdav servers that do not support streaming

* fix: fix grammar error

* fix: fix linter error

* fix: remove unnecessary changes

* revert: restore tolerance for failing to remove temp file after webdav backup failed

* fix: add migration support
2025-07-16 09:53:51 +08:00
Konv Suu
f0043b4be5
feat: optimize minapp cache with LRU (#8160) 2025-07-15 22:56:34 +08:00
自由的世界人
a6db53873a
fix: add channel property to notifications for backup and assistant messages (#8120)
* fix: add channel property to notifications for backup and assistant messages

* Add notification tip and improve assistant notification logic

Added a tooltip in the notification settings UI to clarify that only messages exceeding 30 seconds will trigger a reminder. Updated i18n files for all supported languages with the new tip. Modified notification logic to only send notifications for assistant responses or errors if the message duration exceeds 30 seconds and the user is not on the home page or the window is not focused.

* Remove duplicate InfoCircleOutlined import

Consolidated the import of InfoCircleOutlined from '@ant-design/icons' to avoid redundancy in GeneralSettings.tsx.

* fix: add isFocused mock and simplify createMockStore

Added a mock for isFocused in the window utility and refactored createMockStore to return the configured store directly. This improves test setup clarity and ensures all necessary window utilities are mocked.
2025-07-15 19:25:55 +08:00
SuYao
76de357cbf
test: add integration test for message thunk and fix some bugs (#8148)
* test: add integration test for message thunk and fix some bugs

* fix: ci
2025-07-15 15:39:40 +08:00
SuYao
40724ad877
fix(AihubmixAPIClient): enhance ID validation logic to exclude 'embed… (#8157)
fix(AihubmixAPIClient): enhance ID validation logic to exclude 'embedding' (#8148)
2025-07-15 14:08:38 +08:00
kangfenmao
be6ecbe0b1 refactor(SettingsPage): Remove redundant menu items and reorganize memory settings link 2025-07-15 12:53:01 +08:00
LiuVaayne
72ae105166
[1.5.0-rc] Feat/memory (#7689)
* Merge memory into main

* Improvement/memory UI (#7655)

* feat: add auto-dimension detection to memory settings

- Add automatic embedding dimension detection for memory configuration
- Add toggle switch to enable/disable auto-detection (enabled by default)
- Detect dimensions by making test API call to embedding provider
- Show dimension input field only when auto-detection is disabled
- Add loading state and error handling during dimension detection
- Maintain consistency with knowledge base dimension handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

*  feat: implement unified embedding dimensions for memory service

- Add jaison dependency for robust JSON parsing
- Normalize all embeddings to 1536 dimensions for consistency
- Improve embedding dimension logging
- Update memory processor to use jaison for better error handling
- Handle various JSON response formats in fact extraction

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: refactor MemoriesPage layout with new styled components and improved user management features

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Improvement/memory UI (#7656)

Co-authored-by: Claude <noreply@anthropic.com>

*  feat: add memory icon to sidebar for existing users

- Add migration version 118 to enable memory feature visibility
- Adds 'memory' icon to sidebar visible icons if not already present
- Updates store version to trigger migration for existing users

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix(memory): include last user message ID in processor config

*  feat(memory): enhance memory settings UI and add new translations

* Enhance memory management UI: Added settings, statistics, search, actions, and user management sections to the memory page. Updated translations for multiple languages to include new UI elements. Refactored component structure for improved layout and readability.

* feat: add i18n

* ui: Enhance memory modals and UI

* refactor(memory): replace direct message calls with window.message for error and success notifications

* fix: eslint error

* feat(memory): enhance memory restoration logic and queries

- Updated MemoryService to restore deleted memories instead of inserting new ones if a memory with the same hash exists.
- Added new SQL queries to check for deleted memories and restore them.
- Improved logging for memory restoration and embedding generation.
- Refactored related API service methods to handle updated memory processing logic.

* refactor: update memory configuration to use ApiClient structure

- Refactored memory-related services and components to utilize the new ApiClient structure for embedding and reranking models.
- Updated constructors and method signatures across multiple files to accept embedApiClient and rerankApiClient parameters.
- Enhanced memory settings UI to reflect changes in memory configuration management.
- Improved type definitions for KnowledgeBaseParams and MemoryConfig to align with the new structure.

* ui: improve user interface for adding new users in memory page

- Enhanced the button for adding new users by incorporating an icon and adjusting padding for better alignment.
- Updated the user selection options to ensure consistent alignment of avatars and user names.
- Refactored layout to improve overall user experience and visual consistency.

* refactor(memory): streamline MemoryProcessor usage in ApiService

- Removed the singleton instance of MemoryProcessor and instantiated it directly within the ApiService methods.
- Updated relevant methods to utilize the new instance for searching and processing memories, improving clarity and encapsulation of memory handling logic.

* chore: move knowledge dir

* fix: correct import paths in KnowledgeService.ts

* fix(Memory): memory deduplicate

* fix(Memory): memory llm provider

* fix: ci error

* fix(Memory): update fact extraction prompt to focus on personal information

* feat: Refactor memory fom sidebar to settings page

- Removed MemoryStick icon from Sidebar component.
- Updated navigation to point to the new memory settings page.
- Introduced MemoriesSettingsModal for managing memory configurations.
- Created MemorySettings component for comprehensive memory management.
- Added user management features including adding, editing, and deleting users.
- Implemented pagination and search functionality for memory items.
- Updated sidebar settings to remove memory icon and ensure proper migration.
- Adjusted Redux store settings to reflect changes in sidebar icons.

* feat: redesign memory settings page with improved UI and layout

* fix i18n

* fix: update citation titles to include memory hash and increment version number

* fix: remove unnecessary prop from KnowledgeCitation component

* feat: enhance fact extraction prompt with clearer guidelines and examples

* 🔧 feat: disable global memory by default and improve UI

- Set globalMemoryEnabled default to false for better user experience
- Remove manual localStorage handling to rely on redux-persist
- Add Beta badge to memory settings section
- Improve layout and styling of memory settings UI components

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Simplify external tool completion handling

* Fix whitespace in migrate config

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: suyao <sy20010504@gmail.com>
Co-authored-by: eeee0717 <chentao020717Work@outlook.com>
Co-authored-by: kangfenmao <kangfenmao@qq.com>
Co-authored-by: 自由的世界人 <3196812536@qq.com>
2025-07-15 10:24:41 +08:00
SuYao
06baaa1522
fix: openai api client (#8154) 2025-07-15 10:10:55 +08:00
fullex
c606972f0a
fix: global shortcut keys (#8084)
* refactor: shortcut keys

* fix:  backward compatibility with old data
2025-07-15 02:23:39 +08:00
luoxu1314
d4dde58e13
fix(OpenAIResponseAPIClient):ensure openai-response providers always use Response API (#8145)
Update OpenAIResponseAPIClient.ts
2025-07-14 23:57:16 +08:00
ous50 | ousfifty | 欧式fifty
71917eb0ec
Feat: url context for Gemini models (#7931)
* feat: Add URL Context ability for Gemini Models

* feat: Adding URL Context Button to tool bar and make it visible only when gemini models selected.
It is not working (adding urlContext tools) for now.

* fix: trying to force enable UrlContext function

* fix: enableUrlContext indication reverted

* feat: migration script for refreshing tool order to add URL Context button.

* fix: optimize migrate.ts

* fix: upgrade version

---------

Co-authored-by: suyao <sy20010504@gmail.com>
2025-07-14 23:52:19 +08:00
luoxu1314
1b129636ed
chore(OpenAIApiClient): fallback to message when delta.content is empty (#8101)
* chore(OpenAIApiClient): fallback to message when delta.content is empty, fix missing content issue

Signed-off-by: luoxu1314 <xiaoluoxu@163.com>

* Update OpenAIApiClient.ts

* Update OpenAIApiClient.ts

---------

Signed-off-by: luoxu1314 <xiaoluoxu@163.com>
Co-authored-by: one <wangan.cs@gmail.com>
2025-07-14 23:28:27 +08:00
Phantom
c2d438fba3
fix(openai): add compatibility mode for handling tool call responses (#7983)
fix(openai): 添加兼容模式处理工具调用响应

在兼容模式下处理工具调用响应时,添加对数组内容的特殊处理逻辑。当isCompatibleMode为true时,将响应内容转换为特定格式的字符串输出,包括对文本、图片和音频等不同类型内容的处理。
2025-07-14 22:44:51 +08:00
LiuVaayne
ee4553130b
[1.5.0-rc] feat(MCP): Add DXT format support for MCP server installation (#7618)
* feat(MCP): Add DXT format support for MCP server installation

- Add comprehensive DXT package upload and extraction functionality
- Support for DXT manifest validation and MCP server configuration
- Hierarchical UI structure: Quick Add | JSON Import | DXT Import
- Variable substitution for DXT args (${__dirname} replacement)
- Automatic cleanup of DXT server directories on removal
- Enhanced error handling and connectivity checks
- Full internationalization support (EN/CN)
- Uses existing node-stream-zip for efficient extraction
- Proper working directory setup for DXT-based servers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* 🐛 fix(MCP): Fix DXT server installation and deletion issues

- Replace fs.renameSync with cross-filesystem compatible moveDirectory method to handle temp->mcp directory moves across different mount points
- Add recursive copy fallback when rename fails (ENOENT error fix)
- Sanitize server names with slashes to prevent subdirectory creation during installation
- Improve cleanupDxtServer to handle sanitized names and provide fallback lookup
- Add proper error logging and directory existence warnings

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat(MCP): Implement comprehensive DXT MCP configuration support

- Add platform_overrides support to DXT manifest interface
- Implement complete variable substitution system (${__dirname}, ${HOME}, ${DESKTOP}, ${DOCUMENTS}, ${pathSeparator}, ${user_config.KEY})
- Add platform detection utilities (getPlatformIdentifier)
- Create resolved MCP configuration system with applyPlatformOverrides
- Export ResolvedMcpConfig interface and utility functions
- Integrate DXT configuration resolution into MCPService runtime
- Support platform-specific command, args, and environment overrides
- Add comprehensive logging for configuration resolution

Addresses DXT MANIFEST.md mcp_configuration requirements:
- Platform-specific configuration variations
- Cross-platform variable substitution
- Flexible command and environment management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: add downloads directory variable substitution and simplify platform detection

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-07-14 22:37:56 +08:00
Jason Young
bf6ccea1e2
test: add unit tests for getPotentialIndex and input utils (#7947)
* test: add unit tests for getPotentialIndex and input utils

- Add tests for getPotentialIndex function covering streaming text tag detection scenarios
- Add tests for input utils including file drop and keyboard shortcut detection

* test: refactor test structure to comply with TEST_UTILS.md guidelines

- Add file-level describe blocks for both test files
- Fix mock cleanup in input.test.ts:
  - Add vi.clearAllMocks() in beforeEach
  - Replace vi.clearAllMocks() with vi.restoreAllMocks() in afterEach
- Maintain two-layer describe structure as per project standards
2025-07-14 21:52:52 +08:00
karl
e0eac6ab7e
Fix/7973 (#8059)
* fix: 7973 查看原始数据的按钮没有了

* refactor(MessageTools): replace PreviewBlock with CollapsedContent for improved preview rendering

---------

Co-authored-by: suyao <sy20010504@gmail.com>
2025-07-14 21:50:55 +08:00