Commit Graph

4872 Commits

Author SHA1 Message Date
one
cd1b0e01a0
fix: add provider check in isMandatoryWebSearchModel (#9398)
* fix: add provider check in isMandatoryWebSearchModel

* Fix: Add provider check in isMandatoryWebSearchModel

The isMandatoryWebSearchModel function was throwing an error when the provider was undefined. This change adds a check to ensure the provider exists before accessing its properties, similar to how it's handled in isWebSearchModel.

The position of the check has also been moved to be between the provider and modelId initializations for better code flow.

---------

Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
2025-08-22 09:09:21 +08:00
Phantom
44b2d09e63
fix: throw error when translate language detection failed (#9393)
* docs(ApiService): 为语言检测函数添加详细注释并修改错误处理

移除冗余的try-catch块,改为依赖shouldThrow参数控制错误抛出

* fix(翻译动作): 添加语言检测错误处理

捕获语言检测时的异常并记录错误日志,防止未处理的异常导致应用崩溃

* docs(ApiService): 修正语言检测函数的返回注释说明

原注释说明检测失败会返回空字符串,实际实现会抛出错误,修正注释以反映实际行为

* fix: 移除语言检测中多余的或空字符串检查
2025-08-22 00:05:04 +08:00
Phantom
c7dcbdcb5b
fix: gpt-oss should support temperature and topP (#9390)
* fix: 修复OpenAI推理模型温度控制判断逻辑

添加isOpenAIOpenWeightModel检查以排除开源权重模型

* fix(openai): 修正开发者角色设置条件逻辑

修改系统消息中开发者角色设置的条件判断,增加对OpenAIOpenWeightModel的检查
2025-08-21 23:51:36 +08:00
Phantom
daaf685c9e
feat(TopicsTab): double click topic name to edit (#9382)
* feat(TopicsTab): 添加双击话题名称开始编辑功能

* feat(话题标签): 添加通过弹窗重命名话题的功能

* refactor(TopicsTab): 移除未使用的topicEdit参数

* style(TopicsTab): 调整主题名称容器的样式和输入框边框

移除主题编辑输入框的边框和阴影效果,并设置固定高度

* feat(i18n): 添加话题重命名提示文本并支持在弹窗中显示

为话题编辑功能添加多语言提示文本,说明双击可快速重命名
在PromptPopup组件中新增extraNode属性以支持显示额外提示信息

* docs(i18n): 为话题重命名提示添加"提示"前缀
2025-08-21 23:46:30 +08:00
one
9c2a88179b
refactor: increase dropdown menu maxHeight (#9279) 2025-08-21 23:43:12 +08:00
Yuhang
a2d24a5cda
fix: incorrect default avatar casing in custom provider (#9384)
* fix: incorrect default avatar casing in custom provider

* add background color to default avatar in custom provider

distinction among providers.

* set ProviderInitialsLogo text color to white

添加完背景色后发现,模型列表中默认头像字体始终为白色,而编辑提供商时默认头像字体颜色会随主题色而变,黑色字体某些背景色下不清晰(比如a),所以改成始终白色

* fix: default avatar fallback when no text is entered

-设置背景色后发现,未输入文本时的背景色是根据上一个背景色继续保持的,该情况下回退到默认背景颜色
-回退后白色字体又看不清,该情况下字体颜色回退到黑色
-最终效果就是未输入文本时显示的默认头像回退到与之前一致
2025-08-21 19:54:48 +08:00
one
4191d878f2
fix: do not reset citation block (#9383)
* fix: do not reset citation block id

* refactor: disable external websearch for mandatory websearch models

* refactor: predicate

* refactor: include openrouter perplexity
2025-08-21 16:59:04 +08:00
Chen Tao
1c0e29f029
fix: knowledge encrypted (#9385) 2025-08-21 16:58:16 +08:00
Phantom
25d3b519d9
fix(translate): fix translating state management (#9387)
* fix(translate): 修复翻译状态管理逻辑

调整翻译状态设置的位置,确保在翻译开始和结束时正确更新状态

* fix(translate): 添加缺失的setTranslating属性

* fix(translate): 去除检测语言结果中的空格

检测语言返回的结果可能包含多余空格,导致后续处理出现问题。通过trim()去除前后空格确保结果干净
2025-08-21 16:48:22 +08:00
kangfenmao
39b1332e49 feat(DraggableList): add listProps support for custom list configurations
- Enhanced DraggableList component to accept listProps, allowing for customization of the Ant Design List component.
- Updated MCPSettings to utilize the new listProps feature, providing a custom empty state message when no servers are available.
2025-08-21 15:14:27 +08:00
Phantom
0da122281e
fix(AttachmentButton): Add selection state to prevent repeated file selection triggering (#9379)
fix(AttachmentButton): 添加选择状态防止重复触发文件选择

添加 selecting 状态变量以防止在文件选择过程中重复触发选择操作,避免潜在的文件选择窗口冲突
2025-08-21 15:09:39 +08:00
Phantom
4615e97ad5
fix(translate): improve auto translate language detection (#9375)
fix(translate): 调整语言检测阈值并增加回退逻辑

当文本较短时使用LLM检测语言,较长时优先使用franc检测
当franc检测失败时回退到LLM检测
同时将LLM检测的文本长度限制从50提高到100
2025-08-21 14:55:11 +08:00
beyondkmp
4dabc214f2
feat: enhance file extension handling in Inputbar (#9269)
* feat: add isTextFile functionality and improve file selection handling

- Introduced a new IPC channel for checking if a file is a text file.
- Implemented isTextFile method in FileStorage service to determine file type based on content.
- Enhanced AttachmentButton to filter selected files based on text file validation.
- Updated translations to include support for displaying unsupported file counts across multiple languages.
- Added utility functions for text file validation and filtering in file utilities.

* refactor(FileStorage): replace hardcoded buffer size with constant for improved readability

* restore yarn lock

* add isbinaryfile dep

* refactor: 整理导入顺序

* fix(preload): 为isTextFile方法添加返回类型Promise<boolean>

* refactor(FileManager): update getSafePath to use file metadata for path retrieval

- Modified getSafePath method to utilize the path from file metadata instead of a hardcoded file path.
- Enhanced handling for files not stored in the file storage system.

* refactor(FileUtilities): rename text file functions for clarity

- Updated function names from isTextFile to isSupportedFile and filterTextFiles to filterSupportedFiles to better reflect their purpose.
- Adjusted related imports and usages in AttachmentButton and PasteService components to align with the new naming conventions.

* fix drop files

* refactor(MarkdownStyles): remove last-child margin override; adjust MessageFooter margin and clean up unused code in MessageAttachments

* feat(Sidebar): add 'code_tools' icon and route; enhance CodeToolsPage layout with Navbar and improved provider filtering

* feat(CodeTools): add environment variable support for CLI tools; update UI to manage environment variables and enhance localization for related strings

* refactor(Sidebar): remove unused imports and code related to documentation; streamline sidebar functionality

* refactor(SvgPreview): use transparent container for SVG (#9294)

* refactor(SvgPreview): use transparent container for SVG

* test: fix snapshot

* refactor(CodeToolsService): replace npm package version fetching with direct API call; simplify command construction for installation

* chore: release v1.5.7-rc.1

* refactor(CodeToolsService): adjust command construction for Windows compatibility; streamline installation command handling

* refactor(Markdown): update disallowed elements to include 'script' for enhanced security

* feat: quick model (#9290)

* refactor(i18n): 将话题命名模型相关文案更新为摘要模型

更新所有语言文件中关于话题命名模型的文案,统一改为摘要模型,以反映功能的扩展和更通用的用途

* refactor(设置页面): 优化主题命名弹窗组件性能

使用useCallback和useMemo优化回调函数和渲染性能
将重复的JSX代码提取为独立组件

* feat(设置): 在模型设置中添加话题命名折叠面板

将话题命名设置从直接显示改为折叠面板形式,提升界面整洁度

* refactor(i18n): 重构话题命名相关翻译字段结构

* docs(i18n): 添加生成图像的高度、宽度和安全容忍度翻译占位符

* fix(settings): 修正主题命名弹窗中的翻译键名

* style(ui): 调整主题命名弹窗的间距和文本区域高度

移除多余的上下边距,并使用自适应高度的文本区域

* refactor(llm): 将 topicNamingModel 重命名为 summaryModel

更新相关函数、状态和测试用例以反映命名变更
增加迁移逻辑处理旧状态数据
更新持久化版本号至133

* fix(ApiService): 优先使用摘要模型替代默认模型

当获取摘要时,优先使用getSummaryModel()返回的模型,其次才是助手指定的模型或默认模型,以确保摘要生成的一致性

* docs(i18n): 更新摘要模型描述中的搜索关键词提炼

将"搜索结果摘要"修改为"搜索关键字提炼"以更准确描述功能

* fix(i18n): 更新多语言翻译文件中的摘要模型相关文本

* feat(i18n): 为摘要模型设置添加工具提示说明

添加摘要模型设置的工具提示,建议用户选择轻量模型而非思考模型

* refactor(i18n): 将摘要模型相关文案更新为快速模型

更新国际化文案和组件引用,将"摘要模型"统一改为"快速模型"以更准确描述功能用途

* feat(i18n): 将摘要模型重命名为快速模型并更新相关描述

* refactor(llm): 将summaryModel重命名为quickModel以提升语义清晰度

* test(api): 在ApiService测试中添加LlmState类型和awsBedrock配置

添加LlmState类型以满足类型检查要求,并补充awsBedrock的mock配置以完善测试覆盖

* Revert "feat(设置): 在模型设置中添加话题命名折叠面板"

This reverts commit 4d58c053da.

* refactor(settings): 重命名并移动 TopicNamingModalPopup 组件文件

将 TopicNamingModalPopup.tsx 重命名为 QuickModelPopup.tsx 并移动到相应目录

* refactor(QuickModelPopup): 优化主题命名设置布局和样式

移除 TopicNamingSettings 组件内联实现,直接整合到 Modal 中
调整间距和样式,提升视觉一致性
修复文本区域 onChange 去除换行的逻辑

* feat(模型设置): 在快速模型弹窗中添加重置按钮图标并调整布局

将重置按钮改为图标形式并内联显示,同时调整输入区域的高度样式

* docs(i18n): 更新快速模型相关翻译文本

* fix: 将迁移错误日志从133更新为134

* style(settings): 替换模型设置中的图标为Rocket图标以提升视觉一致性

* fix: unexpected quitting full screen mode (#9200)

* fix(Inputbar): 修正拼写错误,将expend改为expand

* fix: 修复Escape键事件冒泡问题并改进全屏处理

修复多个组件中Escape键事件未阻止冒泡的问题
添加全屏控制IPC通道
将全屏退出逻辑移至渲染进程处理
移除主进程中冗余的全屏退出处理代码

* fix(SelectModelPopup): 修复键盘事件处理并移除无效的useEffect

将键盘事件监听从window移动到Modal容器,避免事件冒泡问题
移除无效的useEffect并更新键盘事件类型定义

* fix(QuickPanel): 拦截window上的keydown事件

* fix(QuickPanel): 修复事件监听器移除时未使用相同参数的问题

* fix(TopView): 修复左侧导航栏布局崩坏问题

* fix: 修正变量名拼写错误,将expended改为expanded

* Revert "fix(SelectModelPopup): 修复键盘事件处理并移除无效的useEffect"

This reverts commit 4211780b95.

* feat: use quick model to detect translate language (#9315)

* refactor(语言检测): 移除翻译模型依赖,改用快速或默认模型

* feat(i18n): 添加希腊语翻译支持

* fix(i18n): 更新i18n

统一将翻译模型提示改为快速模型提示,优化多语言文件中的描述

* Revert "feat(i18n): 添加希腊语翻译支持"

This reverts commit 42613cb2e2.

* feat: add 'code_tools' to sidebar icons and update related components

* fix: KaTeX math engine render

* feat: 同步百炼服务器功能 (#9205)

* 同步百炼服务器功能

* cr修改

---------

Co-authored-by: yunze <yunze.wyz@alibaba-inc.com>

* fix(SelectionHook): improve validation for selected text range to handle empty strings and ensure valid extraction (#9329)

chore: update selection-hook dependency to version 1.0.10 in package.json and yarn.lock

* fix: web search references missing caused by early reset (#9328)

* feat(openai): handle special tokens for zhipu api (#9323)

* feat(openai): 添加对智谱特殊token的过滤处理

在OpenAIAPIClient中添加对智谱AI特殊token的过滤逻辑,避免不需要的token被输出

* docs(OpenAIApiClient): 添加注释

* refactor(zhipu): 重命名并更新智谱特殊token处理逻辑

将 ZHIPU_SPECIAL_TOKENS_TO_FILTER 重命名为 ZHIPU_RESULT_TOKENS 以更准确描述用途
修改智谱API特殊token处理逻辑,不再过滤而是用**标记结果token

* feat: support openai codex (#9332)

* support openai codex

* lint

* refactor: remove unused codeTools enum from constant.ts

* fix build

* fix lin

* fix: add support for qwenCode CLI tool and improve error handling in CodeToolsService

* fix: timeout memory leak (#9312)

* fix(MinappPopupContainer): 修复内存泄漏问题,清理未使用的定时器

在组件卸载时清理setTimeout定时器,避免潜在的内存泄漏

* fix(SelectModelButton): 修复模型选择后更新导致的卡顿问题

使用useRef存储定时器并在组件卸载时清理,避免内存泄漏

* fix(QuickPanel): 修复定时器未清理导致的内存泄漏问题

添加 clearSearchTimerRef 和 focusTimerRef 来管理定时器
在组件清理和状态变化时清理所有定时器

* fix(useInPlaceEdit): 修复编辑模式下定时器未清理的问题

添加清理定时器的逻辑,避免组件卸载时内存泄漏

* refactor(useKnowledge): 使用ref管理定时器并统一检查知识库逻辑

将分散的setTimeout调用统一为checkAllBases方法
使用useRef管理定时器并在组件卸载时清理

* fix(useScrollPosition): 修复滚动位置恢复时的内存泄漏问题

添加清理函数以清除未完成的定时器,防止组件卸载时内存泄漏

* fix(WebSearchProviderSetting): 清理定时器防止内存泄漏

在组件卸载时清理检查API有效性的定时器,避免潜在的内存泄漏问题

* fix(selection-toolbar): 修复选中文本时定时器未清理的问题

* fix(translate): 修复复制文本时定时器未清理的问题

添加 copyTimerRef 来管理复制操作的定时器,并在组件卸载时清理定时器

* fix(WebSearchSettings): 使用useRef管理订阅验证定时器以避免内存泄漏

* fix(MCPSettings): 修复定时器未清理导致的内存泄漏问题

添加 useRef 来存储定时器引用,并在组件卸载时清理定时器

* refactor(ThinkingBlock): 使用 useTemporaryValue 替换手动 setTimeout

移除手动设置的 setTimeout 来重置 copied 状态,改用 useTemporaryValue hook 自动处理

* refactor(ChatNavigation): 使用 useRef 替代 useState 管理定时器

简化定时器管理逻辑,避免不必要的状态更新

* fix(AddAssistantPopup): 清理创建助手时的定时器以避免内存泄漏

添加useEffect清理定时器,防止组件卸载时内存泄漏

* feat(hooks): 添加useTimer钩子管理定时器

实现一个自定义hook来集中管理setTimeout和setInterval定时器
自动在组件卸载时清理所有定时器防止内存泄漏

* refactor(Inputbar): 使用 useTimer 替换 setTimeout 实现延迟更新

将 setTimeout 替换为 useTimer 的自定义 setTimeoutTimer 方法,提高代码可维护性并统一计时器管理

* refactor(WindowFooter): 使用 useTimer 替换 setTimeout 以管理定时器

* docs(useTimer): 更新定时器hook的注释格式和描述

* feat(hooks): 为useTimer添加返回清理函数的功能

允许从setTimeoutTimer和setIntervalTimer返回清理函数,便于手动清除定时器

* refactor(ImportAgentPopup): 使用useTimer替换setTimeout以管理定时器

* refactor: 使用useTimer替代setTimeout以优化定时器管理

* refactor(SearchResults): 使用useTimer替换setTimeout以管理定时器

* refactor(消息组件): 使用useTimer替换setTimeout以管理定时器

* refactor: 使用useTimer替换setTimeout以优化定时器管理

* refactor(AssistantsDrawer): 使用useTimer替换setTimeout以优化定时器管理

* refactor(Inputbar): 使用useTimer替换setTimeout以优化定时器管理

* refactor(MCPToolsButton): 使用useTimer优化定时器管理

* refactor(QuickPhrasesButton): 使用useTimer替换setTimeout以优化定时器管理

* refactor(ChatFlowHistory): 使用useTimer替换setTimeout以管理定时器

* refactor(Message): 使用useTimer替换setTimeout以管理定时器

* refactor(MessageAnchorLine): 使用useTimer替换setTimeout以优化定时器管理

* refactor(MessageGroup): 使用useTimer替换setTimeout以优化定时器管理

* refactor(MessageMenubar): 使用 useTemporaryValue 替换手动 setTimeout 逻辑

* refactor(Messages): 使用 useTimer 优化定时器管理

* refactor(MessageTools): 使用useTimer替换setTimeout以管理定时器

* fix(SelectionBox): 修复鼠标移动时未清除定时器导致的内存泄漏

在鼠标移动事件处理中增加定时器清理逻辑,避免组件卸载时未清除定时器导致的内存泄漏问题

* refactor(ErrorBlock): 使用自定义hook替换setTimeout

使用useTimer中的setTimeoutTimer替代原生setTimeout,便于统一管理定时器

* refactor(GeneralSettings): 使用useTimer替换setTimeout以实现更好的定时器管理

* refactor(ShortcutSettings): 使用useTimer替换setTimeout以优化定时器管理

* refactor(AssistantModelSettings): 使用useTimer替换setTimeout以优化定时器管理

* refactor(DataSettings): 使用useTimer替换setTimeout以增强定时器管理

统一使用useTimer hook管理所有定时器操作,提高代码可维护性

* refactor(NutstoreSettings): 使用useTimer优化setTimeout管理

替换直接使用setTimeout为useTimer hook的setTimeoutTimer方法,提升定时器管理的可维护性

* refactor(MCPSettings): 使用useTimer替换setTimeout以提升代码可维护性

* refactor(ProviderSetting): 使用useTimer优化setTimeout管理

* refactor(ProviderSettings): 使用 useTimer 替换 setTimeout 以优化定时器管理

* refactor(InputBar): 使用useTimer替换setTimeout以实现更好的定时器管理

* refactor(MessageEditor): 使用useTimer替换setTimeout以管理定时器

使用自定义hook useTimer来替代原生setTimeout,便于统一管理和清理定时器

* docs(useTimer): 添加 useTimer hook 的使用示例和详细说明

* refactor(MinappPopupContainer): 使用useTimer替换setTimeout实现

替换直接使用setTimeout为自定义hook useTimer,简化组件清理逻辑

* refactor(AddAssistantPopup): 使用useTimer替换手动定时器管理

用useTimer钩子替代手动管理定时器,简化代码并提高可维护性

* refactor(WebSearchSettings): 使用 useTimer 替换手动定时器管理

移除手动管理的定时器逻辑,改用 useTimer hook 统一处理

* refactor(WebSearchProviderSetting): 使用自定义hook替代原生定时器

用useTimer hook替换原有的setTimeout和clearTimeout逻辑,提高代码可维护性

* refactor(translate): 使用 useTemporaryValue 替换手动实现的复制状态定时器

* refactor(SelectionToolbar): 使用 useTimer 钩子替换 setTimeout 和 clearTimeout

重构 SelectionToolbar 组件,使用自定义的 useTimer 钩子来管理定时器,提升代码可维护性
清理隐藏时的定时器逻辑,避免内存泄漏

* fix(Translate): update settings into db (#9305)

* fix(翻译): 修复设置没有储存到db的错误

* fix(translate): 修复自动检测方法设置更新失败的问题

添加错误处理逻辑,当更新自动检测方法设置失败时显示错误信息

* Fix AWS Bedrock models not receiving uploaded document content (#9337)

* Initial plan

* Add file content processing to AWS Bedrock client convertMessageToSdkParam method

Co-authored-by: caozhiyuan <3415285+caozhiyuan@users.noreply.github.com>

* Fix file content format to match other AI clients and update tests

Co-authored-by: caozhiyuan <3415285+caozhiyuan@users.noreply.github.com>

* Update src/renderer/src/aiCore/clients/aws/AwsBedrockAPIClient.ts

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: caozhiyuan <3415285+caozhiyuan@users.noreply.github.com>
Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>

* feat(migrate): initialize default assistant settings if not present (#9303)

* feat(migrate): update migration logic for version 134; initialize default assistant settings if not present

* Update src/renderer/src/store/migrate.ts

Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>

---------

Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>

* feat: support language aliases for code editor (#9336)

* feat(CodeEditor): support language aliases

* fix: mermaid

* refactor: lookup

* chore: sort package.json

* fix(SelectionHook): [macOS] add type safety to prevent crashes (#9354)

chore: update selection-hook dependency to version 1.0.11 in package.json and yarn.lock

* fix: sidebar code icon reset bug (#9307) (#9333)

* fix: 修复侧边栏重置时 Code 图标消失的问题 (#9307)

问题原因:
- types/index.ts 中的 SidebarIcon 类型定义缺少 'code_tools'
- 存在重复的类型定义和常量定义导致不一致

修复内容:
- 在 types/index.ts 的 SidebarIcon 类型中添加 'code_tools'
- 删除 minapps.ts 中重复的 DEFAULT_SIDEBAR_ICONS 常量
- 统一从 @renderer/types 导入 SidebarIcon 类型
- 删除 settings.ts 中重复的 SidebarIcon 类型定义

这确保了在导航栏设置为左侧时,点击侧边栏设置的重置按钮后,
Code 图标能够正确显示。

* refactor: 将侧边栏配置移至 config 目录

根据 code review 建议,将侧边栏相关配置从 store/settings.ts
移动到 config/sidebar.ts,使配置管理更加清晰。

改动内容:
- 创建 config/sidebar.ts 存放侧边栏配置常量
- 更新相关文件的导入路径
- 在 settings.ts 中重新导出以保持向后兼容
- 添加 REQUIRED_SIDEBAR_ICONS 常量便于未来扩展

这个改动保持了最小化原则,不影响现有功能。

* refactor: improve locate highlight animation (#9345)

* feat(utils): show weekday in date and datetime prompt variables (#9362)

* feat(utils): 优化日期时间变量替换格式

为 {{date}} 和 {{datetime}} 变量替换添加更详细的格式选项,包括星期、年月日和时间信息

* test(prompt): 更新测试中日期时间的本地化格式

* refactor(CodeToolsPage): simplify CLI tool change handling and optimize provider filtering logic

* fix(newMessage): reduce default display count from 20 to 10

* feat(AssistantService): introduce DEFAULT_ASSISTANT_SETTINGS for consistent assistant configuration and update migration logic for version 136

* chore: release v1.5.7-rc.2

* fix(Markdown/Link): set href to undefined when it's empty (#9343)

fix(Markdown/Link): 处理空链接时设置href为undefined

* fix(Inputbar): update file handling to use functional state update for setFiles

* refactor(file): update isSupportedFile function to accept filePath instead of FileMetadata for improved clarity and consistency in file handling

---------

Co-authored-by: icarus <eurfelux@gmail.com>
Co-authored-by: kangfenmao <kangfenmao@qq.com>
Co-authored-by: one <wangan.cs@gmail.com>
Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
Co-authored-by: alickreborn0 <i@guyi.me>
Co-authored-by: yunze <yunze.wyz@alibaba-inc.com>
Co-authored-by: fullex <106392080+0xfullex@users.noreply.github.com>
Co-authored-by: caozhiyuan <568022847@qq.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: caozhiyuan <3415285+caozhiyuan@users.noreply.github.com>
Co-authored-by: SuYao <sy20010504@gmail.com>
Co-authored-by: Jason Young <44939412+farion1231@users.noreply.github.com>
2025-08-21 14:19:51 +08:00
Phantom
ea6a1752e7
feat: reasoning effort cache (#9357)
* feat(useAssistant): 修改模型切换时推理努力值回退逻辑

当模型切换时,确保推理努力值回退到模型支持的第一个有效值,并默认开启思考模式。使用useRef优化设置引用,避免不必要的依赖。

* feat(assistant): 添加 reasoning_effort_cache 以保留思考模型设置

当从非思考模型切换回思考模型时,恢复上次使用的 reasoning_effort 值

* fix(assistant): 修复思考模式切换时缓存未正确更新的问题

* fix(useAssistant): 修复模型选项回退逻辑以支持推理模式

当启用推理模式时,回退到支持推理的选项,否则回退到默认选项

* docs(types): 完善 AssistantSettings 类型注释中的 TODO 说明
2025-08-21 14:18:19 +08:00
Phantom
062b3b0a33
feat: search translate history (#9342)
* feat(翻译历史): 添加搜索翻译历史UI

在翻译历史页面添加搜索框

* feat(翻译历史): 优化搜索功能并添加延迟渲染

- 将搜索逻辑提取为独立函数并使用useDeferredValue优化性能
- 重构类型命名和状态管理
- 格式化日期显示并移入memo计算

* feat(i18n): 为翻译历史添加搜索框占位文本

* refactor(translate): 移除未使用的InputRef引用和inputRef变量
2025-08-21 12:48:27 +08:00
beyondkmp
c5d8ec9c1a
chores: upgrade @types/node to version 22.17.1 and electron to version 37.3.1 in package.json and yarn.lock (#9364) 2025-08-21 12:48:12 +08:00
Phantom
1af4a2686b
fix(Markdown/Link): set href to undefined when it's empty (#9343)
fix(Markdown/Link): 处理空链接时设置href为undefined
2025-08-21 11:02:41 +08:00
kangfenmao
174b9bdc3d chore: release v1.5.7-rc.2 2025-08-21 10:59:55 +08:00
kangfenmao
84212d0b1d feat(AssistantService): introduce DEFAULT_ASSISTANT_SETTINGS for consistent assistant configuration and update migration logic for version 136 2025-08-21 10:57:56 +08:00
kangfenmao
6e9b77a97a fix(newMessage): reduce default display count from 20 to 10 2025-08-21 10:52:12 +08:00
kangfenmao
c93b96a03f refactor(CodeToolsPage): simplify CLI tool change handling and optimize provider filtering logic 2025-08-21 10:28:44 +08:00
Phantom
a671f95bee
feat(utils): show weekday in date and datetime prompt variables (#9362)
* feat(utils): 优化日期时间变量替换格式

为 {{date}} 和 {{datetime}} 变量替换添加更详细的格式选项,包括星期、年月日和时间信息

* test(prompt): 更新测试中日期时间的本地化格式
2025-08-21 10:03:07 +08:00
one
0e750c64db
refactor: improve locate highlight animation (#9345) 2025-08-21 08:42:20 +08:00
Jason Young
27eef50b9f
fix: sidebar code icon reset bug (#9307) (#9333)
* fix: 修复侧边栏重置时 Code 图标消失的问题 (#9307)

问题原因:
- types/index.ts 中的 SidebarIcon 类型定义缺少 'code_tools'
- 存在重复的类型定义和常量定义导致不一致

修复内容:
- 在 types/index.ts 的 SidebarIcon 类型中添加 'code_tools'
- 删除 minapps.ts 中重复的 DEFAULT_SIDEBAR_ICONS 常量
- 统一从 @renderer/types 导入 SidebarIcon 类型
- 删除 settings.ts 中重复的 SidebarIcon 类型定义

这确保了在导航栏设置为左侧时,点击侧边栏设置的重置按钮后,
Code 图标能够正确显示。

* refactor: 将侧边栏配置移至 config 目录

根据 code review 建议,将侧边栏相关配置从 store/settings.ts
移动到 config/sidebar.ts,使配置管理更加清晰。

改动内容:
- 创建 config/sidebar.ts 存放侧边栏配置常量
- 更新相关文件的导入路径
- 在 settings.ts 中重新导出以保持向后兼容
- 添加 REQUIRED_SIDEBAR_ICONS 常量便于未来扩展

这个改动保持了最小化原则,不影响现有功能。
2025-08-21 00:49:42 +08:00
fullex
8297546ed7
fix(SelectionHook): [macOS] add type safety to prevent crashes (#9354)
chore: update selection-hook dependency to version 1.0.11 in package.json and yarn.lock
2025-08-21 00:21:14 +08:00
one
4e54733d38
feat: support language aliases for code editor (#9336)
* feat(CodeEditor): support language aliases

* fix: mermaid

* refactor: lookup

* chore: sort package.json
2025-08-21 00:03:27 +08:00
SuYao
bd9b34b9a0
feat(migrate): initialize default assistant settings if not present (#9303)
* feat(migrate): update migration logic for version 134; initialize default assistant settings if not present

* Update src/renderer/src/store/migrate.ts

Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>

---------

Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
2025-08-21 00:01:03 +08:00
caozhiyuan
b1e843973c
Fix AWS Bedrock models not receiving uploaded document content (#9337)
* Initial plan

* Add file content processing to AWS Bedrock client convertMessageToSdkParam method

Co-authored-by: caozhiyuan <3415285+caozhiyuan@users.noreply.github.com>

* Fix file content format to match other AI clients and update tests

Co-authored-by: caozhiyuan <3415285+caozhiyuan@users.noreply.github.com>

* Update src/renderer/src/aiCore/clients/aws/AwsBedrockAPIClient.ts

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: caozhiyuan <3415285+caozhiyuan@users.noreply.github.com>
Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
2025-08-20 18:26:38 +08:00
Phantom
11b130736c
fix(Translate): update settings into db (#9305)
* fix(翻译): 修复设置没有储存到db的错误

* fix(translate): 修复自动检测方法设置更新失败的问题

添加错误处理逻辑,当更新自动检测方法设置失败时显示错误信息
2025-08-20 17:42:33 +08:00
Phantom
25531ecd76
fix: timeout memory leak (#9312)
* fix(MinappPopupContainer): 修复内存泄漏问题,清理未使用的定时器

在组件卸载时清理setTimeout定时器,避免潜在的内存泄漏

* fix(SelectModelButton): 修复模型选择后更新导致的卡顿问题

使用useRef存储定时器并在组件卸载时清理,避免内存泄漏

* fix(QuickPanel): 修复定时器未清理导致的内存泄漏问题

添加 clearSearchTimerRef 和 focusTimerRef 来管理定时器
在组件清理和状态变化时清理所有定时器

* fix(useInPlaceEdit): 修复编辑模式下定时器未清理的问题

添加清理定时器的逻辑,避免组件卸载时内存泄漏

* refactor(useKnowledge): 使用ref管理定时器并统一检查知识库逻辑

将分散的setTimeout调用统一为checkAllBases方法
使用useRef管理定时器并在组件卸载时清理

* fix(useScrollPosition): 修复滚动位置恢复时的内存泄漏问题

添加清理函数以清除未完成的定时器,防止组件卸载时内存泄漏

* fix(WebSearchProviderSetting): 清理定时器防止内存泄漏

在组件卸载时清理检查API有效性的定时器,避免潜在的内存泄漏问题

* fix(selection-toolbar): 修复选中文本时定时器未清理的问题

* fix(translate): 修复复制文本时定时器未清理的问题

添加 copyTimerRef 来管理复制操作的定时器,并在组件卸载时清理定时器

* fix(WebSearchSettings): 使用useRef管理订阅验证定时器以避免内存泄漏

* fix(MCPSettings): 修复定时器未清理导致的内存泄漏问题

添加 useRef 来存储定时器引用,并在组件卸载时清理定时器

* refactor(ThinkingBlock): 使用 useTemporaryValue 替换手动 setTimeout

移除手动设置的 setTimeout 来重置 copied 状态,改用 useTemporaryValue hook 自动处理

* refactor(ChatNavigation): 使用 useRef 替代 useState 管理定时器

简化定时器管理逻辑,避免不必要的状态更新

* fix(AddAssistantPopup): 清理创建助手时的定时器以避免内存泄漏

添加useEffect清理定时器,防止组件卸载时内存泄漏

* feat(hooks): 添加useTimer钩子管理定时器

实现一个自定义hook来集中管理setTimeout和setInterval定时器
自动在组件卸载时清理所有定时器防止内存泄漏

* refactor(Inputbar): 使用 useTimer 替换 setTimeout 实现延迟更新

将 setTimeout 替换为 useTimer 的自定义 setTimeoutTimer 方法,提高代码可维护性并统一计时器管理

* refactor(WindowFooter): 使用 useTimer 替换 setTimeout 以管理定时器

* docs(useTimer): 更新定时器hook的注释格式和描述

* feat(hooks): 为useTimer添加返回清理函数的功能

允许从setTimeoutTimer和setIntervalTimer返回清理函数,便于手动清除定时器

* refactor(ImportAgentPopup): 使用useTimer替换setTimeout以管理定时器

* refactor: 使用useTimer替代setTimeout以优化定时器管理

* refactor(SearchResults): 使用useTimer替换setTimeout以管理定时器

* refactor(消息组件): 使用useTimer替换setTimeout以管理定时器

* refactor: 使用useTimer替换setTimeout以优化定时器管理

* refactor(AssistantsDrawer): 使用useTimer替换setTimeout以优化定时器管理

* refactor(Inputbar): 使用useTimer替换setTimeout以优化定时器管理

* refactor(MCPToolsButton): 使用useTimer优化定时器管理

* refactor(QuickPhrasesButton): 使用useTimer替换setTimeout以优化定时器管理

* refactor(ChatFlowHistory): 使用useTimer替换setTimeout以管理定时器

* refactor(Message): 使用useTimer替换setTimeout以管理定时器

* refactor(MessageAnchorLine): 使用useTimer替换setTimeout以优化定时器管理

* refactor(MessageGroup): 使用useTimer替换setTimeout以优化定时器管理

* refactor(MessageMenubar): 使用 useTemporaryValue 替换手动 setTimeout 逻辑

* refactor(Messages): 使用 useTimer 优化定时器管理

* refactor(MessageTools): 使用useTimer替换setTimeout以管理定时器

* fix(SelectionBox): 修复鼠标移动时未清除定时器导致的内存泄漏

在鼠标移动事件处理中增加定时器清理逻辑,避免组件卸载时未清除定时器导致的内存泄漏问题

* refactor(ErrorBlock): 使用自定义hook替换setTimeout

使用useTimer中的setTimeoutTimer替代原生setTimeout,便于统一管理定时器

* refactor(GeneralSettings): 使用useTimer替换setTimeout以实现更好的定时器管理

* refactor(ShortcutSettings): 使用useTimer替换setTimeout以优化定时器管理

* refactor(AssistantModelSettings): 使用useTimer替换setTimeout以优化定时器管理

* refactor(DataSettings): 使用useTimer替换setTimeout以增强定时器管理

统一使用useTimer hook管理所有定时器操作,提高代码可维护性

* refactor(NutstoreSettings): 使用useTimer优化setTimeout管理

替换直接使用setTimeout为useTimer hook的setTimeoutTimer方法,提升定时器管理的可维护性

* refactor(MCPSettings): 使用useTimer替换setTimeout以提升代码可维护性

* refactor(ProviderSetting): 使用useTimer优化setTimeout管理

* refactor(ProviderSettings): 使用 useTimer 替换 setTimeout 以优化定时器管理

* refactor(InputBar): 使用useTimer替换setTimeout以实现更好的定时器管理

* refactor(MessageEditor): 使用useTimer替换setTimeout以管理定时器

使用自定义hook useTimer来替代原生setTimeout,便于统一管理和清理定时器

* docs(useTimer): 添加 useTimer hook 的使用示例和详细说明

* refactor(MinappPopupContainer): 使用useTimer替换setTimeout实现

替换直接使用setTimeout为自定义hook useTimer,简化组件清理逻辑

* refactor(AddAssistantPopup): 使用useTimer替换手动定时器管理

用useTimer钩子替代手动管理定时器,简化代码并提高可维护性

* refactor(WebSearchSettings): 使用 useTimer 替换手动定时器管理

移除手动管理的定时器逻辑,改用 useTimer hook 统一处理

* refactor(WebSearchProviderSetting): 使用自定义hook替代原生定时器

用useTimer hook替换原有的setTimeout和clearTimeout逻辑,提高代码可维护性

* refactor(translate): 使用 useTemporaryValue 替换手动实现的复制状态定时器

* refactor(SelectionToolbar): 使用 useTimer 钩子替换 setTimeout 和 clearTimeout

重构 SelectionToolbar 组件,使用自定义的 useTimer 钩子来管理定时器,提升代码可维护性
清理隐藏时的定时器逻辑,避免内存泄漏
2025-08-20 16:38:13 +08:00
beyondkmp
332ba5d678
feat: support openai codex (#9332)
* support openai codex

* lint

* refactor: remove unused codeTools enum from constant.ts

* fix build

* fix lin

* fix: add support for qwenCode CLI tool and improve error handling in CodeToolsService
2025-08-20 15:46:44 +08:00
Phantom
1da1721ec2
feat(openai): handle special tokens for zhipu api (#9323)
* feat(openai): 添加对智谱特殊token的过滤处理

在OpenAIAPIClient中添加对智谱AI特殊token的过滤逻辑,避免不需要的token被输出

* docs(OpenAIApiClient): 添加注释

* refactor(zhipu): 重命名并更新智谱特殊token处理逻辑

将 ZHIPU_SPECIAL_TOKENS_TO_FILTER 重命名为 ZHIPU_RESULT_TOKENS 以更准确描述用途
修改智谱API特殊token处理逻辑,不再过滤而是用**标记结果token
2025-08-20 15:11:07 +08:00
one
f8120c2ebb
fix: web search references missing caused by early reset (#9328) 2025-08-20 13:25:22 +08:00
fullex
cdca8c0ed7
fix(SelectionHook): improve validation for selected text range to handle empty strings and ensure valid extraction (#9329)
chore: update selection-hook dependency to version 1.0.10 in package.json and yarn.lock
2025-08-20 13:00:56 +08:00
alickreborn0
4f2b1e23a9
feat: 同步百炼服务器功能 (#9205)
* 同步百炼服务器功能

* cr修改

---------

Co-authored-by: yunze <yunze.wyz@alibaba-inc.com>
2025-08-20 11:26:38 +08:00
kangfenmao
47f49532c6 fix: KaTeX math engine render 2025-08-20 11:12:42 +08:00
kangfenmao
cffaf99b17 feat: add 'code_tools' to sidebar icons and update related components 2025-08-20 10:56:44 +08:00
Phantom
973ece9eb9
feat: use quick model to detect translate language (#9315)
* refactor(语言检测): 移除翻译模型依赖,改用快速或默认模型

* feat(i18n): 添加希腊语翻译支持

* fix(i18n): 更新i18n

统一将翻译模型提示改为快速模型提示,优化多语言文件中的描述

* Revert "feat(i18n): 添加希腊语翻译支持"

This reverts commit 42613cb2e2.
2025-08-20 10:07:10 +08:00
Phantom
a21fc91915
fix: unexpected quitting full screen mode (#9200)
* fix(Inputbar): 修正拼写错误,将expend改为expand

* fix: 修复Escape键事件冒泡问题并改进全屏处理

修复多个组件中Escape键事件未阻止冒泡的问题
添加全屏控制IPC通道
将全屏退出逻辑移至渲染进程处理
移除主进程中冗余的全屏退出处理代码

* fix(SelectModelPopup): 修复键盘事件处理并移除无效的useEffect

将键盘事件监听从window移动到Modal容器,避免事件冒泡问题
移除无效的useEffect并更新键盘事件类型定义

* fix(QuickPanel): 拦截window上的keydown事件

* fix(QuickPanel): 修复事件监听器移除时未使用相同参数的问题

* fix(TopView): 修复左侧导航栏布局崩坏问题

* fix: 修正变量名拼写错误,将expended改为expanded

* Revert "fix(SelectModelPopup): 修复键盘事件处理并移除无效的useEffect"

This reverts commit 4211780b95.
2025-08-19 21:32:53 +08:00
Phantom
80dfcf05a7
feat: quick model (#9290)
* refactor(i18n): 将话题命名模型相关文案更新为摘要模型

更新所有语言文件中关于话题命名模型的文案,统一改为摘要模型,以反映功能的扩展和更通用的用途

* refactor(设置页面): 优化主题命名弹窗组件性能

使用useCallback和useMemo优化回调函数和渲染性能
将重复的JSX代码提取为独立组件

* feat(设置): 在模型设置中添加话题命名折叠面板

将话题命名设置从直接显示改为折叠面板形式,提升界面整洁度

* refactor(i18n): 重构话题命名相关翻译字段结构

* docs(i18n): 添加生成图像的高度、宽度和安全容忍度翻译占位符

* fix(settings): 修正主题命名弹窗中的翻译键名

* style(ui): 调整主题命名弹窗的间距和文本区域高度

移除多余的上下边距,并使用自适应高度的文本区域

* refactor(llm): 将 topicNamingModel 重命名为 summaryModel

更新相关函数、状态和测试用例以反映命名变更
增加迁移逻辑处理旧状态数据
更新持久化版本号至133

* fix(ApiService): 优先使用摘要模型替代默认模型

当获取摘要时,优先使用getSummaryModel()返回的模型,其次才是助手指定的模型或默认模型,以确保摘要生成的一致性

* docs(i18n): 更新摘要模型描述中的搜索关键词提炼

将"搜索结果摘要"修改为"搜索关键字提炼"以更准确描述功能

* fix(i18n): 更新多语言翻译文件中的摘要模型相关文本

* feat(i18n): 为摘要模型设置添加工具提示说明

添加摘要模型设置的工具提示,建议用户选择轻量模型而非思考模型

* refactor(i18n): 将摘要模型相关文案更新为快速模型

更新国际化文案和组件引用,将"摘要模型"统一改为"快速模型"以更准确描述功能用途

* feat(i18n): 将摘要模型重命名为快速模型并更新相关描述

* refactor(llm): 将summaryModel重命名为quickModel以提升语义清晰度

* test(api): 在ApiService测试中添加LlmState类型和awsBedrock配置

添加LlmState类型以满足类型检查要求,并补充awsBedrock的mock配置以完善测试覆盖

* Revert "feat(设置): 在模型设置中添加话题命名折叠面板"

This reverts commit 4d58c053da.

* refactor(settings): 重命名并移动 TopicNamingModalPopup 组件文件

将 TopicNamingModalPopup.tsx 重命名为 QuickModelPopup.tsx 并移动到相应目录

* refactor(QuickModelPopup): 优化主题命名设置布局和样式

移除 TopicNamingSettings 组件内联实现,直接整合到 Modal 中
调整间距和样式,提升视觉一致性
修复文本区域 onChange 去除换行的逻辑

* feat(模型设置): 在快速模型弹窗中添加重置按钮图标并调整布局

将重置按钮改为图标形式并内联显示,同时调整输入区域的高度样式

* docs(i18n): 更新快速模型相关翻译文本

* fix: 将迁移错误日志从133更新为134

* style(settings): 替换模型设置中的图标为Rocket图标以提升视觉一致性
2025-08-19 20:39:52 +08:00
kangfenmao
0368583cfc refactor(Markdown): update disallowed elements to include 'script' for enhanced security 2025-08-19 18:11:20 +08:00
kangfenmao
c5554995dd refactor(CodeToolsService): adjust command construction for Windows compatibility; streamline installation command handling 2025-08-19 18:10:10 +08:00
kangfenmao
70cc1c4a32 chore: release v1.5.7-rc.1 2025-08-19 17:38:24 +08:00
kangfenmao
2ace9ba492 refactor(CodeToolsService): replace npm package version fetching with direct API call; simplify command construction for installation 2025-08-19 17:30:07 +08:00
one
cc8915842a
refactor(SvgPreview): use transparent container for SVG (#9294)
* refactor(SvgPreview): use transparent container for SVG

* test: fix snapshot
2025-08-19 17:22:05 +08:00
kangfenmao
2e2cfc2409 refactor(Sidebar): remove unused imports and code related to documentation; streamline sidebar functionality 2025-08-19 16:42:20 +08:00
kangfenmao
2265ecab21 feat(CodeTools): add environment variable support for CLI tools; update UI to manage environment variables and enhance localization for related strings 2025-08-19 16:39:50 +08:00
kangfenmao
29d4e37f6b feat(Sidebar): add 'code_tools' icon and route; enhance CodeToolsPage layout with Navbar and improved provider filtering 2025-08-19 15:38:03 +08:00
kangfenmao
e0bc3bb2c5 refactor(MarkdownStyles): remove last-child margin override; adjust MessageFooter margin and clean up unused code in MessageAttachments 2025-08-19 13:53:46 +08:00
one
6d602d5d48
fix: MentionModelsButton re-rendering (#9296) 2025-08-19 13:46:29 +08:00