* Add MCP server installation via URL protocol
Implement handler for cherrystudio://mcp/install URLs to add MCP servers
from encoded configuration data. Supports multiple server configuration
formats and adds a new IPC channel for server addition.
* feat: Enhance MCP protocol handling and navigation
- Implemented navigation to the '/settings/mcp' page using executeJavaScript in the MCP protocol URL handler.
- Updated NavigationService to expose the navigate function globally for easier access in the application.
- Added NavigateFunction type to the global environment for improved type safety in navigation operations.
---------
Co-authored-by: kangfenmao <kangfenmao@qq.com>
refactor(auto-update): streamline update check logic and enhance error handling
- Moved update check logic from IPC handler to AppUpdater class for better organization.
- Improved error handling during update checks to ensure graceful failure.
- Removed redundant conditions in the AboutSettings component for cleaner rendering.
- Added a new ProviderOAuth component to manage OAuth authentication and billing for providers.
- Updated existing components to integrate the new ProviderOAuth functionality.
- Enhanced internationalization support for OAuth-related texts across multiple languages.
- Introduced new utility functions for handling provider billing.
* feat: open popup url in external browser
* fix: allow google auth popup internal
* feat: add functionality(including settings) to open links in external browser for webviews
* fix: set useragent globally
* fix: remove setUserAgent in webview
* fix: set Chrome version to newest
* feat(WindowService): add maximize functionality and clean up window close logic
- Introduced a new `maximize` option in the window state configuration.
- Added `setupMaximize` method to handle window maximization based on the launch state.
- Removed redundant logic from the window close event handler for clarity.
* add code
* update code
- Reintroduced @mozilla/readability, @shikijs/markdown-it, and @xyflow/react to package.json.
- Updated shiki version to 3.2.2 in both package.json and yarn.lock.
- Removed trailing whitespace in IpcChannel.ts and index.ts for code cleanliness.
- Added outline style to .ant-tabs-tab-btn in ant.scss for improved UI consistency.
- Removed MCPStreamableHttpClient.ts as it is now provided by the SDK.
- Adjusted imports in MCPService.ts to use the SDK's implementation.
- Updated yarn.lock to reflect the new SDK version.
* feat(auto-update): improve auto-update toggle functionality
- Added setAutoUpdate method in AppUpdater to control auto-update behavior.
- Updated IPC handler to set auto-update status based on user preference.
- Modified AboutSettings component to conditionally display update options based on auto-check setting.
* update autoupdate position
- Changed the organization in the Sentry Vite plugin configuration.
- Modified Sentry initialization in the main process to always check data collection settings.
- Simplified Sentry initialization in the renderer process by removing the packaged check.
- Updated BackupManager to use archiver for creating ZIP files, enabling better performance and support for large files.
- Integrated extract-zip for unzipping backup files, enhancing the backup restoration process.
- Adjusted progress reporting during backup and restore operations for better user feedback.
- Updated package.json and yarn.lock to include archiver and extract-zip dependencies.
* feat(proxy): integrate os-proxy-config for system proxy management
- Added os-proxy-config dependency to manage system proxy settings.
- Refactored setSystemProxy method to utilize getSystemProxy for improved proxy handling.
* fix lint error
- Changed cacheAxios from undefined to null for better initialization.
- Updated proxy handling to use ProxyAgent, ensuring axios instance is recreated when the proxy changes.
- Simplified axios instance creation by directly using the current proxy agent.
* refactor(GeminiService): migrate to new Google GenAI SDK and update file handling methods
- Updated import statements to use the new Google GenAI SDK.
- Refactored file upload, retrieval, and deletion methods to align with the new SDK's API.
- Adjusted type definitions and response handling for improved type safety and clarity.
- Enhanced file listing and processing logic to utilize async iteration for better performance.
* refactor(GeminiProvider): update message handling and integrate abort signal support
- Refactored message content handling to align with updated type definitions, ensuring consistent use of Content type.
- Enhanced abort signal management for chat requests, allowing for better control over ongoing operations.
- Improved message processing logic to streamline user message history handling and response generation.
- Adjusted type definitions for message contents to enhance type safety and clarity.
* refactor(electron.vite.config): replace direct import of Vite React plugin with dynamic import
* fix(Gemini): clean up unused methods and improve property access
* fix(typecheck): update color properties to use CSS variables
* feat: 修改画图逻辑
* fix: import viteReact
---------
Co-authored-by: eeee0717 <chentao020717Work@outlook.com>
* feat: implement OAuth client provider and lockfile management
* feat: implement OAuth callback server and refactor authentication flow
* fix(McpService): restrict command handling to 'npx' for improved clarity
* refactor: make callbackPort optional in OAuthProviderOptions and clean up MCPService
* refactor: restructure OAuth handling by creating separate callback and provider classes, and remove unused utility functions
* feat: integrate AoxisProxy for HTTP requests in rerankers and CopilotService
- Replaced direct axios calls with aoxisProxy in JinaReranker, SiliconFlowReranker, and VoyageReranker to utilize proxy settings.
- Introduced AoxisProxy service to manage axios instances with proxy configurations.
- Updated CopilotService to use aoxisProxy for API requests, ensuring consistent proxy handling across services.
* refactor(AxiosProxy): improve proxy handling and initialization logic
* fix tyop
* fix tyop
* Add support for custom HTTP headers in MCP servers
Allow users to configure custom HTTP headers for SSE and streamable HTTP
MCP server connections. This enables authentication and other API
requirements.
* Add custom headers i18n strings
* Add typed MCPCallToolResponse interface and format converters
The commit introduces a structured response type for MCP tool calls with
proper handling for different content types (text, image, audio). It adds
provider-specific converter functions to transform tool responses into
the appropriate message format for OpenAI, Anthropic, and Gemini.
* Support vision models in tool call responses
Add isVisionModel parameter to tool response formatters to conditionally
handle content based on model capabilities. Non-vision models now receive
JSON stringified content, while vision models get proper multimedia parts.
* Add MCP prompt listing and retrieval functionality
* Add generic caching mechanism for MCP service methods
Refactor caching strategy by implementing a higher-order withCache function
to centralize cache logic and reduce code duplication. Separate implementation
details from caching concerns in listTools, listPrompts and getPrompt methods.
# Conflicts:
# src/main/services/MCPService.ts
* Add MCP prompts listing feature
- Add IPC handlers for listing and getting prompts
- Create UI component to display available prompts in settings tab
- Improve error handling in MCP service methods
* fix(McpService): add error handling for tool and prompt listing methods
* feat(MCPSettings): enhance prompts and tools sections with improved UI and reset functionality
* feat(i18n): add tabs and prompts sections to localization files
* feat(MCPToolsButton): add MCP prompt list functionality to Inputbar
* feat(McpSettings, NpxSearch): improve user feedback with success messages on server addition
* feat(MCPService, MCPToolsButton): enhance prompt handling with caching and improved selection logic
* feat(MCPToolsButton): enhance prompt handling with argument support and error management
---------
Co-authored-by: Teo <cheesen.xu@gmail.com>
* feat(websearch): implement search window functionality and enhance search service
* feat(DefaultProvider): integrate @mozilla/readability for improved content parsing
* Add LocalSearchProvider for web page scraping
AI: Change `provider` from private to protected in BaseWebSearchProvider and implement LocalSearchProvider for web searching with browser-based content extraction.
* Add web search provider management features
Implement addWebSearchProvider function to prevent duplicates,
automatically load default providers on initialization, fix
LocalSearchProvider implementation, and update local provider
identification logic.
* Improve web search with specialized search engine parsers
Add dedicated parsers for Google, Bing, and Baidu search results,
replacing the generic URL extraction approach. Enhance page loading
with proper wait mechanisms and window cleanup. Remove DuckDuckGo
provider as it's no longer supported.
* Simplify DefaultProvider to unimplemented placeholder
* Remove default search engine from initial state
* Improve web search providers config and display
Add configuration for local search providers, remove empty apiKey fields,
and enhance the UI by sorting providers alphabetically and showing
whether they require an API key.
* Add stderr logging for MCP servers
* Make search window initially hidden
- Updated error handling in FileSystemServer to throw errors instead of exiting the process.
- Enhanced MCPService to use a more flexible server name check and updated the path for MCP_REGISTRY_PATH.
- Refined Inputbar to conditionally set enabled MCPs only if they are not empty.
- Cleaned up MCPToolsButton and MCPSettings by removing unused imports and effects.
- Updated NpxSearch to include a new npm scope and improved search result handling.
- Enhanced builtin MCP server descriptions for better clarity.