* fix: align and unify LocalBackupManager footer layout
- Use Space component to wrap footer buttons, consistent with S3BackupManager
- Optimize delete button i18n text by using count parameter instead of hardcoded concatenation
* fix: fix the i18n issue in the delete button text
(cherry picked from commit c7ceb3035d)
Ensure the navbar height is correctly calculated when toggling fullscreen mode on macOS by considering the $isFullScreen prop
(cherry picked from commit 7bcae6fba2)
* feat: add isClaude45ReasoningModel function and update getTopP logic
* fix: update getTopP logic to correctly handle Claude45 model support
* fix: update getTemperature and getTopP logic to handle Claude45 model conditions
* fix: update getTemperature logic to correctly handle Claude45 model conditions
fix: refine isClaude45ReasoningModel regex pattern for better matching
(cherry picked from commit 250f59234b)
* fix: simplify navigation button auto-hide logic
Remove complex state management (isNearButtons, resetHideTimer) and rely directly
on isInTriggerArea to control button visibility. This fixes the issue where buttons
don't properly auto-hide by using mouse position detection instead of fragile state tracking.
- Simplify showNavigation to just show and clear timers
- Remove resetHideTimer function and use showNavigation directly
- Simplify handleNavigationMouseLeave to always schedule hide after 500ms
- Update all button handlers to call showNavigation() instead of resetHideTimer()
- Rely on mouse enter/leave events to control visibility state
* refactor(ChatNavigation): replace native setTimeout with custom useTimer hook
Use custom useTimer hook for better timer management and cleanup
---------
Co-authored-by: icarus <eurfelux@gmail.com>
(cherry picked from commit c5ce0b763b)
* ci(github): disable package manager cache for node setup
* refactor(i18n): translate sync script comments to english
Update all Chinese comments and log messages in sync-i18n.ts to English for better international collaboration
* style(scripts): format error message string in sync-i18n.ts
(cherry picked from commit dedfc79406)
* docs: update PR template and README with feature PR restrictions
Add temporary hold notice for Redux/IndexedDB feature PRs in both pull request template and README
Fix whitespace and formatting inconsistencies in README
* docs: update contributing guidelines with temporary PR restrictions
Add important notice about temporary restrictions on data-changing feature PRs
Clarify acceptable contribution types during v2.0.0 development phase
* docs: remove warning about feature PR restrictions
The warning about temporary restrictions on feature PRs involving Redux or IndexedDB changes has been removed as it is no longer relevant
* docs: remove core developer membership section from contributing guides
(cherry picked from commit 1f0fd8215a)
fix(InputbarTools): allow url context for gemini endpoint type
Add condition to check for gemini endpoint type when determining URL context support
(cherry picked from commit 0081a0740f)
* refactor(aiCore): reorganize reasoning effort logic for different providers
Restructure the reasoning effort calculation logic to handle different model providers more clearly. Move OpenRouter and SiliconFlow specific logic to dedicated sections and remove duplicate checks. Improve maintainability by grouping related provider logic together.
* refactor(sdk): update thinking config type and property names
- Replace inline thinking config type with imported ThinkingConfig type
- Update property names from snake_case to camelCase for consistency
- Add null checks for token limit calculations
- Clarify hard-coded maximum for silicon provider in comments
* refactor(openai): standardize property names to camelCase in thinking_config
Update property names in thinking_config object from snake_case to camelCase for consistency with codebase conventions
(cherry picked from commit 4dfb73c982)
Replaces logical OR with nullish coalescing when updating advanced server properties to allow empty string values, enabling users to clear fields instead of preserving previous values.
(cherry picked from commit 1ac746a40e)
* ci: update OpenAI dependency in i18n workflow
Use @cherrystudio/openai instead of openai package for translation dependencies
* ci(workflows): allow workflow dispatch for auto-i18n job
(cherry picked from commit 53881c5824)
Fix the bug where topic branching would not copy all message relationships completely.The issue was that askId mapping lookup happened in the same loop as ID generation, causing later messages' askIds to fail mapping when they referenced messages that hadn't been processed yet.
Solution: Split into two passes:
1. First pass: Generate new IDs for all messages and build complete mapping
2. Second pass: Clone messages and blocks using the complete ID mapping
This ensures all message relationships (especially assistant message askId references)are properly maintained in the new topic.
(cherry picked from commit 35c15cd02c)
* feat: add GitHub issue tracker workflow with Feishu notifications
* fix: add missing environment variable for Claude translator in GitHub issue tracker workflow
* fix: update environment variable for Claude translator in GitHub issue tracker workflow
* Add quiet hours handling and scheduled processing for GitHub issue notifications
- Implement quiet hours detection (00:00-08:30 Beijing Time) with delayed notifications
- Add scheduled workflow to process pending issues daily at 08:30 Beijing Time
- Create new script to batch process and summarize multiple pending issues with Claude
* Replace custom Node.js script with Claude Code Action for issue processing
- Migrate from custom JavaScript implementation to Claude Code Action for AI-powered issue summarization and processing
- Simplify workflow by leveraging Claude's built-in GitHub API integration and tool usage capabilities
- Maintain same functionality: fetch pending issues, generate Chinese summaries, send Feishu notifications, and clean up labels
- Update Claude action reference from version pin to main branch for latest features
* Remove GitHub issue comment functionality
- Delete automated AI summary comments on issues after processing
- Remove documentation for manual issue commenting workflow
- Keep Feishu notification system intact while streamlining issue interactions
* feat: add GitHub issue tracker workflow with Feishu notifications
* feat: add GitHub issue tracker workflow with Feishu notifications
* fix: add missing environment variable for Claude translator in GitHub issue tracker workflow
* fix: update environment variable for Claude translator in GitHub issue tracker workflow
* Add quiet hours handling and scheduled processing for GitHub issue notifications
- Implement quiet hours detection (00:00-08:30 Beijing Time) with delayed notifications
- Add scheduled workflow to process pending issues daily at 08:30 Beijing Time
- Create new script to batch process and summarize multiple pending issues with Claude
* Replace custom Node.js script with Claude Code Action for issue processing
- Migrate from custom JavaScript implementation to Claude Code Action for AI-powered issue summarization and processing
- Simplify workflow by leveraging Claude's built-in GitHub API integration and tool usage capabilities
- Maintain same functionality: fetch pending issues, generate Chinese summaries, send Feishu notifications, and clean up labels
- Update Claude action reference from version pin to main branch for latest features
* Remove GitHub issue comment functionality
- Delete automated AI summary comments on issues after processing
- Remove documentation for manual issue commenting workflow
- Keep Feishu notification system intact while streamlining issue interactions
* Add OIDC token permissions and GitHub token to Claude workflow
- Add `id-token: write` permission for OIDC authentication in both jobs
- Pass `github_token` to Claude action for proper GitHub API access
- Maintain existing issue write and contents read permissions
fix: add GitHub issue tracker workflow with Feishu notifications
* feat: add GitHub issue tracker workflow with Feishu notifications
* fix: add missing environment variable for Claude translator in GitHub issue tracker workflow
* fix: update environment variable for Claude translator in GitHub issue tracker workflow
* Add quiet hours handling and scheduled processing for GitHub issue notifications
- Implement quiet hours detection (00:00-08:30 Beijing Time) with delayed notifications
- Add scheduled workflow to process pending issues daily at 08:30 Beijing Time
- Create new script to batch process and summarize multiple pending issues with Claude
* Replace custom Node.js script with Claude Code Action for issue processing
- Migrate from custom JavaScript implementation to Claude Code Action for AI-powered issue summarization and processing
- Simplify workflow by leveraging Claude's built-in GitHub API integration and tool usage capabilities
- Maintain same functionality: fetch pending issues, generate Chinese summaries, send Feishu notifications, and clean up labels
- Update Claude action reference from version pin to main branch for latest features
* Remove GitHub issue comment functionality
- Delete automated AI summary comments on issues after processing
- Remove documentation for manual issue commenting workflow
- Keep Feishu notification system intact while streamlining issue interactions
* Add OIDC token permissions and GitHub token to Claude workflow
- Add `id-token: write` permission for OIDC authentication in both jobs
- Pass `github_token` to Claude action for proper GitHub API access
- Maintain existing issue write and contents read permissions
* Enhance GitHub issue automation workflow with Claude integration
- Refactor Claude action to handle issue analysis, Feishu notification, and comment creation in single step
- Add tool permissions for Bash commands and custom notification script execution
- Update prompt with detailed task instructions including summary generation and automated actions
- Remove separate notification step by integrating all operations into Claude action workflow
* fix
* 删除AI总结评论的添加步骤和注意事项
(cherry picked from commit 3c8b61e268)
* feat: support germen
* format code
* translate
* update trans
* format
* add de
---------
Co-authored-by: Payne Fu <payne@Paynes-MBP.rcoffice.ringcentral.com>
(cherry picked from commit 4063c20505)
- Replaced previous licensing information with the complete text of the GNU Affero General Public License v3.0 (AGPL-3.0).
- Clarified terms regarding commercial use and compliance with AGPL-3.0.
- Added detailed definitions and conditions for users and organizations regarding licensing options.
This update ensures that users have clear access to the licensing terms governing the Cherry Studio Community Edition.
(cherry picked from commit 81ac77e988)
* feat: enhance proxy bypass rules with comprehensive matching
- Add support for wildcard domains (*.example.com, .example.com)
- Add CIDR notation support for IPv4 and IPv6 (192.168.0.0/16, 2001:db8::/32)
- Add wildcard IP matching (192.168.1.*)
- Add <local> keyword for local network hostnames
- Support both semicolon and comma separators in bypass rules
- Add comprehensive unit tests with 22 test cases
- Export matchWildcardDomain and matchIpRule for testability
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* move to devDeps
* delete logs
* feat: enhance ProxyManager with advanced proxy bypass rule handling
- Introduced comprehensive parsing and matching for proxy bypass rules, including support for wildcard domains, CIDR notation, and local network addresses.
- Refactored existing functions and added new utility methods for improved clarity and maintainability.
- Updated unit tests to cover new functionality and ensure robust validation of bypass rules.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
* update proxy rules
* fix lint
* add tips
* delete hostname rule
* add logs
---------
Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit a5049d8872)
* fix: capture detailed error response body for reranker API failures
Previously, when reranker API returned 400 or other error status codes,
only the HTTP status and status text were captured, without reading the
actual error response body that contains detailed error information.
This commit fixes the issue by:
- Reading the error response body (as JSON or text) before throwing error
- Attaching the response details to the error object
- Including responseBody in formatErrorMessage output
This will help diagnose issues like "qwen3-reranker not available" by
showing the actual error message from the API provider.
* fix: enhance error handling in GeneralReranker for API failures
This update improves the error handling in the GeneralReranker class by ensuring that the response body is properly cloned and read when an API call fails. The detailed error information, including the status, status text, and body, is now attached to the error object. This change aids in diagnosing issues by providing more context in error messages.
(cherry picked from commit bf35228b49)
* feat: add right-click to paste text file content into input
Implemented context menu functionality for text file attachments that allows users to right-click on a text file attachment to paste its content directly into the input field.
Changes:
- Added onContextMenu prop to CustomTag component for handling right-click events
- Extended AttachmentPreview with onAttachmentContextMenu callback
- Implemented appendTxtContentToInput function to read and paste text file content
- Added clipboard support for copying file content
- Integrated context menu handler in Inputbar component
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* use real path
* 🐛 fix: clear txt attachment after paste
* ✨ fix: improve attachment confirm flow
* update i18n
* 🎨 refactor: restyle confirm dialog
* format code
* refactor(ConfirmDialog): replace text buttons with icon buttons and remove i18n
- Replace text-based cancel/confirm buttons with icon buttons for better visual clarity
- Remove unused i18n translation hook as it's no longer needed
- Adjust styling to accommodate new button layout
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: icarus <eurfelux@gmail.com>
(cherry picked from commit 528524b075)
* feat(models): add doubao_after_251015 model type and support
Add new model type 'doubao_after_251015' with reasoning effort levels and update regex patterns to handle version 251015 and later
* fix(sdk): add warning for reasoning_effort field and update reasoning logic
Add warning comment about reasoning_effort field being overwritten for openai-compatible providers
Update reasoning effort logic to handle Doubao seed models after 251015 and standardize field naming
* fix(reasoning): update Doubao model regex patterns and tests
Update regex patterns for Doubao model validation to correctly handle version constraints
Add comprehensive test cases for model validation functions
(cherry picked from commit 06b1ae0cb8)
* new build-in ocr provider intel ov
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
Signed-off-by: Kejiang Ma <kj.ma@intel.com>
* updated base on PR's commnets
Signed-off-by: Kejiang Ma <kj.ma@intel.com>
* feat(OcrImageSettings): use swr to fetch available providers
Add loading state and error handling when fetching available OCR providers. Display an alert when provider loading fails, showing the error message. Also optimize provider filtering logic using useMemo.
* refactor(ocr): rename providers to listProviders for consistency
Update method name to better reflect its functionality and maintain naming consistency across the codebase
---------
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
Signed-off-by: Kejiang Ma <kj.ma@intel.com>
Co-authored-by: icarus <eurfelux@gmail.com>
feat: add Greek language option to GeneralSettings component
- Added support for Greek (Ελληνικά) language in the language selection dropdown of the GeneralSettings component.
fix: prevent default behavior for Cmd/Ctrl+F in WebviewService (#10800)
Updated the keyboard handler in WebviewService to always prevent the default action for the Cmd/Ctrl+F shortcut, ensuring it overrides the guest page's native find dialog. This change allows the renderer to manage the behavior of Escape and Enter keys based on the visibility of the search bar.
* feat: intercept webview keyboard shortcuts for search functionality
Implemented keyboard shortcut interception in webview to enable search functionality (Ctrl/Cmd+F) and navigation (Enter/Escape) within mini app pages. Previously, these shortcuts were consumed by the webview content and not propagated to the host application.
Changes:
- Added Webview_SearchHotkey IPC channel for forwarding keyboard events
- Implemented before-input-event handler in WebviewService to intercept Ctrl/Cmd+F, Escape, and Enter
- Extended preload API with onFindShortcut callback for webview shortcut events
- Updated WebviewSearch component to handle shortcuts from both window and webview
- Added comprehensive test coverage for webview shortcut handling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix lint
* refactor: improve webview hotkey initialization and error handling
Refactored webview keyboard shortcut handler for better code organization and reliability.
Changes:
- Extracted keyboard handler logic into reusable attachKeyboardHandler function
- Added initWebviewHotkeys() to initialize handlers for existing webviews on startup
- Integrated initialization in main app entry point
- Added explanatory comment for event.preventDefault() behavior
- Added warning log when webContentsId is unavailable in WebviewSearch
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: add WebviewKeyEvent type and update related components
- Introduced WebviewKeyEvent type to standardize keyboard event handling for webviews.
- Updated preload index to utilize the new WebviewKeyEvent type in the onFindShortcut callback.
- Refactored WebviewSearch component and its tests to accommodate the new type, enhancing type safety and clarity.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
* fix lint
---------
Co-authored-by: Claude <noreply@anthropic.com>
* feat: update and download ovms to 2025.3 official release from official site.
Signed-off-by: Kejiang Ma <kj.ma@intel.com>
* fix UI text
Signed-off-by: Kejiang Ma <kj.ma@intel.com>
---------
Signed-off-by: Kejiang Ma <kj.ma@intel.com>
* feat: notes full text search initial commit
* fix: update highlight overlay when scroll
* fix: reset note search result properly
* refactor: extract scrollToLine logic from CodeEditor into a custom hook
* fix: hide match overlay when overlap
* fix: truncate line with ellipsis around search match for better visibility
* fix: unified note search match highlight style
* feat: add built-in DiDi MCP server integration
- Add DiDi MCP server implementation with ride-hailing services
- Support map search, price estimation, order management, and driver tracking
- Add multilingual translations for DiDi MCP server descriptions
- Available only in mainland China, requires DIDI_API_KEY environment variable
* fix: resolve code formatting issues in DiDi MCP server
fixes code formatting issues in the DiDi MCP server implementation to resolve CI format check failures.
---------
Co-authored-by: BillySong <billysongli@didiglobal.com>
fix: update default enableTopP setting to false in AssistantModelSettings and DefaultAssistantSettings
- Changed default value of enableTopP from true to false in AssistantModelSettings and DefaultAssistantSettings components.
- Updated related logic to ensure consistent behavior across settings.
Updated formatCitationsFromBlock to verify that 'knowledge' and 'memories' are arrays before accessing their length and mapping over them. This prevents potential runtime errors if these properties are not arrays.
Updated ModernAiProvider to regenerate config on every request, ensuring API key rotation is effective. Refactored BaseApiClient to use an API key getter for dynamic key retrieval, supporting key rotation when multiple keys are configured.