Commit Graph

4549 Commits

Author SHA1 Message Date
Phantom
cd3031479c
fix(reasoning): correct regex pattern for deepseek model detection (#10407) 2025-09-28 14:07:30 +08:00
Pleasure1234
1df6e8c732
refactor(notes): improve notes management with local state and file handling (#10395)
* 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>
2025-09-28 13:50:52 +08:00
Xin Rui
ed2e01491e
fix: clear @ and other input text when exiting model selection menu w… (#10427)
fix: clear @ and other input text when exiting model selection menu with Esc
2025-09-28 13:44:27 +08:00
亢奋猫
6829a03437
fix: AI_APICallError for Gemini via proxy #10366 (#10429)
When sending requests to Gemini via proxy, the system returns:
"模型不存在或者请求路径错误".
2025-09-28 13:01:49 +08:00
icarus
cb922b67ad feat(i18n): add unknown translation key 2025-09-28 12:29:20 +08:00
icarus
b0213742f4 refactor(ChatNavbar): extract InfoTag component and add agent name display
- Extract repeated div styling into reusable InfoTag component
- Add agent name to the info items display
- Replace inline styles with tailwind classes for consistency
2025-09-28 12:29:03 +08:00
icarus
90264f6ec9 feat(MessageHeader): add agent name display for assistant messages in agent view 2025-09-28 12:22:58 +08:00
icarus
1ef6de1869 style(AgentSettings): change chip color from secondary to default for consistency 2025-09-28 12:21:42 +08:00
icarus
e4ad5084cf feat(theme): add hero UI primary color variants
Add multiple shades of the primary color for hero UI components to support better visual hierarchy and theming flexibility
2025-09-28 12:18:58 +08:00
icarus
0ef2725dfd style(AgentSettings): change ShieldAlert icon color to danger-600 for better visibility 2025-09-28 12:04:58 +08:00
icarus
4bd492f498 fix(AgentSettings): correct agent name display logic in AgentLabel 2025-09-28 11:55:53 +08:00
Vaayne
ef7433c823 🌐 fix(i18n): add missing 'common.selected' translation key across all locales
- Add 'selected' key to common section in all language files (en-us, zh-cn, zh-tw, el-gr, es-es, fr-fr, ja-jp, pt-pt, ru-ru)
- Fix CLAUDE.md documentation to use correct 'yarn sync:i18n' command
- Resolve '[to be translated]' placeholders with proper localized translations
- Ensure consistency across all supported languages

Fixes missing i18n key error: [I18N] Missing key: common.selected
2025-09-28 11:02:05 +08:00
Vaayne
b6765b48b5 Refactor translation files: Update agent terminology to assistant, remove MCP server references, and enhance permission mode descriptions across multiple languages (es-es, fr-fr, ja-jp, pt-pt, ru-ru). 2025-09-28 10:18:59 +08:00
icarus
7c45e42602 fix(assistants): add ts-ignore for ts2589 errors in state updates 2025-09-27 18:59:16 +08:00
icarus
e737f71932 feat(i18n): add unnamed translation and use in session creation
Add "unnamed" translation in both zh-cn and en-us locales
Use the translation as default name when creating new sessions
2025-09-27 18:28:08 +08:00
icarus
9ec6e5f771 fix(ui): add delay and closeDelay props to Tooltip in SessionItem
Improve user experience by adding a small delay before showing tooltip and removing the close delay
2025-09-27 18:24:13 +08:00
icarus
4647688613 fix(SessionItem): prevent event propagation when clicking delete
Stop click event propagation to avoid unintended parent component interactions when deleting a session
2025-09-27 18:10:08 +08:00
icarus
bc0f283278 fix(sessions): reset topic fulfilled state when switching sessions
Reset the topic fulfilled state when switching between sessions to ensure proper state management. Also remove redundant state update from SessionItem's onPress handler.
2025-09-27 18:09:43 +08:00
icarus
aadadf8353 fix(session): remove redundant fulfilled dispatch and add loading indicators
Remove the redundant dispatch of setTopicFulfilled in messageThunk since it's now handled in SessionItem. Add visual indicators for pending and fulfilled states in SessionItem to improve user feedback.
2025-09-27 18:03:42 +08:00
icarus
d0a0685fc1 fix(agent): update error message for empty accessible paths 2025-09-27 17:39:03 +08:00
icarus
ba7d5f53e5 feat(i18n): add anthropic api host translations and permission mode fields
Add new translation fields for Anthropic API host configuration and permission mode settings in both zh-cn and en-us locales
2025-09-27 17:36:25 +08:00
icarus
86dde5dc0f feat(agents): improve error handling and form validation in agent management
- Add getErrorMessage utility for consistent error message formatting
- Enhance addAgent to return Result type for better error handling
- Add disallowEmptySelection to form dropdowns
- Reset loading state on errors in AgentModal
2025-09-27 17:32:19 +08:00
icarus
a5ceceeca3 refactor(SessionItem): replace delete button as a div to avoid nested button 2025-09-27 17:17:39 +08:00
icarus
fcfda90d5a Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-27 17:02:34 +08:00
icarus
2ccfde1ba4 feat(agent): add emoji avatar support and refactor avatar handling
- Rename getAgentAvatar to getAgentDefaultAvatar for clarity
- Add EmojiAvatarWithPicker component for emoji selection
- Update AgentLabel to support both default and emoji avatars
- Add AvatarSetting component for avatar configuration
- Modify agent configuration schema to support emoji avatars
2025-09-27 17:02:29 +08:00
Vaayne
ae1c1409e1 feat(ChatNavbar): add session workspace metadata display in navbar 2025-09-27 16:53:49 +08:00
icarus
8c06d2f706 refactor(AgentSettings): remove unused ModelSetting component 2025-09-27 15:27:20 +08:00
icarus
1b705edb06 feat(model-selection): add model type filtering to exclude embedding/rerank/image models
Add modelFilter parameter to SelectApiModelPopup to exclude embedding, rerank and text-to-image models from selection. This ensures only appropriate models are shown based on agent type requirements.
2025-09-27 15:11:16 +08:00
icarus
42435e8f76 refactor(agent): update useUpdateAgent hook and related components
- Refactor useUpdateAgent to return both updateAgent and updateModel functions
- Update all components using useUpdateAgent to use the new hook structure
- Improve model selection by reusing SelectAgentModelButton component
- Add pagination support to useApiModels hook
2025-09-27 15:05:26 +08:00
icarus
3111979bb4 feat(components): replace spans with Ellipsis for model labels
Use Ellipsis component to handle text overflow in model labels for better readability
2025-09-27 14:27:19 +08:00
icarus
56580e3fac Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-27 14:19:06 +08:00
icarus
7084b8d429 style(AgentItem): add background color to session count chip 2025-09-27 14:19:00 +08:00
icarus
8b0e8506c2 feat(SessionItem): add confirmation for session deletion with keyboard shortcut
Add a confirmation step before deleting a session, including a tooltip showing the keyboard shortcut. Uses a timer to automatically cancel the confirmation after 3 seconds.
2025-09-27 14:17:43 +08:00
Vaayne
4d133d59ea feat: enhance Anthropic API support for compatible providers
- 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
2025-09-27 14:10:47 +08:00
Vaayne
35b885798b Add Anthropic API Host support for compatible providers
- 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
2025-09-27 14:10:47 +08:00
Vaayne
ae9e12b276 feat: add slash command functionality to agent services 2025-09-27 14:10:47 +08:00
Vaayne
8018ac1a97 feat(agent): add optional avatar and slash_commands to AgentConfigurationSchema 2025-09-27 14:10:47 +08:00
icarus
f429e3fc01 style(ui): move lucide icon color rule and add warning icon to caution text
Move the lucide icon color rule into the media query block for consistency.
Add AlertTriangleIcon to caution text in AgentModal for better visual warning.
2025-09-27 13:55:01 +08:00
icarus
6c63146556 refactor(SessionItem): replace className with isActive prop for better readability
Use isActive prop instead of className to control active state styling
Add dynamic background color based on topicPosition setting
2025-09-27 13:46:26 +08:00
icarus
29242154d0 feat(AgentItem): add session count chip for active agents
Display active session count as a chip next to agent name when agent is active
2025-09-27 13:38:21 +08:00
icarus
ccc5e830d7 refactor(Sessions): remove unused index parameter and delay from animation
Simplify animation by removing unused index parameter and delay calculation
2025-09-27 13:27:10 +08:00
Phantom
adf10f6ea1 style(settings): remove unnecessary padding from ContentContainer (#10379) 2025-09-27 10:04:34 +08:00
Zhaokun
26a6ff871f feat: improve content protection during file operations (#10378)
* feat: improve content protection during file operations

- Add validation for knowledge base configuration before saving
- Enhance error handling for note content reading
- Implement content backup and restoration during file rename
- Add content verification after rename operations
- Improve user feedback with specific error messages

* fix: format check

---------

Co-authored-by: 自由的世界人 <3196812536@qq.com>
2025-09-27 10:04:34 +08:00
MyPrototypeWhat
d1e85f964d fix(websearch): handle blocked domains conditionally in web search (#10374)
fix(websearch): handle blocked domains conditionally in web search configurations

- Updated the handling of blocked domains in both Google Vertex and Anthropic web search configurations to only include them if they are present, improving robustness and preventing unnecessary parameters from being passed.
2025-09-27 10:04:34 +08:00
kangfenmao
8d041438fd chore: remove cherryin provider references and update versioning
- Commented out all references to the 'cherryin' provider in configuration files.
- Updated the version in the persisted reducer from 157 to 158.
- Added migration logic to remove 'cherryin' from the state during version 158 migration.
2025-09-27 10:04:34 +08:00
Zhaokun
c6dc1810e9 Fix slash newline (#10305)
* Fix slash menu Shift+Enter newline

* fix: enable Shift+Enter newline in rich editor with slash commands

Fixed an issue where users couldn't create new lines using Shift+Enter when
slash command menu (/foo) was active. The problem was caused by globa
keyboard event handlers intercepting all Enter key variants.

Changes:
 - Allow Shift+Enter to pass through QuickPanel event handling
 - Add Shift+Enter detection in CommandListPopover to return false
 - Implement fallback Shift+Enter handling in command suggestion render
 - Remove unused import in AppUpdater.ts
 - Convert Chinese comments to English in QuickPanel
- Add test coverage for command suggestion functionality

---------

Co-authored-by: Zhaokun Zhang <zhaokunzhang@Zhaokuns-Air.lan>
2025-09-27 10:02:40 +08:00
Phantom
dabfb8dc0e
style(settings): remove unnecessary padding from ContentContainer (#10379) 2025-09-26 17:50:00 +08:00
Zhaokun
4aa9c9f225
feat: improve content protection during file operations (#10378)
* feat: improve content protection during file operations

- Add validation for knowledge base configuration before saving
- Enhance error handling for note content reading
- Implement content backup and restoration during file rename
- Add content verification after rename operations
- Improve user feedback with specific error messages

* fix: format check

---------

Co-authored-by: 自由的世界人 <3196812536@qq.com>
2025-09-26 17:49:24 +08:00
Vaayne
fa394576bb Refine agent permissions UI & translations 2025-09-26 17:36:46 +08:00
Vaayne
5c1ac376e6 fix(AgentConfigurationSchema): update default max_turns to 100 2025-09-26 16:32:12 +08:00
icarus
88e77aa116 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-26 14:41:07 +08:00
icarus
4e9340f551 fix(useAgents): add missing dependencies to useCallback hook 2025-09-26 14:41:01 +08:00
kangfenmao
0648a1f567 refactor(assistants): rename agents to assistants and update related components
- Updated references from 'agents' to 'assistants' across various components and hooks.
- Changed i18n keys to reflect the new terminology for better clarity.
- Removed the deprecated agents slice and integrated its functionality into the assistants slice.
- Adjusted UI components to align with the new naming conventions for assistant presets.
2025-09-26 14:37:12 +08:00
icarus
4b1f7db506 fix(AgentSessionInputbar): add agent model to dependency array
Ensure the component re-renders when agent model changes to maintain consistency with session data
2025-09-26 14:33:35 +08:00
icarus
0be2177937 fix(chat): handle agent and session state changes properly
update activeAgentId type to allow null and reset state when deleting agent
add validation for missing agent/session in UI components
2025-09-26 14:31:56 +08:00
icarus
c52cc5a94f style(sessions): update styling and add scrollbar props to DynamicVirtualList
- Change class name from agents-tab to sessions-tab and add flex layout
- Add overflowX hidden and autoHideScrollbar props to DynamicVirtualList
2025-09-26 14:01:16 +08:00
icarus
947695fdc7 feat(sessions): replace manual list with virtual list for better performance 2025-09-26 13:54:27 +08:00
icarus
75296babe3 style(SessionsTab): adjust overflow styling for cleaner appearance 2025-09-26 13:54:22 +08:00
icarus
c9381d672e style(SessionsTab): adjust overflow styling for better scroll behavior 2025-09-26 13:50:44 +08:00
icarus
67fa5df611 style(SessionsTab): add overflow-auto to improve scroll behavior 2025-09-26 13:49:56 +08:00
MyPrototypeWhat
52a980f751
fix(websearch): handle blocked domains conditionally in web search (#10374)
fix(websearch): handle blocked domains conditionally in web search configurations

- Updated the handling of blocked domains in both Google Vertex and Anthropic web search configurations to only include them if they are present, improving robustness and preventing unnecessary parameters from being passed.
2025-09-26 12:10:28 +08:00
kangfenmao
3b7ab2aec8 chore: remove cherryin provider references and update versioning
- Commented out all references to the 'cherryin' provider in configuration files.
- Updated the version in the persisted reducer from 157 to 158.
- Added migration logic to remove 'cherryin' from the state during version 158 migration.
2025-09-26 10:36:17 +08:00
icarus
122e4a10d0 refactor(api): improve session messages path handling by returning object with base and withId
Simplify deleteSessionMessage implementation by using the new paths object structure
2025-09-26 05:44:23 +08:00
Zhaokun
d41e239b89
Fix slash newline (#10305)
* Fix slash menu Shift+Enter newline

* fix: enable Shift+Enter newline in rich editor with slash commands

Fixed an issue where users couldn't create new lines using Shift+Enter when
slash command menu (/foo) was active. The problem was caused by globa
keyboard event handlers intercepting all Enter key variants.

Changes:
 - Allow Shift+Enter to pass through QuickPanel event handling
 - Add Shift+Enter detection in CommandListPopover to return false
 - Implement fallback Shift+Enter handling in command suggestion render
 - Remove unused import in AppUpdater.ts
 - Convert Chinese comments to English in QuickPanel
- Add test coverage for command suggestion functionality

---------

Co-authored-by: Zhaokun Zhang <zhaokunzhang@Zhaokuns-Air.lan>
2025-09-25 22:07:10 +01:00
icarus
b82b16b5f6 style(ui): update button hover background color to use CSS variable
Consistent hover state styling across components by using --color-list-item variable instead of accent color
2025-09-26 05:01:06 +08:00
icarus
ebdd90b235 feat(SessionsTab): add animation and styling based on topic and navbar position
Add motion animation and conditional border styling to SessionsTab component based on topicPosition and navbarPosition settings
2025-09-26 04:57:25 +08:00
icarus
5c8e06ed94 style(components): update button styling in AgentItem and SessionItem
- Change hover background color and add shadow in AgentItem
- Use cn utility for className in SessionItem
- Update height and background color for active state in SessionItem
2025-09-26 04:37:30 +08:00
icarus
f4e4586fbc refactor(SelectAgentModelButton): replace styled-components with tailwind classes
Simplify component styling by removing styled-components in favor of tailwind utility classes
2025-09-26 04:11:48 +08:00
icarus
fab1d29c83 fix: prevent model update when same model is selected 2025-09-26 04:06:17 +08:00
icarus
de9cb2fbdb feat(model-selection): add api model selection support for agents
- Introduce SelectAgentModelButton component for agent model selection
- Add SelectApiModelPopup for displaying and selecting API models
- Implement apiModelAdapter to convert API models to adapted format
- Add model filtering by agent type in agentSession utils
- Update model select components to use new API model selection
2025-09-26 04:04:23 +08:00
icarus
a419aed404 refactor(animations): simplify motion animations in SessionsTab and Sessions components
Remove redundant motion animations and streamline transition properties to improve code maintainability
2025-09-26 01:42:31 +08:00
icarus
cb47e8decd feat(Settings): Extract the reusable parts from AgentSettings for use in SessionSettings 2025-09-26 01:22:28 +08:00
icarus
3c4bb72a82 refactor(AgentSettings): extract styled components to shared module
Move styled components from AgentSettingsPopup to shared.tsx to improve code reusability and maintainability
2025-09-26 00:13:13 +08:00
icarus
cab79ef185 refactor(AgentSettings): move popup component to separate file for better organization 2025-09-26 00:11:24 +08:00
icarus
a87c06aab8 fix(home-tabs): prevent settings tab when active topic is session
Add useEffect to automatically switch to topic tab when active topic is session and tab is settings to avoid invalid state
2025-09-25 23:45:13 +08:00
icarus
c19659daa5 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-25 23:38:50 +08:00
icarus
bafde1c518 refactor(agent-settings): rename advance to advanced in settings components and types
Update component and type names from 'advance' to 'advanced' for consistency and correct spelling. This includes renaming the file and all related references in the codebase.
2025-09-25 23:38:29 +08:00
Vaayne
45961d2eda Merge remote-tracking branch 'origin/main' into feat/agents-new 2025-09-25 23:35:29 +08:00
Vaayne
e1a0dd6810 feat(timeout): implement extendMessagesTimeout middleware and set server timeouts 2025-09-25 23:33:33 +08:00
Vaayne
a1d14b9292 feat(claudecode): enhance streaming transform flow 2025-09-25 23:33:33 +08:00
Vaayne
a7d6065b08 refactor(routes): streamline provider-specific messages route setup 2025-09-25 23:33:33 +08:00
Vaayne
5dbd38721f refactor(messages): remove debug logging and enhance streaming response handling 2025-09-25 23:33:33 +08:00
Vaayne
39fcc04d78 refactor(logging): improve logging messages for clarity and consistency
- 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.
2025-09-25 23:33:33 +08:00
icarus
5c7784622e fix(AgentEssentialSettings): handle undefined name and description states
Ensure proper handling of undefined values for agent name and description by making state types optional. Also update the updateName function to handle optional name input.
2025-09-25 23:21:11 +08:00
kangfenmao
8bcd229849 feat: enhance model filtering based on supported endpoint types
- Updated CodeToolsPage to include checks for supported endpoint types for various CLI tools.
- Added 'cherryin' to GEMINI_SUPPORTED_PROVIDERS and updated CLAUDE_SUPPORTED_PROVIDERS to include it.
- Improved logic for determining model compatibility with selected CLI tools, enhancing overall functionality.
2025-09-25 22:11:29 +08:00
beyondkmp
d12515ccb9
feat: enhance multi-language support in release notes processing (#10355)
* feat: enhance multi-language support in release notes processing

* fix review comments

* format code
2025-09-25 21:51:05 +08:00
beyondkmp
499cb52e28
feat: enhance terminal command handling for macOS (#10362)
- 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.
2025-09-25 21:26:04 +08:00
MyPrototypeWhat
05a318225c
refactor(reasoning): simplify reasoning time tracking by removing unu… (#10360)
* refactor(reasoning): simplify reasoning time tracking by removing unused variables and logic

- Removed hasStartedThinking and reasoningBlockId variables as they are no longer needed.
- Updated onThinkingComplete callback to eliminate final_thinking_millsec parameter, streamlining the function.

* refactor(thinking): streamline thinking millisecond tracking and update event handling

- Removed unused thinking_millsec parameter from onThinkingComplete and adjusted related logic.
- Updated AiSdkToChunkAdapter to simplify reasoning-end event handling by removing unnecessary properties.
- Modified integration tests to reflect changes in thinking event structure.
2025-09-25 19:06:25 +08:00
one
caad0bc005
fix: svg foreignobject in code blocks (#10339)
* fix: svg foreignobject in code blocks

* fix: set white-space explicitly
2025-09-25 18:02:06 +08:00
beyondkmp
067ecb5e8e
style: update UpdateNotesWrapper to use markdown class for improved formatting (#10359) 2025-09-25 09:07:27 +01:00
kangfenmao
3088887e57 Merge branch 'main' into feat/agents-new 2025-09-25 15:02:52 +08:00
beyondkmp
0f8cbeed11
fix(translate): remove unused effect for clearing translation contenton mount (#10349)
* fix(translate): remove unused effect for clearing translation content on mount

* format code
2025-09-25 13:44:17 +08:00
fullex
f6ff436294 refactor: replace keyv with cacheService 2025-09-25 11:38:05 +08:00
SuYao
a3a26c69c5
fix: seed think (#10322)
* fix: 添加 seedThink 标签以支持新的模型识别

* Enable reasoning for SEED-OSS models

- Add SEED-OSS model ID check to reasoning exclusion logic
- Include SEED-OSS models in reasoning model detection

* fix: 更新 reasoning-end 事件处理以使用最终推理内容
2025-09-25 10:55:31 +08:00
Johnny.H
2bafc53b25
Show loading icon when chat is in streaming (#10319)
* support chat stream loading rendering

* support chat stream loading rendering

* update loading icon to dots

* fix format

---------

Co-authored-by: suyao <sy20010504@gmail.com>
2025-09-24 23:27:07 +08:00
fullex
8a9b633af2 Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 2025-09-24 22:30:56 +08:00
Phantom
0a37146ba8
refactor(SelectModelPopup): replace HStack with Flex component (#10337)
refactor(SelectModelPopup): replace HStack with Flex component for layout
2025-09-24 20:10:12 +08:00
icarus
14f14b75b0 fix(home-tabs): correct conditional rendering of topic and settings tabs
Ensure tabs are only shown when isTopicView is true and simplify the tab labels by removing conditional rendering
2025-09-24 19:24:36 +08:00
icarus
77351b7691 refactor(home-tabs): improve tab view logic readability
Extract topic view check into separate variable for clarity
Rename canShowSettingsTab to shouldShowSettingsTab for better semantics
2025-09-24 19:21:40 +08:00
icarus
b28fadd02f feat(AgentSettings): add description field to agent essential settings 2025-09-24 18:49:51 +08:00
icarus
63fa70863c refactor(AgentSessionInputbar): use agent model instead of session model for consistency
Use agent's model information instead of session's to maintain consistency across the application. The model ID format changed from "sessionId:modelId" to "provider:modelId" and the model object is now constructed using the actual model details from the agent.
2025-09-24 18:41:51 +08:00
George·Dong
09e9b95e08
fix(reasoning): thinking control for ds v3.1 of tencent platform (#10333)
* feat(reasoning): add Hunyuan and Tencent TI thinking config

* fix: style

* fix(reasoning): merge same type providers
2025-09-24 18:38:13 +08:00
icarus
11a76ae90f fix(AgentModal): improve modal layout and fix description field position
Adjust modal height and overflow behavior
Move description textarea below prompt field for better logical flow
2025-09-24 18:27:26 +08:00
kangfenmao
bf2ffb7465 chore: bump version to v1.6.0-rc.5 and update release notes 2025-09-24 18:06:25 +08:00
kangfenmao
287c96ea2e feat: implement isNewApiProvider utility for provider identification
- Added isNewApiProvider function to streamline checks for 'new-api' and 'cherryin' providers.
- Updated ApiClientFactory, providerConfig, and various components to utilize isNewApiProvider for improved readability and maintainability.
- Refactored conditional checks across multiple files to replace direct string comparisons with the new utility function.
2025-09-24 16:39:23 +08:00
kangfenmao
adacb8c638 style: update padding and width in various components for improved layout
- Adjusted padding in TabsBar and Navbar components to enhance spacing.
- Updated ItemRenderer and Sortable components to accept itemStyle prop for custom styling.
- Changed NotesSidebar scroll behavior from 'smooth' to 'instant'.
- Modified MCP server card width to 100% for better responsiveness.
- Set wrapperStyle and itemStyle to 100% width in McpServersList for consistent item display.
2025-09-24 16:31:25 +08:00
suyao
1973e4d290
refactor: remove unnecessary type declaration for request body in message processing 2025-09-24 15:35:22 +08:00
Vaayne
7a169c424d refactor: update logging in message processing to use debug level and improve clarity 2025-09-24 14:23:06 +08:00
George·Dong
ec4d106a59
fix(minapps): openMinApp function doesn't work properly (#10308)
* feat(minapps): support temporary minapps

* feat(settings): use openSmartMinApp with app logo to open docs sites

* refactor(icons): replace styled img with tailwind

* feat(tab): tighten types

* feat(tab): use minapps cache and log missing entries

* test(icons): update MinAppIcon snapshot to reflect class and attrs
2025-09-24 14:19:06 +08:00
fullex
ac3dfcbfbe Merge branch 'main' of github.com:CherryHQ/cherry-studio into v2 2025-09-24 13:13:58 +08:00
beyondkmp
fe6e65f263 format code 2025-09-24 12:59:00 +08:00
Phantom
fe0c0fac1e
fix(assistant): enforce id requirement when updating assistant (#10321)
* fix(assistant): enforce id requirement when updating assistant

Ensure assistant id is always provided when updating assistant properties by making it a required field in the update payload. This prevents potential bugs where updates might be applied to wrong assistants.

* refactor(useAssistant): simplify updateAssistant callback by removing redundant id

Update InputbarTools to use simplified callback signature
2025-09-24 12:24:28 +08:00
beyondkmp
f05b884646 use fork instead of spawn 2025-09-24 11:08:43 +08:00
icarus
8e163b8f17 Merge branch 'main' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-24 03:28:54 +08:00
icarus
6950b6f1e7 feat(session-item): add in-place editing for session names
- Implement double-click to edit session names directly in the list
- Add loading state during save operation
- Update useInPlaceEdit hook to support async operations and saving state
- Adjust styling to accommodate new edit input field
2025-09-24 03:21:00 +08:00
icarus
0e35224787 refactor(SessionModal): remove unused model selection code and related imports
clean up unused model selection logic and dependencies that are no longer needed in the session modal component
2025-09-24 02:17:43 +08:00
icarus
e5a84a2e84 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-24 02:14:57 +08:00
Vaayne
09da7113a0 refactor: disable debug logging for SDK message transformation 2025-09-23 23:53:07 +08:00
Vaayne
e6e43dbcca feat: conditionally render settings tab based on session view 2025-09-23 23:35:41 +08:00
Vaayne
e02f826707 refactor: update API configuration handling and improve logging level 2025-09-23 22:51:53 +08:00
Vaayne
781b01ee17 feat: refactor shell environment handling and move to utils 2025-09-23 22:36:14 +08:00
icarus
1f1086ed7b style(AgentAdvanceSettings): adjust width styling for maxTurns input 2025-09-23 22:28:42 +08:00
icarus
0a80fc5517 refactor(hooks): improve scroll position hook with timer utility
- Replace setTimeout with useTimer utility for better cleanup
- Add throttleWait parameter for configurable scroll throttling
- Update documentation to reflect changes
2025-09-23 22:20:35 +08:00
beyondkmp
6d8edc95d9 fix spawn no node error 2025-09-23 21:34:51 +08:00
beyondkmp
a54b49cc30 fix app unpack error 2025-09-23 20:31:40 +08:00
kangfenmao
37218eef4f feat: enable cherryin provider 2025-09-23 20:19:05 +08:00
kangfenmao
3b34efd33a feat(settings): update MCP server card layout and styling
- Adjusted the width of the CardContainer to dynamically calculate based on viewport width.
- Changed the layout of the McpServersList from grid to list, with a vertical orientation and updated styling for list items.
2025-09-23 19:49:41 +08:00
kangfenmao
cc650b58d3 feat(privacy): add English and Chinese privacy policy pages and popup component
- Introduced new HTML files for the privacy policy in English and Chinese.
- Implemented a PrivacyPopup component to display the privacy policy within the application.
- The popup dynamically loads the appropriate language based on user settings and includes options to accept or decline the policy.
2025-09-23 19:49:41 +08:00
kangfenmao
183b46be9e feat(ipc): add App_Quit channel and update related handlers
- 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.
2025-09-23 19:49:41 +08:00
jo1yne06
a847b74c32
feat: add new provider aionly (#10179)
* feat: add new provider aionly

* fix(store): update migration to properly add 'aionly' provider in v156

Move 'aionly' provider addition from v155 to v156 migration to ensure proper state initialization

---------

Co-authored-by: fengjunhao <765838796@qq.com>
Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
Co-authored-by: icarus <eurfelux@gmail.com>
Co-authored-by: 亢奋猫 <kangfenmao@qq.com>
2025-09-23 19:49:24 +08:00
suyao
d1b339f71d
fix: 修复代码格式和简化错误处理逻辑 2025-09-23 19:03:54 +08:00
MyPrototypeWhat
a3c638946e feat(tools): enhance type definitions for agent tools
- Added detailed JSDoc comments for clarity on tool input types, including ReadToolInput, TaskToolInput, BashToolInput, and others.
- Introduced new input types such as ListMcpResourcesToolInput and ReadMcpResourceToolInput to expand functionality.
- Improved existing types to ensure better documentation and usability for developers.
2025-09-23 18:02:44 +08:00
suyao
a0193451a9
feat: 更新会话列表查询,按更新时间降序排序 2025-09-23 17:54:48 +08:00
suyao
ede2b75cd0
feat: 移除特性标志相关代码,简化消息存储逻辑 2025-09-23 17:40:29 +08:00
suyao
34ab01e0a1
Merge branch 'feat/agents-new' of https://github.com/CherryHQ/cherry-studio into feat/agents-new 2025-09-23 17:34:47 +08:00
suyao
b493172090
feat: 添加提取会话ID的功能并更新消息发送逻辑 2025-09-23 17:34:23 +08:00
Vaayne
6bcd941cc6 feat: Implement delete message functionality and validation in session messages 2025-09-23 16:08:52 +08:00
Vaayne
98ebfd12b3 refactor: Improve logging and error handling in MCPApiService and ClaudeCodeService 2025-09-23 16:08:52 +08:00
MyPrototypeWhat
305a454ffd feat(tools): add new agent tools for enhanced functionality
- Introduced new tools: EditTool, MultiEditTool, BashOutputTool, NotebookEditTool, and ExitPlanModeTool.
- Updated MessageTool to support new tool types.
- Enhanced ReadTool to handle output as an array of text outputs.
- Improved type definitions to accommodate new tools and their inputs/outputs.
2025-09-23 14:47:58 +08:00
GitHub Action
dfc593f2e1 fix(i18n): Auto update translations for PR #10096 2025-09-23 06:05:52 +00:00
icarus
b50203f85d Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-23 14:04:54 +08:00
icarus
e2a0792e2d feat(AgentToolingSettings): improve modal styling and accessibility
- Add text color classes to modal title and list items for better visibility
- Apply background and border styling to modal content
- Use modal hook pattern for consistency
2025-09-23 14:03:13 +08:00
icarus
b7d97cca69 style(AgentToolingSettings): improve warning message layout and search input width 2025-09-23 13:36:15 +08:00
suyao
7cdc80c3e2
Merge branch 'feat/agents-new' of https://github.com/CherryHQ/cherry-studio into feat/agents-new 2025-09-23 13:25:27 +08:00
GitHub Action
59b6cbc23c fix(i18n): Auto update translations for PR #10096 2025-09-23 04:32:42 +00:00
Vaayne
21c436d900 refactor: Clean up JSON structure and improve readability in locale files 2025-09-23 12:23:10 +08:00
icarus
87f3628b49 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-23 12:19:53 +08:00
icarus
27b315bcca style(AgentSection): add margin bottom to agents tab container 2025-09-23 12:19:47 +08:00
Vaayne
1ec81f9e75 Merge remote-tracking branch 'origin/feat/agents-new' into feat/agents-new 2025-09-23 12:16:58 +08:00
Vaayne
087e757f9f feat: Refactor agent settings and introduce tooling permissions
- Translated and reorganized Russian language JSON for tooling and permissions.
- Removed deprecated MCP and tool settings components.
- Introduced new AgentToolingSettings component to manage tooling permissions and MCP servers.
- Updated AgentSettings index to reflect new tooling settings structure.
- Enhanced agent configuration schema to include permission modes with default values.
2025-09-23 11:59:43 +08:00
icarus
ce955e3ee9 refactor(AgentEssentialSettings): replace antd Select with custom Select component
The antd Select component was replaced with a custom Select component from @heroui/react to improve consistency with the design system. This change also simplifies the model selection logic by removing the need for manual option mapping.
2025-09-23 11:45:36 +08:00
icarus
4ddada4de8 refactor(AgentToolSettings): wrap Alert component in div for better structure
Improve component structure by wrapping Alert in a div element to maintain consistent layout and styling
2025-09-23 11:19:00 +08:00
icarus
164386a337 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-23 11:15:44 +08:00
icarus
d4d2510834 feat(agent): add AllowedToolsSelect component and integrate into forms
extract tool selection logic into reusable component to reduce code duplication and improve maintainability
2025-09-23 11:13:11 +08:00
GitHub Action
46a5ea88f3 fix(i18n): Auto update translations for PR #10096 2025-09-23 02:35:34 +00:00
Vaayne
7ca9dcd2fb ♻️ refactor: improve agent tool approval UI with dedicated settings tab
- Move tool selection from essential settings to dedicated "Pre-approved tools" tab
- Update terminology from "Allowed tools" to "Pre-approved tools" for clarity
- Add new AgentToolSettings component with enhanced card-based layout
- Include warning alert about pre-approved tools bypassing review
- Update all language files with new terminology and translation keys
- Add i18n sync guidance to CLAUDE.md development commands
2025-09-23 10:31:41 +08:00
Vaayne
9c679ede20 feat(agent): add advanced configuration settings 2025-09-23 10:31:41 +08:00
Vaayne
60c85b651f feat: add MCP server support for agents
- Add MCP server configuration UI for agent settings
- Update agent and session forms to include MCP server selection
- Fix MCP API service logging and tools handling
- Add Chinese localization for MCP settings
- Update type definitions to support MCP server arrays

This enables agents to use MCP (Model Control Protocol) servers
as additional tools and capabilities in their execution context.
2025-09-23 10:31:40 +08:00
icarus
73895b5f4b feat(agents): enhance model handling with filters and styling
- Add filter support to useApiModel hook for provider-specific models
- Improve ApiModelLabel with customizable classNames for styling
- Update ChatNavbar to use filtered models for agents
2025-09-23 10:30:53 +08:00
icarus
3e2acde9e2 feat(SessionModal): add multiline support for tools selection
Enable multiline display for the tools selection dropdown to improve visibility when multiple tools are selected
2025-09-23 10:19:24 +08:00
suyao
a1d8f3eb0f
Implement InputbarTools registry system for tool management
- Add ToolDefinition interface and registry mechanism with dependency injection
- Create InputbarToolsProvider for shared state management (files, mentionedModels, etc.)
- Migrate existing tools to registry-based definitions and simplify component props
2025-09-23 06:15:33 +08:00
suyao
0aba7bad31
Remove TODO file after completing agents service refactor
- Delete obsolete TODO.md tracking interface-level refactor tasks
- All major refactor items marked as completed except regression tests
- File removal reflects transition from planning to implementation phase
2025-09-23 06:11:06 +08:00
suyao
75660766db
feat: 将日志级别从 info 更改为 silly,以增强调试信息的详细程度 2025-09-23 06:06:29 +08:00
suyao
53a6c70eca
feat: 添加条件渲染以隐藏假助手的设置组,优化用户界面 2025-09-23 06:04:25 +08:00
suyao
da18ff3d48
feat: 优化工具名称和描述的样式,增强可读性;添加 TopicType 支持到导出测试 2025-09-23 05:49:08 +08:00
suyao
4a671a9bc2
feat: 添加输入框统一计划文档,定义配置层和共享UI组件的任务 2025-09-23 05:37:45 +08:00
suyao
ae1839ac33
feat: 添加代理会话初始化钩子并在相关组件中使用 2025-09-23 05:19:00 +08:00
suyao
56dbe6b050
feat: 添加消息菜单栏配置和按钮渲染逻辑 2025-09-23 05:05:31 +08:00
suyao
f5a41e9c78
feat: add agent session renaming functionality based on message summary 2025-09-23 04:10:37 +08:00
suyao
f65149af19
Merge branch 'feat/agents-new' of https://github.com/CherryHQ/cherry-studio into feat/agents-new 2025-09-23 03:38:00 +08:00
suyao
affef443b6
feat: improve block merging logic in message updates 2025-09-23 03:36:04 +08:00
suyao
e40e1d0b36
feat: refactor message persistence and block update logic for agent sessions 2025-09-23 03:18:17 +08:00
Vaayne
14638b7470 feat: add tool selection functionality for agents and sessions
Add comprehensive tool management UI allowing users to select which tools are pre-approved for agents and sessions. Includes multi-select dropdowns with tool descriptions, proper validation, and internationalization support across 10+ languages.

- Add tool selection UI to AgentModal, SessionModal, and AgentEssentialSettings
- Extend BaseAgentForm and related types with allowed_tools field
- Implement tool validation and filtering logic
- Add i18n support for tool selection labels and descriptions
- Include visual chip-based display for selected tools
2025-09-23 00:21:27 +08:00
Vaayne
b4a92cecc8 feat: enhance agent creation and session management with automatic session provisioning 2025-09-23 00:21:27 +08:00
Vaayne
49e4667410 fix: resolve lint findings in renderer 2025-09-23 00:21:27 +08:00
Vaayne
5d26bf15a3 fix: stabilize tool streaming typings 2025-09-23 00:21:27 +08:00
MyPrototypeWhat
7631d9d730 feat(Tools): add WebFetchTool and update tool rendering logic
- Introduced WebFetchTool for fetching web content with specified prompts and URLs.
- Updated MessageTool to include WebFetch in the tool rendering options.
- Enhanced BashTool and TaskTool to improve display of input and output information.
- Refactored GenericTools for better parameter display and consistency across tools.
- Adjusted types to include WebFetchTool input and output definitions.
2025-09-22 23:47:51 +08:00
suyao
1b8bb568b1
Merge branch 'refactor/agent-assistant-unified' into feat/agents-new 2025-09-22 23:14:46 +08:00
suyao
18da9a19fd
chore: remove docs 2025-09-22 23:12:46 +08:00
suyao
7fdae0173c
Implement file reference count cleanup with deleteIfZero support
- Update DexieMessageDataSource to delete files when count reaches zero and deleteIfZero is true
- Add deleteIfZero parameter to MessageDataSource interface and all implementations
- Modify updateFileCountV2 thunk to pass deleteIfZero parameter through DbService
2025-09-22 23:12:08 +08:00
suyao
c872707791
Remove TODO.md and update DbService file count interface
- Delete TODO.md as the unified data layer implementation is complete
- Remove unsupported deleteIfZero parameter from updateFileCountV2 call
2025-09-22 23:08:08 +08:00
suyao
a0cab3341e
Refactor message loading in useSession hook to use centralized thunk
- Replace manual message loading logic with loadTopicMessagesThunk for better caching
- Remove unused imports and local state management
- Simplify useEffect dependencies and loading flow
2025-09-22 23:05:33 +08:00
beyondkmp
25c5d671dc
fix(assistant): update translate assistant content handling for QwenMT model (#10306)
* fix(assistant): update translate assistant content handling for QwenMT model

- Adjusted content assignment in getDefaultTranslateAssistant to use store settings only when the model is not a QwenMT model, ensuring correct translation behavior.

* lint err

* refactor(assistant): encapsulate content handling logic for translation

- Introduced a new function, getTranslateContent, to streamline content assignment in getDefaultTranslateAssistant.
- This change improves readability and maintains correct translation behavior for QwenMT models.

* format code
2025-09-22 23:04:57 +08:00
suyao
035001f841
Ensure session messages are properly restored when switching sessions
- Add Redux selector to check for existing messages in store
- Always reload messages to Redux when session data is available
- Add effect to restore messages when component mounts if missing from Redux
2025-09-22 22:53:57 +08:00
suyao
f533c1a2ca
Refactor agent session messages to use shared hook and implement batch deletion
- Replace manual Redux logic with `useTopicMessages` hook for consistent message loading behavior
- Add `deleteMessages` method to message data sources with proper block and file cleanup
- Update `DbService` to delegate batch deletion to appropriate data source implementations
2025-09-22 22:50:45 +08:00
suyao
e5aa58722c
Optimize agent message streaming with throttled persistence
- Prevent unnecessary message reloads by checking existing messages before loading session messages
- Implement LRU cache and throttled persistence for streaming agent messages to reduce backend load
- Add streaming state detection and proper cleanup for complete messages to improve performance
2025-09-22 22:29:03 +08:00
suyao
8645fe4ab1
Remove persistExchange functionality and simplify agent session handling
- Delete persistExchange method from all data sources and DbService
- Remove unused Topic import and MessageExchange type dependencies
- Simplify agent session existence check to validate sessionId directly
- Make getRawTopic required in MessageDataSource interface
2025-09-22 22:03:47 +08:00
suyao
15f216b050
Implement agent session message persistence and streaming state management
- Add comprehensive solution documentation for status persistence and streaming state
- Implement message update functionality in AgentMessageDataSource for agent sessions
- Remove redundant persistAgentExchange logic to eliminate duplicate saves
- Streamline message persistence flow to use appendMessage and updateMessageAndBlocks consistently
2025-09-22 21:46:40 +08:00
suyao
b4df5bbb13
Fix agent session message persistence by saving messages immediately
- Modify AgentMessageDataSource.appendMessage to save messages to backend immediately instead of waiting for response completion
- Add proper error handling and logging for message persistence operations
- Create comprehensive test documentation covering V2 database service scenarios
2025-09-22 21:06:16 +08:00
suyao
a17a198912
Add V2 database service integration with feature flag support
- Integrate V2 implementations for message operations (save, update, delete, clear) with feature flag control
- Add topic creation fallback in DexieMessageDataSource when loading non-existent topics
- Create integration status documentation tracking completed and pending V2 migrations
- Update Topic type to include TopicType enum for proper topic classification
2025-09-22 20:40:53 +08:00
MyPrototypeWhat
939782ac4e
refactor(Tools): replace MCPToolResponse with NormalToolResponse in m… (#10303)
* refactor(Tools): replace MCPToolResponse with NormalToolResponse in message tools and add new agent tools

- Updated MessageKnowledgeSearch, MessageMemorySearch, and MessageWebSearch components to use NormalToolResponse.
- Refactored MessageTool to handle NormalToolResponse and simplified tool rendering logic.
- Introduced new agent tools: BashTool, GlobTool, GrepTool, ReadTool, SearchTool, TaskTool, and TodoWriteTool with corresponding types and renderers.
- Enhanced type safety by updating tool response types in the codebase.

* fix(i18n): Auto update translations for PR #10303

* chunk type

* refactor(migration): renumber migration steps after removing step 155

Remove unused migration step 155 and renumber subsequent steps to maintain sequence

* fix(store): prevent mutation of assistant presets by using spread operator

* fix(store): ignore ts-2589 false positives and refactor preset updates

Refactor assistant preset updates to use forEach instead of map for consistency
Add ts-ignore comments for TypeScript false positives in store operations

* Fix tool result handling and session creation flow

- Populate toolName in tool-result chunks from contentBlockState
- Add onSessionCreated callback to SessionModal for post-creation actions
- Return created session from useSessions hook and update SWR cache optimistically

* Fix toolName reference in ClaudeCode message transformation

- Correctly reference toolName from contentBlockState using blockKey instead of block.tool_use_id
- Ensure proper tool result chunk generation when handling assistant messages
- Maintain consistent data structure for tool call processing

* Fix toolName reference and add stream event logging

- Correct toolName lookup to use tool_use_id instead of blockKey in tool-result chunks
- Add debug logging for stream event handling
- Update contentBlockState key to use event.content_block.id for tool_use events

* Add debug logging for message content blocks

- Log each content block when processing user or assistant messages
- Maintain existing switch case logic for text block handling
- Improve debugging visibility for multi-block message processing

* get toolName

* chore: bump version to 1.7.0-alpha.1

* fix(getSdkClient): add authToken to anthropic client initialization for claude code

* Update transform.ts

* Refactor logging levels in transform.ts and adjust JSON body parser configuration in app.ts

* refactor(sessions): simplify session creation by removing modal and using direct button

The SessionModal component was removed and replaced with a direct button click handler that creates a session using the agent data. Also added error handling to display an alert when session fetching fails.

* feat(agents): add api server check and warning for agent features

- Add api server enabled check in multiple components
- Show warning alert when api server is disabled
- Add dismissable warning in AgentSection
- Disable send button when api server is disabled
- Add iknow state to store dismissed warnings

* feat(i18n): add warning message for enabling API server

Add warning message in multiple languages to inform users they need to enable API server to use agent features

* feat(sessions): make session creation async and set active session

Dispatch active session id after successful creation to ensure UI reflects current state

* feat(sessions): add session waiting state and improve deletion handling

- Add sessionWaiting state to track updating/deleting sessions
- Extract updateSession logic into separate hook
- Improve session deletion with waiting state and fallback session selection
- Disable session items during deletion to prevent duplicate actions

* feat(i18n): add error message for last session deletion

Add error message to prevent deletion of the last session in all supported languages

* fix(i18n): Auto update translations for PR #10096

* fix(i18n): Auto update translations for PR #10096

* feat(tools): add WriteTool and update tool rendering logic

- Introduced WriteTool for handling file writing operations.
- Updated MessageAgentTools to include the new WriteTool in the tool renderers.
- Refactored existing tools to streamline rendering and improve code clarity.
- Enhanced BashTool and TaskTool to better display input and output information.

---------

Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: suyao <sy20010504@gmail.com>
Co-authored-by: icarus <eurfelux@gmail.com>
Co-authored-by: Vaayne <liu.vaayne@gmail.com>
2025-09-22 19:53:10 +08:00
suyao
7e369bef00
Merge branch 'feat/agents-new' into refactor/agent-assistant-unified 2025-09-22 19:45:23 +08:00
suyao
c3adcf663f
Merge branch 'feat/agents-new' of https://github.com/CherryHQ/cherry-studio into feat/agents-new 2025-09-22 19:24:54 +08:00
suyao
373b2fcd78
feat: abort 2025-09-22 19:24:20 +08:00
GitHub Action
c9d1e30f8b fix(i18n): Auto update translations for PR #10096 2025-09-22 10:49:01 +00:00
icarus
761b57a834 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-22 18:48:17 +08:00
icarus
632871b2f8 feat(i18n): add error message for last session deletion
Add error message to prevent deletion of the last session in all supported languages
2025-09-22 18:48:11 +08:00
icarus
52f00f08f2 feat(sessions): add session waiting state and improve deletion handling
- Add sessionWaiting state to track updating/deleting sessions
- Extract updateSession logic into separate hook
- Improve session deletion with waiting state and fallback session selection
- Disable session items during deletion to prevent duplicate actions
2025-09-22 18:47:24 +08:00
suyao
1d5761b1fd
WIP 2025-09-22 18:32:19 +08:00
icarus
42dbc6555c feat(sessions): make session creation async and set active session
Dispatch active session id after successful creation to ensure UI reflects current state
2025-09-22 17:55:21 +08:00
GitHub Action
b237d9d38d fix(i18n): Auto update translations for PR #10096 2025-09-22 09:50:47 +00:00
icarus
1e9a811065 feat(i18n): add warning message for enabling API server
Add warning message in multiple languages to inform users they need to enable API server to use agent features
2025-09-22 17:49:55 +08:00
icarus
3c12f9052e feat(agents): add api server check and warning for agent features
- Add api server enabled check in multiple components
- Show warning alert when api server is disabled
- Add dismissable warning in AgentSection
- Disable send button when api server is disabled
- Add iknow state to store dismissed warnings
2025-09-22 17:48:05 +08:00
icarus
9425437480 refactor(sessions): simplify session creation by removing modal and using direct button
The SessionModal component was removed and replaced with a direct button click handler that creates a session using the agent data. Also added error handling to display an alert when session fetching fails.
2025-09-22 17:14:58 +08:00
Vaayne
2385fba695 Refactor logging levels in transform.ts and adjust JSON body parser configuration in app.ts 2025-09-22 16:32:32 +08:00
suyao
634c478e18
Update transform.ts 2025-09-22 16:11:19 +08:00
suyao
23c4117d6f
get toolName 2025-09-22 16:01:58 +08:00
suyao
4a5d3b31ab
Add debug logging for message content blocks
- Log each content block when processing user or assistant messages
- Maintain existing switch case logic for text block handling
- Improve debugging visibility for multi-block message processing
2025-09-22 15:21:59 +08:00
suyao
17a27f0d55
Fix toolName reference and add stream event logging
- Correct toolName lookup to use tool_use_id instead of blockKey in tool-result chunks
- Add debug logging for stream event handling
- Update contentBlockState key to use event.content_block.id for tool_use events
2025-09-22 15:18:24 +08:00
suyao
8fbb93b0bf
Fix toolName reference in ClaudeCode message transformation
- Correctly reference toolName from contentBlockState using blockKey instead of block.tool_use_id
- Ensure proper tool result chunk generation when handling assistant messages
- Maintain consistent data structure for tool call processing
2025-09-22 15:09:34 +08:00
suyao
e09cd6b6d7
Fix tool result handling and session creation flow
- Populate toolName in tool-result chunks from contentBlockState
- Add onSessionCreated callback to SessionModal for post-creation actions
- Return created session from useSessions hook and update SWR cache optimistically
2025-09-22 15:05:03 +08:00
suyao
efa54f3435
Merge branch 'feat/agents-new' of https://github.com/CherryHQ/cherry-studio into feat/agents-new 2025-09-22 14:42:41 +08:00
icarus
88a2cd6659 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-22 14:41:30 +08:00
icarus
4e26291a61 fix(store): ignore ts-2589 false positives and refactor preset updates
Refactor assistant preset updates to use forEach instead of map for consistency
Add ts-ignore comments for TypeScript false positives in store operations
2025-09-22 14:41:22 +08:00
icarus
f25142e597 fix(store): prevent mutation of assistant presets by using spread operator 2025-09-22 14:31:35 +08:00
GitHub Action
462fc84240 fix(i18n): Auto update translations for PR #10096 2025-09-22 06:29:28 +00:00
icarus
c97ad627d1 refactor(migration): renumber migration steps after removing step 155
Remove unused migration step 155 and renumber subsequent steps to maintain sequence
2025-09-22 14:28:40 +08:00
suyao
36307abc30
Merge branch 'feat/agents-new' of https://github.com/CherryHQ/cherry-studio into feat/agents-new 2025-09-22 14:11:10 +08:00
GitHub Action
8d3dbcb5f8 fix(i18n): Auto update translations for PR #10096 2025-09-22 06:08:24 +00:00
icarus
9d9ae7ba4e feat(i18n): add error messages for agent operations
Add error messages for agent get/list operations and restructure accessible paths validation messages
2025-09-22 14:04:37 +08:00
icarus
d682045655 refactor(AgentSettings): remove unused agentModel variable and TODO comment 2025-09-22 14:02:44 +08:00
icarus
381397ed31 style(AgentSettings): remove overflow-y scroll and adjust overflow settings
Update overflow behavior in settings components to use auto instead of scroll
and add right padding to prevent content clipping
2025-09-22 13:59:05 +08:00
icarus
4484f39525 feat(agent): enhance agent settings with accessible paths management
- Add UI for managing accessible paths in agent settings
- Improve error handling and loading states in agent components
- Update type definitions for better type safety
- Remove outdated comments and fix styling issues
2025-09-22 13:56:09 +08:00
icarus
82c08128b6 refactor(useModels): merge default filter with provided filter
Use lodash merge to combine provided filter with default values
2025-09-22 12:28:03 +08:00
icarus
8cd40a471e refactor(agent): replace agent type label map with switch statement
Simplify agent type label handling by replacing the map with a direct switch statement. Also update related type references and array type assertions for consistency.
2025-09-22 12:14:45 +08:00
icarus
bd6428d473 refactor(AgentSettings): extract modal content into separate component for better readability 2025-09-22 11:22:57 +08:00
kangfenmao
87d9c7b410 feat: add client ID generation and update user agent headers in AppUpdater
- Introduced a new method in ConfigManager to generate and retrieve a unique client ID.
- Updated AppUpdater to include the client ID in the request headers alongside the user agent.
2025-09-22 09:55:43 +08:00
Vaayne
d7960140dc feat(claudecode): add allowedTools to session configuration in invoke method 2025-09-22 09:55:26 +08:00
icarus
d7052b547f refactor(agents): remove unused agent entities and related code
Clean up agents store by removing deprecated AgentEntity-related code that is no longer used. This simplifies the store structure as we're moving away from redux.
2025-09-22 00:34:29 +08:00
icarus
6aaef9b7be docs: remove completed TODO comment from Sessions component 2025-09-22 00:21:45 +08:00
icarus
b246676257 chore(AgentEssentialSettings): add todo comment for future enhancements 2025-09-22 00:19:25 +08:00
icarus
0e4b1820e7 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-22 00:16:25 +08:00
icarus
1833092998 fix(useAgent): handle fake agent id to prevent unnecessary API calls 2025-09-22 00:16:19 +08:00
SuYao
67a6a6a445
fix: support leadingspace to avoid normal text (#10264)
* fix: support leadingspace to avoid normal text

* Close QuickPanel when no search results found

Add automatic closing of QuickPanel when search yields no results for
single-select input triggers, preventing users from getting stuck with
empty result lists.

* fix: reopen quick panel while editing trigger text

* fix: hide quick trigger hints when disabled

* Update zh-tw.json
2025-09-22 00:11:27 +08:00
GitHub Action
00717126e5 fix(i18n): Auto update translations for PR #10096 2025-09-21 16:07:26 +00:00
icarus
3816076464 refactor(i18n): reorganize translation keys and add new entries
- Move 'label' from agent type to root type section
- Add new prompt settings and type-related translations
- Update Chinese translations for consistency
2025-09-22 00:06:18 +08:00
icarus
710592b053 refactor(agents): rename useModels to useApiModels and extract model label component
Extract ModelLabel component into standalone ApiModelLabel and rename useModels hook to useApiModels for better clarity. Update all references to use the new names. This improves code organization and maintainability.
2025-09-22 00:04:15 +08:00
icarus
828c22310d feat(AgentSettings): add model selection to agent essential settings
Add model selection dropdown to agent settings and update agent model on change
2025-09-21 23:39:06 +08:00
icarus
f45b744318 feat(AgentSettings): add model selection to essential settings
- Make model prop optional in ModelAvatar component
- Ensure models array always returns an array in useModels hook
- Export SelectorProps type for reuse
- Add getProviderNameById utility function
- Introduce ModelLabel component for displaying model info
- Update AgentEssentialSettings to include model selection dropdown
2025-09-21 23:31:13 +08:00
icarus
f49d3791b6 refactor(AgentSettings): restructure settings components for better reusability
- Replace SettingsInline with more flexible SettingsItem component
- Add SettingsContainer for consistent layout
- Remove redundant styled components in favor of shared components
2025-09-21 22:41:09 +08:00
icarus
ea62294bd8 refactor(agent-settings): extract shared components and improve styling
- Move common components (AgentLabel, SettingsTitle, SettingsInline) to shared file
- Update CSS to use @layer base for better organization
- Fix agent type label translation key in AgentModal
- Add agent type label utility function
2025-09-21 22:16:15 +08:00
icarus
bfe2e87f59 feat(agent-settings): add prompt settings tab and refactor essential settings
- Introduce new AgentPromptSettings component for managing agent prompts
- Move prompt-related functionality from AgentEssentialSettings to new component
- Add avatar display to essential settings
- Improve layout structure and styling for both settings components
2025-09-21 21:27:39 +08:00
QiyuanChen
4f8507036a
feat(image): add Qwen-Image models in the Siliconflow (#10268)
* feat: 添加 Qwen 图像模型到 TEXT_TO_IMAGES_MODELS

* Remove Qwen-Image-Edit
2025-09-21 21:09:37 +08:00
suyao
6f6944d003
chunk type 2025-09-21 20:14:05 +08:00
GitHub Action
4216ffd0da fix(i18n): Auto update translations for PR #10096 2025-09-21 09:26:30 +00:00
Vaayne
a32fad06a0 Merge remote-tracking branch 'origin/main' into feat/agents-new 2025-09-21 17:25:02 +08:00
Vaayne
1a49972583 ♻️ refactor: standardize tool management and API responses
- Rename built_in_tools field to tools for consistency
- Add type field to Tool schema (builtin/mcp/custom)
- Consolidate tool handling in BaseService with listMcpTools method
- Remove unused CreateSessionResponse and related schemas
- Clean up unused imports and dead code in session handlers
- Unify agent and session tool resolution logic
2025-09-21 17:23:04 +08:00
Vaayne
a09c52424f 💄 style: format code with yarn format 2025-09-21 16:44:54 +08:00
Vaayne
b869869e26 feat: implement comprehensive Claude Code OAuth integration and API enhancements
- 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.
2025-09-21 16:42:46 +08:00
George·Dong
acf2f4758f
fix(note&knowledge): failed to add external notes to knowledge (#10210)
* fix(note): failed to add external notes to knowledge

* fix(knowledge): delay queue check after adding note

* style(popups): reformat conditional file read for clarity
2025-09-21 11:35:04 +08:00
Vaayne
c3b2af5a15 refactor: streamline session handling and enhance message transformation 2025-09-21 00:31:04 +08:00
Vaayne
01ffd4c4ca refactor(ClaudeCodeService): remove unused anthropicService import and update oauth handling 2025-09-20 23:26:37 +08:00
Vaayne
a5d4a01ad8 feat: support claude code oauth and api key 2025-09-20 23:21:17 +08:00
icarus
4d266fddb1 fix(AgentEssentialSettings): prevent unnecessary updates when name unchanged 2025-09-20 21:37:54 +08:00
icarus
20dd4794b0 refactor(AgentSettings): remove redundant toast notification after save 2025-09-20 21:35:37 +08:00
icarus
7b96900726 refactor(agents): extract update agent logic into separate hook
Move update agent functionality from useAgent and useAgents hooks into a dedicated useUpdateAgent hook to improve code organization and maintainability
2025-09-20 21:31:44 +08:00
icarus
043a4fb5ca docs(i18n): translate essential settings to chinese 2025-09-20 21:18:21 +08:00
icarus
82e144be4c feat(i18n): add accessible paths translations and settings entry
Add translations for accessible paths section in session settings across multiple languages
Move accessible_paths object to consistent location in JSON structure
Add placeholder for essential settings in all language files
2025-09-20 21:13:00 +08:00
icarus
9b22e1671f refactor(agent-settings): replace agent modal with dedicated settings popup
Move agent editing functionality from inline modal to a dedicated settings popup component for better maintainability and separation of concerns. The new implementation provides a more structured settings interface with essential agent configuration options.
2025-09-20 21:11:58 +08:00
icarus
7999149901 style(Assistants): adjust button width and formatting for consistency 2025-09-20 20:28:26 +08:00
icarus
c70a5d63aa refactor(home/Tabs): replace redux state with local state for active tab
Simplify tab state management by using useState instead of redux
Remove unused imports and clean up useEffect dependencies
2025-09-20 20:24:24 +08:00
icarus
d1067bb6b3 refactor(home/tabs): reorganize components and implement topic/session switching
- Move Assistants and Agents components to dedicated folders
- Split TopicsTab into separate Topics and SessionsTab components
- Add activeTopicOrSession state handling in runtime store
- Update tab switching logic to support both topics and sessions
- Clean up and optimize component imports and exports
2025-09-20 20:18:31 +08:00
icarus
b43b4b581e refactor(home/Tabs): restructure tabs components and add section names
- Split AssistantsTab into separate components (Assistants and Agents)
- Add SectionName component for better UI organization
- Remove unused tabs ('agents' and 'sessions') from chat type
- Clean up imports and type definitions
2025-09-20 19:44:20 +08:00
Phantom
5ac09d5311
refactor: migrate to toast from antd message (#10233)
* style(eslint): reorganize eslint config comments and rules

Move comments to consistent positions above their corresponding rules
Update antd import restriction to include 'message' component

* fix(eslint): reorganize eslint config to enable custom rules

* fix(eslint): update antd import restriction to include message

Prevent direct imports of both Flex and message from antd, enforcing usage of custom components

* feat(migration): add toast utilities to migrate and test apps

Initialize toast utilities on window object for both migration and test applications to enable toast notifications

* build(ui): add path aliases for types and utils modules

* refactor(toast): move toast utilities to ui package for better reusability

Centralize toast utilities in the @cherrystudio/ui package to improve code organization and reuse across multiple components. This change includes:
- Moving toast implementation to ui package
- Updating all imports to use the new location
- Adding proper type definitions

* refactor: replace antd message with window.toast for consistency

Replace all instances of antd's message component with window.toast throughout the application to maintain consistent notification behavior. Also add an ignore rule for dataRefactorTest files in eslint config.
2025-09-20 16:58:41 +08:00
suyao
86a2780e2c
Add initial chunk emission for agent response processing
- Emit `ChunkType.LLM_RESPONSE_CREATED` event to mirror assistant behavior
- Ensure UI reflects pending state immediately during response processing
- Maintain consistency with existing stream processing callback structure
2025-09-20 16:58:24 +08:00
suyao
d960a42d6e
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
2025-09-20 16:41:15 +08:00
suyao
3ae1b3d4cb
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
2025-09-20 16:33:56 +08:00
suyao
1c045231c8
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
2025-09-20 16:28:16 +08:00
suyao
282aa6e81a
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
2025-09-20 16:23:37 +08:00
suyao
117e390cf1
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
2025-09-20 16:05:18 +08:00
suyao
34b05a138b
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
2025-09-20 15:58:33 +08:00
suyao
6c233fef9f
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
2025-09-20 15:55:42 +08:00
suyao
1c813aa6c3
Merge branch 'refactor/agent-align' of https://github.com/CherryHQ/cherry-studio into refactor/agent-align 2025-09-20 15:52:32 +08:00
suyao
dd5592ddbb
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
2025-09-20 15:49:40 +08:00
GitHub Action
6e9d8a1747 fix(i18n): Auto update translations for PR #10276 2025-09-20 07:24:06 +00:00
suyao
cee78c6610
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
2025-09-20 15:19:11 +08:00
suyao
0b2dfbb88f
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.
2025-09-20 14:53:08 +08:00
suyao
1fd44a68b0
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.
2025-09-20 13:31:29 +08:00
beyondkmp
0697c79daa
fix: use translate assistant's content instead of select text (#10266)
use assistant.content instead of select text
2025-09-20 01:25:30 +08:00
icarus
fcacc50fdc Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-20 00:53:55 +08:00
icarus
009b58c9c3 feat(i18n): add error message for failed session retrieval 2025-09-20 00:53:49 +08:00
icarus
77c64cf868 refactor(hooks): improve error handling in useSessions hook
- Remove redundant agentId checks as they're handled by the API client
- Add consistent error formatting using formatErrorMessageWithPrefix
- Update error messages for all session operations
2025-09-20 00:52:39 +08:00
icarus
f5acddbfeb refactor(agent): extract shared components and improve model handling
- Extract common option components to shared.tsx for reuse
- Make useModels filter parameter optional
- Update SessionModal to use real model data from API
2025-09-20 00:48:17 +08:00
MyPrototypeWhat
3d6a82fb00
fix(providerConfig): add includeUsage option to provider configuration (#10269) 2025-09-20 00:41:45 +08:00
icarus
ae35d689ec feat(AgentModal): add dynamic model options from API
Fetch model options from API instead of using mocked data
Display provider label for model options
2025-09-20 00:32:51 +08:00
icarus
825b5e1be4 refactor(error-handling): move error formatting functions to error utils
Consolidate error formatting functions (formatAgentServerError and formatAxiosError) into error.ts utility file to improve code organization and maintainability
2025-09-20 00:32:43 +08:00
SuYao
97e9e42173
Add azure-responses provider and fix ordered list styling (#10267)
- Include azure-responses case in provider options switch
- Set decimal list-style for ordered lists in markdown
2025-09-20 00:24:29 +08:00
Vaayne
17df1db120 ♻️ refactor: simplify streaming message lifecycle management
- Remove unused persistence tracking variables in message handler
- Simplify finalizeResponse logic by removing unnecessary checks
- Change 'finish' event type to 'complete' for consistency
- Add debug logging for streaming events
- Clean up dead code and improve readability
2025-09-20 00:14:02 +08:00
Vaayne
d56521260c ️ perf: add caching layer for MCP servers and providers data access
- Extract getServersFromRedux to shared utility getMCPServersFromRedux
- Implement 5-minute TTL cache for MCP servers and providers
- Reduce redundant Redux store queries in API server
- Improve response times for frequently accessed data
2025-09-20 00:13:26 +08:00
icarus
8efafc6ba9 feat(hooks): add useModels hook for fetching agent models 2025-09-19 23:51:46 +08:00
icarus
f35987a9a9 refactor(api): rename modelsPath to getModelsPath for consistency
Align method naming with other path getter methods in the class for better code maintainability and consistency
2025-09-19 23:50:04 +08:00
icarus
c7ec55c69a refactor(types): rename ApiModelsRequest to ApiModelsFilter for clarity
Update type name and related imports to better reflect its purpose as a filter type rather than a request type
2025-09-19 23:48:58 +08:00
icarus
c77d7dff78 feat(api): add models endpoint to agent client and type response
Add new models endpoint to AgentApiClient with query parameter support
Ensure type safety by adding ApiModelsResponse type and schema validation
2025-09-19 23:43:20 +08:00
Vaayne
b282e4d729 feat: implement robust AbortController for Claude Code agent streams
- Add AbortController support to agent service interface and implementations
- Enhance client disconnect detection with multiple HTTP event listeners (req.close, req.aborted, res.close)
- Implement proper abort error handling in ClaudeCodeService with 'cancelled' event type
- Add comprehensive documentation explaining SSE disconnect detection behavior
- Clean up stream interfaces by removing unused properties and simplifying event structure
- Extend timeout from 5 to 10 minutes for longer-running agent tasks
- Ensure proper resource cleanup and prevent orphaned processes on client disconnect

This enables reliable cancellation of long-running Claude Code processes when clients
disconnect unexpectedly (browser tab close, curl Ctrl+C, network issues, etc.)
2025-09-19 23:42:46 +08:00
Vaayne
c426876d0d feat(transform): refactor message handling to unify user and assistant processing 2025-09-19 22:36:19 +08:00
Vaayne
027ef17a2e feat(agents): enhance ClaudeCodeService to support MCP configurations and additional directories 2025-09-19 21:51:33 +08:00
Vaayne
f0ac74dccf feat(agents): enhance error messages for agent and session operations; update accessible paths handling 2025-09-19 20:20:20 +08:00
Vaayne
d6468f33c5 feat(agents): implement model validation for agent and session creation/updating 2025-09-19 20:20:20 +08:00
Vaayne
1515f511a1 feat(agents): refactor agent invocation to use session object and enhance error handling 2025-09-19 20:20:20 +08:00
Vaayne
1c2211aefb feat(agents): add ensurePathsExist method to validate and create accessible paths 2025-09-19 20:20:20 +08:00
Vaayne
49f9dff9da feat(models): update models filtering to use providerType and enhance API schemas 2025-09-19 20:20:19 +08:00
SuYao
5d8e706c0b
fix: Change unsupported provider error to return undefined (#10257)
Change unsupported provider error to return undefined

Replace thrown error with empty object return and update function
signature to allow undefined return type for unsupported providers
2025-09-19 18:48:40 +08:00
MyPrototypeWhat
a8cd2e2eac
feat(AiSdkToChunkAdapter): fix mcp response image (#10262) 2025-09-19 18:26:21 +08:00
Zhaokun
1e615d69e1
fix: prevent backspace from deleting files when text contains whitespace (#10261)
- Change condition from text.trim() === '' to text.length === 0
- Users can now delete whitespace characters (spaces, tabs, newlines) without accidentally deleting attached files
- File deletion only occurs when text is completely empty
- Maintains existing functionality for file deletion when text is truly empty

Fixes: Blank character input causes backspace to incorrectly delete attached images

Signed-off-by: zhaokun <zhaokun_zhang@icloud.com>
2025-09-19 18:26:13 +08:00
icarus
92ba1e4fc3 fix(SessionMessageService): stringify user message content to ensure proper formatting 2025-09-19 17:54:25 +08:00
icarus
7060aab33d fix: reverse message order and fix mutation revalidation
Reverse message display order for better UX and prevent unnecessary revalidation during message creation
2025-09-19 17:52:17 +08:00
icarus
0cce8220ce Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-19 17:46:32 +08:00
icarus
1722d9f435 feat(i18n): add error message for failed message creation
Add "create_message" error translation in multiple language files
2025-09-19 17:44:58 +08:00
icarus
078fd57eb5 fix(agent): update message id and improve content handling
- Change default message id from -1 to 77777 in useSession
- Remove schema validation for session response temporarily
- Add proper content parsing for agent session messages
2025-09-19 17:44:08 +08:00
icarus
4bd6087dc0 feat(chat): add agent session inputbar component
Implement input bar for agent sessions with message sending functionality
2025-09-19 17:39:24 +08:00
icarus
e45231376c feat(useSession): add optimistic updates for message creation
Implement optimistic UI updates when creating new messages to improve perceived performance. The changes include cloning the current session data, adding a draft message immediately, and handling rollback on error.
2025-09-19 17:39:04 +08:00
icarus
01c7e509fd feat(hooks): add createSessionMessage to useSession hook
Expose new function to create messages for agent sessions and automatically refresh session data
2025-09-19 17:01:47 +08:00
icarus
5ddf9683b4 feat(chat): add session messages view and active state tracking
Implement agent session messages display component and track active topic/session state
Add AgentSessionMessages component and integrate with chat view
Update topic and session selection to set active state in store
2025-09-19 16:39:02 +08:00
Vaayne
d91df12dbc feat(models): refactor models service to use new API models schema and types 2025-09-19 16:36:11 +08:00
icarus
64e3de9ada feat(chat): add activeTopicOrSession state to track current view
Add new state field and action to track whether the user is viewing topics or sessions in the chat interface. This enables proper UI state management when switching between views.
2025-09-19 16:27:50 +08:00
Vaayne
2cf2f04a70 feat(chat): enhance chat completion error handling and streaming support
feat(messages): improve message validation and add streaming support
feat(tests): add HTTP tests for chat and message endpoints
2025-09-19 16:16:33 +08:00
Vaayne
73380d76df feat(models): enhance models endpoint with filtering and pagination support 2025-09-19 16:16:33 +08:00
Vaayne
38076babcf feat(messages): add messages route and service for handling Anthropic messages 2025-09-19 16:16:33 +08:00
icarus
00cc410dcc refactor(SessionItem): remove confirmation modal for delete action
Simplify delete flow by removing the confirmation modal and directly calling onDelete
2025-09-19 15:59:18 +08:00
icarus
7fc676bbc3 fix(useSession): provide default empty array for messages when undefined
Make messages field optional in GetAgentSessionResponseSchema to match actual API behavior and prevent potential undefined access
2025-09-19 15:56:09 +08:00
icarus
798126d39c feat(session): add session modal component to session item
Implement session modal for editing session details, using existing disclosure hooks
2025-09-19 15:46:52 +08:00
icarus
874d74cf6e feat(chat): add tab state management to redux store
Move tab state from component local state to redux store for better state management across components
2025-09-19 15:43:39 +08:00
icarus
d73834e7f6 feat(i18n): add session add/edit translation keys
Add new translation keys for session add/edit functionality in multiple languages
2025-09-19 15:28:11 +08:00
icarus
cb3afaceab refactor(agent): consolidate agent update logic into useAgents hook 2025-09-19 15:27:23 +08:00
icarus
fc0ba5d0d5 feat(hooks): add useSession hook for managing agent sessions 2025-09-19 15:27:10 +08:00
icarus
7ce4fc50ea refactor(hooks): remove unused useUpdateAgent hook 2025-09-19 15:24:39 +08:00
icarus
b5ef8a93ca refactor(useAgent): simplify mutate call in agent update
The previous implementation unnecessarily spread the previous state when only the result is needed. This simplifies the mutation logic while maintaining the same behavior.
2025-09-19 15:24:33 +08:00
icarus
8ead4e9c0f feat(sessions): add session creation modal and improve session item styling
- Implement SessionModal component for creating/editing sessions
- Replace Button wrapper with fragment in SessionItem for cleaner styling
- Add translation support and proper form handling for session creation
2025-09-19 15:21:27 +08:00
icarus
432d84cda5 refactor(sessions): simplify session update API by using form object
Remove redundant sessionId parameter from updateSession methods since it's already included in the UpdateSessionForm. This makes the API more consistent and reduces potential for mismatched IDs.
2025-09-19 15:08:53 +08:00
icarus
d3378dcf78 refactor(types): use inferred type for CreateSessionRequest 2025-09-19 14:56:50 +08:00
icarus
f0724af2aa refactor(agent-modal): move AgentModal component to agent subdirectory
Restructure the component organization by moving AgentModal.tsx into a dedicated agent subdirectory under Popups. This improves maintainability by grouping related agent components together.

Update all import paths to reflect the new location. The component functionality remains unchanged.
2025-09-19 14:55:26 +08:00
icarus
f127150ea1 feat(sessions): implement session management ui and state
- Rename Container to ButtonContainer for consistency
- Add activeSessionId state to track active sessions per agent
- Implement Sessions and SessionItem components with loading state
- Add session selection and deletion functionality
2025-09-19 14:54:04 +08:00
icarus
b3ef6d4534 feat(i18n): add error messages for session operations
Add error messages for session deletion and update failures in all supported languages. Also include a generic delete failure message.
2025-09-19 14:09:05 +08:00
icarus
1ce791d517 feat(AgentsTab): add loading spinner for agents list
Show spinner while agents are loading to improve user experience
2025-09-19 14:07:56 +08:00
icarus
3d561ad8e3 refactor(sessions): extract sessions component and update hook to use agentId
Move sessions rendering logic to a separate component and modify useSessions hook to work with agentId instead of full agent entity. This improves code organization and simplifies the hook interface.
2025-09-19 14:07:23 +08:00
icarus
14509d1077 feat(hooks): add useAgent hook for managing agent state and updates 2025-09-19 14:07:03 +08:00
icarus
a424e3a039 feat(agents): add success toast notifications for agent operations 2025-09-19 13:32:16 +08:00
icarus
eaa5ec5545 refactor(agents): remove unused useRemoveAgent hook and use deleteAgent from useAgents 2025-09-19 13:30:50 +08:00
icarus
5850e5da66 refactor(AgentItem): simplify component structure and remove unused logger
- Remove Button wrapper from AgentLabel component
- Replace div container with Button component for better semantics
- Clean up unused logger service and related click handler
2025-09-19 13:28:36 +08:00
icarus
eb3ff6f570 fix(agents): convert null values to undefined in database responses
Ensure type consistency by converting null values from database to undefined as specified in type definitions
2025-09-19 13:14:20 +08:00
icarus
ae9c78e643 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-19 12:58:21 +08:00
icarus
445528aff7 refactor(agent): replace interface with zod schema for message request
Add createMessage method to AgentApiClient to handle posting messages to sessions
2025-09-19 12:58:14 +08:00
Vaayne
d13c25444c feat(agents, sessions): enhance agent and session schemas with detailed properties and CRUD API documentation 2025-09-19 12:56:20 +08:00
Vaayne
5386716ebe feat(session messages): enhance session message persistence with improved error handling and completion notifications 2025-09-19 12:56:20 +08:00
Vaayne
d8b47e30c4 feat(session messages): implement user message persistence and retrieve last agent session ID 2025-09-19 12:56:20 +08:00
icarus
1c19e529ac Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-19 12:51:08 +08:00
MyPrototypeWhat
d4fd8ffdcc refactor(SettingsTab): update Selector component usage for consistency
- Simplified Selector component usage in SettingsTab by removing deprecated props and updating to the new API.
- Added size and label props to enhance accessibility and user experience.
- Ensured consistent handling of selected keys and selection change events across multiple instances of Selector.
2025-09-19 12:10:33 +08:00
fullex
84274d9d85 Merge branches 'v2' and 'main' of github.com:CherryHQ/cherry-studio into v2 2025-09-19 11:19:29 +08:00
Vaayne
514b60f704 feat(agents, sessions): implement replace functionality for agent and session updates 2025-09-19 11:13:05 +08:00
Vaayne
df1d4cd62b refactor(sessions): update getSession and related methods to include agentId parameter 2025-09-19 10:41:26 +08:00
Vaayne
5048d6987d refactor(validators): migrate validation logic to Zod for agents and sessions 2025-09-19 10:27:02 +08:00
icarus
809736dd33 feat(sessions): add update session functionality
Introduce UpdateSessionResponse type and schema to support session updates. Implement update session methods across client, service, and handler layers to enable session modifications.
2025-09-18 22:58:49 +08:00
icarus
369cc37071 feat(sessions): add delete session functionality to agent api and hook
Implement session deletion by adding deleteSession method to AgentApiClient and corresponding hook in useSessions. This enables removing sessions from the UI with proper error handling and cache invalidation.
2025-09-18 22:52:46 +08:00
icarus
d0b64dabc2 fix(agents): correct agent update and retrieval logic
Fix mutation logic to use result.id instead of form.id for consistency
Make getAgent async and update cache with fetched agent data
2025-09-18 22:51:02 +08:00
icarus
02d2838424 fix(agent): add response validation for ID mismatches
Add checks to ensure response IDs match expected values in agent API calls
2025-09-18 22:50:05 +08:00
icarus
4c4039283f fix(useSessions): correct session fetching logic to use API call
Previously the getSession hook was only searching local data. Now it properly fetches from the API and updates the cache. This ensures data consistency when sessions are modified elsewhere.
2025-09-18 22:46:24 +08:00
icarus
77df6fd58e feat(sessions): add getSession method to retrieve specific session
Implement session retrieval functionality in both hook and API client to enable fetching individual sessions by ID
2025-09-18 22:37:02 +08:00
icarus
100801821f fix(agents): update agents list response structure to match API
Align frontend and backend types for agents list response. The API now returns paginated data with limit/offset and renamed 'agents' field to 'data' for consistency. Update related type definitions and usage across the codebase.
2025-09-18 22:26:54 +08:00
icarus
2201ebbb88 feat(i18n): add error messages for agent and session operations
Add error messages for agent deletion, update, and session creation operations
Add "no response" error message for all supported languages
2025-09-18 22:21:27 +08:00
icarus
9810f01330 feat(sessions): add create session functionality to agent api and hook
Implement session creation in the agent API client and expose it through the useSessions hook. The hook now provides a createSession method that updates the session list upon successful creation.
2025-09-18 22:19:52 +08:00
icarus
7b428be93d feat(types): add session form interfaces for agent operations
Add BaseSessionForm, CreateSessionForm and UpdateSessionForm interfaces to support session management functionality
2025-09-18 22:10:53 +08:00
beyondkmp
f039aa253d
fix: update default content in getDefaultTranslateAssistant function (#10247)
* fix: update default content in getDefaultTranslateAssistant function

Changed the default content from 'follow system instruction' to 'go' in the getDefaultTranslateAssistant function to improve clarity and intent.

* use user instead of system prompt

* lint error
2025-09-18 22:03:51 +08:00
icarus
a4c2ed5328 fix(api): update error handling to match new error structure
The AgentServerError schema was updated to nest error properties under an 'error' object. This commit aligns the error formatting function with the new schema structure.
2025-09-18 22:02:42 +08:00
icarus
934cc0dd33 refactor(useAgents): simplify agent data structure and mutations
Remove unnecessary nesting of agents array in SWR response and simplify mutation logic to work directly with the array
2025-09-18 22:00:25 +08:00
icarus
da61500e34 feat(hooks): add useSessions hook for agent session management 2025-09-18 21:57:18 +08:00
icarus
db2042800b feat(agent): add listSessions method to AgentApiClient
Implement session listing functionality for agents by adding the listSessions method. This enables retrieving all sessions associated with a specific agent.
2025-09-18 21:50:14 +08:00
icarus
08772741e6 feat(agent-sessions): add schema and type for listing agent sessions
Add ListAgentSessionsResponseSchema and type to support paginated session listing
2025-09-18 21:49:02 +08:00
icarus
f5f542911f feat(sessions): add CreateSessionResponse type for better type safety
Introduce CreateSessionResponse type and schema to clearly define the return type of session creation operations. This improves type safety and consistency across the codebase when handling session responses.
2025-09-18 21:43:06 +08:00
icarus
3b5b1986e6 feat(hooks): add getAgent function to useAgents hook 2025-09-18 21:34:25 +08:00
icarus
3b0995c8ef feat(agents): add deleteAgent hook to useAgents
Implement agent deletion functionality with optimistic updates and error handling
2025-09-18 21:22:20 +08:00
icarus
34c95ca787 feat(agents): add update agent functionality and error message
Add updateAgent method to useAgents hook and update agent API client
2025-09-18 21:20:58 +08:00
icarus
a4c2a1d435 feat(i18n): add new translation keys for agent errors and session management
Add "failed" error message for agent addition and implement session-related translations including delete confirmation and labels
2025-09-18 20:49:04 +08:00
icarus
e4f0743e2f fix(api): replace Axios constructor with axios.create for better defaults
Using axios.create() provides better default configuration and error handling compared to the Axios constructor
2025-09-18 20:47:53 +08:00
icarus
7632efda88 fix(api): handle ZodError in processError and formatErrorMessage
Add explicit handling of ZodError in processError to return the error directly and in formatErrorMessage to use formatZodError for better error reporting
2025-09-18 20:40:30 +08:00
icarus
ab90eb2aab refactor(AgentModal): replace useAddAgent with useAgents hook 2025-09-18 20:29:04 +08:00
icarus
4c5bed0b1f fix(agents): add http protocol to agent client base url 2025-09-18 20:28:08 +08:00
icarus
302331043a refactor(agent): add error logging in agent api client
Use logger service to log errors when processing API requests
2025-09-18 20:25:40 +08:00
icarus
09f5e7af8c feat(agents): implement add agent functionality in useAgents hook
Add createAgent method to useAgents hook and remove unused useAddAgent hook
Use formatErrorMessageWithPrefix for better error handling
2025-09-18 20:25:28 +08:00
icarus
27f98b02a6 feat(sessions): add sessions tab with basic functionality and translations
- Create new SessionsTab component with mock data
- Add session item component with context menu for edit/delete
- Include session tab in main navigation
- Add English translations for session-related strings
2025-09-18 19:26:25 +08:00
icarus
af6a3c87d6 fix(AgentItem): add missing onPress dependency to useCallback
Ensure the callback is updated when onPress prop changes to avoid stale closures
2025-09-18 19:17:10 +08:00
Phantom
a72feebead
refactor: migrate Switch from antd to heroui (#10237)
* refactor(eslint): reorganize eslint config for better maintainability

Move ignores section and oxlint configs to be grouped with other configurations

* fix(eslint): update antd import restriction to include Switch

Add Switch to restricted imports from antd to enforce using custom components

* feat(ui): add Switch component wrapper and update imports

Add a wrapper for the Switch component from @heroui/react and export it through @cherrystudio/ui. Update eslint rules to prevent direct imports from @heroui/react and update imports in TranslateSettings to use the new wrapper

* refactor(ui): replace antd Switch with custom Switch component

Migrate all instances of antd Switch component to the custom Switch component from @cherrystudio/ui. This includes updating props from `checked` to `isSelected` and `onChange` to `onValueChange` to match the new component's API. Also updates size prop from `small` to `sm` where applicable.

The change ensures consistency across the UI and reduces dependency on antd components. All affected files have been updated to use the new Switch component with proper prop mappings.

* feat(ui): enhance Switch component with loading state

Add loading state support to Switch component by showing a spinner when isLoading is true and disabling interaction during loading. Update all Switch component usages to use the new isLoading prop instead of loading.

* fix(Switch): prevent thumbIcon override when isLoading is true

Implement type constraints to disallow thumbIcon when isLoading is true
Add ref forwarding support and export enhanced props type

* fix(settings): update Switch component props to use consistent naming

Change deprecated 'defaultChecked' and 'disabled' props to 'defaultSelected' and 'isDisabled' respectively to match component library updates

* refactor(Switch): simplify type definition by removing redundant ref prop

* refactor(Switch): simplify props type definition for loading state

Remove complex union type in favor of simpler interface extending SwitchProps

* docs(ui): add jsdoc for CustomizedSwitch component

Add documentation for the CustomizedSwitch component to clarify its purpose and the isLoading prop usage

* fix(eslint): comment out heroui import restriction rule

Temporarily disable the heroui import restriction to allow direct imports while wrapped components are being updated

* style: fix formatting and spacing in settings components
2025-09-18 19:16:53 +08:00
icarus
d1819274bb Revert "feat(agent): add name field to AgentSessionEntitySchema"
This reverts commit 8058ed21b3.
2025-09-18 19:13:24 +08:00
icarus
8058ed21b3 feat(agent): add name field to AgentSessionEntitySchema
Add name field to agent session schema to support session naming functionality
2025-09-18 19:11:52 +08:00
icarus
eaf302bb40 Merge branch 'feat/agents-new' of github.com:CherryHQ/cherry-studio into feat/agents-new 2025-09-18 19:04:14 +08:00
icarus
3405b7e429 refactor(ui): rename agents to assistantPresets for consistency
Update route paths, i18n keys and tab identifiers to use 'assistantPresets' instead of 'agents'
Add new agents tab component while maintaining backward compatibility
2025-09-18 19:04:05 +08:00
icarus
2fc1df8793 refactor(ui): remove unused UI elements and commented code
clean up UI by removing unused text spans and commented out code
remove unused timer functionality from AgentModal
2025-09-18 19:00:41 +08:00
icarus
1c978e0684 feat(agents): add agent selection functionality
- Replace onTagClick with onPress handler in AgentItem
- Add active agent state management in AgentsTab
- Wrap AgentItem content in Button for better interaction
2025-09-18 18:47:37 +08:00
icarus
e938e1572c feat(chat): add activeAgentId to track current agent state
Add activeAgentId field to chat state to track which agent is currently active. This enables UI to reflect the active agent state and handle agent-specific interactions.
2025-09-18 18:43:10 +08:00
icarus
9a7681c5c8 refactor(agent): update agent form types and mutation hooks
- Add proper type definitions for AddAgentForm and UpdateAgentForm
- Split agent mutation hooks into separate files
- Update AgentModal to use new form types and hooks
- Remove redundant fields from form submissions
2025-09-18 18:39:02 +08:00
icarus
259f2157f6 refactor(agent): split AgentForm into BaseAgentForm and specific types
Improve type safety by separating AgentForm into BaseAgentForm for shared fields and specific types for add/update operations. This better reflects the actual usage patterns in the API client and modal components.
2025-09-18 18:21:52 +08:00
Yicheng
5a7521e335
fix(models): add qwen-plus new model (#10172)
* add qwen-plus new model

* add qwen-plus new model

* fix(models): unify qwen-plus configuration of THINKING_TOKEN_MAP

* fix(models): unify qwen-plus configuration of THINKING_TOKEN_MAP
2025-09-18 18:19:33 +08:00
icarus
21ce139df0 refactor(agents): replace unimplemented mutation with simple function
Replace the placeholder mutation implementation in useUpdateAgent hook with a simpler function that shows a toast notification. This removes the unnecessary query client usage for an unimplemented feature.
2025-09-18 18:10:53 +08:00
icarus
71536d6ef5 refactor(agents): replace useMutation with simple function in useAddAgent
The mutation logic was removed and replaced with a simple function that shows a toast message. This is a temporary solution until the actual API implementation is ready.
2025-09-18 18:09:58 +08:00
icarus
ef1a035701 feat: add AgentsTab component for managing agents 2025-09-18 18:08:59 +08:00
icarus
2b76c326ee refactor(agents): replace useMutation with simpler implementation in useRemoveAgent 2025-09-18 18:08:45 +08:00
icarus
64ee5c528b fix(useAgents): use right agents data 2025-09-18 18:08:40 +08:00
icarus
136d343c18 refactor(hooks): replace redux with swr in useAgents hook
Simplify agents management by using SWR for data fetching instead of redux store operations
2025-09-18 18:05:55 +08:00
icarus
0b1b9a913f feat(hooks): add useAgentClient hook for agent API client initialization 2025-09-18 18:02:05 +08:00
icarus
cb0833a915 refactor(api): centralize agent and session paths for better maintainability
Add path builder methods to avoid hardcoding URLs and improve consistency
2025-09-18 17:58:53 +08:00
Vaayne
984c28d4be refactor(SessionMessageService): remove unused PermissionMode import 2025-09-18 17:51:45 +08:00