- Enhanced `isWebSearchModel` to recognize 'grok' as a valid web search model.
- Updated `getOpenAIWebSearchParams` to return specific search parameters for 'grok'.
- Modified `OpenAIProvider` to handle citations from 'grok' in web search results.
- Added 'grok' to the `WebSearchSource` enum for citation formatting.
* fix: enhance backup and restore functionality with skip option
- Updated `restore` and `restoreFromWebdav` methods in `BackupManager` to include a `skipBackupFile` parameter, allowing users to skip restoring the Data directory if desired.
- Modified corresponding IPC calls in `preload` and `BackupService` to support the new parameter.
- Added success message translations in multiple languages for improved user feedback.
* fix: integrate skipBackupFile option in RestorePopup for enhanced restore functionality
* refactor: remove skipBackupFile parameter from restore methods for simplified usage
- Updated `restore` and `restoreFromWebdav` methods in `BackupManager`, `BackupService`, and `NutstoreService` to remove the `skipBackupFile` parameter, streamlining the restore process.
- Adjusted corresponding IPC calls in `preload` and `RestorePopup` to reflect the changes, ensuring consistent functionality across the application.
- Added event listeners for LOCATE_MESSAGE events to scroll to specific messages in the MessageGroup component.
- Introduced a new SelectionBox component to handle multi-select functionality, allowing users to select multiple messages with drag actions.
- Refactored Messages component to remove unused multi-select logic and improve overall structure.
- Cleaned up code by removing commented-out sections and unnecessary state management related to dragging.
* feat: add functionality to insert messages at a specific index in the Redux store
- Introduced a new interface for inserting messages at a specified index.
- Implemented the insertMessageAtIndex reducer to handle message insertion.
- Updated saveMessageAndBlocksToDB to support message insertion logic.
- Modified appendAssistantResponseThunk to utilize the new insertion functionality.
* feat: integrate multi-select mode handling in MessageGroup component
- Added useChatContext hook to access multi-select mode state.
- Updated isGrouped logic to account for multi-select mode, ensuring proper message grouping behavior.
- Enhanced MessageWrapper styles for better layout management in different modes.
---------
Co-authored-by: kangfenmao <kangfenmao@qq.com>
* Fix: Use effective theme for code style in SettingsTab
The SettingsTab component was previously using the theme setting directly from useSettings to determine whether to apply the light or dark code style. This caused an issue when the theme was set to 'auto', as it wouldn't correctly reflect the actual system theme (light or dark).
This commit modifies SettingsTab.tsx to use the `theme` from the `useTheme` hook (which provides the effective theme) for the logic that determines the code editor and preview styles. This ensures that the code style accurately reflects your current effective theme, including when 'auto' theme is selected and the OS theme changes.
* Refactor: Remove unnecessary comments in SettingsTab
This commit removes non-essential comments that were added during a previous refactoring of `SettingsTab.tsx`. The core logic for using the effective theme for code style selection remains unchanged. This change is purely for code cleanliness.
---------
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
- Integrated Redux dispatch to load topic messages when a message is clicked in HistoryPage.
- Updated SearchResults to utilize message blocks for improved search results, including content extraction.
- Refactored state management to accommodate new content structure in search results.
- Modified the uploadFile method in GeminiService to include baseURL in the parameters.
- Updated the corresponding calls in the preload and renderer layers to pass the baseURL along with the apiKey.
* refactor: improve shiki highlighter utils and reuse it in ShikiStreamService
* refactor: reuse shiki highlighter and markdown-it renderer
* hotfix: exclude GitHub and Copilot models
* fix: update service tier check to exclude GitHub and Copilot models
---------
Co-authored-by: one <wangan.cs@gmail.com>
- Updated NotificationProvider to truncate long messages for better display.
- Modified message sending logic in messageThunk to prevent notifications on the home page, improving user experience.
- Renamed IPC channels for notifications to improve clarity and consistency.
- Updated related handlers in the main process and preload scripts to reflect the new naming convention.
- Enhanced notification service to respect user settings before sending notifications.
- Integrated `useAppSelector` in Inputbar to manage multi-selection state.
- Updated Inputbar to conditionally render based on multi-selection mode.
- Modified MessageEditor to display the resend button only for assistant messages, improving UI clarity.
- Replaced the ChatContext with a custom hook `useChatContext` for better modularity and reusability.
- Updated components to utilize the new hook, passing the active topic as an argument.
- Enhanced multi-selection logic and state management for messages, improving user experience in the chat interface.
- Removed the old ChatContext file to streamline the codebase.
- Replaced the div in ContextMenu with a styled component for better styling control.
- Enhanced Message component to handle editing state more cleanly, separating the editor from the message display.
- Adjusted styling for the MessageEditor and FileBlocksContainer for improved layout and responsiveness.
- Removed the electron-notification-state package from dependencies as it is no longer used.
- Updated NotificationService to eliminate Do Not Disturb handling.
- Changed default notification settings in the Redux store to false for assistant messages, backups, and knowledge embedding.
- Replaced singleton pattern with direct instantiation of McpService for cleaner code.
- Updated IPC handlers to use the new mcpService instance directly.
- Removed unnecessary logging in Inputbar and MCPToolsButton components to streamline functionality.
- Cleaned up error handling in McpSettings to improve user experience.
- Updated getServiceTier method to ensure proper handling of undefined OpenAI models.
- Added initialization for OpenAI settings in the migration process to set default values if not present.
- Replaced Ant Design icons with Lucide icons for a more modern look.
- Adjusted ActionButton styling to have a circular border radius.
- Updated translation keys in Chinese locales for better formatting.
- Enhanced event handling in ChatContext to manage multi-select mode more effectively.
- Cleaned up unused imports and props in MessageGroup and MessageSelect components.
* WIP
* feat: integrate notification system using Electron's Notification API
- Replaced the previous notification implementation with Electron's Notification API for better integration.
- Updated notification types and structures to support new features.
- Added translations for notification messages in multiple languages.
- Cleaned up unused dependencies related to notifications.
* refactor: remove unused node-notifier dependency from Electron config
* clean: remove node-notifier from asarUnpack in Electron config
* fix: update notification type in preload script to align with new structure
* feat: Integrate NotificationService for user notifications across various components
- Implemented NotificationService in useUpdateHandler to notify users of available updates.
- Enhanced KnowledgeQueue to send success and error notifications during item processing.
- Updated BackupService to notify users upon successful restoration and backup completion.
- Added error notifications in message handling to improve user feedback on assistant responses.
This update improves user experience by providing timely notifications for important actions and events.
* feat: Refactor notification handling and integrate new notification settings
- Moved SYSTEM_MODELS to a new file for better organization.
- Enhanced notification handling across various components, including BackupService and KnowledgeQueue, to include a source attribute for better context.
- Introduced notification settings in the GeneralSettings component, allowing users to toggle notifications for assistant messages, backups, and knowledge embedding.
- Updated the Redux store to manage notification settings and added migration logic for the new settings structure.
- Improved user feedback by ensuring notifications are sent based on user preferences.
This update enhances the user experience by providing customizable notification options and clearer context for notifications.
* feat: Add 'update' source to NotificationSource type for enhanced notification context
* feat: Integrate electron-notification-state for improved notification handling
- Added electron-notification-state package to manage Do Not Disturb settings.
- Updated NotificationService to respect user DND preferences when sending notifications.
- Adjusted notification settings in various components (BackupService, KnowledgeQueue, useUpdateHandler) to ensure notifications are sent based on user preferences.
- Enhanced user feedback by allowing notifications to be silenced based on DND status.
* feat: Add notification icon to Electron notifications
* fix: import SYSTEM_MODELS in EditModelsPopup for improved model handling
* feat(i18n): add knowledge base notifications in multiple languages
- Added success and error messages for knowledge base operations in English, Japanese, Russian, Chinese (Simplified and Traditional).
- Updated the KnowledgeQueue to utilize the new notification messages for better user feedback.
* feat(notification): introduce NotificationProvider and integrate into App component
- Added NotificationProvider to manage notifications within the application.
- Updated App component to include NotificationProvider, enhancing user feedback through notifications.
- Refactored NotificationQueue to support multiple listeners for notification handling.
- Updated registerHandler to only log and update the handler if it changes, reducing unnecessary operations.
- Removed logging from unregisterHandler for cleaner code.
- Added getFilePath method in FileManager to construct file paths based on file ID and extension.
- Updated KnowledgeContent to utilize the new getFilePath method for opening file paths, improving code clarity and maintainability.
- Simplified the onOpenChange handler in FloatingSidebar for better readability.
- Added style prop to HomeTabs for enhanced customization.
- Adjusted Container style in HomeTabs to merge with existing border styles.
- Added placeholder and adjusted styles for the Input in ContentSearch.
- Updated SearchBarContainer to use fixed positioning and improved padding.
- Refactored MessageTools to render raw content correctly and added a new MarkdownContainer for better styling.
- Minor adjustments to other components for improved layout and user experience.
- Integrated PasteService for handling paste events in Inputbar and MessageEditor components.
- Removed redundant paste handling code and improved maintainability.
- Registered paste handlers and set last focused component for better user experience.
- Ensured consistent behavior for text and file pasting across components.
Co-authored-by: beyondkmp <beyondkmkp@gmail.com>
* feat: add MCP servers via JSON quickly
* refactor(MCPSettings): Extract JSON parsing logic into a helper function
* feat: json linter for EditMcpJsonPopup
* feat(mcp): confirm the MCP server status as connection
* refactor(AddMcpServerModal): 移除冗余注释并修复加载状态
* feat(MCPSettings): Add support for SSE and streamableHttp formats and optimize server configuration parsing
- Add server type validation to ensure the type is stdio, SSE, or streamableHttp
- Optimize JSON parsing logic to ensure server configuration completeness and validity
- Update example text to provide more detailed configuration examples
* fix(MCPSettings): fix AddMcpServerModal default baseUrl login
移除serverToAdd.url作为baseUrl的备选值,确保baseUrl仅使用serverToAdd.baseUrl的值
* feat(MCPSettings): support CodeEditor in AddMcpServerModal
* fix: Remove unnecessary type checks for JSON parsing login
* fix(MCPSettings): fix compatibility issues with the URL field when parsing server data
* refactor: remove unnessary cdoe
* chore: Add a server dropdown button to integrate new features in UI
- Integrate the two buttons for adding a server into a single dropdown menu to enhance user experience and simplify the interface
* chroe: modify the Dropdown items' name of addServer
* refactor(i18n): unify the translation for the MCP server import function
---------
Co-authored-by: one <wangan.cs@gmail.com>
- Changed default value for `getTrayOnClose` to true in `ConfigManager`.
- Removed fullscreen toggle logic from `WindowService`.
- Adjusted styles in `OpenAIAlert` for better spacing.
- Reorganized imports in `Navbar` and updated component paths in `AssistantsTab` and `SettingsTab`.
- Added new components `AssistantItem` and `OpenAISettingsGroup` for better modularity.
- Enhanced `SettingGroup` styles for improved UI consistency.
- Updated `QuickPhraseSettings` to utilize theme context.
- Minor fixes and refactoring across various services and components.
* feat: add resolveFilePath functionality to file management
* Added new IPC channel for resolving file paths.
* Implemented resolveFilePath method in FileStorage service.
* Updated FileManager to utilize the new resolveFilePath method.
* Enhanced preload API to expose resolveFilePath to the renderer.
* Updated KnowledgeService to ensure file paths are correctly resolved in knowledge bases.
* refactor: remove unused path import from preload index
* Removed the unused 'resolve' import to clean up the codebase.
* Improved code readability by eliminating unnecessary dependencies.
---------
Co-authored-by: beyondkmp <beyondkmkp@gmail.com>
* feat: support default Quick Assistant model
- support the configuration of the quick assistant model.
- manage the models independently in Quick Assistant and Default Assistant.
* docs(i18n): Add translation for quick assistant model
* fix(llm): fix the default value of quickAssistantModel to silicon[1]
* refactor(i18n): uniformly the terms, changing "快速助手" to "快捷助手"
* feat: add OpenAI settings tab and related functionality
* fix: update related logic to support flexible service layer.
* fix(OpenAIResponseProvider): remove unused isOpenAILLMModel import
* refactor(Scrollbar): Optimize scroll handling logic to support external scroll events
- Refactor `onScroll` logic to support external scroll events
- Integrate with `useScrollPosition` hook for better scroll state management
- Memorize the scoll state for better user experience
- Fix type definition for `ref` attribute
- Remove unnecessary `ref` type overrides
- Improve component compatibility and maintainability
* perf(useScrollPosition): Optimize scroll position updates using requestAnimationFrame
- Wrap the `window.keyv.set` call in `requestAnimationFrame` to reduce unnecessary performance overhead and improve responsiveness during scrolling.
* fix(Messages): Remove unused FC imports and add onComponentUpdate and onFirstUpdate properties
* chore: update Yarn version to 4.9.1 and add rendering speed option for V3 model
* Discard changes to .yarnrc.yml
* Discard changes to .yarn/releases/yarn-4.6.0.cjs
* Update package.json
* Delete .yarn/releases/yarn-4.9.1.cjs
* Discard changes to .yarn/releases/yarn-4.6.0.cjs
* docs: Update README.zh.md add GitCode✖️Cherry Studio【新源力】贡献挑战赛
GitCode✖️Cherry Studio【新源力】贡献挑战赛
* fix: Update the file permissions for yarn-4.6.0.cjs, modify image links and formatting in README.zh.md
* clean
* refactor: improve switch case blocks and update config parameters in AihubmixPage
* feat: add error handling for empty image URLs and update localization messages
* refactor: replace modal error handling with warning messages for empty image URLs
* feat: update localization for rendering speed and translating messages in Japanese, Russian, and Traditional Chinese
* feat: add style types and rendering speed options to localization files
---------
Co-authored-by: 亢奋猫 <kangfenmao@qq.com>
Co-authored-by: suyao <sy20010504@gmail.com>
* feat: implement message editing and resend functionality with block management
* fix: move start_time_millsec initialization to onChunk for accurate timing
* feat: refactor message update thunks to separate block addition and updates
* feat: enhance MessageBlockEditor with toolbar buttons and attachment functionality
* refactor: implement message editing context and integrate with message operations
* style: adjust padding in MessageBlockEditor and related components
* refactor: remove MessageEditingContext and integrate editing logic directly in Message component
* refactor: streamline message rendering logic by using conditional rendering for MessageEditor and MessageContent
* refactor: remove redundant ipcRenderer variable in useMCPServers hook
* fix: Add mock for electron's ipcRenderer to support testing
* test: Update mocks for ipcRenderer and remove redundant window.electron mock
* fix: enhance file handling in MessageEditor with new Electron API
- Added support for file dragging with visual feedback.
- Improved file type validation during drag-and-drop and clipboard pasting.
- Displayed user notifications for unsupported file types.
- Refactored file handling logic for better clarity and maintainability.
* Wrapped message and block updates in a database transaction for improved consistency.
* Replaced direct updates with atomic modifications using where().modify() for better performance and clarity.
* Enhanced error handling for message updates to ensure robustness.
* feat: add FloatingSidebar component and integrate assistant switching functionality
* refactor: simplify FloatingSidebar by removing unused hooks and components
* refactor: remove unused AddAssistantPopup and related code from FloatingSidebar
* feat: implement sidebar hide cooldown and adjust tooltip delays in Navbar.
* feat: integrate HomeTabs into FloatingSidebar and update Navbar props
* refactor: remove commented-out code and unused components from FloatingSidebar
* fix: update Popover placement from rightTop to bottomRight in FloatingSidebar.
* feat: add forceToSeeAllTab prop to HomeTabs for improved tab visibility control
* fix: update HomeTabs logic to respect forceToSeeAllTab prop for tab selection
* feat: pass position prop to FloatingSidebar and HomeTabs for consistent layout control
* feat: integrate FloatingSidebar into Navbar for improved topic visibility and update HomeTabs logic for consistent tab rendering
* fix: remove unused showTopics from Navbar component
* feat: enhance topic visibility control in Navbar with cooldown logic for sidebar toggle
* fix: add onMouseOut handler to NavbarIcon for sidebar cooldown reset
---------
Co-authored-by: George Zhao <georgezhao@SKJLAB>
* Moved highlighter initialization and loading functions to a new utility file for better organization.
* Simplified theme and language loading in the SyntaxHighlighterProvider using the new utility functions.
* Removed redundant code and improved readability in MessageTools by introducing a new CollapsedContent component for rendering tool responses.
* Updated MCPDescription to use an async function for Shiki instance initialization.
* Modified the Content Security Policy to include 'unsafe-inline' for script-src.
* Changed the spinner display style from 'none' to 'flex' for better visibility.
* Removed the initSpinner function and directly initialized the spinner in useAppInit.
* Added console timing for initialization to track performance.
* Refactored MCPService to implement a singleton pattern for better instance management.
* Updated IPC registration to utilize the new getMcpInstance method for handling MCP-related requests.
* Removed redundant IPC handlers from the main index file and centralized them in the ipc module.
* Added background throttling option in WindowService configuration to enhance performance.
* Introduced delays in MCPToolsButton to optimize resource and prompt fetching after initial load.
* feat: code tools, editor, executor
CodeEditor & Preview
- CodeEditor: CodeMirror 6
- Switch to CodeEditor in the settings
- Support edit&save with a accurate diff&lookup strategy
- Use CodeEditor for editing MCP json configuration
- CodePreview: Original Shiki syntax highlighting
- Implemented using a custom Shiki stream tokenizer
- Remov code caching as it is incompatible with the current streaming code highlighting
- Add a webworker for shiki
- Other preview components
- Merge MermaidPopup and Mermaid to MermaidPreview, use local mermaidjs
- Show mermaid syntax error message on demand
- Rename PlantUML to PlantUmlPreview
- Rename SyntaxHighlighterProvider to CodeStyleProvider for clarity
- Both light and dark themes are preserved for convenience
CodeToolbar
- Top sticky toolbar provides quick tools (left) and core tools (right)
- Quick tools are hidden under the `More` button to avoid clutter, while core tools are always visible
- View&edit mode
- Allow switching between preview and edit modes
- Add a split view
Code execution
- Pyodide for executing Python scripts
- Add a webworker for Pyodide
* fix: migrate version and lint error
* refactor: use constants for defining tool specs
* feat: make setting group collapsible
* fix: yarn.lock
* fix: conflict error
---------
Co-authored-by: one <wangan.cs@gmail.com>