亢奋猫
ebe2806467
feat: add cherryin provider ( #9681 )
...
* feat: add Zhipu logo and update related images
- Introduced a new Zhipu logo component in SVG format.
- Updated existing image assets for chatglm, zhipu, and zhipu_dark.
- Added a new zhipu image for search functionality.
* feat: integrate Cherryin signature generation
- Added a new integration for Cherryin, including a signature generation feature.
- Updated IPC channels to handle Cherryin requests.
- Introduced a new JavaScript file for Cherryin integration.
- Modified configuration files to include Cherryin client secrets and paths.
- Enhanced the ESLint and TypeScript configurations to accommodate the new integration.
* feat: add Zhipu search provider and logo integration
- Implemented a new ZhipuProvider for web search functionality.
- Added Zhipu logo to the WebSearchButton component.
- Updated WebSearchProviderFactory to include Zhipu as a search option.
- Enhanced error handling and logging for Zhipu search requests.
* feat: add cherryin provider
* fix: correct import path for CherryinAPIClient and update paintings state structure in migration
* chore: update version number to 1.5.8 in package.json
* feat: enhance model filtering in SelectModelPopup
- Added support for identifying free trial models in the model filtering logic.
- Updated the condition for determining free models to include both free and free trial models.
* refactor: update navigation to use query parameters for provider settings
- Modified navigation logic in FreeTrialModelTag and related utilities to use query parameters instead of state for provider identification.
- Removed unused useLocation hook in ProviderList component to streamline state management.
* fix: remove provider ID from search parameters on selection change in ProviderList
* refactor: remove free trial model references and update related logic
- Eliminated the FreeTrialTag component and its associated logic from ModelTagsWithLabel and SelectModelPopup.
- Updated model filtering to only consider free models without the free trial distinction.
- Removed translations and utility functions related to free trial models across multiple locales.
* fix: prevent mutation of read-only properties in web search provider
- Updated the addWebSearchProvider function to clone the provider object before pushing it to the state, preventing mutation of read-only properties.
- Enhanced the migration logic to update the apiKey for the zhipu web search provider if it exists.
* refactor: streamline provider selection and navigation logic
- Updated FreeTrialModelTag to directly navigate to provider settings using query parameters, removing unnecessary provider fetching.
- Simplified ProviderList by eliminating the EventEmitter for provider selection and ensuring search parameters are updated correctly.
2025-08-30 20:09:35 +08:00
beyondkmp
e1b6e46b2f
chore: update electron to 37.4.0 ( #9692 )
...
* update electron to 37.4.0
* change setBackgroundMaterial to auto
* update
2025-08-30 20:09:02 +08:00
Phantom
c5e746b6c6
fix: filter inline base64 image in messages summary ( #9687 )
...
* feat(markdown): 添加清理base64图片链接的功能
添加purifyMarkdownImages函数用于将Markdown中的base64图片链接替换为普通链接格式
* fix(utils): 清理markdown中的base64图片链接并应用到消息摘要
在ApiService中调用purifyMarkdownImages清理消息摘要中的base64图片链接
2025-08-30 18:24:44 +08:00
RieN 7z
e5327aba78
fix: cloudflare turnstile protection error ( #9663 )
2025-08-30 16:56:04 +08:00
one
d4e024f42d
refactor(CodeEditor): improve code editor props ( #9653 )
...
* refactor(CodeEditor): improve props for clarity
* refactor: update CodeEditor usage
* refactor: change unwrapped to wrapped
* fix: CodeViewer unwrap
* refactor: simplify code viewer border radius, add comments
2025-08-30 15:11:29 +08:00
Phantom
4f620aed8d
fix: code editor style ( #9667 )
...
* fix(markdown): 修复cm-announced导致滚动条出现大量空白区域的问题
* fix(CodeBlockView): 修复自动补全被隐藏的问题
* revert: preserve code viewer border radius
---------
Co-authored-by: one <wangan.cs@gmail.com>
2025-08-30 12:47:03 +08:00
defi-failure
8f5e89d69a
fix: replace hardcoded window size on first start ( #9669 )
...
* fix: replace hardcoded window size on first start
Signed-off-by: dev <verc20.dev@proton.me>
* fix: change MIN_WINDOW_WIDTH from 1080 to 960
---------
Signed-off-by: dev <verc20.dev@proton.me>
2025-08-30 09:38:39 +08:00
one
86635eef49
refactor(SvgPreview): add tag use and animate ( #9660 )
...
* refactor(SvgPreview): add tag use
* refactor(Svg): add tag animate
2025-08-29 18:29:52 +08:00
one
25c94dc2f0
fix: mcp tags overflow ( #9662 )
2025-08-29 17:29:27 +08:00
Konv Suu
c376426cdf
fix: useAssistant hook 导致快捷助手渲染问题 ( #9657 )
2025-08-29 17:19:22 +08:00
one
2f5cd78f7f
chore(deps): bump mermaid, shiki, tanstack, etc. ( #9658 )
...
* chore(deps): bump mermaid, shiki, tanstack, etc.
* refactor: update code languages, fix lint warnings
2025-08-29 16:17:55 +08:00
one
ffbbec879b
refactor: provider list and urlSchema popup ( #9626 )
...
* refactor: separate ProviderList from index
* refactor: add UrlSchemaInfoPopup
* refactor: improve popup style
2025-08-29 15:51:33 +08:00
Yongfu
e5416827cb
fix: missing model icons ( #9650 )
...
* Update models.ts
修复图标的缺失
* Update models.ts
解决CI
2025-08-29 14:17:11 +08:00
Pleasure1234
279ab8f808
feat: add batch delete functionality for files page ( #9636 )
...
* feat: add batch delete functionality for files page
- Add batch selection with checkboxes for individual files
- Implement batch delete operation with confirmation dialog
- Add select all/none functionality with indeterminate state
- Include safety check to prevent deleting files used in paintings
- Support multiple languages for batch operation UI text
- Exclude image files from batch operations per design requirements
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
* style: make batch delete popconfirm icon color consistent
- Add red color styling to batch delete popconfirm icon to match individual delete
- Update i18n translations for batch warning message across all locales
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
* refactor: improve batch delete UX and i18n translations
- Change "batch_operation" label to "Select All" across all languages
- Remove unused batch_warning translation for paintings
- Simplify delete confirmation messages to use single form
- Optimize batch delete to use Promise.all for better performance
🤖 Generated with [Claude Code](https://claude.ai/code )
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
2025-08-29 00:57:24 +08:00
one
144012b980
test: link and hyperlink ( #9638 )
...
* test: add tests for Link
* test: add tests for HyperLink
* refactor: use zod for citation data
* refactor: update import
2025-08-29 00:37:14 +08:00
one
95ff67e99c
fix(ImageViewer): prevent double menu, improve icons ( #9637 )
...
* fix(ImageViewer): prevent double menu, improve icons
* refactor: default icon size, standard error messages
2025-08-29 00:25:58 +08:00
one
649a2a645c
feat: capture iframe as image ( #9607 )
...
* refactor: update capture function signatures
* feat: capture html as png
* refactor: rename the ipc channel
* fix: stop propagate double clicks
* fix: improve conversion from title to filename
* refactor: improve capture, add more capture options
* fix: button icons
* refactor: add success message
2025-08-28 21:22:56 +08:00
beyondkmp
46e731dee0
chore: update electron-builder.yml to exclude unnecessary Tesseract.js core files from build ( #9631 )
2025-08-28 21:05:58 +08:00
Phantom
626a5ed4f1
fix: qwen-mt translate ( #9627 )
...
* feat(translate): 优化翻译助手类型定义和服务逻辑
重构翻译助手类型定义,将内容字段和模型校验逻辑分离
修改翻译服务以使用助手中的模型而非全局配置
为QwenMT模型添加特殊处理逻辑
* docs(i18n): 添加Qwen MT模型在对话中不可用的错误提示
* refactor(openai): 优化翻译选项处理逻辑
移除不必要的的TranslateAssistant类型断言并重构翻译选项的生成方式
* fix(types): 修复isTranslateAssistant类型检查逻辑
确保assistant.content为字符串类型时才返回true
2025-08-28 17:06:38 +08:00
Hualet Wang
8240493685
fix: not using system default terminal on deepin ( #9527 )
...
* fix: not using system default terminal on deepin
deepin-terminal is not in the `linuxTerminals` list, that will
cause xterm picked as the terminal to run code tool, which has
compatibility with Chinese charaters.
see: https://bbs.deepin.org.cn/post/290948
Signed-off-by: Hualet Wang <mr.asianwang@gmail.com>
* feat(codetool): add support for deepin-terminal
---------
Signed-off-by: Hualet Wang <mr.asianwang@gmail.com>
Co-authored-by: GeorgeDong32 <GeorgeDong32@qq.com>
2025-08-28 16:52:06 +08:00
Phantom
f95b9cef77
feat: System (MacOS & Windows) OCR ( #9572 )
...
* build: 添加 macOS 系统 OCR 作为可选依赖
* refactor: 移动TesseractService
* feat(ocr): 添加MacOS Vision OCR支持并优化类型定义
添加对MacOS Vision OCR的支持,同时重构OCR相关类型定义以提升可维护性。新增PDF文件元数据类型为后续功能做准备。
* refactor(types): 重命名 isImageFile 为 isImageFileMetadata 以更准确描述功能
* refactor(ocr): 更新导入
* feat(ocr): 实现MacOS Vision OCR服务并重构OCR基础结构
添加MacOcrService以支持MacOS Vision OCR功能
创建OcrBaseService作为OCR服务的基类
清理MacOS OCR配置中的冗余字段
* fix(store): 更新持久化存储版本至138并添加MAC OCR提供者
添加内置OCR提供者支持并清空翻译输入框
* chore: 更新 @cherrystudio/mac-system-ocr 依赖至 0.2.4 版本
* feat(ocr): 添加 macOS 原生 OCR 服务支持
添加 macOS 原生 OCR 服务作为内置 OCR 提供商
在设置页面显示不可配置提示
添加相关 logo 和翻译文本
* build: 将 @cherrystudio/mac-system-ocr 从可选依赖移至常规依赖
* fix(ocr): 临时使用any类型替代平台特定依赖的类型定义
为了避免在Linux上运行类型检查CI时抛出错误,暂时将MacOCR属性的类型从平台特定依赖的类型定义改为any类型
* refactor(build): 将mac-system-ocr移至optionalDependencies并更新vite配置
将@cherrystudio/mac-system-ocr从dependencies移至optionalDependencies
更新electron.vite.config.ts中的external配置以包含该依赖
* feat(OCR设置): 根据平台过滤OCR提供商选项
添加平台检测逻辑,在非Mac平台隐藏Mac内置OCR提供商选项
* feat(OCR): 添加非MacOS系统的错误提示
在OCR图片设置中添加对非MacOS系统的错误提示,当用户尝试在非Mac系统上使用OCR功能时显示错误标签
* feat(i18n): 添加 OCR 相关多语言翻译
为 OCR 功能添加错误提示和配置项的多语言翻译,包括非 MacOS 系统提示和无配置项提示
* fix(MacOcrService): 忽略macOS专属模块的类型检查错误
添加@ts-ignore注释以避免在非macOS平台上的类型检查错误,该模块仅在macOS上可用
* build: 添加 @napi-rs/system-ocr 依赖以支持OCR功能
* chore: 移除未使用的mac-system-ocr依赖
* refactor(ocr): 将 MacOS OCR 重构为跨平台的系统 OCR
重构 OCR 服务,将原本仅支持 MacOS 的 OCR 功能扩展为支持 Windows 和 MacOS 的系统 OCR
更新相关类型定义、配置和界面适配
* feat(hooks): 添加设置图片OCR提供商的功能
* refactor(ocr): 重构OCR提供者相关逻辑,优化代码结构
- 将OCR提供者相关工具函数和hook合并到useOcrProvider中
- 替换mac提供者为system提供者
- 优化OCR设置界面的错误处理和UI展示
- 删除不再使用的ocr.ts工具文件
* refactor(OCR设置): 移除多余的SettingGroup包装并优化provider设置逻辑
移除OcrSettings中多余的SettingGroup包装,将主题样式直接应用于OcrProviderSettings组件
优化OcrProviderSettings逻辑,对于system provider直接返回null
* fix(i18n): 移除OCR服务中不可配置项的翻译并更新系统OCR支持提示
* fix(ocr): 根据系统平台设置默认OCR提供商
在Windows和Mac平台上使用系统OCR作为默认提供商,其他平台继续使用Tesseract
* build: 从外部依赖中移除 @cherrystudio/mac-system-ocr
* fix(i18n): 更新多语言OCR相关翻译
* fix(store): 在迁移配置中移除翻译输入的清空操作
* refactor(hooks): 将 getOcrProviderLogo 重命名为 OcrProviderLogo 并改为组件形式
将 useOcrProviders 中的 getOcrProviderLogo 函数重构为 OcrProviderLogo 组件
更新 OcrProviderSettings 中对应的调用方式
* support jpg
* refactor(ocr): 重构OCR服务基础结构并支持多语言配置
重构OCR基础服务类,提取公共接口为抽象类
为系统OCR和Tesseract服务添加多语言配置支持
* refactor(ocr): 重构OCR类型定义以提高可维护性
将OcrProviderConfig拆分为基础配置和具体实现配置类型
优化类型结构以更清晰地区分不同OCR提供者的配置
* feat(组件): 新增错误标签组件 ErrorTag
* refactor(ocr): 替换自定义标签组件为ErrorTag组件以简化代码
* fix(ocr): 在macOS下忽略语言参数
* feat(组件): 添加警告标签组件用于显示警告信息
* feat(ocr): 添加系统OCR支持并优化语言配置
- 新增系统OCR设置组件,支持Windows和MacOS平台
- 为系统OCR添加语言选择功能,Windows需配置语言包
- 创建SuccessTag组件用于显示配置状态
- 统一OCR语言设置相关翻译键名
- 修复系统OCR在非Windows/Mac平台下的显示问题
* feat(i18n): 添加 OCR 设置页面的多语言支持
为 OCR 设置页面添加了新的多语言翻译,包括支持的语言列表和系统 OCR 的相关提示信息
* feat(ocr): 支持自定义 Tesseract OCR 语言选择
添加 Tesseract OCR 语言映射配置和动态语言选择功能
在设置界面实现多语言选择器,支持用户自定义 OCR 语言
更新相关类型定义和工具提示信息
* docs(i18n): 为Tesseract OCR添加自定义语言支持提示文本
* fix(i18n): 移除OCR服务中临时语言支持提示
* fix(ocr): 修复OCR服务未传递provider配置的问题
* fix(ocr): 修复OCR服务未传递provider配置的问题
* fix(TesseractService): 修复worker没有显式dispose的问题
* feat(拖拽): 在useDrag钩子中暴露setIsDragging方法
允许外部组件直接控制拖拽状态,用于在TranslatePage中处理文件拖放时重置拖拽状态
* feat(i18n): 更新输入框占位文本以支持OCR功能
* fix(ocr): 添加错误处理并记录日志以改进Tesseract服务
在TesseractService中添加错误处理回调函数,捕获并抛出worker创建过程中的错误
同时增加调试日志以跟踪语言数组和worker创建过程
* refactor(ocr): 重构OCR状态管理,使用ID引用图像提供者并添加选择器
将imageProvider字段改为imageProviderId以简化状态管理
添加getImageProvider选择器方便获取当前图像提供者
* update cn data
* refactor(ocr): 重构OCR提供者管理逻辑,使用自定义hook统一处理
- 将OCR提供者状态管理从Redux迁移到自定义hook useOcrProviders
- 修复默认OCR提供者初始化问题
- 优化OCR图片识别逻辑,使用useCallback提升性能
* fix(ocr): 修复Tesseract worker初始化错误处理逻辑
重构worker初始化流程,使用Promise处理错误而非全局变量
修正非CN地区语言包下载URL为空的问题
* fix(ocr): 修复url
* feat(OCR设置): 在Tesseract语言选择器中添加自定义标签渲染
添加CustomTag组件以禁用默认的关闭操作
* refactor(translate): 优化拖拽上传文件的hooks调用顺序
将useDrag hooks的声明移到使用位置附近,提高代码可读性
* perf(ocr): 移除不必要的await提升图像预处理性能
* feat(translate): 添加文本文件类型检查并优化文件处理逻辑
在翻译页面中增加对文本文件类型的检查,避免处理非文本文件。同时优化文件处理流程,包括错误处理和加载状态管理。
* feat(i18n): 添加文件类型检查错误的多语言翻译
* docs(i18n): 更新输入框占位符文本以更清晰描述支持的功能
---------
Co-authored-by: beyondkmp <beyondkmp@gmail.com>
2025-08-28 15:28:27 +08:00
one
168cc36410
fix(i18n): backup/restore progress ( #9622 )
2025-08-28 14:26:45 +08:00
Teo
2dbe9c1e0e
feat(Link): add hyperlink tooltips ( #9620 )
2025-08-28 11:54:50 +08:00
Phantom
e222ba5459
fix: missing dependency ( #9615 )
...
fix: 修复依赖缺失
2025-08-28 11:52:10 +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
SuYao
72f4584b0f
fix(aihubmix): gemini image generation ( #9601 )
2025-08-27 16:26:46 +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
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
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
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
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