* fix[AgentsPage]: fix using name deduplication leads to the loss of agents with the same name
* fix[agents-zh]: fix id 499 the problem of markdown display
* fix[agent]: agent search adds descriptive text search
* feat(ProxyManager): implement SelectiveDispatcher for localhost handling
- Added SelectiveDispatcher to manage proxy and direct connections based on the hostname.
- Introduced isLocalhost function to check for localhost addresses.
- Updated ProxyManager to bypass proxy for localhost in dispatch methods and set proxy bypass rules.
- Enhanced global dispatcher setup to utilize SelectiveDispatcher for both EnvHttpProxyAgent and SOCKS dispatcher.
* refactor(ProxyManager): update axios configuration to use fetch adapter
- Changed axios to use the 'fetch' adapter for proxy requests.
- Removed previous proxy settings for axios, streamlining the configuration.
- Updated HTTP methods to bind with the new proxy agent.
* feat(Proxy): add support for proxy bypass rules
- Updated IPC handler to accept optional bypass rules for proxy configuration.
- Enhanced ProxyManager to store and utilize bypass rules for localhost and other specified addresses.
- Modified settings and UI components to allow users to input and manage bypass rules.
- Added translations for bypass rules in multiple languages.
* feat(ProxyManager): add HTTP_PROXY environment variable support
- Added support for the HTTP_PROXY environment variable in ProxyManager to enhance proxy configuration capabilities.
* lint
* refactor(ProxyManager): optimize bypass rules handling
- Updated bypass rules initialization to split the rules string into an array for improved performance.
- Simplified the isByPass function to directly check against the array of bypass rules.
- Enhanced configuration handling to ensure bypass rules are correctly parsed from the provided settings.
* refactor(ProxyManager): streamline bypass rules initialization
- Consolidated the initialization of bypass rules by directly splitting the default rules string into an array.
- Updated configuration handling to ensure bypass rules are correctly assigned without redundant splitting.
* style(GeneralSettings): adjust proxy bypass rules input width to improve UI layout
* refactor(ProxyManager): enhance proxy configuration logging and handling
- Added proxy bypass rules to the configuration method for improved flexibility.
- Updated logging to include bypass rules for better debugging.
- Refactored the setGlobalProxy method to accept configuration parameters directly, streamlining proxy setup.
- Adjusted the useAppInit hook to handle proxy settings more cleanly.
* refactor(ProxyManager): implement close and destroy methods for proxy dispatcher
- Added close and destroy methods to the SelectiveDispatcher class for better resource management.
- Updated ProxyManager to handle the lifecycle of the proxyDispatcher, ensuring proper closure and destruction.
- Enhanced error handling during dispatcher closure and destruction to prevent resource leaks.
* refactor(ProxyManager): manage proxy agent lifecycle
- Introduced proxyAgent property to ProxyManager for better management of the proxy agent.
- Implemented error handling during the destruction of the proxy agent to prevent potential issues.
- Updated the proxy setup process to ensure the proxy agent is correctly initialized and cleaned up.
* refactor(ProxyManager): centralize default bypass rules management
- Moved default bypass rules to a shared constant for consistency across components.
- Updated ProxyManager and GeneralSettings to utilize the centralized bypass rules.
- Adjusted migration logic to set default bypass rules from the shared constant, ensuring uniformity in configuration.
* refactor: align lucide icons in antd button
* refactor(AssistantsTab): use lucide icon and typography in add assistant button
* refactor: use lucide icons for assistant item dropdown
* refactor: use lucide icons in topic item dropdown
* refactor: use lucide icon in InfoTooltip, align ApiOptionsSettings expand icon
* refactor: use lucide icons in TokenCount
* refactor: use brush in assistant item dropdown
* test: update snapshot
* test: mock tooltip
* fix: token count alignment
* refactor: update icons in MessageMenubar, bump antd
* refactor: use lucide icons in MessageTools, make colors consistent
* refactor: use lucide icons in ProviderSetting
* test: simplify test with mocks
* refactor: use lucide icons in knowledge base dropdown
* refactor: export all custom icons, use EditIcon for lucide pen
* refactor: use lucide copy for CopyIcon, update tests
* refactor: use lucide icons in MessageMenubar
* refactor: improve pause and send button style
* refactor: export SvgSpinners180Ring as LoadingIcon
* refactor: use lucide icons in Agents, use DeleteIcon
* refactor: use Pencil as EditIcon
* fix: i18n key missing
* refactor: use lucide icons in Files
* refactor: use lucide icons in KnowledgeBase items
* refactor: use lucide icons in assistant settings
* refactor: use lucide icons in memory settings, add UserSelector
* chore: remove duplicate memory component
* refactor: use lucide icons in ProviderList
* refactor: use lucide icons in QuickPhraseSettings
* refactor: use lucide icons in McpSettings
* refactor: use lucide icons in DataSettings
* refactor: use lucide icons in DefaultAssistantSettings
* refactor: add icon to save
* refactor: add lucide-custom
* fix: icon position in ModelEditContent
* refactor: use ListMinus in ManageModelsList
* refactor: improve TokenCount alignment
* fix: topic pin/unpin i18n
* fix: self review
* fix: simplify knowledge base dropdown
* fix: remove plus icon color
* refactor: add ResetIcon and RefreshIcon
* refactor: update theme handling in TabContainer and Sidebar components
* refactor: replace setTheme with toggleTheme and update theme state management
* feat: add Monitor icon for additional theme state in both components
* feat(DisplaySettings): replace theme icons with lucide icons for improved visual representation
* updated light and dark theme icons to use Sun and Moon from lucide
* replaced SyncOutlined with Monitor icon for system theme option
* format code
* feat(TabContainer): add tooltip for theme toggle button with translation support
* integrated Tooltip component to provide contextual information for the theme toggle button
* utilized useTranslation hook for internationalization of tooltip text
* imported getThemeModeLabel to enhance theme description
- use DynamicVirtualList in SelectModelPopup
- use DynamicVirtualList in QuickPanelView
- remove react-window
- simplify SelectModelPopup states, improve maintainability
* perf: inlining completeLineTokens and use memo for minor improvements
* chore: bump shiki to 3.9.1
* refactor: improve token line
* refactor: add plainTokenStyle
* feat(database): enable strict transaction durability for CherryStudio database
- Updated the Dexie database initialization to include `chromeTransactionDurability: 'strict'`, enhancing data integrity during transactions.
* feat(app): enhance application shutdown process and data flushing
- Added functionality to flush storage data and cookies before quitting the application, ensuring data integrity.
- Introduced a new `handleBeforeQuit` function to centralize cleanup logic for both manual and update-triggered quits.
- Updated logging to provide better insights during the shutdown process.
- Modified ProxyManager to use debug level for unchanged proxy configurations.
- Added `persistor` to the global window object and implemented `handleSaveData` to flush Redux state before quitting.
* format code
* feat(ipc): add App_SaveData channel and implement data saving on window close
- Introduced a new IPC channel `App_SaveData` for saving application data.
- Updated `WindowService` to send a save data message when the main window is closed.
- Enhanced `useAppInit` hook to handle the `App_SaveData` event and trigger data saving logic.
* refactor(env): remove persistor from global window object
- Removed the `persistor` property from the global `window` object in both `env.d.ts` and `index.ts` files, streamlining the application state management.
- add a custom dynamic virtual list component
- add tests
- support autohide
- used in ManageModelsList, ModelListGroup, KnowledgePage, FileList
- improve DraggableVirtualList
- use name DraggableVirtualList directly, make it flex by default
- use DraggableVirtualList in ProviderList
- Update Node.js version requirement to v22.x.x or higher
- Update Yarn version to 4.9.1
- Add electron-vite version (v4.0.0) to build system docs
- Note usage of experimental rolldown-vite
- Introduced a new ApiServerSettings component for managing API server configurations.
- Updated ToolSettings to include API server options and controls.
- Enhanced GeneralSettings to improve proxy settings management.
- Refactored UI elements for better organization and user experience.
* fix(prompt): fix variable replacement in function mode
* fix(i18n): update available variables in prompt tip
* feat(prompt): replace prompt variable in Prompt and AssistantPromptSettings components
* fix(prompt): add fallback value if replace failed
* feat(prompt): add hook and settings for automatic prompt replacement
* feat(prompt): add supported variables and utility function to check if they exist
* feat(prompt): enhance variable handling in prompt settings and tooltips
* feat(i18n): add prompt settings translations for multiple languages
* refactor(prompt): remove debug log from prompt processing
* fix(prompt): handle model name variables and improve prompt processing
* fix: correct variable replacement setting and update migration defaults
* remove prompt settings
* refactor: simplify model name replacement logic
- Remove unnecessary assistant parameter from buildSystemPrompt function
- Update all API clients to use the simplified function signature
- Centralize model name replacement logic in promptVariableReplacer
- Improve code maintainability by reducing parameter coupling
* fix: eslint error
* refactor: remove unused interval handling in usePromptProcessor
* test: add tests, remove redundant replacing
* feat: animate prompt substitution
* chore: prepare for merge
* refactor: update utils
* refactor: remove getStoreSettings
* refactor: update utils
* style(Message/Prompt): 禁止文本选中以提升用户体验
* fix(Prompt): 修复内存泄漏问题,清除内部定时器
* refactor: move prompt replacement to api service
---------
Co-authored-by: one <wangan.cs@gmail.com>
Co-authored-by: icarus <eurfelux@gmail.com>
* ✨ feat: make API server default to closed/disabled
- Add `enabled` field to ApiServerConfig interface with default value false
- Update Redux store to include apiServer.enabled setting (defaults to false)
- Add setApiServerEnabled action to control server state
- Modify main process to only auto-start API server if explicitly enabled
- Update UI to show enable/disable toggle in API server settings
- Add migrations to handle existing configurations
- Server controls now only visible when API server is enabled
The API server will no longer start automatically on application launch
unless explicitly enabled by the user through the settings interface.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* 🔧 chore: improve build and lint commands
- Move typecheck and i18n checks to lint command for better developer experience
- Simplify build:check to focus on linting and testing
- Ensure all quality checks run together during development
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Claude <noreply@anthropic.com>
* refactor(ApiService): optimize memory search handling and improve error logging
- Updated fetchExternalTool to handle memory search in a separate promise, ensuring better management of asynchronous operations.
- Enhanced error logging for memory search failures to improve debugging.
- Removed redundant memory search result storage logic from the main result handling section.
* refactor(ApiService): streamline external tool fetching and memory search handling
- Simplified the fetchExternalTool function by separating web and knowledge search calls into individual await statements.
- Improved memory search handling by awaiting the searchMemory function directly, ensuring better asynchronous flow.
- Updated result storage logic to ensure memory search results are stored correctly after fetching.