* 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: replace update dialog handling with quit and install functionality
* refactor: remove App_ShowUpdateDialog and implement App_QuitAndInstall in IpcChannel
* update ipc.ts to handle quit and install action
* modify AppUpdater to include quitAndInstall method
* adjust preload index to invoke new quit and install action
* enhance AboutSettings to manage update dialog state and trigger quit and install
* fix(AboutSettings): handle null update info in update dialog state management
* fix(UpdateDialog): improve error handling during update installation and enhance release notes processing
* fix(AppUpdater): remove redundant assignment of releaseInfo after update download
* fix(IpcChannel): remove UpdateDownloadedCancelled enum value
* format code
* fix(UpdateDialog): enhance installation process with loading state and error handling
* update i18n
* fix(i18n): Auto update translations for PR #10569
* feat(UpdateAppButton): integrate UpdateDialog and update button functionality for better user experience
* fix(UpdateDialog): update installation handler to support async operation and ensure modal closes after installation
* refactor(AppUpdater.test): remove deprecated formatReleaseNotes tests to streamline test suite
* refactor(update-dialog): simplify dialog close handling
Replace onOpenChange with onClose prop to directly handle dialog closing
Remove redundant handleClose function and simplify button onPress handler
---------
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: icarus <eurfelux@gmail.com>
- Changed imports to use 'type' for type-only imports in various files, improving clarity and potentially optimizing the build process.
- Adjusted imports in files related to agents, models, and types to ensure consistency in type usage.
* feat: add GitHub Copilot CLI integration to coding tools
- Add githubCopilotCli to codeTools enum
- Support @github/copilot package installation
- Add 'copilot' executable command mapping
- Update Redux store to include GitHub Copilot CLI state
- Add GitHub Copilot CLI option to UI with proper provider mapping
- Implement environment variable handling for GitHub authentication
- Fix model selection logic to disable model choice for GitHub Copilot CLI
- Update launch validation to not require model selection for GitHub Copilot CLI
- Fix prepareLaunchEnvironment and executeLaunch to handle no-model scenario
This enables users to launch GitHub Copilot CLI directly from Cherry Studio's
code tools interface without needing to select a model, as GitHub Copilot CLI
uses GitHub's built-in models and authentication.
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
* style: apply code formatting for GitHub Copilot CLI integration
Auto-fix code style inconsistencies using project's Biome formatter.
Resolves semicolon, comma, and quote style issues to match project standards.
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
* feat: conditionally render model selector for GitHub Copilot CLI
- Hide model selector component when GitHub Copilot CLI is selected
- Maintain validation logic to allow GitHub Copilot CLI without model selection
- Improve UX by removing empty model dropdown for GitHub Copilot CLI
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
Co-authored-by: Claude <noreply@anthropic.com>
- Unify buildClaudeCodeSystemMessage implementation in shared package
- Refactor MessagesService to provide comprehensive message processing API
- Extract streaming logic, error handling, and header preparation into service methods
- Remove duplicate anthropic config from renderer, use shared implementation
- Update ClaudeCodeService to use append mode for custom instructions
- Improve type safety and request validation in message processing
- Replace @anthropic-ai/claude-code with @anthropic-ai/claude-agent-sdk@0.1.1
- Update all import statements across 4 files
- Migrate patch for Electron compatibility (fork vs spawn)
- Handle breaking changes: replace appendSystemPrompt with systemPrompt preset
- Add settingSources configuration for filesystem settings
- Update vendor path in build scripts
- Update package name mapping in CodeToolsService
Implement functionality to show files/folders in system explorer through IPC. Includes channel definition, preload API, main handler, and error handling for non-existent paths.
* add new provider: OVMS(openvino model server)
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* remove useless comments
* add note: support windows only
* fix eslint error; add migrate for ovms provider
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* fix ci error after rebase
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* modifications base on reviewers' comments
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* show intel-ovms provider only on windows and intel cpu
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* complete i18n for intel ovms
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* update ovms 2025.3; apply patch for model qwen3-8b on local
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* fix lint issues
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* fix issues for format, type checking
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* remove test code
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* fix issues after rebase
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
---------
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
- Added tests mock path to tsconfig.node.json for improved test coverage.
- Refactored AppUpdater to use preferenceService for language retrieval instead of configManager.
- Updated AppUpdater tests to mock preferenceService and ensure correct language handling in release notes.
- Changed import statements to use type imports for better clarity in MessageMcpTool component.
* refactor(notes): improve notes management with local state and file handling
- Replace UUID-based IDs with SHA1 hash of file paths for better consistency
- Remove database storage for notes tree, use local state management instead
- Add localStorage persistence for starred and expanded states
- Improve cross-platform path normalization (replace backslashes with forward slashes)
- Refactor tree operations to use optimized in-memory operations
- Enhance file watcher integration for better sync performance
- Simplify notes service with direct file system operations
- Remove database dependencies from notes tree management
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* Revert "Merge remote-tracking branch 'origin/main' into refactor/note"
This reverts commit 389386ace8, reversing
changes made to 4428f511b0.
* fix: format error
* refactor: noteservice
* refactor(notes): 完成笔记状态从localStorage向Redux的迁移
- 将starred和expanded路径状态从localStorage迁移到Redux store
- 添加版本159迁移逻辑,自动从localStorage迁移现有数据到Redux
- 优化NotesPage组件,使用Redux状态管理替代本地localStorage操作
- 改进SaveToKnowledgePopup的错误处理和验证逻辑
- 删除NotesTreeService中已废弃的localStorage写入函数
- 增强组件性能,使用ref避免不必要的依赖更新
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: ci
* feat(notes): add in-place renaming for notes in HeaderNavbar
- Implemented an input field for renaming the current note directly in the HeaderNavbar.
- Added handlers for title change, blur, and key events to manage renaming logic.
- Updated the breadcrumb display to accommodate the new title input.
- Enhanced styling for the title input to ensure seamless integration with the existing UI.
This feature improves user experience by allowing quick edits without navigating away from the notes list.
* Update NotesEditor.tsx
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: kangfenmao <kangfenmao@qq.com>
- Add support for anthropicApiHost configuration in providers
- Improve model filtering for Anthropic-compatible providers
- Add isAnthropicModel function to validate Anthropic models
- Update ClaudeCode service to support compatible providers
- Enhance logging and error handling in API routes
- Fix model transformation and validation logic
- Updated logging statements across various modules to provide more structured and detailed information.
- Changed log levels from info to debug for less critical messages to reduce log clutter.
- Enhanced error logging to include relevant context such as agentId, sessionId, and model details.
- Standardized log messages to follow a consistent format, improving readability and maintainability.
- Introduced a helper function to escape strings for AppleScript to ensure proper command execution.
- Updated terminal command definitions to utilize the new escape function, improving compatibility with special characters.
- Adjusted command parameters to use double quotes for directory paths, enhancing consistency and reliability.