- Introduced the AgentSettingsTab component for managing agent settings.
- Integrated AgentSettingsTab into HomeTabs, allowing access to agent settings based on the active session or topic.
- Updated AgentEssentialSettings to conditionally render the ModelSetting based on props.
- Adjusted styles in various components for consistency and improved layout.
Added 'esbuild' with version ^0.25.0 and updated 'tar-fs' to ^2.1.4 in package.json. This also updates related entries in yarn.lock to ensure compatibility and resolve dependency issues.
- Updated the @ai-sdk/google dependency to version 2.0.20 in package.json.
- Added a new patch file for the updated version to address specific changes in the library.
* feat: intercept webview keyboard shortcuts for search functionality
Implemented keyboard shortcut interception in webview to enable search functionality (Ctrl/Cmd+F) and navigation (Enter/Escape) within mini app pages. Previously, these shortcuts were consumed by the webview content and not propagated to the host application.
Changes:
- Added Webview_SearchHotkey IPC channel for forwarding keyboard events
- Implemented before-input-event handler in WebviewService to intercept Ctrl/Cmd+F, Escape, and Enter
- Extended preload API with onFindShortcut callback for webview shortcut events
- Updated WebviewSearch component to handle shortcuts from both window and webview
- Added comprehensive test coverage for webview shortcut handling
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix lint
* refactor: improve webview hotkey initialization and error handling
Refactored webview keyboard shortcut handler for better code organization and reliability.
Changes:
- Extracted keyboard handler logic into reusable attachKeyboardHandler function
- Added initWebviewHotkeys() to initialize handlers for existing webviews on startup
- Integrated initialization in main app entry point
- Added explanatory comment for event.preventDefault() behavior
- Added warning log when webContentsId is unavailable in WebviewSearch
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
* feat: add WebviewKeyEvent type and update related components
- Introduced WebviewKeyEvent type to standardize keyboard event handling for webviews.
- Updated preload index to utilize the new WebviewKeyEvent type in the onFindShortcut callback.
- Refactored WebviewSearch component and its tests to accommodate the new type, enhancing type safety and clarity.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
* fix lint
---------
Co-authored-by: Claude <noreply@anthropic.com>
- Incremented version in the store configuration from 161 to 162.
- Updated migration logic to handle new provider integration and state adjustments.
- Removed deprecated migration logic for version 161.
- Introduced new app icon for Stepfun.
- Updated minapps configuration to include Stepfun with its logo and URL.
- Removed Yuewen app from configurations and translations.
- Updated translations for multiple languages to reflect the addition of Stepfun and removal of Yuewen.
- Incremented version in the store configuration and added migration logic for new provider integration.
* feature: unified assistant tab
* refactor(TagGroup): make TagsContainer component internal by removing export
* refactor(components): migrate styled-components to cn utility classes
Replace styled-components with cn utility classes from @heroui/react for better maintainability and performance
* refactor(AssistantsTab): split AssistantsTab into smaller hooks and components
* fix: click agent item should jump to topic tab
* feat: add AddButton component and refactor usage across tabs
- Introduced a new AddButton component for consistent UI across different tabs.
- Replaced existing button implementations with AddButton in Sessions, Topics, and UnifiedAddButton components.
- Removed unnecessary margin from AssistantsTab's container for improved layout.
---------
Co-authored-by: icarus <eurfelux@gmail.com>
Co-authored-by: kangfenmao <kangfenmao@qq.com>
* fix: support gpt-5-codex for github copilot
- Added patch for @ai-sdk/openai to version 2.0.42 in package.json and yarn.lock.
- Updated editor version for Copilot from v1.97.2 to v1.104.1 in OpenAIBaseClient and providerConfig.
- Enhanced provider configuration to support new model options for Copilot.
* fix: streamline Copilot header management
- Replaced individual header assignments for Copilot with centralized constants in OpenAIBaseClient and providerConfig.
- Enhanced provider configuration to conditionally set response mode for Copilot models, improving routing logic.
* update aisdk
* delete patch
* 🤖 chore: integrate Copilot SDK provider
* use a plugin
* udpate dependency
* fix: remove unused Copilot default headers from OpenAIBaseClient
- Eliminated the import and usage of COPILOT_DEFAULT_HEADERS to streamline header management in the OpenAIBaseClient class.
* update yarn
* fix lint
* format code
* feat: enhance web search tool types in webSearchPlugin
- Added type normalization for web search tools to improve type safety and clarity.
- Updated WebSearchToolInputSchema and WebSearchToolOutputSchema to use normalized types for better consistency across the plugin.
* ✨ feat: add webview find-in-page overlay
* 🐛 fix: reset webview search on tab change
* fix clear search issue
* 🐛 fix: rebind webview search events
* 🐛 fix: disable spellcheck in search input
* fix spellcheck
* 🐛 fix: webview search can now reopen after closing
Fixed an issue where the search overlay couldn't be reopened after closing.
The openSearch callback was unnecessarily depending on webviewRef.current,
causing event listener rebinding issues. Removed the redundant webviewRef
check as isWebviewReady is sufficient to ensure webview readiness.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Co-authored-by: Payne Fu <payne@Paynes-Mac-mini.rcoffice.ringcentral.com>
Co-authored-by: Payne Fu <payne@Paynes-MBP.rcoffice.ringcentral.com>
Co-authored-by: Claude <noreply@anthropic.com>
* feat: replace update dialog handling with quit and install functionality
* refactor: remove App_ShowUpdateDialog and implement App_QuitAndInstall in IpcChannel
* update ipc.ts to handle quit and install action
* modify AppUpdater to include quitAndInstall method
* adjust preload index to invoke new quit and install action
* enhance AboutSettings to manage update dialog state and trigger quit and install
* fix(AboutSettings): handle null update info in update dialog state management
* fix(UpdateDialog): improve error handling during update installation and enhance release notes processing
* fix(AppUpdater): remove redundant assignment of releaseInfo after update download
* fix(IpcChannel): remove UpdateDownloadedCancelled enum value
* format code
* fix(UpdateDialog): enhance installation process with loading state and error handling
* update i18n
* fix(i18n): Auto update translations for PR #10569
* feat(UpdateAppButton): integrate UpdateDialog and update button functionality for better user experience
* fix(UpdateDialog): update installation handler to support async operation and ensure modal closes after installation
* refactor(AppUpdater.test): remove deprecated formatReleaseNotes tests to streamline test suite
* refactor(update-dialog): simplify dialog close handling
Replace onOpenChange with onClose prop to directly handle dialog closing
Remove redundant handleClose function and simplify button onPress handler
---------
Co-authored-by: GitHub Action <action@github.com>
Co-authored-by: icarus <eurfelux@gmail.com>
Add placeholder strings marked with "[to be translated]" in Japanese, Russian, Portuguese, Greek, Spanish and French translation files. These include new message placeholders and auto-rename functionality for notes.
- Adjusted class names in Message component for better layout management.
- Modified margin in DropHintNode of NotesSidebar for improved spacing.
- Enhanced BackupService to remove 'notes_tree' from indexedDB during data restoration.
chore: bump version to 1.6.3 and add migration for missing providers #10425fix: #10425
- Updated the version from 158 to 159 in the persisted reducer configuration.
- Implemented a migration function to ensure missing system providers are added to the state during the migration to version 159, enhancing state consistency.
* feat(notes): add spell-check control
* feat(notes): add spell-check toggle to preview mode toolbar
* feat(settings): move spellcheck to global and use hook
- Register new IPC channel and handler for JavaScript code execution
- Extend code block execution to support JavaScript, TypeScript, and JS languages
- Add JavaScript service with sandboxed execution using quickJs
- Update UI to show JavaScript execution option alongside Python
- Implement JsServer MCP server with `run_javascript_code` tool for secure code execution
- Add JsService worker management with timeout handling and error formatting
- Include QuickJS WASM binary and integrate with WASI for sandboxed execution
- Update UI with i18n support and JSON result formatting improvements
* fix(ui): remove redundant scrollbar in side-by-side view
Changed GridContainer from styled(Scrollbar) to styled.div to
eliminate redundant horizontal scrollbar in multi-model horizontal
layout mode. The Scrollbar component is designed for vertical
scrolling and conflicts with horizontal layouts.
Fixes#10520
* fix(ui): restore vertical scrollbar for grid mode while preserving horizontal fix
Optimal solution: Use Scrollbar component as base to preserve auto-hide
behavior for vertical modes (grid, vertical, fold) while overriding its
overflow-y behavior for horizontal mode only.
This approach:
- Preserves the June 2025 UX optimization (auto-hide scrollbars)
- Fixes horizontal scrollbar issue from #10520
- Restores vertical scrolling for grid mode
- Maintains auto-hide behavior for all vertical scrolling modes
- Minimal change with no code duplication
The Scrollbar component provides scrollbar thumb auto-hide after 1.5s,
which enhances UX for vertical scrolling. By using CSS overrides only
for horizontal mode, we get the best of both worlds.
* chore: fix import sorting in MessageGroup.tsx
Unrelated to PR scope - fixing to unblock CI.
Auto-fixed via eslint --fix (moved Scrollbar import to correct position).
Also updated yarn.lock to resolve dependency sync.
* fix(ui): add explicit overflow declarations for all grid modes
Previous fix relied on CSS inheritance from Scrollbar base component,
but display: grid interferes with overflow property inheritance.
This iteration adds explicit overflow-y: auto and overflow-x: hidden
to grid, fold, vertical, and multi-select modes to ensure vertical
scrolling works reliably across all layouts.
- horizontal mode: overflow-y visible, overflow-x auto (unchanged)
- grid/fold/vertical modes: explicit overflow-y auto, overflow-x hidden
- multi-select mode: explicit overflow-y auto, overflow-x hidden
Fixes vertical scrollbar missing in grid mode reported by @EurFelux
* fix(Messages): adjust overflow behavior in message groups
Fix scrollbar issues by hiding vertical overflow in horizontal layout and simplifying overflow handling in grid layout
* feat(HorizontalScrollContainer): add classNames prop for container and content styling
allow custom styling of container and content via classNames prop
---------
Co-authored-by: icarus <eurfelux@gmail.com>
* chore: update electron dependency from 37.4.0 to 37.6.0
* feat(TopicsTab): add double click to edit topic name
Move double click handler from TopicName component to parent div to improve UX
* fix(TopicsTab): prevent topic edit on double click when already editing
* fix(TextFilePreview): make editor read-only but can be copied
* feat: add table auto-wrap feature for notes
* Revert "feat: add table auto-wrap feature for notes"
This reverts commit 7785f480b1.
* fix(reasoning): update deepseek model id regex pattern to match more variants
The previous regex pattern was too restrictive and didn't account for all possible deepseek model id formats. This change expands the pattern to support more variants while maintaining the same functionality.
* fix(reasoning): update deepseek model id regex pattern to match more variants
* fix(reasoning): improve regex pattern for deepseek model matching
Update the regex pattern to be more precise in matching deepseek model versions.
Add detailed comments explaining the pattern and note future improvements.
* feat(models): add GLM-4.6 model to supported list
Update model configuration to include new GLM-4.6 model and add it to the supported models for thinking token functionality
* feat(models): add claude sonnet 4.5 model to anthropic provider
* feat: implement auto-renaming feature for notes
* feat: motion effects for auto renaming in notes
* feat: add i18n for zh-tw for auto renaming in notes
* chore: lint
* feat: add GitHub Copilot CLI integration to coding tools
- Add githubCopilotCli to codeTools enum
- Support @github/copilot package installation
- Add 'copilot' executable command mapping
- Update Redux store to include GitHub Copilot CLI state
- Add GitHub Copilot CLI option to UI with proper provider mapping
- Implement environment variable handling for GitHub authentication
- Fix model selection logic to disable model choice for GitHub Copilot CLI
- Update launch validation to not require model selection for GitHub Copilot CLI
- Fix prepareLaunchEnvironment and executeLaunch to handle no-model scenario
This enables users to launch GitHub Copilot CLI directly from Cherry Studio's
code tools interface without needing to select a model, as GitHub Copilot CLI
uses GitHub's built-in models and authentication.
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
* style: apply code formatting for GitHub Copilot CLI integration
Auto-fix code style inconsistencies using project's Biome formatter.
Resolves semicolon, comma, and quote style issues to match project standards.
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
* feat: conditionally render model selector for GitHub Copilot CLI
- Hide model selector component when GitHub Copilot CLI is selected
- Maintain validation logic to allow GitHub Copilot CLI without model selection
- Improve UX by removing empty model dropdown for GitHub Copilot CLI
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
---------
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
Co-authored-by: Claude <noreply@anthropic.com>
- Unify buildClaudeCodeSystemMessage implementation in shared package
- Refactor MessagesService to provide comprehensive message processing API
- Extract streaming logic, error handling, and header preparation into service methods
- Remove duplicate anthropic config from renderer, use shared implementation
- Update ClaudeCodeService to use append mode for custom instructions
- Improve type safety and request validation in message processing
- Bumped versions for several @ai-sdk packages in package.json and yarn.lock to their latest releases, including @ai-sdk/amazon-bedrock, @ai-sdk/google-vertex, @ai-sdk/mistral, and @ai-sdk/perplexity.
- Updated ai package version from 5.0.44 to 5.0.59.
- Updated aiCore package version from 1.0.0-alpha.18 to 1.0.1 and adjusted dependencies accordingly.
- Ensured compatibility with the latest zod version in multiple packages.
- Replace @anthropic-ai/claude-code with @anthropic-ai/claude-agent-sdk@0.1.1
- Update all import statements across 4 files
- Migrate patch for Electron compatibility (fork vs spawn)
- Handle breaking changes: replace appendSystemPrompt with systemPrompt preset
- Add settingSources configuration for filesystem settings
- Update vendor path in build scripts
- Update package name mapping in CodeToolsService
* feat(models): add gpt5_codex model support
Add support for gpt5_codex model type in model configuration and type definitions. Update getThinkModelType to handle codex variant of gpt5 models.
* feat(models): add gpt-5-codex model logo and update logo mapping
Add new GPT-5-Codex model logo image and include it in the logo mapping configuration
Implement functionality to show files/folders in system explorer through IPC. Includes channel definition, preload API, main handler, and error handling for non-existent paths.
* add new provider: OVMS(openvino model server)
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* remove useless comments
* add note: support windows only
* fix eslint error; add migrate for ovms provider
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* fix ci error after rebase
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* modifications base on reviewers' comments
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* show intel-ovms provider only on windows and intel cpu
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* complete i18n for intel ovms
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* update ovms 2025.3; apply patch for model qwen3-8b on local
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* fix lint issues
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* fix issues for format, type checking
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* remove test code
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* fix issues after rebase
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
---------
Signed-off-by: Ma, Kejiang <kj.ma@intel.com>
* feat: add LongCat provider support
- Add LongCat to SystemProviderIds enum
- Add LongCat provider logo and configuration
- Configure API endpoints and URLs based on official docs
- Add two models: LongCat-Flash-Chat and LongCat-Flash-Thinking
- Update provider mappings for proper integration
The LongCat provider uses OpenAI-compatible API format and supports
up to 8K tokens output with daily free quota of 500K tokens.
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
* feat: add migration for LongCat provider
- Add migration version 158 for LongCat provider
- Ensure existing users get LongCat provider on app update
- Follow standard migration pattern for simple provider additions
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
---------
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
- Introduced a new utility function to determine if a tool is an agent tool, simplifying the tool selection logic in MessageTool.
- Refactored MessageAgentTools to improve rendering logic and added an UnknownToolRenderer for better handling of unrecognized tools.
- Updated BashOutputTool to remove unnecessary Card components, enhancing layout consistency.
- Improved overall code clarity and maintainability by reducing redundancy and adhering to existing patterns.
- Updated the resolution and checksum for the @ai-sdk/google patch in yarn.lock.
- Enhanced the getModelPath function to check for "models/" in the modelId before returning the path, improving its robustness.
* feat(toolUsePlugin): separate provider-defined tools from prompt tools in context
- Enhanced the `createPromptToolUsePlugin` function to distinguish between provider-defined tools and other tools, ensuring only non-provider-defined tools are saved in the context.
- Updated the handling of tools in the transformed parameters to retain provider-defined tools while removing others.
- Improved error handling in `ToolExecutor` by logging tool and tool use details for better debugging.
- Refactored various components to use `NormalToolResponse` instead of `MCPToolResponse`, aligning with the new response structure across multiple message components.
* refactor(toolUsePlugin): streamline tool handling in createPromptToolUsePlugin
- Updated the `createPromptToolUsePlugin` function to improve type handling for tools, ensuring proper type inference and reducing the use of type assertions.
- Enhanced clarity in the separation of provider-defined tools and prompt tools, maintaining functionality while improving code readability.
* refactor(ToolExecutor): remove debug logging for tool and tool use
- Removed console logging for tool and tool use details in the ToolExecutor class to clean up the code and improve performance. This change enhances the clarity of the code without affecting functionality.
- Modified GitHub Actions workflows to replace environment variable references with secrets for MAIN_VITE_MINERU_API_KEY, RENDERER_VITE_AIHUBMIX_SECRET, and RENDERER_VITE_PPIO_APP_SECRET.
- Added onwarn handler in electron.vite.config.ts to suppress specific warnings related to CommonJS variables in ESM.
- Updated release notes to reflect recent optimizations and bug fixes, including improvements to the note-taking feature and resolution of issues with CherryAI and VertexAI.
- Bumped version number from 1.6.1 to 1.6.2 in package.json.
Add Breadcrumbs and HorizontalScrollContainer components to enhance agent selection UI. Remove redundant agent name display since it's now shown in the breadcrumb chip. Improve layout with better overflow handling and responsive design.
* refactor(tools): enhance descriptions for knowledge and web search tools
- Updated the descriptions for the knowledgeSearchTool and webSearchTool to provide clearer context on their functionality.
- Improved the formatting of prepared queries and relevant links in the descriptions to enhance user understanding.
- Added information on how to use the tools with additional context for refined searches.
* fix:format lint
- Add max-width to agent name tag in ChatNavbar
- Adjust header padding in AgentSettingsPopup
- Replace span with Ellipsis component for agent names to handle overflow
This PR correctly addresses an event propagation issue where clicking the close button on an error alert was unintentionally triggering the parent click handler (which opens the detail modal).
* 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>
- Updated the resolution and checksum for the @ai-sdk/google patch in yarn.lock.
- Removed the patch reference from package.json for @ai-sdk/google.
- Modified the getModelPath function to simplify its implementation, removing the baseURL parameter.
- Extract repeated div styling into reusable InfoTag component
- Add agent name to the info items display
- Replace inline styles with tailwind classes for consistency
- 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
Reset the topic fulfilled state when switching between sessions to ensure proper state management. Also remove redundant state update from SessionItem's onPress handler.
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.
- 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
- 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
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.
- 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
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.
- Add support for anthropicApiHost configuration in providers
- Improve model filtering for Anthropic-compatible providers
- Add isAnthropicModel function to validate Anthropic models
- Update ClaudeCode service to support compatible providers
- Enhance logging and error handling in API routes
- Fix model transformation and validation logic
- Add `anthropicApiHost` field to Provider type - Update provider config
and migration to set Anthropic endpoints - Add UI for configuring
Anthropic API Host in provider settings - Update SDK client logic to use
Anthropic API Host when available - Add i18n strings for Anthropic API
Host configuration
Move the lucide icon color rule into the media query block for consistency.
Add AlertTriangleIcon to caution text in AgentModal for better visual warning.
* 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>
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.
- 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.
* 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>
* 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>
- 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.
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.
- 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.
* 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>
- 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
- 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
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.
- 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.
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.
- Bump version to 1.6.1 in package.json.
- Add patch for @ai-sdk/google@2.0.14 to address specific issues.
- Update yarn.lock to reflect the new dependency resolution for @ai-sdk/google.
- Modify getModelPath function to accept baseURL parameter for improved flexibility.
- 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.
- 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.
* 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.
ci(workflow): only trigger PR CI on non-draft PRs and specific events
Add trigger conditions for PR CI workflow to run on non-draft PRs and specific event types
* 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 事件处理以使用最终推理内容
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.
- 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.
- 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.
* 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
* 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
- 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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
- 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.
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.
- 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
- 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.
- 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
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
- 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.
- 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
- Replace manual message loading logic with loadTopicMessagesThunk for better caching
- Remove unused imports and local state management
- Simplify useEffect dependencies and loading flow
* 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
* 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>
- 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
- 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
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.
- 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
- 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
- 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
- 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
Refactor assistant preset updates to use forEach instead of map for consistency
Add ts-ignore comments for TypeScript false positives in store operations
- 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
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.
- 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.
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.
* 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
- Move 'label' from agent type to root type section
- Add new prompt settings and type-related translations
- Update Chinese translations for consistency
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.
- 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
- Replace SettingsInline with more flexible SettingsItem component
- Add SettingsContainer for consistent layout
- Remove redundant styled components in favor of shared components
- 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
- 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
- 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
- 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.
Move update agent functionality from useAgent and useAgents hooks into a dedicated useUpdateAgent hook to improve code organization and maintainability
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
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.
- 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
- 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
* Refactor agent streaming from EventEmitter to ReadableStream
Replaced EventEmitter-based agent streaming with ReadableStream for
better compatibility with AI SDK patterns. Modified
SessionMessageService to return stream/completion pair instead of event
emitter, updated HTTP handlers to use stream pumping, and added IPC
contract for renderer-side message persistence.
* Add accessible paths management to agent configuration
Move accessible paths functionality from session modal to agent modal,
add validation requiring at least one path, and update form handling to
inherit agent paths in sessions.
* Add provider_name field to model objects and improve display
- Add provider_name field to ApiModel schema and transformation logic
- Update model options to include providerName for better display
- Improve provider label fallback chain in model transformation
- Fix agent hook to use proper SWR key and conditional fetching
- Enhance option rendering with better truncation and provider display
* fix(i18n): Auto update translations for PR #10276
* Optimize chat components with memoization and shared layout
- Wrap `SessionMessages` and `SessionInputBar` in `useMemo` to prevent unnecessary re-renders
- Refactor `AgentSessionMessages` to use shared layout components and message grouping
- Extract common styled components to `shared.tsx` for reuse across message components
* Add smooth animations to SessionsTab and Sessions components
- Replace static conditional rendering with Framer Motion animations for no-agent and session states
- Animate session list items with staggered entrance and exit transitions
- Add loading spinner animation with fade effect
- Apply motion to session creation button with delayed entrance
* Add loading state with spinner and i18n support to SessionsTab
- Replace static "No active agent" message with a spinner and loading text
- Integrate react-i18next for translation of loading message
- Adjust animation timing and styling for smoother loading state transition
* Support API models with provider_name field in getModelName
- Add ApiModel type import and update function signature to accept ApiModel
- Return formatted name using provider_name field for API models
- Maintain backward compatibility for legacy models by looking up provider in store
* Simplify provider display name logic and add debug logging
- Replace complex fallback chain for provider display name with direct provider name access
- Add console.log for model debugging in getModelName function
* Extract model name from session model string
- Use split and pop to isolate the model name after the colon
- Fall back to the full model string if no colon is present
- Maintain provider and group identifiers for model object consistency
* Improve model name resolution for agent sessions
- Extract actual model ID from session model string and resolve model details
- Use resolved model name, provider, and group when available instead of defaults
- Remove redundant API model handling in getModelName function
* Set default active agent and session on load
- Automatically select first agent if none active after loading
- Automatically select first session per agent if none active after loading
- Prevent empty selection states in UI components
---------
Co-authored-by: GitHub Action <action@github.com>
- 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
- 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
- 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
- Replace complex fallback chain for provider display name with direct provider name access
- Add console.log for model debugging in getModelName function
- 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
- 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
- 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
- Wrap `SessionMessages` and `SessionInputBar` in `useMemo` to prevent unnecessary re-renders
- Refactor `AgentSessionMessages` to use shared layout components and message grouping
- Extract common styled components to `shared.tsx` for reuse across message components
- Add 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
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.
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.
- 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
- Extract common option components to shared.tsx for reuse
- Make useModels filter parameter optional
- Update SessionModal to use real model data from API
Consolidate error formatting functions (formatAgentServerError and formatAxiosError) into error.ts utility file to improve code organization and maintainability
- 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
- 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
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
- 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>
- 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
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.
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
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.
The previous implementation unnecessarily spread the previous state when only the result is needed. This simplifies the mutation logic while maintaining the same behavior.
- 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
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.
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.
- 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
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.
- Remove Button wrapper from AgentLabel component
- Replace div container with Button component for better semantics
- Clean up unused logger service and related click handler
Introduce UpdateSessionResponse type and schema to support session updates. Implement update session methods across client, service, and handler layers to enable session modifications.
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.
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.
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.
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.
* 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
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.
Implement session listing functionality for agents by adding the listSessions method. This enables retrieving all sessions associated with a specific agent.
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.
Add explicit handling of ZodError in processError to return the error directly and in formatErrorMessage to use formatZodError for better error reporting
Add support for BASE_LOCALE environment variable to override default locale
Add file existence check for base locale file in auto-translate script
Update npm scripts to load .env for i18n commands
- 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
Update route paths, i18n keys and tab identifiers to use 'assistantPresets' instead of 'agents'
Add new agents tab component while maintaining backward compatibility
- Replace onTagClick with onPress handler in AgentItem
- Add active agent state management in AgentsTab
- Wrap AgentItem content in Button for better interaction
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.
- 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
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.
* 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
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.
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.
* feat(CodeTools): add support for terminal selection on macOS
- Introduced terminal selection functionality in CodeTools, allowing users to choose from available terminal applications.
- Implemented caching for terminal availability checks to enhance performance.
- Updated CodeToolsService to preload available terminals and check their availability.
- Enhanced UI in CodeToolsPage to display terminal options and handle user selection.
- Added new IPC channel for retrieving available terminals from the main process.
* lint errs
* format
* support wezterm
* support terminal
* support ghostty
* support warp kitty
* fix github scanner issues
* fix all github issues
* support windows
* support windows
* suppport hyper
* Refactor terminal command execution for macOS applications to use shell scripts instead of AppleScript, improving compatibility and performance.
* Remove Hyper terminal configuration from shared constants
* update lint
* fix(i18n): Auto update translations for PR #10192
* fix platform checking
* format
* feat: add Tabby terminal configuration for macOS
* fix wrap terminal
* delete warp
---------
Co-authored-by: GitHub Action <action@github.com>
* Add .codebuddy and .zed to .gitignore and fix formatApiHost
Prevent formatApiHost from processing undefined/empty host values and
ignore editor-specific directories
* Refactor reasoning tag selection logic for providers
Move gpt-oss model handling from aws-bedrock case to openai case and
consolidate tag selection logic into a single if-else chain.
* Extract reasoning tag name into helper function
* fix test
* Replace array indexing with named object properties for reasoning tags
Improves code readability by using descriptive property names instead of
magic array indices when selecting reasoning tag names by model type.
* Move host validation to start of formatApiHost
- Replace process spawning with @anthropic-ai/claude-code SDK query function
- Remove complex process management, stdout/stderr parsing, and JSON buffering
- Directly iterate over typed SDKMessages from AsyncGenerator
- Simplify error handling and completion logic
- Maintain full compatibility with existing SessionMessageService interface
- Eliminate ~130 lines of process management code
- Improve reliability by removing JSON parsing edge cases
Implement getAgentAvatar function to provide avatar images based on agent type. Update AgentItem component to display agent-specific avatars instead of generic ones.
This change improves type safety and validation by replacing the TypeScript interface with a zod schema definition. The schema provides runtime validation while maintaining the same type inference capabilities.
* ci(claude-translator): extend workflow to handle pull request review events
- Add support for pull_request_review and pull_request_review_comment events
- Update condition logic to include new event types
- Expand claude_args to include pull request review related API commands
- Enhance prompt to handle new event types and more translation scenarios
* ci(workflows): update concurrency group in claude-translator workflow
Add github.event.review.id as additional fallback for concurrency group naming
* fix(workflow): correct API method for pull_request_review event
Use PATCH instead of PUT and update body parameter to match API requirements
* ci: clarify comment ID label in workflow output
Update the label for comment ID in workflow output to explicitly indicate when it refers to review comments
* ci: fix syntax error in GitHub workflow file
* fix(workflow): correct HTTP method for pull_request_review event
Use PUT instead of PATCH for updating pull request reviews as per GitHub API requirements
* Add AWS Bedrock reasoning extraction middleware
- Add 'reasoning' tag to tagNameArray for broader reasoning support
- Add AWS Bedrock case with gpt-oss model-specific reasoning extraction
- Add openai-chat and openrouter cases to provider options switch
- Remove unused zod import
* Add OpenRouter provider support
Updates ai-core to version alpha.18 with OpenRouter integration and
improves provider ID resolution for OpenAI API hosts.
* Fix Anthropic API URL and add endpoint path handling
- Remove trailing slash from Anthropic API base URL
- Add isAnthropicProvider utility function
- Update provider settings to show full endpoint URL for Anthropic
- Add migration to clean up existing Anthropic provider URLs
* Update src/renderer/src/pages/settings/ProviderSettings/ProviderSetting.tsx
Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
---------
Co-authored-by: Phantom <59059173+EurFelux@users.noreply.github.com>
* Remove local provider option files and use external packages
Replace local implementation of XAI and OpenRouter provider options with
external packages (@ai-sdk/xai and @openrouter/ai-sdk-provider). Update
web search plugin to support additional providers including OpenAI Chat
and OpenRouter, with improved configuration mapping.
* Bump @cherrystudio/ai-core to v1.0.0-alpha.17
fix i18n
* fix(i18n): Auto update translations for PR #10213
---------
Co-authored-by: GitHub Action <action@github.com>
* feat: Add automatic database migration system for agents service
- Add migrations tracking schema with version, tag, and timestamp
- Implement MigrationService to automatically run pending migrations
- Integrate migration check into BaseService initialization
- Read migration files from drizzle/ directory and journal.json
- Track applied migrations to prevent re-execution
- Ensure database is always at latest version on service startup
Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
* refactor: Improve migration logging and enhance database path configuration
* chore: harden migration bootstrap flow
---------
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Happy <yesreply@happy.engineering>
- Added isLeftNavbar to the useNavbarPosition hook for improved layout management.
- Adjusted background style logic to use isLeftNavbar instead of isTopNavbar for better compatibility with left-aligned navigation.
- Simplified condition for transparent window styling on macOS.
- Added `aisdk-stream-protocel.md` to document text and data stream protocols.
- Created `ClaudeCodeService` for invoking and streaming responses from the Claude Code CLI.
- Introduced built-in tools for Claude Code, including Bash, Edit, and WebFetch.
- Developed transformation functions to convert Claude Code messages to AI SDK format.
- Enhanced OCR utility with delayed loading of the Sharp module.
- Updated agent types and session message structures to accommodate new features.
- Modified API tests to reflect changes in session creation and message streaming.
- Upgraded `uuid` package to version 13.0.0 for improved UUID generation.
* style(markdown): improve code block styling and layout
- Add text-wrap to pre elements for better readability
- Force background color for code blocks with !important
- Change display to grid in translate page for consistent layout
- Add overflow hidden to output container
* style(markdown): remove redundant !important from code block styling
Move !important declaration to output container's markdown pre selector where it's actually needed
- Install electron-reload package for automatic app reloading during development
- Configure electron-reload in main process with development-only activation
- Enable automatic restart when source files change during yarn dev
- Use hardResetMethod: 'exit' for clean app restarts
* build: add eslint-plugin-oxlint dependency
Add new eslint plugin to enhance linting capabilities with oxlint rules
* build(eslint): add oxlint plugin to eslint config
Add oxlint plugin as recommended in the documentation to enhance linting capabilities
* build: add oxlint v1.15.0 as a dependency
* build: add oxlint to linting commands
Add oxlint alongside eslint in test:lint and lint scripts for enhanced static analysis
* build: add oxlint configuration file
Configure oxlint with a comprehensive set of rules for JavaScript/TypeScript code quality checks
* chore: update oxlint configuration and related settings
- Add oxc to editor code actions on save
- Update oxlint configs to use eslint, typescript, and unicorn presets
- Extend ignore patterns in oxlint configuration
- Simplify oxlint command in package.json scripts
- Add oxlint-tsgolint dependency
* fix: lint warning
* chore: update oxlintrc from eslint.recommended
* refactor(lint): update eslint and oxlint configurations
- Add src/preload to eslint ignore patterns
- Update oxlint env to es2022 and add environment overrides
- Adjust several lint rule severities and configurations
* fix: lint error
* fix(file): replace eslint-disable with oxlint-disable in sanitizeFilename
The linter was changed from ESLint to oxlint, so the directive needs to be updated accordingly.
* fix: enforce stricter linting by failing on warnings in test:lint script
* feat: add recommended ts-eslint rules into exlint
* docs: remove outdated comment in oxlint config file
* style: disable typescript/no-require-imports rule in oxlint config
* docs(utils): fix comment typo from NODE to NOTE
* fix(MessageErrorBoundary): correct error description display condition
The error description was incorrectly showing in production and hiding in development. Fix the logic to show detailed errors only in development mode
* chore: add oxc-vscode extension to recommended list
* ci(workflows): reorder format check step in pr-ci.yml
* chore: update yarn.lock
* build: add @biomejs/biome as a dependency
* chore: add biome extension to vscode recommendations
* chore: migrate from prettier to biome for code formatting
Update VSCode settings to use Biome as the default formatter for multiple languages
Add Biome to code actions on save and reorder search exclude patterns
* build: add biome.json configuration file for code formatting
* build: migrate from prettier to biome for formatting
Update package.json scripts and biome.json configuration to use biome instead of prettier for code formatting. Adjust biome formatter includes/excludes patterns for better file matching.
* refactor(eslint): remove unused prettier config and imports
* chore: update biome.json configuration
- Enable linter and set custom rules
- Change jsxQuoteStyle to single quotes
- Add json parser configuration
- Set formatWithErrors to true
* chore: migrate biome config from json to jsonc format
The new jsonc format allows for comments in the configuration file, making it more maintainable and easier to document configuration choices.
* style(biome): update ignore patterns and jsx quote style
Update file ignore patterns from `/*` to `/**` for consistency
Change jsxQuoteStyle from single to double quotes for alignment with project standards
* refactor: simplify error type annotations from Error | any to any
The change standardizes error handling by using 'any' type instead of union types with Error | any, making the code more consistent and reducing unnecessary type complexity.
* chore: exclude tailwind.css from biome formatting
* style: standardize quote usage and fix JSX formatting
- Replace single quotes with double quotes in CSS imports and selectors
- Fix JSX element closing bracket alignment and formatting
- Standardize JSON formatting in package.json files
* Revert "style: standardize quote usage and fix JSX formatting"
This reverts commit 0947f8505d.
* fix: remove json import assertion for biome compatibility
The import assertion syntax is not supported by biome, so it was replaced with a standard import statement.
* style: change quote styles in biome.jsonc to use single quotes for JSX and double quotes for JS
* style: change quote style from double to single in biome config
* style: change JSX quote style from single to double
* chore: update biome.jsonc to use single quotes for CSS formatting
* chore: update biome config and format commands
- Exclude tailwind.css from linter includes
- Add biome lint to format commands
* style: format JSX closing brackets for better readability
* style: set bracketSameLine to true in biome config
The change aligns with common JSX formatting preferences where brackets on the same line improve readability for many developers
* Revert "style: format JSX closing brackets for better readability"
This reverts commit d442c934ee.
* style: format code and clean up whitespace
- Remove unnecessary whitespace in CSS and TS files
- Format package.json files to consistent style
- Reorder tsconfig.json properties alphabetically
- Improve code formatting in React components
* style(biome): update biome.jsonc config with clearer comment
Add explanation for keeping bracketSameLine as true to minimize changes in current PR while noting false would be better for future
* chore: remove prettier dependency and format package.json files
- Remove prettier from dependencies as it's no longer needed
- Reformat package.json files for better readability
* chore: replace prettier with biome for code formatting
Remove all prettier-related configuration, dependencies, and references
Update formatting scripts and documentation to use biome instead
Adjust electron-builder config to exclude biome.jsonc
* build: replace prettier with biome for formatting
Use biome as the default formatter instead of prettier for better performance and modern tooling support
* ci(i18n): replace prettier with biome for i18n formatting
Update the auto-i18n workflow to use Biome instead of Prettier for formatting translated files. This change simplifies the dependencies by removing multiple Prettier plugins and using a single tool for formatting.
* fix(i18n): Auto update translations for PR #10170
* style: format package.json files by consolidating array formatting
Consolidate multi-line array formatting into single-line format for better readability and consistency across package.json files
* Revert "fix(i18n): Auto update translations for PR #10170"
This reverts commit a7edd32efd.
* ci(workflows): specify biome config path in auto-i18n workflow
* chore: update biome.jsonc to use lexicographic sort order for json keys
* ci(workflows): update biome format command to use --config-path flag
* chore: exclude package.json from biome formatting
* ci: update biome.jsonc linter configuration
Update linter includes to target specific files and modify useSortedClasses rule
* chore: reorder search exclude patterns in vscode settings
* style(OGCard): reorder tailwind classes for consistent styling
* fix(biome): update tailwind classes sorting to safe and warn level
* docs(dev): update ide setup instructions in dev docs
Replace Prettier with Biome as the recommended formatter and clarify editor options
* build(extension-table-plus): replace prettier with biome for formatting
- Add biome.json configuration file
- Update package.json to use biome instead of prettier
- Remove prettier from dependencies
- Update lint script to use biome format
* chore: replace biome.json with biome.jsonc for extended configuration
Update biome configuration file to use JSONC format for comments and more detailed settings
* chore: remove unused biome.jsonc configuration file
---------
Co-authored-by: GitHub Action <action@github.com>
* feat(CodeTools): enhance OpenAI Codex integration with configurable parameters
- Added support for custom OpenAI model provider and model configuration in CodeToolsService.
- Updated CodeToolsPage to filter providers based on the selected CLI tool, including OpenAI Codex.
- Introduced OPENAI_CODEX_SUPPORTED_PROVIDERS constant for better provider management.
- Refactored environment variable generation to include OpenAI-specific settings.
* fix(CodeTools): correct environment variable generation for OpenAI Codex integration
- Added a break statement in the environment generation logic for OpenAI Codex to ensure proper handling of API key and base URL.
- Moved the import of codeTools to maintain consistency in the CodeToolsPage component.
* fix(error): improve error response body parsing and message handling
Handle JSON parsing of error response bodies and extract internal messages when available. Combine messages when both top-level and internal messages exist.
* refactor(error): simplify response body assignment in serializeError
Remove redundant conditional logic and directly assign error.responseBody to serializedError.responseBody
* fix(serializeError): handle responseBody assignment consistently
Ensure responseBody is always assigned from error.responseBody when available, otherwise stringify the body. This prevents potential undefined behavior when error.responseBody exists but body is not available.
- Add schemaSyncer.ts with Drizzle Kit push integration
- Integrate auto schema sync into BaseService.initialize()
- Database schema now automatically updates on agent service startup
- Users no longer need manual migration commands
- Ensures schema consistency across app updates
Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
- QuickPanel (view.tsx): do not intercept Enter/NumpadEnter when the panel is visible but collapsed (no non-pinned matches), so the event falls through to the input bar and sending works.
- Inputbar (Inputbar.tsx): prioritize the configured send shortcut on Enter; remove pre-blocking based on quickPanel visibility; keep Shift+Enter as native newline; insert newline for other Enter variants.
- Update inline comments to clearly document the behavior.
- Reduce file size by 53% while keeping essential info
- Add session tracking requirements for plan mode
- Add Must Follow Rules section with conditional ast-grep usage
- Consolidate architecture to multi-file concepts only
Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
* fix(ThemeProvider): set document language based on user settings
Add language from settings to ThemeProvider context and update document language attribute accordingly
* fix(ThemeProvider): add language to dependency array to prevent stale closures
* fix: correct disk quota display by converting bytes to GB
The free disk space was being logged in bytes instead of GB, making the log message misleading. Convert the value to GB for accurate reporting.
* fix: format disk quota log to 2 decimal places
- Add agents.http with comprehensive API endpoint tests
- Add sessions.http for session management testing
- Include authentication setup and request examples
- Support testing of CRUD operations for both agents and sessions
These files enable easy API testing and validation during development.
- Add PATCH method to agents API for partial updates alongside existing PUT
- Add PUT method to sessions API for complete replacement alongside existing PATCH
- Update API documentation with clear PUT vs PATCH usage examples
- Refactor session status updates to use standard PATCH endpoint
- Ensure both methods use same validation middleware for consistency
- Add comprehensive Swagger documentation for new endpoints
This provides REST-compliant update operations where:
- PUT: Complete resource replacement (idempotent)
- PATCH: Partial resource updates (only specified fields)
Both agents and sessions now support flexible update patterns for different use cases.
- Refactor AddAgentModal into AgentModal to support both add and edit operations
- Add edit button to AgentItem with corresponding modal functionality
- Update translations for edit and update success messages
- Document migration from Redux to database-backed API architecture
- Provide complete API reference for agents, sessions, and messages
- Include TypeScript interfaces and practical implementation examples
- Cover message streaming integration with AI SDK compatibility
- Add error handling patterns and best practices
- Include step-by-step migration guide from existing Redux implementation
Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)
Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
The antd dropdown component was replaced with a custom context menu implementation to improve consistency with the application's UI components and remove dependency on antd. The functionality remains the same but is now implemented using the custom context menu component.
Implement a comprehensive context menu component with submenus, checkboxes, radio items, and separators. The component is built using @radix-ui/react-context-menu and includes proper styling and accessibility features.
Add required dependencies and update yarn.lock accordingly.
- Add agent deletion confirmation dialog with translations
- Implement agent list display and drag-and-drop functionality
- Include avatar support for agent types
- Add success message for agent deletion
- Add migration for new agents structure (version 155)
- Enable addAgent call in AddAgentModal
- Update dependencies array with addAgent
- Replace TODO comment with FIXME for model type issue
- Remove deprecated AddAgentPopup implementation
- Implement new AddAgentModal component with improved UI using Button component
- Update related imports and usage in AssistantsTab
- Clean up unused styles and code
- Add isAgentType function to validate agent type strings
- Update i18n files with new agent type validation messages
- Add common validation error messages and success notifications
add new AddAgentPopup component with type selection
move agent-related translations to dedicated section
update UI to use new popup instead of placeholder toast
Add DEFAULT_AGENT_CONFIG and DEFAULT_CLAUDE_CODE_CONFIG constants to define base agent configurations. These will serve as templates for future agent configurations.
Add setAgents, addAgent, removeAgent and updateAgent actions to manage agents in the store. The updateAgent action uses lodash's mergeWith to handle array references properly and includes error logging when agent is not found.
- Rename agents to assistant presets across the codebase
- Update components, hooks, and pages to reflect the new naming
- Add new components for managing assistant presets
- Improve localization and grouping of presets
- Maintain existing functionality while updating the UI
The old 'agents' array was actually storing presets, so it's renamed for clarity. Added new 'agentsNew' array for actual agent entities in preparation for autonomous agent feature.
The type was renamed to better reflect its purpose as a preset configuration for assistants rather than representing an active agent. This change improves code readability and maintainability by using more accurate terminology throughout the codebase.
Add a new button for creating agents in the chat interface. The button is currently a placeholder with a "Not implemented" toast message. Includes necessary i18n translations and component props.
* feature: add option to change font
1. set app global font
2. set code block font
Signed-off-by: Albert Abdilim <albert.abdilim@foxmail.com>
* formatted code with Prettier
* fix ci errors
1.add migration in `migrate.ts`
2.add to-be-translated strings by running `yarn sync:i18n`
* chore: update yarn.lock to include font-list package version 2.0.0
* fix migration issue
---------
Signed-off-by: Albert Abdilim <albert.abdilim@foxmail.com>
Co-authored-by: suyao <sy20010504@gmail.com>
- Replace custom migration system with modern Drizzle ORM implementation
- Add drizzle-orm and drizzle-kit dependencies for type-safe database operations
- Refactor BaseService to use Drizzle client with full type safety
- Create schema definitions in /database/schema/ using Drizzle patterns
- Remove legacy migration files, queries, and migrator classes
- Add comprehensive documentation for new Drizzle-based architecture
- Maintain backward compatibility in service layer APIs
- Simplify database operations with modern ORM patterns
This migration eliminates custom SQL generation in favor of a proven,
type-safe ORM solution that provides better developer experience and
maintainability.
- Rename SessionLogEntity → SessionMessageEntity type definition
- Rename SessionLogService → SessionMessageService with all methods
- Rename API routes /logs → /messages for better REST semantics
- Update database queries and service layer naming
- Update all Swagger documentation and validation middleware
- Maintain backward compatibility in database schema
This improves code readability by using more accurate terminology
for conversational message data rather than generic "log" naming.
* feat: add Perplexity SDK integration
* feat: enhance AiSdkToChunkAdapter with web search capabilities
- Added support for web search in AiSdkToChunkAdapter, allowing for dynamic link conversion based on provider type.
- Updated constructor to accept provider type and web search enablement flag.
- Improved link handling logic to buffer and process incomplete links.
- Enhanced message block handling in the store to accommodate new message structure.
- Updated middleware configuration to include web search option.
* fix
* fix
* chore: remove unuseful code
* fix: ci
* chore: log
refactor(provider): wrap system provider checks in isSystemProvider
Centralize system provider checks to improve maintainability and reduce code duplication
Refactor database to migration-only approach and add complete documentation
### Database Architecture Improvements:
- **Remove redundant schema files**: Eliminated duplicate table/index definitions
- **Single source of truth**: Migration files now exclusively define database schema
- **Simplified maintenance**: No more sync issues between schema files and migrations
### Files Removed:
- `database/schema/tables.ts` - Redundant table definitions
- `database/schema/indexes.ts` - Redundant index definitions
### Files Updated:
- `database/schema/index.ts` - Now only exports migration utilities
- `database/index.ts` - Simplified exports, removed redundant schema references
- `BaseService.ts` - Updated documentation for migration-only approach
- `migrator.ts` - Enhanced documentation and clarity
### Documentation Added:
- **`database/README.md`** - Comprehensive 400+ line guide covering:
- Architecture overview and migration-only approach
- Complete directory structure explanation
- Migration system lifecycle with diagrams
- Query organization and API reference
- Development workflow and best practices
- Troubleshooting guide and examples
### Benefits:
- ✅ Eliminated redundancy between schema and migration files
- ✅ Reduced maintenance overhead and potential sync issues
- ✅ Established single source of truth for database schema
- ✅ Added comprehensive documentation for team development
- ✅ Maintained full backward compatibility
- ✅ All tests continue to pass (1420/1420)
The database system now follows industry best practices with migrations as the sole
schema definition method, while providing complete documentation for developers.
- **BaseService**: Shared database connection and JSON serialization utilities
- **AgentService**: Agent management operations (CRUD for agents)
- **SessionService**: Session management operations (CRUD for sessions)
- **SessionLogService**: Session log management operations (CRUD for session logs)
Updated API routes to use appropriate services:
- sessions.ts now uses SessionService for session operations
- session-logs.ts now uses SessionLogService and SessionService as needed
- Maintains backward compatibility with existing API endpoints
Benefits:
- Single Responsibility Principle - each service has a clear focus
- Better code organization and maintainability
- Easier testing and debugging
- Improved separation of concerns
- Shared database infrastructure via BaseService
All TypeScript compilation and build checks pass.
style(MinApp): adjust container styles for better layout
- Add min-height to MinApp container
- Remove absolute positioning from search bar
- Improve flex and overflow handling in containers
- Adjust margins and widths for better spacing
* refactor(OGCard): replace static image with dynamic generated graph
- Replace CherryLogo import with GeneratedGraph component for dynamic preview
- Extract image height to constant for consistency
- Use useCallback for GeneratedGraph to optimize performance
* chore: remove unused banner.png asset
* style(OGCard): change image height from pixels to rem units
Use rem units for better responsiveness and consistency with the design system
* feat: add disk space checking functionality
- Introduced a new IPC channel for retrieving disk information.
- Integrated the 'check-disk-space' package to fetch available and total disk space.
- Updated the preload API to expose the new disk info retrieval method to the renderer.
* feat: implement disk space warning and data limit checks
- Added functionality to check available disk space and display warnings when storage is low.
- Updated IPC methods to pass directory paths for disk info retrieval.
- Introduced periodic checks for app data disk quota and internal storage quota.
- Enhanced user notifications with localized messages for low storage warnings.
* fix: enhance disk space warning logic and improve logging
- Added additional conditions for displaying disk space warnings based on free percentage thresholds.
- Improved logging format for app data disk quota, providing clearer output in GB.
- Refactored the checkDataLimit function to be asynchronous for better performance.
* format code
* update log format
* fix: improve error handling and logging in disk quota checks
- Added try-catch block in checkAppDataDiskQuota to handle potential errors when retrieving disk information.
- Ensured that errors are logged for better debugging and visibility.
- Updated checkDataLimit to await the checkAppDataDiskQuota function for proper asynchronous handling.
* fix comments
* fix: remove redundant appStorageQuota message from localization files
* lint
* fix: enhance disk space warning logic for USB disks
- Added a condition to warn users when free space on USB disks falls below 5% of total capacity.
- Improved the existing logic for displaying disk space warnings based on total disk size thresholds.
* update i18n
* Refactor data limit notification logic and update i18n messages for disk space warnings. Adjusted check intervals and improved toast notifications for low disk space alerts.
* Fix disk quota check logic in useDataLimit hook to correctly compare free space against 1GB threshold.
* refactor: update styles and improve navbar handling
- Removed unnecessary margin-bottom style from bubble markdown.
- Adjusted margin in Prompt component for better layout.
- Enhanced useAppInit hook to include navbar position logic for background styling.
- Added alignment to ErrorBlock alert for improved visual consistency.
* refactor: relocate checkDataLimit function to utils and update import in useAppInit hook
- Moved checkDataLimit function from useDataLimit hook to utils for better organization.
- Updated import path in useAppInit to reflect the new location of checkDataLimit.
- Removed the now obsolete useDataLimit hook file.
* refactor: update getDiskInfo API to specify return type
- Enhanced getDiskInfo function to explicitly define the return type as a Promise containing disk information or null.
* lint err
* fix: handle null response from getDiskInfo in checkAppDataDiskQuota
- Added a check for null response from getDiskInfo to prevent errors.
- Updated the logic to extract the free disk space only if diskInfo is valid.
---------
Co-authored-by: kangfenmao <kangfenmao@qq.com>
* refactor MCPService for improved error handling and header management
* refactor MCPService: reorder header preparation for improved clarity
* refactor: enhance MCP server type determination and clean up error handling
* refactor: update Scrollbar component and integrate horizontal scrolling in TabContainer and KnowledgeBaseInput
- Renamed Props interface to ScrollbarProps for clarity.
- Implemented useHorizontalScroll hook in TabContainer to manage horizontal scrolling.
- Removed deprecated scroll handling logic and replaced it with the new hook.
- Enhanced KnowledgeBaseInput to utilize horizontal scrolling for better UI management.
- Cleaned up unused imports and components for improved code maintainability.
* refactor: update dependencies type in useHorizontalScroll hook to readonly unknown[] for better type safety
* feat: add scrollDistance parameter to useHorizontalScroll hook for customizable scrolling behavior
* refactor: replace useHorizontalScroll with HorizontalScrollContainer in TabContainer, KnowledgeBaseInput, and MentionModelsInput components
- Updated TabContainer to utilize HorizontalScrollContainer for improved scrolling functionality.
- Refactored KnowledgeBaseInput and MentionModelsInput to replace the custom horizontal scroll implementation with HorizontalScrollContainer, simplifying the code and enhancing maintainability.
* refactor(HorizontalScrollContainer): remove paddingRight prop and update scroll handling
- Removed the unused paddingRight prop from HorizontalScrollContainerProps and its implementation.
- Updated handleScrollRight to accept the event parameter and stop propagation.
- Simplified the Container styled component by eliminating the padding-right style.
* fix: sync issue
* fix: isLeftNavbar inputbar display issue
* feat(HorizontalScrollContainer): add scroll end detection and disable button hover effect
---------
Co-authored-by: 自由的世界人 <3196812536@qq.com>
- Removed unnecessary margin-bottom style from bubble markdown.
- Adjusted margin in Prompt component for better layout.
- Enhanced useAppInit hook to include navbar position logic for background styling.
- Added alignment to ErrorBlock alert for improved visual consistency.
Implement full REST API with Express routes for agents, sessions, and logs:
- CRUD operations for agents with validation and OpenAPI documentation
- Session management with nested resource endpoints
- Hierarchical logging system with bulk operations support
- Request validation using express-validator
- Proper error handling and structured responses
Add comprehensive agent service with full CRUD operations, session management,
and structured logging capabilities. Includes database operations for agents,
sessions, and hierarchical log entries with proper type definitions.
- Add complete SQL schema for agents, sessions, and session_logs tables
- Implement CRUD operations for all agent-related entities
- Add SessionLogEntity type with hierarchical logging support
- Include proper indexes and foreign key constraints for performance
- Support agent configuration inheritance in sessions via COALESCE
- Add metadata field for extensible session log tracking
* feat: add api server
This reverts commit c76aa03566.
* update yarn.lock
* fix: correct import paths in ToolSettings component
Update import paths for PreprocessSettings and WebSearchSettings to reference correct locations in DocProcessSettings and WebSearchSettings directories.
* feat(settings): add API server settings link and route
* fix(auth): improve authorization handling and error responses
* feat(chat): enhance model validation and logging for chat completions
feat(models): improve logging for model retrieval and filtering
feat(utils): add model ID validation and support for OpenAI providers
* feat(api-server): refactor config loading and remove unused ToolSettings component
* refactor(ApiServerService): simplify config retrieval and improve error handling in ApiServerSettings
* fix(mcp): remove unnecessary await in listTools return statement
* refactor(ApiServerSettings): replace window.message with window.toast for notifications
---------
Co-authored-by: kangfenmao <kangfenmao@qq.com>
Update pull-requests permission from read to write and add allowed_non_write_users config
Add security warning comment about fine-grained token control
* feat(toast): add toast utility functions to global interface
Expose error, success, warning, and info toast functions globally for consistent notification handling
* refactor(toast): use ToastPropsColored type to enforce color consistency
Create ToastPropsColored type to explicitly omit color property from ToastProps
* refactor(toast): simplify toast functions using factory pattern
Create a factory function to generate toast functions instead of repeating similar code. This improves maintainability and reduces code duplication.
* fix: replace window.message with window.toast for copy notifications
* refactor(toast): update type definition to use Parameters utility
Use Parameters utility type to derive ToastPropsColored from addToast parameters for better type safety
* feat(types): add RequireSome utility type for making specific properties required
* feat(toast): add loading toast functionality
Add loading toast type to support promises in toast notifications. This enables showing loading states for async operations.
* chore: add claude script to package.json
* build(eslint): add packages dist folder to ignore patterns
* refactor: migrate message to toast
* refactor: update toast import path from @heroui/react to @heroui/toast
* docs(toast): add JSDoc comments for toast functions
* fix(toast): set default timeout for loading toasts
Make loading toasts disappear immediately by default when timeout is not specified
* fix(translate): replace window.message with window.toast for consistency
Use window.toast consistently across the translation page for displaying notifications to maintain a uniform user experience and simplify the codebase.
* refactor: remove deprecated message interface from window
The MessageInstance interface from antd was marked as deprecated and is no longer needed in the window object.
* refactor(toast): consolidate toast utilities into single export
Move all toast-related functions into a single utility export to reduce code duplication and improve maintainability. Update all imports to use the new utility function.
* docs(useOcr): remove redundant comment in ocr function
* docs: update comments from Chinese to English
Update error log messages in CodeToolsPage to use English instead of Chinese for better consistency and maintainability
* feat(toast): add no-drag style and adjust toast placement
add custom CSS class to disable drag on toast elements
move toast placement to top-center and adjust timeout settings
* refactor(RuntimeExecutor, PluginEngine): streamline parameter handling and improve type definitions for model operations
- Updated parameter handling in RuntimeExecutor methods to use specific types for generate and stream functions.
- Refactored PluginEngine methods to enhance type safety and reduce redundancy in model resolution.
- Introduced new type definitions for generate and stream parameters in types.ts for better clarity and maintainability.
- Adjusted provider options mapping in buildProviderOptions to accommodate new provider types.
* feat(googleToolsPlugin): enhance Google tools integration and update dependencies
- Updated the `ai` package version to `5.0.38` and `@ai-sdk/gateway` to `1.0.20` in `package.json` and `yarn.lock`.
- Introduced `googleToolsPlugin` with improved parameter handling and configuration options for Google tools.
- Added support for `urlContext` in middleware configuration and plugin builder.
- Refactored web search tool to streamline response handling and citation formatting.
- Updated various service methods to include `enableUrlContext` capability.
* fix: update tool response handling and clean up unused code
- Modified the `processKnowledgeReferences` function to accept the full response object instead of just `knowledgeReferences`.
- Cleaned up the `searchOrchestrationPlugin` by removing unnecessary blank lines.
- Removed commented-out code in `telemetryPlugin` to improve readability.
- Updated `KnowledgeSearchTool` to streamline the execution flow and return results more efficiently.
- Adjusted `MessageKnowledgeSearch` components to reflect changes in the data structure returned from the knowledge search tool.
- Enhanced `MemorySearchTool` by simplifying error handling and removing redundant code.
* refactor: clean up KnowledgeSearchTool and WebSearchTool by removing commented-out code
- Removed unnecessary commented-out code in `KnowledgeSearchTool` and `WebSearchTool` to improve code readability and maintainability.
- Simplified the `processKnowledgeReferences` function by eliminating the console log statement for cleaner output.
* chore: bump version to 1.0.0-alpha.14 in aiCore package.json
* chore: update @ai-sdk/google-vertex to version 3.0.25 and add @ai-sdk/anthropic@2.0.15 to dependencies
- Bumped the version of `@ai-sdk/google-vertex` in `package.json` and `yarn.lock` to 3.0.25.
- Added `@ai-sdk/anthropic` version 2.0.15 to `yarn.lock` with updated dependencies.
- Refactored `parameterBuilder.ts` to integrate new tools from `@ai-sdk/google-vertex` for enhanced functionality.
* refactor(Navbar): improve WindowControls visibility and clean up event listener management
- Updated Navbar component to conditionally render WindowControls based on minappShow state.
- Refactored IPC event listener management in preload script for better clarity and performance.
* feat(WindowControls): replace custom restore icon with a new SVG component
- Introduced a new `WindowRestoreIcon` component with enhanced SVG structure and styling.
- Updated `WindowControls` to use the new `WindowRestoreIcon` for better visual consistency and scalability.
* feat(WindowControls): update WindowRestoreIcon SVG for improved design
- Enhanced the SVG structure of the `WindowRestoreIcon` component with updated dimensions and styling for better visual appeal.
- Adjusted the path and rectangle properties to refine the icon's appearance and maintain consistency across the application.
* lint error
* ci(claude-translator): add github_token to workflow for authentication
* ci(workflows): restrict code review to main repo PRs
Fix OIDC issues by only triggering reviews for PRs from the main repository
* ci(workflows): re-enable issues trigger for claude translator
The upstream bug has been fixed, so we can now re-enable the issues trigger.
Also update the claude-code-action to use main branch instead of v1 tag.
* feat: add text file preview (#7023)
* feat: open message text file attachment in preview
* refractor: use `window.api.fs.readText`
* fix: use `FileTypes.TEXT`
* fix: trim prefix "file://" with `replace`
* refactor(FileAction): centralize file click handling for text preview
- Use FileAction.handleClick in AttachmentPreview and MessageAttachments
- Show i18n error modal on failure (zh-cn: files.click.error)
* fix: i18n
* fix: update i18n on field `files.click.error` with codex
* fix: use hook
* fix: rename `handleClick` to `preview`
* feat: support lang highlight
* fix: remove prefix '.' of extension
* fix: code editor style
* fix: editor cursor text style
* fix: add `FileTypes` check
* fix: move parseFileType into utils
* fix: move `parseFileTypes` into utils/file
* feat(minapps): add Tabs-mode webview pool and integrate page shell
* fix(minapp): position tabs pool below toolbar and preserve layout
* style(minapp): fix format issues
* style(minapps): optimize var name
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* feat(minapps): stabilize tab webview lifecycle and mount logic
* refactor(minapps): improve webview detection and state handling
---------
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
* fix(translate): prevent default paste behavior only when handling files
Only call event.preventDefault() when handling file pasting to allow text pasting by default. This fixes the issue where text pasting was being blocked unnecessarily.
* fix(translate): append new text to existing content instead of replacing
Ensure OCR and file reading operations append new content to existing text rather than replacing it entirely. This maintains user's previous input when processing additional files.
* feat: add font size and table of contents settings to RichEditor
- Introduced font size customization in the RichEditor component, allowing users to adjust the font size for better readability.
- Added a toggle for displaying a table of contents in the editor settings.
- Updated localization files to include new settings descriptions.
- Enhanced the NotesSettings component with a slider for font size adjustment and a switch for the table of contents feature.
- Migrated state management to include new settings in the Redux store.
* feat: enhance CodeEditor with customizable font size and responsive layout
* feat: enhance markdown conversion to preserve square brackets
- Improved the htmlToMarkdown function to correctly handle and preserve wiki-style double brackets [[foo]] and single brackets [foo] while maintaining proper Markdown link syntax.
- Added unit tests to verify the preservation of these bracket formats during conversion.
* feat: enhance YamlFrontMatterNodeView with editor content check
* fix
* chore
* chore: bump store persistence version to 153
---------
Co-authored-by: icarus <eurfelux@gmail.com>
* feat(translate): add settings with autoCopy option to translate state
Add settings object to translate state to store user preferences like autoCopy functionality. Implement updateSettings reducer to handle settings updates.
* docs(translate): add todo comment for settings field
* refactor(translate): simplify settings update and expose in hook
Remove dependency on objectEntriesStrict and use Object.entries directly
Expose translate settings and update function in useTranslate hook
* fix(useTranslate): use dispatch to update
* feat(translate): add auto-copy setting for translated content
Add auto-copy functionality that automatically copies translated text to clipboard when enabled. Includes settings toggle in TranslateSettings component and integration with translate logic.
* chore: add tailwindcss file association to vscode settings
* feat(translate): add auto copy setting and improve switch styling
Add new translation strings for auto copy feature and apply consistent primary color to all switches in translation settings
* fix(theme): update hero UI primary color variable
Add --primary CSS variable to match --color-primary for hero UI components
* refactor(hooks): rename _updateSettings to handleUpdateSettings for clarity
Improve variable naming consistency and better reflect the function's purpose
* refactor(translate): simplify settings update using Object.assign
* fix(translate): handle clipboard write errors in copy functionality
Add error handling for clipboard operations to prevent silent failures and show user feedback when copy fails
* feat(i18n): add translation placeholders for new UI strings
Add new translation keys for front matter operations and auto-copy setting
Include additional Anthropic OAuth related messages for better user feedback
* fix(i18n): Auto update translations for PR #10032
* fix(i18n): correct translation errors in multiple language files
Fix incorrect translations and fill missing values in Japanese, Russian, Portuguese, French and Spanish localization files. Changes include correcting property name in Japanese, adding missing empty value in Russian, fixing editValue in Portuguese, correcting date and empty values in French, and fixing multiple terms in Spanish.
* fix: update error message in migration from 151 to 152
* fix(translate): await copy operation and show success message
Ensure the copy operation completes before proceeding and notify user of successful copy
* feat(translate): add delay timer for auto-copy functionality
Use setTimeoutTimer to introduce a 100ms delay before auto-copy to ensure UI stability
* fix(translate): increase modal width from 420 to 520 for better content display
* fix(ThemeProvider): ensure proper theme class is applied to body
Add logic to toggle 'light' and 'dark' classes on body element when theme changes
* fix(translate): only copy when success
* fix(translate): remove redundant error message display on translation failure
* fix(translate): handle abort and empty translation cases properly
Improve error handling for translation abort scenarios and empty responses. Show appropriate user messages when translation is aborted and properly handle NoOutputGeneratedError cases.
* fix(translate): handle translation errors by showing user-friendly message
Display a localized error message to users when translation fails instead of just logging it
---------
Co-authored-by: GitHub Action <action@github.com>
* feat(Navbar): add WindowControls for Windows and Linux, clean up NavbarCenter component
* feat(Navbar): add NavbarRight component for improved layout in MinAppsPage
* feat(Navbar): enhance layout and styling for WindowControls and Navbar components
* lint err
* fix new ui
* refactor(logging): change logger level and remove unused log statements
- Updated logger level from info to silly in AiSdkToChunkAdapter for more granular logging.
- Removed unused logger statements in AiSdkMiddlewareBuilder and PluginBuilder to clean up the code.
- Enhanced condition check in ApiService to include prompt tool usage.
* chore
docs: update CLAUDE.md with UI design migration details
Add section about migrating from antd & styled-components to HeroUI, including link to HeroUI docs.
- Fix Peplexity -> Perplexity in both English and Chinese README
- Fix Itapano -> Italiano in Chinese README language links
- Improve documentation accuracy and professionalism
Signed-off-by: LeaderOnePro <leaderonepro@outlook.com>
* fix: improve note sorting behavior for drag and drop operations
- Skip automatic sorting when performing same-level drag reordering
- Preserve treePath during same-level moves to maintain manual ordering
- Return special indicator for manual reorder operations to prevent conflicts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* fix: type safety issue
---------
Co-authored-by: Claude <noreply@anthropic.com>
* feat: add YAML front matter support in markdown processing
- Introduced a new plugin to parse and render YAML front matter in markdown documents.
- Updated the markdown converter to handle YAML front matter, preserving its structure during conversion.
- Added corresponding tests to ensure YAML front matter is retained correctly in markdown to HTML and vice versa.
- Enhanced i18n files with new translations for front matter properties in English, Chinese (Simplified and Traditional).
- Included the 'yaml' package as a dependency in package.json.
* feat(i18n): add new translations for editing properties in Traditional Chinese
* chore: fix
Add SVG logos for ByteDance and Ideogram AI model providers to improve visual identification in the model selection UI.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: Claude <noreply@anthropic.com>
* feat: add Anthropic OAuth settings UI and logic
Introduces AnthropicSettings component for managing Anthropic OAuth authentication in provider settings. Adds Anthropic OAuth logic in a new anthropicOAuth.ts file, including PKCE flow, token exchange, and credential management stubs. Integrates AnthropicSettings into ProviderSetting to enable UI for login, logout, and code entry.
* feat: add Anthropic OAuth authentication support
Introduces OAuth authentication for Anthropic provider, including UI changes for selecting authentication method and handling authorization code input. Updates i18n files with new Anthropic OAuth-related strings in multiple languages and adds the 'authType' property to the Provider type.
* fix: oauth
* refactor: Anthropic OAuth to main process service
Moved Anthropic OAuth logic from renderer to main process as a singleton service. Updated IPC channels and preload API to support Anthropic OAuth actions. Refactored AnthropicSettings component to use new IPC-based API for authentication flow.
* fix: add 'authenticating' translation and update AnthropicSettings
Added the 'authenticating' key to Anthropic provider translations across multiple languages. Updated AnthropicSettings.tsx to remove the unused 'authenticating_detail' description and set the modal to be centered.
* fix: add reference
* Update AnthropicAPIClient.ts
* fix: update credentials path and improve OAuth handling in AnthropicAPIClient
* feat: add support for Anthropic OAuth provider handling in ProviderSetting
* feat: enhance OAuth authentication messages in multiple languages
* feat: add support for Anthropic provider with OAuth authentication and system message handling for new aisdk provider
* fix: update credential path and use net.fetch for OAuth token requests
* fix: setting page ui
---------
Co-authored-by: Vaayne <liu.vaayne@gmail.com>
* fix(mcp): enhance progress event structure to include callId for specific tool tracking
* refactor(mcp): add MCP progress event with callId and progress percentage
* workflows: restrict Claude triggers to collaborators/members/owners and fix fork PR reviews
- claude.yml: gate by author_association in [COLLABORATOR, MEMBER, OWNER]
- claude-code-review.yml: use pull_request_target, add pull-requests: write and id-token: write to enable OIDC + commenting on forks
* fix(workflows): remove 'reopened' and 'assigned' types from triggers
* feat: add window control functionality for Windows and Linux
- Introduced new IPC channels for window management: minimize, maximize, unmaximize, close, and check maximized state.
- Implemented window control buttons in the UI, allowing users to minimize, maximize, and close the application.
- Enhanced Navbar and TabContainer components to include window controls, improving user experience on non-Mac platforms.
- Styled window control buttons for better visual integration.
This update enhances the application's usability by providing essential window management features.
* add tooltip
* fix macos
* lint error
* update i18n
* lint
* fix: add WindowControls to MinApp popup and improve hover styles
- Add WindowControls component to MinappPopupContainer title bar for Windows/Linux
- Fix ButtonsGroup overlap with WindowControls by adding proper margin
- Improve WindowControls hover background visibility by using rgba(128,128,128,0.3)
- Ensure WindowControls is positioned at the right edge of title bar
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
* lint
* add types
---------
Co-authored-by: Claude <noreply@anthropic.com>
* feat: support PaddleOCR as an OCR provider
* style: fix format
* fix: update persistReducer version
* update wrt comments
* fix(ocr): 修复迁移147中OCR提供商的设置错误
将直接赋值改为使用addOcrProvider方法添加内置PaddleOCR提供商,确保正确初始化OCR服务
* Replace bare fetch with net.fetch
* Use '\n' as delimiter
* Optimize code wrt comments
* Add tip
---------
Co-authored-by: icarus <eurfelux@gmail.com>
index 461e9a2ba246778261108a682762ffcf26f7224e..44bd667d9f591969d36a105ba5eb8b478c738dd8 100644
--- a/sdk.mjs
+++ b/sdk.mjs
@@ -6215,7 +6215,7 @@ function createAbortController(maxListeners = DEFAULT_MAX_LISTENERS) {
}
// ../src/transport/ProcessTransport.ts
-import { spawn } from "child_process";
+import { fork } from "child_process";
import { createInterface } from "readline";
// ../src/utils/fsOperations.ts
@@ -6473,14 +6473,11 @@ class ProcessTransport {
const errorMessage = isNativeBinary(pathToClaudeCodeExecutable) ? `Claude Code native binary not found at ${pathToClaudeCodeExecutable}. Please ensure Claude Code is installed via native installer or specify a valid path with options.pathToClaudeCodeExecutable.` : `Claude Code executable not found at ${pathToClaudeCodeExecutable}. Is options.pathToClaudeCodeExecutable set?`;
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This file provides guidance to AI coding assistants when working with code in this repository. Adherence to these guidelines is crucial for maintaining code quality and consistency.
## Guiding Principles (MUST FOLLOW)
- **Keep it clear**: Write code that is easy to read, maintain, and explain.
- **Match the house style**: Reuse existing patterns, naming, and conventions.
- **Search smart**: Prefer `ast-grep` for semantic queries; fall back to `rg`/`grep` when needed.
- **Build with HeroUI**: Use HeroUI for every new UI component; never add `antd` or `styled-components`.
- **Log centrally**: Route all logging through `loggerService` with the right context—no `console.log`.
- **Research via subagent**: Lean on `subagent` for external docs, APIs, news, and references.
- **Seek review**: Ask a human developer to review substantial changes before merging.
- **Commit in rhythm**: Keep commits small, conventional, and emoji-tagged.
## Development Commands
### Environment Setup
- **Install**: `yarn install` - Install all project dependencies
- **Development**: `yarn dev` - Runs Electron app in development mode with hot reload
- **Debug**: `yarn debug` - Starts with debugging enabled, use `chrome://inspect` to attach debugger
- **Build Check**: `yarn build:check` - **REQUIRED** before commits (lint + test + typecheck)
- If having i18n sort issues, run `yarn sync:i18n` first to sync template
- If having formatting issues, run `yarn format` first
- **Test**: `yarn test` - Run all tests (Vitest) across main and renderer processes
- **Single Test**:
-`yarn test:main` - Run tests for main process only
-`yarn test:renderer` - Run tests for renderer process only
- **Lint**: `yarn lint` - Fix linting issues and run TypeScript type checking
- **Format**: `yarn format` - Auto-format code using Biome
- **Prerequisites**: Node.js v22.x.x or higher, Yarn 4.9.1
// To minimize changes in this PR as much as possible, it's set to true. However, setting it to false would make it more convenient to add attributes at the end.
- '!node_modules/selection-hook/prebuilds/**/*'# we rebuild .node, don't use prebuilds
- '!node_modules/selection-hook/node_modules'# we don't need what in the node_modules dir
- '!node_modules/selection-hook/src'# we don't need source files
- '!node_modules/tesseract.js-core/{tesseract-core.js,tesseract-core.wasm,tesseract-core.wasm.js}'# we don't need source files
- '!node_modules/tesseract.js-core/{tesseract-core-lstm.js,tesseract-core-lstm.wasm,tesseract-core-lstm.wasm.js}'# we don't need source files
- '!node_modules/tesseract.js-core/{tesseract-core-simd-lstm.js,tesseract-core-simd-lstm.wasm,tesseract-core-simd-lstm.wasm.js}'# we don't need source files
- "!node_modules/selection-hook/prebuilds/**/*"# we rebuild .node, don't use prebuilds
- "!node_modules/selection-hook/node_modules"# we don't need what in the node_modules dir
- "!node_modules/selection-hook/src"# we don't need source files
- "!node_modules/tesseract.js-core/{tesseract-core.js,tesseract-core.wasm,tesseract-core.wasm.js}"# we don't need source files
- "!node_modules/tesseract.js-core/{tesseract-core-lstm.js,tesseract-core-lstm.wasm,tesseract-core-lstm.wasm.js}"# we don't need source files
- "!node_modules/tesseract.js-core/{tesseract-core-simd-lstm.js,tesseract-core-simd-lstm.wasm,tesseract-core-simd-lstm.wasm.js}"# we don't need source files
`open -na Terminal && sleep 0.5 && osascript -e 'tell application "Terminal" to activate' -e 'tell application "Terminal" to do script "${escapeForAppleScript(fullCommand)}" in front window'`
`open -na iTerm && sleep 0.8 && osascript -e 'on waitUntilRunning()\n repeat 50 times\n tell application "System Events"\n if (exists process "iTerm2") then exit repeat\n end tell\n delay 0.1\n end repeat\nend waitUntilRunning\n\nwaitUntilRunning()\n\ntell application "iTerm2"\n if (count of windows) = 0 then\n create window with default profile\n delay 0.3\n else\n tell current window\n create tab with default profile\n end tell\n delay 0.3\n end if\n tell current session of current window to write text "${escapeForAppleScript(fullCommand)}"\n activate\nend tell'`
fi && osascript -e 'tell application "Tabby" to activate' -e 'set the clipboard to "${escapeForAppleScript(fullCommand)}"' -e 'tell application "System Events" to tell process "Tabby" to keystroke "v" using {command down}' -e 'tell application "System Events" to key code 36'`
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.