Commit Graph

4089 Commits

Author SHA1 Message Date
MyPrototypeWhat
e312c84a0e chore(config): add new aliases for ai-core in Vite and TypeScript configuration
Updated the Vite and TypeScript configuration files to include new path aliases for the ai-core package, enhancing module resolution for core providers and built-in plugins. This change improves the organization and accessibility of the ai-core components within the project.
2025-08-28 18:12:46 +08:00
MyPrototypeWhat
3d0fb97475 chore(dependencies): update ai and related packages to version 5.0.26 and 1.0.15
Updated the 'ai' package to version 5.0.26 and '@ai-sdk/gateway' to version 1.0.15. Also, updated '@ai-sdk/provider-utils' to version 3.0.7 and 'eventsource-parser' to version 3.0.5. Adjusted type definitions in aiCore for better type safety in plugin parameters and results.
2025-08-28 16:11:08 +08:00
MyPrototypeWhat
d10ba04047 refactor(aiCore): streamline type exports and enhance provider registration
Removed unused type exports from the aiCore module and consolidated type definitions for better clarity. Updated provider registration tests to reflect new configurations and improved error handling for non-existent providers. Enhanced the overall structure of the provider management system, ensuring better type safety and consistency across the codebase.
2025-08-28 15:28:44 +08:00
icarus
4b7023f855 fix(i18n): 更新多语言文件中 websearch.fetch_complete 的翻译格式
统一将“已完成 X 次搜索”改为“X 个搜索结果”格式,并添加 avatar.builtin 字段翻译
2025-08-28 15:11:52 +08:00
icarus
5f096ecf8c refactor(logging): 将console替换为logger以统一日志管理 2025-08-28 14:52:59 +08:00
suyao
a12d627b65
feat(types): add VertexProvider type for Google Cloud integration
Introduced a new VertexProvider type that includes properties for Google credentials and project details, enhancing type safety and support for Google Cloud functionalities.
2025-08-28 12:22:14 +08:00
MyPrototypeWhat
7bda658022 Merge remote-tracking branch 'origin/main' into feat/aisdk-package 2025-08-28 12:03:41 +08:00
beyondkmp
69252f6177
fix(CodeToolsService): open new terminal tab for command execution (#9610)
Updated the terminal command execution logic to open a new tab in the Terminal application for running commands. This change enhances user experience by keeping the original tab available while executing commands in a separate tab.
2025-08-28 09:24:15 +08:00
Phantom
7407bb335d
feat: more abort control (#9267)
* feat(abort): 添加 abortKey 参数支持以自定义中止控制

支持通过参数传入 abortKey 来替代 messageId,提供更灵活的中止控制方式

* fix(aiCore): 修复checkApi时未正确abort的问题

* feat(翻译): 添加翻译中止功能

支持在翻译过程中中止操作,包括添加中止键状态管理、中止错误处理和界面停止按钮
添加相关国际化文案

* feat(i18n): 添加翻译中止相关文本和多语言支持

* style(translate): 调整停止按钮图标大小以保持视觉一致性

* fix(TranslateService): 改进翻译错误处理逻辑

正确处理翻译中止和失败的情况,统一错误信息格式化方式

* fix(aiCore): 去除不必要的类型断言

* style(TabContainer): 移除多余的空格并保持代码整洁

* fix(translate): 添加翻译前校验并修复文件处理异步问题

在翻译前添加couldTranslate校验,防止无效操作
将processFile改为异步调用以正确处理文件处理流程
2025-08-27 23:56:11 +08:00
Phantom
aaa0eb7140
feat: user filter models (#8953)
* feat(组件): 添加模型标签组件并重构相关引用

添加新的模型标签组件(EmbeddingTag, ReasoningTag等)并集中导出
重构ModelTagsWithLabel组件使用新的标签组件
移除旧的ModelCapabilities引用

* refactor(Tags): 移除FreeTag组件中未使用的showLabel属性

* feat(模型选择弹窗): 添加按标签筛选模型功能

在模型选择弹窗中新增标签筛选功能,支持按视觉、网页搜索、推理、工具调用、免费、嵌入和重排等标签类型筛选模型

* feat(i18n): 添加按标签筛选的翻译文本

* feat(SelectModelPopup): 优化模型筛选逻辑并添加类型安全的objectKeys工具函数

重构模型筛选逻辑,简化条件判断并支持外部传入的filterTypes控制显示。添加类型安全的objectKeys工具函数用于获取对象键名。调整筛选标签的显示逻辑,仅在相关filterTypes存在时显示对应标签。

* refactor(SelectModelPopup): 移除已注释的冗余代码

* fix(SelectModelPopup): 修复布局偏移问题并调整内边距

为弹出容器添加动态高度以避免布局偏移
调整过滤容器的内边距

* refactor(model): 将isFreeModel函数移动到单独的文件并添加模型标签功能

重构模型相关工具函数,将isFreeModel从utils/index.ts移动到utils/model.ts
新增getModelTags函数用于获取模型标签状态
更新相关导入路径以保持一致性

* refactor(SelectModelPopup): 重构扁平列表项类型定义以提高类型安全性

将 FlatListItem 拆分为 FlatListGroup 和 FlatListModel 两种具体类型
确保模型项必须包含 model 属性而分组项不包含
更新相关组件代码以适配新的类型定义

* docs(utils/model): 添加getModelTags函数的注释说明

* refactor(SelectModelPopup): 重构模型筛选逻辑,优化标签管理

- 将模型筛选逻辑拆分为用户筛选和搜索筛选两部分
- 去除内置筛选
- 使用getModelTags获取模型标签
- 优化筛选条件判断逻辑,提高可读性

* refactor(SelectModelButton): 重构模型选择按钮的过滤逻辑

使用模型类型判断函数替代硬编码的过滤类型数组

* fix(MessageMenubar): 修复模型提及过滤逻辑,排除嵌入和重排模型

默认过滤条件现在会排除嵌入和重排模型,确保视觉模型检查时也应用此过滤

* feat(AssistantModelSettings): 添加模型过滤功能以排除嵌入和重排模型

* perf(SelectModelPopup): 使用useMemo优化模型列表计算性能

避免在每次渲染时重新计算模型列表,仅在modelFilter或providers变化时重新计算

* test(model): 将 isFreeModel 测试迁移到 model.test.ts 并添加 getModelTags 测试

* feat(types): 添加类型安全的对象键值对转换函数

* feat(模型选择弹窗): 优化标签筛选功能并添加已选标签显示

重构标签筛选逻辑,使用更简洁的预测函数配置方式
添加已选标签显示区域,提升用户操作体验
更新国际化文件添加"已选标签"翻译

* feat(i18n): 添加多语言翻译的"selected tags"字段和"code"模块

为过滤功能添加"selected tags"翻译字段
新增"code"模块的多语言翻译内容

* refactor(SelectModelPopup): 优化标签筛选逻辑和样式布局

移除重复的标签选择逻辑,合并为单一标签组件
调整筛选区域的布局和样式,简化界面结构
将PAGE_SIZE从11改为12以适应布局需求
2025-08-27 22:55:14 +08:00
Phantom
6376bbb9a7
fix: mcp-auto-install cannot start (#9015)
* refactor(types): 将内置MCPServer类型从MCPServer分离并添加类型守卫

将内置MCPServer相关逻辑从通用MCPServer类型中分离,新增BuiltinMCPServer类型和类型守卫函数

* refactor(MCPService): 使用isBuiltinMCPServer检查内置服务器类型

修改传输层创建逻辑,通过isBuiltinMCPServer函数判断是否为内置服务器,并排除特定服务器

* refactor(types): 统一内置MCP服务器名称的键值格式并优化类型定义

将BuiltinMCPServers对象的键改为与值相同的格式,使结构更一致
同时简化BuiltinMCPServerName类型定义和isBuiltinMCPServerName检查逻辑

* refactor(types): 为内置MCP服务器名称添加类型定义

为`MCP_AUTO_INSTALL_SERVER_NAME`和`builtInMcpDescriptionKeyMap`添加`BuiltinMCPServerName`类型定义,提高类型安全性

* refactor(types): 重命名BuiltinMCPServers为BuiltinMCPServerNames以更准确描述用途

* style: 移除 TabContainer 组件中的多余空行

* refactor(mcpServers): 使用类型化的BuiltinMCPServerName替换字符串参数

将createInMemoryMCPServer函数的name参数从string类型改为BuiltinMCPServerName类型,提高类型安全性

* refactor(types): 重构内置MCPServer名称常量及类型定义

将BuiltinMCPServerNames的键名改为驼峰命名,并添加BuiltinMCPServerNamesArray常量
修改isBuiltinMCPServerName函数使用数组进行判断

* refactor(mcp): 使用枚举替换硬编码的服务器名称字符串
2025-08-27 22:46:42 +08:00
Pleasure1234
c01642ef22
fix: decode Bing redirect URLs in LocalBingProvider (#9593)
Added logic to extract and decode the actual target URL from Bing redirect links in LocalBingProvider. Also introduced debug logging in SearchService to log search URLs.
2025-08-27 21:34:01 +08:00
MyPrototypeWhat
bfcb215c16 fix(aiCore): update tool call status and enhance execution flow
- Changed tool call status from 'invoking' to 'pending' for better clarity in execution state.
- Updated the tool execution logic to include user confirmation for non-auto-approved tools, improving user interaction.
- Refactored the handling of experimental context in the tool execution parameters to support chunk streaming.
- Commented out unused tool input event cases in AiSdkToChunkAdapter for cleaner code.
2025-08-27 19:37:10 +08:00
SuYao
72f4584b0f
fix(aihubmix): gemini image generation (#9601) 2025-08-27 16:26:46 +08:00
MyPrototypeWhat
1b3fcb2e55 chore(aiCore): bump version to 1.0.0-alpha.10 in package.json 2025-08-27 16:23:08 +08:00
MyPrototypeWhat
9c01e24317 feat(aiCore): enhance provider management and registration system
- Added support for a new provider configuration structure in package.json, enabling better integration of provider types.
- Updated tsdown.config.ts to include new entry points for provider modules, improving build organization.
- Refactored index.ts to streamline exports and enhance type handling for provider-related functionalities.
- Simplified provider initialization and registration processes, allowing for more flexible provider management.
- Improved type definitions and removed deprecated methods to enhance code clarity and maintainability.
2025-08-27 16:17:57 +08:00
Phantom
941f86008b
fix: restrict using gemini native tools and mcp tools simultaneously (#9361)
* feat(providers): 添加对支持URL上下文的提供者类型的检查

新增 `isSupportUrlContextProvider` 函数用于检查提供者是否支持URL上下文功能

* fix(InputbarTools): 修复URL上下文按钮显示条件判断

添加对模型提供者是否支持URL上下文的检查

* fix(gemini): 修复原生工具与函数调用同时启用时的冲突

当同时启用web搜索和URL上下文工具时,如果已存在函数调用工具,则添加警告日志提示当前不支持同时使用

* feat(i18n): 限制 Gemini 同时使用网页上下文与 MCP 工具

添加多语言翻译文案和功能实现,当用户尝试同时启用网页上下文和 MCP 工具时,显示警告提示并自动禁用网页上下文

* perf(WebSearchButton): 使用定时器优化更新性能避免卡顿

移除startTransition并使用useTimer的setTimeoutTimer来延迟更新操作,解决updateAssistant导致的快捷面板关闭卡顿问题

* feat(i18n): 限制 Gemini 原生搜索工具与函数调用的同时使用

添加对 Gemini 原生搜索工具与函数调用同时使用时的冲突检测
更新相关国际化文案和功能实现

* fix(GeminiAPIClient): 修复工具使用模式判断逻辑

当工具使用模式为'prompt'时应该允许使用native tool

* reafactor: 简化 Gemini 模型下工具使用模式的 URL 上下文和网页搜索检查逻辑

* fix(WebSearchButton): 修复条件判断

* refactor(utils): 提取函数工具使用模式判断逻辑到单独函数

* test(assistant): 添加工具使用模式功能的单元测试

* refactor(InputbarTools): 使用isGeminiModel函数替代字符串检查

简化模型类型检查逻辑,提高代码可读性和维护性

* perf(Inputbar): 使用setTimeoutTimer替代startTransition解决性能问题
2025-08-27 14:37:46 +08:00
one
fac8e91d3a
refactor(DraggableList): remove antd List component (#9565)
* refactor(DraggableList): remove antd List component

The DraggableList component was unnecessarily wrapped in an antd List component. This change removes the antd List and replaces it with a standard div.

A `className` has been added to the new div for testing purposes. The `listProps` prop is preserved and its type is updated to `React.HTMLAttributes<HTMLDivElement>`.

The tests have been updated to reflect the new DOM structure, using a class selector instead of a data-testid. The antd mock has been removed, and the snapshot has been updated.

* test: fix

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-08-27 14:37:26 +08:00
yyhhyyyyyy
ce14d15ba3
feat: support openrouter gemini 2.5 flash image preview (#9587)
* feat: support openrouter gemini 2.5 flash image preview

* feat: improve image content handling with type safety

* fix: code fmt
2025-08-27 13:03:50 +08:00
Pleasure1234
92ab338640
fix: remove Content-Length header and add duplex option in putFile (#9576)
The putFile method no longer sets the Content-Length header and now includes the duplex: 'half' option in the net.fetch call. This change ensures compatibility with streaming uploads and the requirements of net.fetch.
2025-08-27 12:07:57 +08:00
MyPrototypeWhat
2ce9314a10 refactor(aiCore): improve type handling and response structures
- Updated AiSdkToChunkAdapter to refine web search result handling.
- Modified McpToolChunkMiddleware to ensure consistent type usage for tool responses.
- Enhanced type definitions in chunk.ts and index.ts for better clarity and type safety.
- Adjusted MessageWebSearch styles for improved UI consistency.
- Refactored parseToolUse function to align with updated MCPTool response structures.
2025-08-27 11:23:30 +08:00
SuYao
f273621082
fix(models): enhance model type checks for function calling and web s… (#9579)
fix(models): enhance model type checks for function calling and web search models
2025-08-27 00:50:47 +08:00
one
ddc5f46e9b
feat: goto provider settings from models popup (#9573)
* feat: goto provider settings from models popup

* refactor: improve paddings

* refactor: update types

* refactor: update types

* doc: update comments

* refactor: more comments

* refactor: scroll to the selected provider on navigation

* test: update mocks
2025-08-27 00:04:52 +08:00
Phantom
7a0da13676
fix(qwen3): fix qwen3 thinking control by soft command (#9568)
fix(qwen3): 修复Qwen3模型思考模式处理逻辑

重构processPostsuffixQwen3Model函数,简化后缀处理逻辑
添加nvidia到不支持思考模式的提供商列表
移除postsuffix参数
2025-08-26 22:41:10 +08:00
Yricky
267b41242d
fix: move topic prompt handling to message thunk and fix prompt logic (#9569) 2025-08-26 22:20:16 +08:00
beyondkmp
5bbc35695a
refactor(ProxyManager): enhance bypass rule matching and logging (#9546)
* refactor(ProxyManager): enhance bypass rule matching and logging

- Updated the `isByPass` function to improve hostname and port matching against bypass rules.
- Refactored the dispatcher logic to utilize the updated `isByPass` function for better clarity.
- Enhanced logging to include bypass rules in system proxy change notifications.
- Simplified URL handling in the dispatcher to ensure consistent behavior.

* delete file

* refactor(ProxyManager): improve bypass rule handling and error logging

- Enhanced the `isByPass` function to check for bypass rules more efficiently, including improved error handling and logging for rule parsing failures.
- Added error logging for exceptions during URL processing.
- Cleaned up the logic to ensure consistent return values and better readability.
- Removed unnecessary environment variable deletions in the proxy manager cleanup process.

* feat(ProxyManager): add no_proxy environment variable support

- Introduced the `no_proxy` environment variable to allow bypassing specific hosts in proxy settings.
- The `no_proxy` value is constructed from the existing bypass rules, enhancing flexibility in proxy management.
2025-08-26 20:54:27 +08:00
beyondkmp
eac71f1f43
refactor(TranslateService): remove content parameter to reduce token (#9567)
* refactor(TranslateService): remove content parameter from fetchTranslate function

- Updated fetchTranslate function to eliminate the content parameter, simplifying its signature.
- Adjusted related calls to ensure compatibility with the new function definition, maintaining functionality while improving code clarity.

* Update src/renderer/src/services/TranslateService.ts

---------

Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
2025-08-26 19:30:23 +08:00
MyPrototypeWhat
0c7e221b4e feat(aiCore): add MemorySearchTool and WebSearchTool components
- Introduced MessageMemorySearch and MessageWebSearch components for handling memory and web search tool responses.
- Updated MemorySearchTool and WebSearchTool to improve response handling and integrate with the new components.
- Removed unused console logs and streamlined code for better readability and maintainability.
- Added new dependencies in package.json for enhanced functionality.
2025-08-26 17:59:52 +08:00
Phantom
bd4ba47e61
feat(models): support qwen-flash & deepseek v3.1 (limited) (#9539)
* feat(models): 添加 qwen-flash 模型支持并更新相关配置

* feat(ai): 添加对deepseek-v3.1模型的支持(dashscope)

添加deepseek_hybrid类型到ThinkModelTypes,并实现相关推理逻辑

* refactor(openai): 移除调试日志语句以清理代码

* feat(推理模型): 增强DeepSeek混合推理模型支持并优化逻辑顺序

重构DeepSeek混合推理模型的判断逻辑,支持更多版本格式
将Doubao思考模式处理逻辑移至更合理的位置
添加对DeepSeek模型在不同provider下的思考控制处理

* fix(deepseek): 支持openrouter的deepseek-chat-v3.1模型推理控制

统一处理不同provider的DeepSeek混合推理模型控制方式,添加对openrouter的deepseek-chat-v3.1模型支持

* fix(模型): 修正函数调用模型的判断逻辑

更新函数调用模型的判断条件,明确不支持v3.1函数调用的提供商并处理openrouter的特殊情况

* feat(openai): 为silicon模型添加enable_thinking配置

* fix(模型配置): 修正深度求索混合推理模型的函数调用支持逻辑

更新深度求索混合推理模型的函数调用判断逻辑,默认支持函数调用

* feat(模型支持): 为DeepSeek V3.1添加白名单支持

添加对DeepSeek V3.1混合推理模型的白名单支持,目前仅允许openrouter、dashscope和doubao作为提供商

* feat(config): 添加silicon到DeepSeek V3.1支持的白名单中

* feat(sdk): 添加对NVIDIA推理参数的支持

在ReasoningEffortOptionalParams类型中添加chat_template_kwargs参数,用于支持NVIDIA的推理配置。同时在模型支持列表中新增nvidia提供商,并在OpenAIApiClient中实现对应的参数处理逻辑。

* refactor(openai): 使用SystemProviderIds替换硬编码的provider id字符串
2025-08-26 17:43:29 +08:00
HydrogenE7
cd2d59c6a1
fix: onprogress handler error (#9540)
Update MCPService.ts

fix onprogress error
2025-08-26 17:10:21 +08:00
Phantom
5e31c809e1
fix(openai): Gemma system message (#9561)
* fix(openai): 修复不支持系统消息的模型处理逻辑

当模型不支持系统消息时,将其转换为用户消息,确保请求消息的正确构建

* fix(openai): 处理不支持系统消息的模型时合并用户消息

当模型不支持系统消息时,将系统消息内容合并到第一条用户消息中
添加空用户消息的警告日志
2025-08-26 16:32:45 +08:00
MyPrototypeWhat
82d4637c9d chore(aiCore): bump version to 1.0.0-alpha.9 in package.json 2025-08-26 16:19:41 +08:00
MyPrototypeWhat
84eef25ff9 feat(aiCore): enhance dynamic provider registration and refactor HubProvider
- Introduced dynamic provider registration functionality, allowing for flexible management of providers through a new registry system.
- Refactored HubProvider to streamline model resolution and improve error handling for unsupported models.
- Added utility functions for managing dynamic providers, including registration, cleanup, and alias resolution.
- Updated index exports to include new dynamic provider APIs, enhancing overall usability and integration.
- Removed outdated provider files and simplified the provider management structure for better maintainability.
2025-08-26 16:17:01 +08:00
beyondkmp
961984df24
fix: add sharp dependency for image processing and improve ocr (#9554)
build: add sharp dependency for image processing

* Added sharp as a dependency in package.json to enhance image processing capabilities.
* Removed sharp from the devDependencies section.
* Refactored OCR image preprocessing by integrating grayscale and normalization directly into the process, improving overall efficiency.
2025-08-26 14:34:16 +08:00
beyondkmp
e956a9ad35
refactor(CopilotService): streamline token file handling and improve error management (#9552)
* refactor(CopilotService): streamline token file handling and improve error management

- Consolidated token file path retrieval into a dedicated method for better clarity and maintainability.
- Updated file system operations to ensure directory existence before writing the token file.
- Enhanced error handling during token save and read operations, ensuring robust logging and user feedback.

* lint

* build: add sharp dependency for image processing

- Added sharp as a dependency in package.json to support image processing functionalities.
- Removed sharp from the devDependencies section to ensure it is available in production.
2025-08-26 14:33:47 +08:00
kangfenmao
f9869ef453 Revert "fix(hooks): type safe useAssistant (#9428)"
This reverts commit 4833f36e0b.

https://github.com/CherryHQ/cherry-studio/pull/9428#issuecomment-3222381185
2025-08-26 11:02:31 +08:00
lizhixuan
53dcda6942 feat(aiCore): introduce Hub Provider and enhance provider management
- Added a new example file demonstrating the usage of the Hub Provider for routing to multiple underlying providers.
- Implemented the Hub Provider to support model ID parsing and routing based on a specified format.
- Refactored provider management by introducing a Registry Management class for better organization and retrieval of provider instances.
- Updated the Provider Initializer to streamline the initialization and registration of providers, enhancing overall flexibility and usability.
- Removed outdated files related to provider creation and dynamic registration to simplify the codebase.
2025-08-26 00:31:41 +08:00
Phantom
7bb3826cdd
feat: ocr image to translate (#9423)
* build: 添加 tesseract.js 及其类型定义依赖

* feat(ocr): 添加OCR类型定义文件以支持OCR功能扩展

* feat(ocr): 添加 Tesseract OCR 提供程序配置

* feat(ocr): 添加Tesseract.js的logo

* refactor(settings): 重构文档预处理设置模块结构

将PreprocessSettings重命名为DocProcessSettings并调整文件结构
更新相关路由和组件引用以保持功能一致性

* refactor(config): 重命名OCR_PROVIDER_CONFIG为BUILTIN_OCR_PROVIDERS以更准确描述用途

* refactor(ocr): 更改文件名

* refactor(ocr): 将获取OCR提供商logo的功能移动到utils目录

将getOcrProviderLogo函数从config/ocr.ts移动到utils/ocr.ts,保持功能集中

* refactor(ocr): 重构OCR配置结构以支持默认提供者

将内置OCR提供者数组重构为单独定义的常量,并添加默认OCR提供者映射。这提高了代码的可维护性并支持未来扩展。

* feat(store): 添加OCR状态管理切片

实现OCR提供商的增删改查功能,使用Redux Toolkit管理OCR相关状态

* feat(types): 添加图片文件类型守卫函数

添加 ImageFileMetadata 类型和 isImageFile 类型守卫函数,用于检查文件是否为图片类型

* feat(ocr): 添加对OCR支持文件类型的类型定义和校验函数

添加SupportedOcrFileType类型和isSupportedOcrFileType校验函数
添加SupportedOcrFile类型和isSupportedOcrFile校验函数

* feat(ocr): 添加OCR功能支持

实现基于Tesseract的OCR功能,包括文件类型检查、服务接口和IPC通信
新增OCR相关类型定义和服务实现

* refactor(OcrService): 更新日志上下文为'main:OcrService'

* feat(ocr): 添加OCR服务基础功能

实现OCR服务的基础功能,通过调用window.api.ocr接口处理支持的文件类型

* feat(store): 添加ocr模块到redux store

* feat(ocr): 添加OCR功能支持及文件类型校验

添加OCR功能钩子useOcr,支持图片文件识别
添加不支持文件类型的错误提示国际化文案

* refactor(ocr): 重命名updatePreprocessProvider为updateOcrProvider以保持命名一致性

* feat(ocr): 添加设置图片OCR提供商的功能

* refactor(ocr): 统一OCR类型导入路径

将所有OCR相关类型从'@renderer/types/ocr'改为从'@renderer/types'或'@types'导入
优化DEFAULT_OCR_PROVIDER类型定义

* feat(store): 更新持久化存储版本并添加OCR配置迁移

添加137版本迁移逻辑,初始化OCR提供者和默认图像提供者配置

* feat(ocr): 添加OCR服务设置界面及提供商选择功能

实现OCR服务设置界面,包含图片OCR提供商的选择功能
修复ocr.ts中imageProvider的类型定义
添加相关国际化文本

* fix(ocr): 添加图像大小检查并优化错误处理

检查图像文件大小是否超过50MB限制
使用buffer读取文件替代直接路径识别
简化错误处理逻辑,直接抛出原始错误

* feat(OCR服务): 支持base64字符串作为OCR输入

扩展tesseractOcr函数以接受base64字符串或图像文件作为输入

* feat(hooks): 添加useFiles钩子用于文件选择功能

* refactor(useFiles): 移除multipleSelections参数并重构文件选择逻辑

将multipleSelections从组件props移动到onSelectFile方法参数中,简化组件接口
重构文件选择逻辑,移除不必要的useMemo,提升代码可维护性

* refactor(useFiles): 使用useMemo优化扩展名处理逻辑

将扩展名处理逻辑移至useMemo中,避免不必要的重复计算。当props.extensions未提供时默认返回['*']

* feat(文件选择): 增强文件选择功能并添加清除文件方法

- 为文件选择API添加返回类型声明
- 完善文件选择回调函数的文档注释
- 修改文件选择逻辑以返回选中的文件数组
- 添加清除文件列表的方法

* refactor(useFiles): 将参数从布尔值改为对象以增强可扩展性

* feat(hooks): 在useFiles钩子中暴露selecting状态

* feat(translate): 添加文件OCR功能支持

在翻译页面新增浮动按钮,支持通过OCR识别文件内容并自动填充到输入框。添加相关hooks和文件类型检查逻辑,提升用户输入便捷性。

* build: 将 tesseract.js 从 devDependencies 移至 dependencies

确保生产环境能正确使用 tesseract.js 功能

* refactor(ocr): 将Tesseract服务文件移动到tesseract子目录并更新配置

* refactor(TesseractService): 添加日志记录并更新worker配置

添加loggerService用于记录worker日志,并更新createWorker配置以使用自定义logger

* feat(翻译页面): 添加OCR处理中的加载状态提示

在翻译页面中添加OCR处理时的加载状态提示,提升用户体验

* fix(translate): 为OCR处理消息添加无限持续时间

防止OCR处理过程中消息自动消失,确保用户明确知道处理状态

* fix: 添加OCR未知错误的翻译并更新错误提示

在OCR处理失败时,使用翻译后的错误消息替代原始错误提示

* style(translate): 调整浮动按钮位置从右上到左下

* fix(translate): 处理未选择文件时提前返回以避免空指针异常

* feat(i18n): 添加OCR功能的多语言支持

* feat(fs): 添加自动识别编码读取文本文件功能

实现通过自动检测文件编码来读取文本文件的功能
在IPC通道、预加载API和文件服务中添加相关方法

* feat(翻译): 添加文件读取功能并改进错误处理

添加对文本文件的支持并优化文件处理流程
改进错误提示信息,包括文件过大和读取失败的场景

* fix(i18n): 更新文件大小限制错误信息并添加多语言支持

修改文件大小限制的错误信息格式,移除括号内的限制范围
为多种语言添加文件操作相关的翻译条目
在错误提示中动态显示文件大小限制范围

* refactor(AttachmentButton): 移除类型注释,使用自动类型推断

* fix(hooks): 返回变量supportedFiles

* fix(ocr): 改进OCR处理中的消息管理和错误处理

在useOcr钩子中统一管理OCR处理的消息提示,并完善错误处理逻辑
移除TranslatePage中重复的消息管理代码,简化OCR处理流程

* fix(translate): 在选择文件后清除文件状态以避免残留

在文件选择完成后调用clearFiles以清除文件状态

* refactor(preload): 移动OCR类型定义到共享类型文件

将OCR相关的类型定义(OcrProvider, OcrResult, SupportedOcrFile)从渲染进程类型文件移动到共享类型文件@types,以提高代码复用性和维护性

* refactor(ocr): 修改tesseractOcr返回完整识别结果而非仅文本

返回完整识别结果以便后续处理使用更多OCR信息,同时简化imageOcr中的条件判断逻辑

* fix(ocr): 修复文件类型与OCR提供者能力不匹配时的错误抛出位置

将错误抛出语句移至else分支

* refactor(ocr): 简化 DEFAULT_OCR_PROVIDER 的类型定义

* build: 将 tesseract.js 从 devDependencies 移至 dependencies

确保生产环境能正确使用 tesseract.js 功能

* refactor(ocr): 将Tesseract服务文件移动到tesseract子目录并更新配置

* refactor(TesseractService): 添加日志记录并更新worker配置

添加loggerService用于记录worker日志,并更新createWorker配置以使用自定义logger

* feat(i18n): 添加OCR功能的多语言支持

* refactor(preload): 移动OCR类型定义到共享类型文件

将OCR相关的类型定义(OcrProvider, OcrResult, SupportedOcrFile)从渲染进程类型文件移动到共享类型文件@types,以提高代码复用性和维护性

* refactor(ocr): 修改tesseractOcr返回完整识别结果而非仅文本

返回完整识别结果以便后续处理使用更多OCR信息,同时简化imageOcr中的条件判断逻辑

* fix(ocr): 修复文件类型与OCR提供者能力不匹配时的错误抛出位置

将错误抛出语句移至else分支

* refactor(ocr): 简化 DEFAULT_OCR_PROVIDER 的类型定义

* fix(ocr): 改进OCR处理中的消息管理和错误处理

在useOcr钩子中统一管理OCR处理的消息提示,并完善错误处理逻辑
移除TranslatePage中重复的消息管理代码,简化OCR处理流程

* feat(i18n): 添加OCR相关的错误和状态翻译文本

* fix(useOcr): 修复未支持文件类型错误抛出位置

将不支持的OCR文件类型错误抛出逻辑移至条件判断内

* refactor(ocr): ocrImage实现使用OcrService并更新日志上下文

将ocrImage函数从useOcr钩子移动到OcrService中,提高代码复用性
更新日志服务上下文从'main'改为'renderer'以更准确反映模块位置

* style(TabContainer): 移除多余的空行并保持代码整洁

* refactor(ocr): 简化OCR文件类型检查逻辑

使用现有的isImageFile函数替代冗余的类型检查逻辑,提高代码复用性

* fix: 将迁移错误日志从136更新为137

* feat(ocr): enhance Tesseract service with language support and worker management

- Added support for multiple Tesseract languages: Chinese (Simplified and Traditional) and English.
- Refactored Tesseract worker management into a class for better encapsulation and reuse.
- Introduced methods to dynamically determine language path based on IP country and manage worker lifecycle.

* update cn url

* support cn data

* change to asyn

* use register design mode

* add type

* use bind function

* refactor(ipc): 简化OCR处理程序参数

* refactor(ocr): 修改ocrProviderCapabilityRecord类型定义

允许只定义部分能力

* refactor(ocr): 将Tesseract相关配置移至服务内部

将语言列表和下载URL常量从共享配置移至Tesseract服务内部
使用常量定义图片大小阈值以提高可读性

* refactor(ocr): 统一使用 SupportedOcrFile 类型替换 FileMetadata

更新 OCR 服务及其 Tesseract 实现,使用 SupportedOcrFile 类型替代原有的 FileMetadata 类型,以提高类型安全性和一致性。同时在 OcrService 中添加重复注册的警告日志。

* refactor(ocr): 重构OCR类型定义以支持模型和API配置

将OCR提供者配置拆分为独立类型,增加模型能力记录和API配置类型检查
添加OCR处理程序类型定义,为未来扩展提供更好的类型支持

* refactor(OcrService): 移除重复的OcrHandler类型定义

已在@types中定义OcrHandler类型,移除重复定义以提高代码一致性

* refactor(ocr): 将OcrService移动到ocr目录下并更新引用路径

* feat(ocr): 添加OCR API客户端工厂及示例实现

实现OCR API客户端工厂模式,支持根据不同提供商创建对应的客户端
新增OcrBaseApiClient作为基础类,提供通用功能
添加OcrExampleApiClient作为示例实现
修改OcrService以使用新的客户端工厂

* refactor(ocr): 添加日志记录以跟踪OCR文件处理

在OCR服务中添加日志记录功能,便于跟踪文件处理过程

* fix(deps): 更新 tesseract.js 依赖并添加补丁文件

修复 tesseract.js 类型定义问题并添加语言常量支持

* refactor(ocr): 移除注释掉的tesseract语言映射代码

使用Tesseract.js的LanguageCode类型替代硬编码的语言列表,提高类型安全性

* feat(ocr): 添加 Tesseract OCR 配置类型

* refactor(OCR设置): 重命名OcrImageProviderSettings为OcrImageSettings并优化代码结构

* refactor(ocr): 将 Tesseract 相关类型移动到文件底部以改善代码组织

* feat(ocr): 添加 Tesseract OCR 提供者类型检查函数

* feat(ocr): 添加更新OCR提供者配置的功能

* feat: 添加OCR提供者钩子函数

实现useOcrProvider钩子用于获取和更新OCR提供者配置

* refactor(ocr): 修改removeOcrProvider参数为字符串id

简化removeOcrProvider方法的参数类型,直接使用字符串id进行过滤,提高代码简洁性

* refactor(ocr): 将内置OCR提供者从数组改为映射结构

重构OCR配置模块,使用映射结构存储内置OCR提供者以便于扩展和维护

* refactor(ocr): 将BUILTIN_OCR_PROVIDERS改为只读数组

使用Object.freeze确保数组不可变,提高代码安全性

* feat(ocr): 添加OCR提供者管理功能并改进错误处理

添加useOcrProviders钩子用于管理OCR提供者的添加和删除
当内置OCR提供者不存在时自动恢复默认配置
改进错误提示信息并增加国际化支持

* Revert "refactor(ocr): 将BUILTIN_OCR_PROVIDERS改为只读数组"

This reverts commit f23e37941a.

* feat(ocr): 为Tesseract OCR添加多语言支持配置

添加对简体中文、繁体中文和英文的语言支持配置,扩展OCR功能以满足多语言识别需求

* refactor(types): 将Tesseract.LanguageCode重命名为TesseractLangCode以提高可读性

* feat(OCR设置): 添加OCR提供商设置组件及状态管理

新增OCR提供商设置组件,支持显示当前选择的OCR提供商信息
在OCR图片设置中添加状态管理,同步提供商选择到父组件
添加Tesseract OCR设置组件,支持多语言选择(暂不可用)

* fix(DocProcessSettings): 修复OCR语言选择默认值问题

* feat(i18n): 添加OCR提供商相关错误和警告的翻译

* fix(ocr): 将 Tesseract 语言配置类型改为部分

* fix(ocr): 修复ocrImage函数未使用await导致的问题

* fix(ocr): 修复迁移配置中ocr状态的初始化方式

将分散的属性赋值改为对象整体赋值,避免潜在的属性丢失问题

* chore: 移除不再使用的@types/tesseract.js依赖

* refactor(OCR设置): 添加错误边界处理并移除无用注释

在OCR设置组件中添加ErrorBoundary以处理潜在错误
移除OcrTesseractSettings中的TODO注释

* build: 添加 sharp 依赖以支持图片处理功能

* refactor(ocr): 添加OCR图像预处理功能并优化TesseractService

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(ocr): 移除独立的灰度处理模块并改进预处理流程

将灰度处理功能直接集成到OCR预处理中,不再需要单独的image模块
添加normalise和threshold处理以提升OCR识别效果

* feat(i18n): 添加文件上传tool tip的翻译文本

* feat(hooks): 添加useDrag钩子实现拖拽功能

* feat(translate): 添加拖拽上传文件功能

实现文件拖拽上传功能,包括拖拽区域高亮显示和提示文本
添加多文件上传错误提示和未知错误处理

* feat(i18n): 添加文件拖拽和多文件上传错误提示的翻译

* refactor(PasteService): 优化粘贴服务逻辑并移除不必要的翻译依赖

将`t`参数改为布尔类型的`showMessage`参数,简化消息显示逻辑
添加默认的粘贴文本长度阈值
使文件扩展名检查变为可选参数
更新相关调用处的参数传递

* Revert "refactor(PasteService): 优化粘贴服务逻辑并移除不必要的翻译依赖"

This reverts commit 07c7ecd0cf.

* fix(preload): 为文件获取方法添加返回类型声明

添加Promise<FileMetadata | null>返回类型以明确get方法的返回值类型,提高代码可读性和类型安全性

* refactor(TopView): 移除未使用的loggerService导入和调用

* feat(TranslatePage): 添加对粘贴上传文件的支持

新增粘贴上传文件功能,处理剪贴板中的文件数据并支持图片临时文件创建
添加文件类型检查和不支持类型的错误提示
重构文件选择逻辑到通用函数 getSingleFile

* feat(i18n): 添加不支持文件类型的多语言翻译

* feat(translate): 添加翻译输入状态并优化内容更新逻辑

添加translateInput状态以存储翻译输入内容
优化setTranslatedContent reducer直接修改状态而非返回新对象

* refactor(translate): 将文本输入状态迁移至redux存储

移除本地状态_text和使用useState管理的text,改为从redux store中获取和管理输入文本

* fix(translate): 修复依赖数组中缺少setText导致的状态更新问题

* fix(store): 初始化翻译输入为空字符串

修复迁移配置时未初始化翻译输入的问题,避免潜在的undefined错误

* fix(hooks): 使 useDrag 的 onDrop 参数变为可选

处理 onDrop 未定义时的调用情况,避免运行时错误

* fix(拖拽): 修复拖拽状态未正确更新的问题

修复 handleDragOver 中未设置 isDragging 状态的问题
为输入区域添加独立的拖拽状态处理
防止容器元素意外触发文件拖放

* refactor(translate): 在文件拖放错误处理中移动错误提示位置

将文件拖放错误提示从空文件检查移动到文件读取错误捕获中

* improve image preprocess

---------

Co-authored-by: beyondkmp <beyondkmp@gmail.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2025-08-26 00:21:26 +08:00
Phantom
0af5a85f67
feat: Image OCR (#9409)
* build: 添加 tesseract.js 及其类型定义依赖

* feat(ocr): 添加OCR类型定义文件以支持OCR功能扩展

* feat(ocr): 添加 Tesseract OCR 提供程序配置

* feat(ocr): 添加Tesseract.js的logo

* refactor(settings): 重构文档预处理设置模块结构

将PreprocessSettings重命名为DocProcessSettings并调整文件结构
更新相关路由和组件引用以保持功能一致性

* refactor(config): 重命名OCR_PROVIDER_CONFIG为BUILTIN_OCR_PROVIDERS以更准确描述用途

* refactor(ocr): 更改文件名

* refactor(ocr): 将获取OCR提供商logo的功能移动到utils目录

将getOcrProviderLogo函数从config/ocr.ts移动到utils/ocr.ts,保持功能集中

* refactor(ocr): 重构OCR配置结构以支持默认提供者

将内置OCR提供者数组重构为单独定义的常量,并添加默认OCR提供者映射。这提高了代码的可维护性并支持未来扩展。

* feat(store): 添加OCR状态管理切片

实现OCR提供商的增删改查功能,使用Redux Toolkit管理OCR相关状态

* feat(types): 添加图片文件类型守卫函数

添加 ImageFileMetadata 类型和 isImageFile 类型守卫函数,用于检查文件是否为图片类型

* feat(ocr): 添加对OCR支持文件类型的类型定义和校验函数

添加SupportedOcrFileType类型和isSupportedOcrFileType校验函数
添加SupportedOcrFile类型和isSupportedOcrFile校验函数

* feat(ocr): 添加OCR功能支持

实现基于Tesseract的OCR功能,包括文件类型检查、服务接口和IPC通信
新增OCR相关类型定义和服务实现

* refactor(OcrService): 更新日志上下文为'main:OcrService'

* feat(ocr): 添加OCR服务基础功能

实现OCR服务的基础功能,通过调用window.api.ocr接口处理支持的文件类型

* feat(store): 添加ocr模块到redux store

* feat(ocr): 添加OCR功能支持及文件类型校验

添加OCR功能钩子useOcr,支持图片文件识别
添加不支持文件类型的错误提示国际化文案

* refactor(ocr): 重命名updatePreprocessProvider为updateOcrProvider以保持命名一致性

* feat(ocr): 添加设置图片OCR提供商的功能

* refactor(ocr): 统一OCR类型导入路径

将所有OCR相关类型从'@renderer/types/ocr'改为从'@renderer/types'或'@types'导入
优化DEFAULT_OCR_PROVIDER类型定义

* feat(store): 更新持久化存储版本并添加OCR配置迁移

添加137版本迁移逻辑,初始化OCR提供者和默认图像提供者配置

* feat(ocr): 添加OCR服务设置界面及提供商选择功能

实现OCR服务设置界面,包含图片OCR提供商的选择功能
修复ocr.ts中imageProvider的类型定义
添加相关国际化文本

* fix(ocr): 添加图像大小检查并优化错误处理

检查图像文件大小是否超过50MB限制
使用buffer读取文件替代直接路径识别
简化错误处理逻辑,直接抛出原始错误

* feat(OCR服务): 支持base64字符串作为OCR输入

扩展tesseractOcr函数以接受base64字符串或图像文件作为输入

* build: 将 tesseract.js 从 devDependencies 移至 dependencies

确保生产环境能正确使用 tesseract.js 功能

* refactor(ocr): 将Tesseract服务文件移动到tesseract子目录并更新配置

* refactor(TesseractService): 添加日志记录并更新worker配置

添加loggerService用于记录worker日志,并更新createWorker配置以使用自定义logger

* feat(i18n): 添加OCR功能的多语言支持

* refactor(preload): 移动OCR类型定义到共享类型文件

将OCR相关的类型定义(OcrProvider, OcrResult, SupportedOcrFile)从渲染进程类型文件移动到共享类型文件@types,以提高代码复用性和维护性

* refactor(ocr): 修改tesseractOcr返回完整识别结果而非仅文本

返回完整识别结果以便后续处理使用更多OCR信息,同时简化imageOcr中的条件判断逻辑

* fix(ocr): 修复文件类型与OCR提供者能力不匹配时的错误抛出位置

将错误抛出语句移至else分支

* refactor(ocr): 简化 DEFAULT_OCR_PROVIDER 的类型定义

* fix(ocr): 改进OCR处理中的消息管理和错误处理

在useOcr钩子中统一管理OCR处理的消息提示,并完善错误处理逻辑
移除TranslatePage中重复的消息管理代码,简化OCR处理流程

* feat(i18n): 添加OCR相关的错误和状态翻译文本

* fix(useOcr): 修复未支持文件类型错误抛出位置

将不支持的OCR文件类型错误抛出逻辑移至条件判断内

* refactor(ocr): ocrImage实现使用OcrService并更新日志上下文

将ocrImage函数从useOcr钩子移动到OcrService中,提高代码复用性
更新日志服务上下文从'main'改为'renderer'以更准确反映模块位置

* style(TabContainer): 移除多余的空行并保持代码整洁

* refactor(ocr): 简化OCR文件类型检查逻辑

使用现有的isImageFile函数替代冗余的类型检查逻辑,提高代码复用性

* fix: 将迁移错误日志从136更新为137

* feat(ocr): enhance Tesseract service with language support and worker management

- Added support for multiple Tesseract languages: Chinese (Simplified and Traditional) and English.
- Refactored Tesseract worker management into a class for better encapsulation and reuse.
- Introduced methods to dynamically determine language path based on IP country and manage worker lifecycle.

* update cn url

* support cn data

* change to asyn

* use register design mode

* add type

* use bind function

* refactor(ipc): 简化OCR处理程序参数

* refactor(ocr): 修改ocrProviderCapabilityRecord类型定义

允许只定义部分能力

* refactor(ocr): 将Tesseract相关配置移至服务内部

将语言列表和下载URL常量从共享配置移至Tesseract服务内部
使用常量定义图片大小阈值以提高可读性

* refactor(ocr): 统一使用 SupportedOcrFile 类型替换 FileMetadata

更新 OCR 服务及其 Tesseract 实现,使用 SupportedOcrFile 类型替代原有的 FileMetadata 类型,以提高类型安全性和一致性。同时在 OcrService 中添加重复注册的警告日志。

* refactor(ocr): 重构OCR类型定义以支持模型和API配置

将OCR提供者配置拆分为独立类型,增加模型能力记录和API配置类型检查
添加OCR处理程序类型定义,为未来扩展提供更好的类型支持

* refactor(OcrService): 移除重复的OcrHandler类型定义

已在@types中定义OcrHandler类型,移除重复定义以提高代码一致性

* refactor(ocr): 将OcrService移动到ocr目录下并更新引用路径

* feat(ocr): 添加OCR API客户端工厂及示例实现

实现OCR API客户端工厂模式,支持根据不同提供商创建对应的客户端
新增OcrBaseApiClient作为基础类,提供通用功能
添加OcrExampleApiClient作为示例实现
修改OcrService以使用新的客户端工厂

* refactor(ocr): 添加日志记录以跟踪OCR文件处理

在OCR服务中添加日志记录功能,便于跟踪文件处理过程

* fix(deps): 更新 tesseract.js 依赖并添加补丁文件

修复 tesseract.js 类型定义问题并添加语言常量支持

* refactor(ocr): 移除注释掉的tesseract语言映射代码

使用Tesseract.js的LanguageCode类型替代硬编码的语言列表,提高类型安全性

* feat(ocr): 添加 Tesseract OCR 配置类型

* refactor(OCR设置): 重命名OcrImageProviderSettings为OcrImageSettings并优化代码结构

* refactor(ocr): 将 Tesseract 相关类型移动到文件底部以改善代码组织

* feat(ocr): 添加 Tesseract OCR 提供者类型检查函数

* feat(ocr): 添加更新OCR提供者配置的功能

* feat: 添加OCR提供者钩子函数

实现useOcrProvider钩子用于获取和更新OCR提供者配置

* refactor(ocr): 修改removeOcrProvider参数为字符串id

简化removeOcrProvider方法的参数类型,直接使用字符串id进行过滤,提高代码简洁性

* refactor(ocr): 将内置OCR提供者从数组改为映射结构

重构OCR配置模块,使用映射结构存储内置OCR提供者以便于扩展和维护

* refactor(ocr): 将BUILTIN_OCR_PROVIDERS改为只读数组

使用Object.freeze确保数组不可变,提高代码安全性

* feat(ocr): 添加OCR提供者管理功能并改进错误处理

添加useOcrProviders钩子用于管理OCR提供者的添加和删除
当内置OCR提供者不存在时自动恢复默认配置
改进错误提示信息并增加国际化支持

* Revert "refactor(ocr): 将BUILTIN_OCR_PROVIDERS改为只读数组"

This reverts commit f23e37941a.

* feat(ocr): 为Tesseract OCR添加多语言支持配置

添加对简体中文、繁体中文和英文的语言支持配置,扩展OCR功能以满足多语言识别需求

* refactor(types): 将Tesseract.LanguageCode重命名为TesseractLangCode以提高可读性

* feat(OCR设置): 添加OCR提供商设置组件及状态管理

新增OCR提供商设置组件,支持显示当前选择的OCR提供商信息
在OCR图片设置中添加状态管理,同步提供商选择到父组件
添加Tesseract OCR设置组件,支持多语言选择(暂不可用)

* fix(DocProcessSettings): 修复OCR语言选择默认值问题

* feat(i18n): 添加OCR提供商相关错误和警告的翻译

* fix(ocr): 将 Tesseract 语言配置类型改为部分

* fix(ocr): 修复ocrImage函数未使用await导致的问题

* fix(ocr): 修复迁移配置中ocr状态的初始化方式

将分散的属性赋值改为对象整体赋值,避免潜在的属性丢失问题

* chore: 移除不再使用的@types/tesseract.js依赖

* refactor(OCR设置): 添加错误边界处理并移除无用注释

在OCR设置组件中添加ErrorBoundary以处理潜在错误
移除OcrTesseractSettings中的TODO注释

* build: 添加 sharp 依赖以支持图片处理功能

* refactor(ocr): 添加OCR图像预处理功能并优化TesseractService

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>

* refactor(ocr): 移除独立的灰度处理模块并改进预处理流程

将灰度处理功能直接集成到OCR预处理中,不再需要单独的image模块
添加normalise和threshold处理以提升OCR识别效果

* improve image preprocess

---------

Co-authored-by: beyondkmp <beyondkmp@gmail.com>
Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2025-08-26 00:13:24 +08:00
Phantom
3d7a64a11d
fix: stream output option should not be true when undefined (#9518)
fix: 修复streamOutput默认值设置问题
2025-08-25 20:41:26 +08:00
one
548916e6e1
feat(McpServersList): add a search bar (#9520)
* feat(McpServersList): add a search bar

* refactor: show different empty tips
2025-08-25 20:35:48 +08:00
one
ffa2eb57b1
refactor(Svg): relax sanitizer rules (#9522) 2025-08-25 20:35:32 +08:00
George·Dong
fd7d2b7580
fix(codetool): quote executable path to handle spaces (#9519)
* fix(cmd): quote executable path on Windows in command string

Wrap the executable path in double quotes when running on Windows sopaths containing spaces are handled correctly. Previously the base
command used an unquoted path which could break execution for users
whose install location includes spaces. This change only alters the
Windows branch to produce a quoted executable path while keeping the
non-Windows command unchanged.

* fix(codetool): quote bun paths in shell commands to spaces
2025-08-25 20:02:13 +08:00
SuYao
57702f545d
fix(OpenAIApiClient): 适配glm 4.5 toolcall (#9516)
* fix(OpenAIApiClient): update toolCalls handling to support dynamic index assignment

* refactor(OpenAIApiClient): streamline toolCalls management with reusable object structure
2025-08-25 19:49:52 +08:00
Phantom
1764be8a30
style(selection-toolbar): use primary color for selection toolbar (#9515)
* style(selection-toolbar): 统一使用主色变量并移除冗余样式

移除重复定义的颜色变量,统一使用 --color-primary 作为悬停状态的主色

* style: 移除重复的 --color-primary 变量定义
2025-08-25 19:49:23 +08:00
MyPrototypeWhat
ead0e22c60 [WIP]refactor(aiCore): restructure models and introduce ModelResolver
- Removed outdated ConfigManager and factory files to streamline model management.
- Added ModelResolver for improved model ID resolution, supporting both traditional and namespaced formats.
- Introduced DynamicProviderRegistry for dynamic provider management, enhancing flexibility in model handling.
- Updated index exports to reflect the new structure and maintain compatibility with existing functionality.
2025-08-25 19:46:51 +08:00
SuYao
e90b9a5a95
fix: unexpected anthropic model recognization (#9517)
* fix: unexpected anthropic model recognization

* refactor(RawStreamListenerMiddleware): replace model provider retrieval with API client instance check
2025-08-25 19:41:00 +08:00
Jason Young
a398010213
feat(QuickPanel): Soft hide and symbol toggle fix(#9326) (#9371)
* feat(QuickPanel): 软隐藏与符号切换;性能优化与清理

- 交互改进
  - 无匹配时“软隐藏”(不销毁、折叠且不拦截)
  - 回删修正后有结果自动展开
  - 输入新符号(/ 或 @)即切换到对应面板
- 性能优化
  - 搜索 50ms 防抖,降低高频输入开销
  - 按搜索词只构建一次模糊匹配正则
  - 使用 WeakMap 缓存每项拼音,避免重复转换
  - 折叠时不渲染列表、不注册全局键盘监听
- 代码清理
  - 删除 noMatchTimeoutRef 及其清理 effect
  - 删除未使用的 currentMessageId 引用
  - 移除重复的 setText('') 清空逻辑
- 保持不变
  - 多选/固定/清空等既有模型面板逻辑
  - ESC、外部点击、删除符号的关闭语义
  - 初始空查询直接展示可选项

* feat(quickpanel): 清除模型时同时删除@符号和搜索文本

- 在MentionModelsButton中记录触发信息
- 清除操作时根据触发类型删除@符号
- 仅处理输入触发的场景,按钮触发不需要处理

* refactor(quickpanel): 提取通用的删除@符号函数

- 创建 removeAtSymbolAndText 函数统一处理删除逻辑
- 支持两种模式:精确删除(ESC,使用searchText)和自动查找(清除)
- ESC和清除操作现在使用相同的核心逻辑
- 提高代码可维护性和一致性

* handleInput 中的 ctx.close('delete-symbol') 替换为本地 handleClose('delete-symbol'),确保 Backspace 删除触发符时同步受控输入值。

* - 统一 @ 清除逻辑:基于光标+搜索词的锚点定位
- 修复 ESC/清除误删邮箱/URL 中 @ 的问题
- 精确匹配优先:从光标左侧最近的 “@+searchText”
- 失败兜底:验证触发位 position,一致删整段,不一致仅删单个 @
- 清除按钮:未知搜索词时按光标左侧最近 @ 删至空格/换行
- 保持行为一致:ESC 与“清除模型”共用同一删除函数

* - 修复:无匹配时“清除”被过滤导致不可用的问题
- 方案:为“清除”项添加 alwaysVisible 标记,不参与过滤并始终置顶展示
- 过滤改造:QuickPanel 将列表拆分为固定项与普通项,仅对普通项执行包含/模糊/拼音过滤,最终合并渲染
- 折叠逻辑:collapsed 仅依据“非固定项”的匹配数;当仅剩“清除”时仍折叠隐藏,UI 不受影响
2025-08-25 16:06:14 +08:00
MyPrototypeWhat
417f90df3b feat(dependencies): update @ai-sdk/openai and @ai-sdk/provider-utils versions
- Upgraded `@ai-sdk/openai` to version 2.0.19 in `yarn.lock` and `package.json` for improved functionality and compatibility.
- Updated `@ai-sdk/provider-utils` to version 3.0.5, enhancing dependency management.
- Added `TypedToolError` type export in `index.ts` for better error handling.
- Removed unnecessary console logs in `webSearchPlugin` for cleaner code.
- Refactored type handling in `createProvider` to ensure proper type assertions.
- Enforced `topicId` as a required field in the `ModernAiProvider` configuration for stricter validation.
2025-08-25 16:04:50 +08:00
suyao
65c15c6d87
feat(aiCore): update ai-sdk-provider and enhance message conversion logic
- Upgraded `@openrouter/ai-sdk-provider` to version ^1.1.2 in package.json and yarn.lock for improved functionality.
- Enhanced `convertMessageToSdkParam` and related functions to support additional model parameters, improving message conversion for various AI models.
- Integrated logging for error handling in file processing functions to aid in debugging and user feedback.
- Added support for native PDF input handling based on model capabilities, enhancing file processing features.
2025-08-25 14:40:48 +08:00