* 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
- Introduced a new SearchableSelector component for improved item selection with search functionality.
- Updated the Selector component to streamline item selection and added type exports for better type safety.
- Refactored the preferenceSchemas to use the new MathEngine type for better clarity.
- Added comprehensive README documentation for the Selector component detailing usage and features.
- Updated various components and stories to utilize the new Selector and SearchableSelector components.
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>
- 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
- Add `anthropicApiHost` field to Provider type - Update provider config
and migration to set Anthropic endpoints - Add UI for configuring
Anthropic API Host in provider settings - Update SDK client logic to use
Anthropic API Host when available - Add i18n strings for Anthropic API
Host configuration
- 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.
- Introduced a new IPC channel for quitting the application.
- Updated ipc.ts to handle the App_Quit channel, allowing the app to quit when invoked.
- Added corresponding quit method in the preload API for client-side access.
- Fixed a minor URL check in WindowService to ensure proper navigation handling.
- Add shared Anthropic utilities package with OAuth and API key client creation
- Implement provider-specific message routing alongside existing v1 API
- Enhance authentication middleware with priority handling (API key > Bearer token)
- Add comprehensive auth middleware test suite with timing attack protection
- Update session handling and message transformation for Claude Code integration
- Improve error handling and validation across message processing pipeline
- Standardize import formatting and code structure across affected modules
This establishes the foundation for Claude Code OAuth authentication while maintaining
backward compatibility with existing API key authentication methods.
* Refactor agent streaming from EventEmitter to ReadableStream
Replaced EventEmitter-based agent streaming with ReadableStream for
better compatibility with AI SDK patterns. Modified
SessionMessageService to return stream/completion pair instead of event
emitter, updated HTTP handlers to use stream pumping, and added IPC
contract for renderer-side message persistence.
* Add accessible paths management to agent configuration
Move accessible paths functionality from session modal to agent modal,
add validation requiring at least one path, and update form handling to
inherit agent paths in sessions.
* Add provider_name field to model objects and improve display
- Add provider_name field to ApiModel schema and transformation logic
- Update model options to include providerName for better display
- Improve provider label fallback chain in model transformation
- Fix agent hook to use proper SWR key and conditional fetching
- Enhance option rendering with better truncation and provider display
* fix(i18n): Auto update translations for PR #10276
* Optimize chat components with memoization and shared layout
- Wrap `SessionMessages` and `SessionInputBar` in `useMemo` to prevent unnecessary re-renders
- Refactor `AgentSessionMessages` to use shared layout components and message grouping
- Extract common styled components to `shared.tsx` for reuse across message components
* Add smooth animations to SessionsTab and Sessions components
- Replace static conditional rendering with Framer Motion animations for no-agent and session states
- Animate session list items with staggered entrance and exit transitions
- Add loading spinner animation with fade effect
- Apply motion to session creation button with delayed entrance
* Add loading state with spinner and i18n support to SessionsTab
- Replace static "No active agent" message with a spinner and loading text
- Integrate react-i18next for translation of loading message
- Adjust animation timing and styling for smoother loading state transition
* Support API models with provider_name field in getModelName
- Add ApiModel type import and update function signature to accept ApiModel
- Return formatted name using provider_name field for API models
- Maintain backward compatibility for legacy models by looking up provider in store
* Simplify provider display name logic and add debug logging
- Replace complex fallback chain for provider display name with direct provider name access
- Add console.log for model debugging in getModelName function
* Extract model name from session model string
- Use split and pop to isolate the model name after the colon
- Fall back to the full model string if no colon is present
- Maintain provider and group identifiers for model object consistency
* Improve model name resolution for agent sessions
- Extract actual model ID from session model string and resolve model details
- Use resolved model name, provider, and group when available instead of defaults
- Remove redundant API model handling in getModelName function
* Set default active agent and session on load
- Automatically select first agent if none active after loading
- Automatically select first session per agent if none active after loading
- Prevent empty selection states in UI components
---------
Co-authored-by: GitHub Action <action@github.com>
* feat(CodeTools): add support for terminal selection on macOS
- Introduced terminal selection functionality in CodeTools, allowing users to choose from available terminal applications.
- Implemented caching for terminal availability checks to enhance performance.
- Updated CodeToolsService to preload available terminals and check their availability.
- Enhanced UI in CodeToolsPage to display terminal options and handle user selection.
- Added new IPC channel for retrieving available terminals from the main process.
* lint errs
* format
* support wezterm
* support terminal
* support ghostty
* support warp kitty
* fix github scanner issues
* fix all github issues
* support windows
* support windows
* suppport hyper
* Refactor terminal command execution for macOS applications to use shell scripts instead of AppleScript, improving compatibility and performance.
* Remove Hyper terminal configuration from shared constants
* update lint
* fix(i18n): Auto update translations for PR #10192
* fix platform checking
* format
* feat: add Tabby terminal configuration for macOS
* fix wrap terminal
* delete warp
---------
Co-authored-by: GitHub Action <action@github.com>
* style(linter): enable consistent-type-imports rule in typescript
* chore: add biome to lint script for improved code formatting
* chore: add oxlint-specific lint script for faster linting
* refactor: use type-only imports for better type safety and clarity
- Renamed "State Management" to "Data Management" in CLAUDE.md for clarity.
- Enhanced data management section with detailed descriptions of Cache System, Preference System, and User Data API.
- Updated README.md in shared/data to reflect new directory structure and provide clearer organization of type definitions and schemas.
- Added guidelines for selecting appropriate data access patterns based on data characteristics.
- Added "packages/ui/scripts/**" to .oxlintrc.json for linting.
- Excluded ".claude/**" from biome.jsonc.
- Refactored API path types in apiPaths.ts for better clarity.
- Updated error handling in errorCodes.ts to ensure stack trace is always available.
- Modified preferenceSchemas.ts to include new features and updated generated timestamp.
- Cleaned up tsconfig.json for better organization.
- Adjusted CustomTag component to improve rendering logic.
- Enhanced CodeEditor utility functions for better type safety.
- Improved Scrollbar story for better readability.
- Refactored CacheService to streamline comments and improve documentation.
- Updated useCache and useSharedCache hooks for better clarity and functionality.
- Cleaned up selectionStore and settings.ts by commenting out deprecated actions.
- Updated DataApiHookTests for better optimistic update handling.
- Updated package.json to version 2.0.0-alpha, reflecting significant changes.
- Refactored cache management by integrating useCache hooks across various components, enhancing state management and performance.
- Replaced useRuntime references with useMinapps in multiple components to streamline minapp state handling.
- Improved type safety in cache schemas and updated related components to utilize new types.
- Removed deprecated runtime actions and streamlined the codebase for better maintainability.
- Updated preferences configuration with new user theme options including font family and code font family.
- Added new preferences for chat and export menus.
- Adjusted default preferences to include new settings for user theme.
- Enhanced useUserTheme hook to manage new font family preferences.
* feature: add option to change font
1. set app global font
2. set code block font
Signed-off-by: Albert Abdilim <albert.abdilim@foxmail.com>
* formatted code with Prettier
* fix ci errors
1.add migration in `migrate.ts`
2.add to-be-translated strings by running `yarn sync:i18n`
* chore: update yarn.lock to include font-list package version 2.0.0
* fix migration issue
---------
Signed-off-by: Albert Abdilim <albert.abdilim@foxmail.com>
Co-authored-by: suyao <sy20010504@gmail.com>
- Eliminated AbortSignal handling from ApiClient interface and DataApiService to streamline request processing.
- Updated IpcAdapter to remove event sender logic for responses, aligning with the new direct IPC approach.
- Adjusted tests to reflect the removal of cancellation capabilities, emphasizing that direct IPC requests cannot be cancelled.
- Cleaned up related code and comments to enhance clarity and maintainability.
- Introduced new IPC channels for Data API requests and responses in IpcChannel.
- Added swr library to package.json for improved data fetching capabilities.
- Updated preload API to include Data API related methods for handling requests and subscriptions.
- Removed deprecated pending_default_values.ts file as part of data refactor.
* feat: add disk space checking functionality
- Introduced a new IPC channel for retrieving disk information.
- Integrated the 'check-disk-space' package to fetch available and total disk space.
- Updated the preload API to expose the new disk info retrieval method to the renderer.
* feat: implement disk space warning and data limit checks
- Added functionality to check available disk space and display warnings when storage is low.
- Updated IPC methods to pass directory paths for disk info retrieval.
- Introduced periodic checks for app data disk quota and internal storage quota.
- Enhanced user notifications with localized messages for low storage warnings.
* fix: enhance disk space warning logic and improve logging
- Added additional conditions for displaying disk space warnings based on free percentage thresholds.
- Improved logging format for app data disk quota, providing clearer output in GB.
- Refactored the checkDataLimit function to be asynchronous for better performance.
* format code
* update log format
* fix: improve error handling and logging in disk quota checks
- Added try-catch block in checkAppDataDiskQuota to handle potential errors when retrieving disk information.
- Ensured that errors are logged for better debugging and visibility.
- Updated checkDataLimit to await the checkAppDataDiskQuota function for proper asynchronous handling.
* fix comments
* fix: remove redundant appStorageQuota message from localization files
* lint
* fix: enhance disk space warning logic for USB disks
- Added a condition to warn users when free space on USB disks falls below 5% of total capacity.
- Improved the existing logic for displaying disk space warnings based on total disk size thresholds.
* update i18n
* Refactor data limit notification logic and update i18n messages for disk space warnings. Adjusted check intervals and improved toast notifications for low disk space alerts.
* Fix disk quota check logic in useDataLimit hook to correctly compare free space against 1GB threshold.
* refactor: update styles and improve navbar handling
- Removed unnecessary margin-bottom style from bubble markdown.
- Adjusted margin in Prompt component for better layout.
- Enhanced useAppInit hook to include navbar position logic for background styling.
- Added alignment to ErrorBlock alert for improved visual consistency.
* refactor: relocate checkDataLimit function to utils and update import in useAppInit hook
- Moved checkDataLimit function from useDataLimit hook to utils for better organization.
- Updated import path in useAppInit to reflect the new location of checkDataLimit.
- Removed the now obsolete useDataLimit hook file.
* refactor: update getDiskInfo API to specify return type
- Enhanced getDiskInfo function to explicitly define the return type as a Promise containing disk information or null.
* lint err
* fix: handle null response from getDiskInfo in checkAppDataDiskQuota
- Added a check for null response from getDiskInfo to prevent errors.
- Updated the logic to extract the free disk space only if diskInfo is valid.
---------
Co-authored-by: kangfenmao <kangfenmao@qq.com>
* refactor MCPService for improved error handling and header management
* refactor MCPService: reorder header preparation for improved clarity
* refactor: enhance MCP server type determination and clean up error handling
* feat: add api server
This reverts commit c76aa03566.
* update yarn.lock
* fix: correct import paths in ToolSettings component
Update import paths for PreprocessSettings and WebSearchSettings to reference correct locations in DocProcessSettings and WebSearchSettings directories.
* feat(settings): add API server settings link and route
* fix(auth): improve authorization handling and error responses
* feat(chat): enhance model validation and logging for chat completions
feat(models): improve logging for model retrieval and filtering
feat(utils): add model ID validation and support for OpenAI providers
* feat(api-server): refactor config loading and remove unused ToolSettings component
* refactor(ApiServerService): simplify config retrieval and improve error handling in ApiServerSettings
* fix(mcp): remove unnecessary await in listTools return statement
* refactor(ApiServerSettings): replace window.message with window.toast for notifications
---------
Co-authored-by: kangfenmao <kangfenmao@qq.com>