Commit Graph

3306 Commits

Author SHA1 Message Date
one
828e4f17a1 fix: svg namespace 2025-08-16 18:02:47 +08:00
one
5e12a0ffe0 refactor: improve rehypeScalableSvg, add MarkdownSvgRenderer 2025-08-16 17:22:17 +08:00
one
1a83b2c16a refactor: add measureElementSize 2025-08-16 16:51:08 +08:00
one
ede226f74d feat: make svg in markdown scalable 2025-08-16 15:34:16 +08:00
one
66b72e5149 refactor(Svg): make svg preview scalable 2025-08-16 13:23:38 +08:00
miro
04326eba21
feat: Use different window name for Quick Assistant (#9217)
Co-authored-by: Miro Klarin <miro.klarin@proton.me>
2025-08-16 11:21:29 +08:00
Pleasure1234
a02b4b3955
fix: websearch (#9222)
Update LocalSearchProvider.ts
2025-08-16 04:00:32 +08:00
SuYao
e0dbd2d2db
fix/9165 (#9194)
* fix/9165

* fix: early return
2025-08-15 22:56:40 +08:00
beyondkmp
4a62bb6ad7
refactor: replace axios and node fetch with electron's net module (#9212)
* refactor: replace axios and node fetch with electron's net module for network requests in preprocess providers

- Updated Doc2xPreprocessProvider and MineruPreprocessProvider to use net.fetch instead of axios for making HTTP requests.
- Improved error handling for network responses across various methods.
- Removed unnecessary AxiosRequestConfig and related code to streamline the implementation.

* lint

* refactor(Doc2xPreprocessProvider): enhance file validation and upload process

- Added file size validation to prevent loading files larger than 300MB into memory.
- Implemented file size check before reading the PDF to ensure efficient memory usage.
- Updated the file upload method to use a stream, setting the 'Content-Length' header for better handling of large files.

* refactor(brave-search): update net.fetch calls to use url.toString()

- Modified all instances of net.fetch to use url.toString() for better URL handling.
- Ensured consistency in how URLs are passed to the fetch method across various functions.

* refactor(MCPService): improve URL handling in net.fetch calls

- Updated net.fetch to use url.toString() for better type handling of URLs.
- Ensured consistent URL processing across the MCPService class.

* feat(ProxyManager): integrate axios with fetch proxy support

- Added axios as a dependency to enable fetch proxy usage.
- Implemented logic to set axios's adapter to 'fetch' for proxy handling.
- Preserved original axios adapter for restoration when disabling the proxy.
2025-08-15 22:48:22 +08:00
陈天寒
748ac600fa
fix(aws-bedrock): support thinking mode (#9172)
* fix(aws-bedrock): support thinking mode

* fix(aws-bedrock): fix code review suggestions

* fix(aws-bedrock): Add thinking processing for other models
2025-08-15 15:13:48 +08:00
Phantom
c2561726e0
style(Inputbar): use primary color for buttons (#9174)
style(Inputbar): 统一按钮激活状态颜色为主题色

将输入栏中多个按钮的激活状态颜色从链接色(--color-link)统一为主题色(--color-primary),保持UI一致性
2025-08-15 14:31:49 +08:00
beyondkmp
f2b7b07e51
refactor(AppUpdater): streamline release version fetching and improve update logic (#9167)
- Renamed method from _getPreReleaseVersionFromGithub to _getReleaseVersionFromGithub for clarity.
- Enhanced logic to check for the latest release version using semver.
- Removed unnecessary checks related to test plans when updates are not available.
- Improved logging for better traceability of release version fetching.
2025-08-15 10:45:11 +08:00
SuYao
d1e19aad51
fix: unexpected loading (#9193)
fix
2025-08-15 09:28:43 +08:00
George·Dong
5d34e49c57
refactor(bakcup): 单例化S3/WebDAV (#9181)
* feat(backup): 单例化S3/WebDAV并动态更新配置

* feat(backup): reuse storage instances by comparing core configs

* feat(backup): cache only connection fields for storages
2025-08-15 01:55:19 +08:00
Phantom
bef0180e4c
feat: web search icons (#9147)
* feat(类型): 添加WebSearchProviderIds常量并更新WebSearchProvider类型

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* refactor(QuickPanel): remove redundant timer cleanup useEffect

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

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

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

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

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

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

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

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

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

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

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

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

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

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

This reverts commit 28e6135f8c.

* fix: code block border radius

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

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

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

---------

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

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

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

This reverts commit 6076d5b74c.

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

移除setTimeout延迟更新,减少内存泄露,改用startTransition来优化UI卡顿问题,提升用户体验
2025-08-13 10:05:40 +08:00
beyondkmp
e4e1325b08
refactor(AppUpdater): remove mainWindow dependency and utilize windowService (#9091)
- Updated AppUpdater to eliminate the mainWindow parameter from the constructor.
- Replaced direct mainWindow references with windowService calls to retrieve the main window, improving modularity and decoupling.
2025-08-12 23:09:37 +08:00
亢奋猫
1c7b7a1a55
feat: add code tools (#9043)
* feat: add code tools

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

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

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

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

* feat: remember cli model

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

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

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

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

* refactor(CodeToolsService): simplify command execution output

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* Revert "Update gpt-5.png"

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

This reverts commit bfbba8f5db.

* refactor: improve splitter style

* refactor: improve dragger divider size

---------

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

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

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

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

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

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

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

buggy: waiting for merge

* revert: 恢复main的translate page

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* refactor(translate): 重命名变量

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* refactor: 调整导入顺序

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

* refactor(translate): 类型重命名

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

---------

Co-authored-by: suyao <sy20010504@gmail.com>
2025-08-11 13:33:31 +08:00