* refactor: Tool Permission Request Card and Streaming Tool Functionality
- Refactor ToolPermissionRequestCard to improve rendering of tool content based on tool type.
- Introduce a new ArgsTable component for displaying tool parameters.
- Implement streaming support for tool arguments in StreamProcessingService and related callbacks.
- Add new chunk type for streaming tool arguments in chunk types.
- Update MCPToolResponseStatus to include 'streaming' state.
- Create comprehensive tests for MessageAgentTools to cover various tool states and argument streaming.
* feat: 添加工具状态指示器组件并更新相关工具渲染逻辑
* refactor: 优化 BashTool 组件,移除多余的输出行数计算和标签展示
* feat: 添加输出截断功能以优化工具输出显示
* feat(i18n): add translations for tool labels and sections in multiple languages
- Updated Portuguese (pt-pt), Romanian (ro-ro), and Russian (ru-ru) translation files to include new labels and sections for various tools.
- Integrated translation functionality into BashOutputTool, BashTool, EditTool, ExitPlanModeTool, GlobTool, GrepTool, MultiEditTool, NotebookEditTool, ReadTool, SearchTool, SkillTool, TaskTool, TodoWriteTool, UnknownToolRenderer, WebFetchTool, and WebSearchTool components.
- Replaced hardcoded strings with translation keys for better localization support.
* chore(i18n): clarify
* refactor: 更新 ClaudeCodeService 和 transform 函数以增强工具调用语言提示和处理工具结果消息
* refactor: language instruction
* feat(ui): group consecutive tool calls for better readability
- Add ToolBlockGroup component to display multiple consecutive tool calls
in a collapsible group
- Modify groupSimilarBlocks to group consecutive TOOL blocks together
- Add i18n translations for group header (e.g., "36 tool calls")
- Style group header consistent with individual tool blocks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(ui): group consecutive tool calls for better readability
- Add ToolBlockGroup component to display multiple consecutive tool calls
in a collapsible group
- Modify groupSimilarBlocks to group consecutive TOOL blocks together
- Add i18n translations for group header (e.g., "36 tool calls")
- Style group header consistent with individual tool blocks
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: 更新 truncateOutput 函数以统一返回结构,并调整相关工具的输出处理
* refactor: simplify code
* refactor(ToolBlockGroup): tool block rendering with memoization and auto-expand feature
* fix(ui): use direct child selectors to prevent style leakage to nested tools
Use > selectors in ToolBlockGroup to only style the group collapse,
not the nested tool collapses inside it.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(i18n): clean hardcoded ui string add ci
* refactor: add toolblockgroup
* refactor: simplify code
* fix: lint
* fix: lint 2
* fix: test
* fix: test2
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Fix Wayland window icon not showing in alt-tab and titlebar
- Fix fcitx5 input method cannot switch after sending message
- Fix deb installation failure due to spaces in executable name
- Add pacman build target for Arch Linux
- Rename Linux executable from "Cherry Studio" to "CherryStudio"
- Use nativeImage for proper icon loading on Linux
Fixes#12295, Fixes#12494
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix(build): add Linux musl native dependencies for Alpine support
Add missing native dependencies for Linux musl (Alpine Linux) platform:
- @img/sharp-linuxmusl-arm64 and @img/sharp-linuxmusl-x64
- @img/sharp-libvips-linuxmusl-arm64 and @img/sharp-libvips-linuxmusl-x64
- @libsql/linux-arm64-musl and @libsql/linux-x64-musl
Co-Authored-By: Claude <noreply@anthropic.com>
* fix(build): add support for Linux musl architecture in before-pack script
Updated the before-pack.js script to include 'linuxmusl' in the platformToArch mapping, enhancing compatibility for Alpine Linux builds.
---------
Co-authored-by: Claude <noreply@anthropic.com>
* feat: migrate from husky to prek for git hooks
Replace husky + lint-staged with prek (pre-commit re-engineered in Rust) for
faster and more efficient git hooks management.
Changes:
- Add @j178/prek dependency
- Create .pre-commit-config.yaml with equivalent hooks
- Update prepare script to use prek install
- Remove husky, lint-staged dependencies and configuration
- Remove .husky directory
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* build: add @j178/prek to onlyBuiltDependencies
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Co-authored-by: icarus <eurfelux@gmail.com>
* fix: update dependencies and patch files for strict JSON schema compliance
- Updated `@ai-sdk/openai-compatible` to include version 1.0.30 and adjusted related patch files.
- Removed obsolete patch for `@ai-sdk/openai-compatible@1.0.28`.
- Added new patch for `@openrouter/ai-sdk-provider` to support strict JSON schema options.
- Modified `options.ts` to set `strictJsonSchema` to false for OpenAI models.
- Enhanced OpenAI compatible provider options to include `sendReasoning` and `strictJsonSchema`.
- Updated lockfile to reflect changes in patched dependencies and their hashes.
* fix: filter strictJsonSchema from request body in OpenRouter patch
- Destructure and remove strictJsonSchema from openrouterOptions before spreading into request body
- This prevents sending the internal option to the OpenRouter API
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Updated package.json to remove redundant i18n:check command.
- Added a "careers" section in the AboutSettings component with a button linking to the careers page.
- Introduced translations for the "careers" section in multiple languages including English, Chinese, German, Spanish, French, Japanese, Portuguese, Romanian, and Russian.
- Updated cache-related translations across various languages to provide localized support.
Updated version number to 1.7.12 in package.json and electron-builder.yml. Added release notes detailing the introduction of the MCP Hub with Auto mode and new cache control options for the Anthropic provider, along with various bug fixes.
* refactor: use pnpm install instead of manual download for prebuild packages
Replace manual tgz download with pnpm install for architecture-specific
prebuild binaries, simplifying the build process.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* delete utils
* update after pack
* udpate before pack
* use optional deps
* refactor: use js-yaml to modify pnpm-workspace.yaml for cross-platform builds
- Add all prebuild packages to optionalDependencies in package.json
- Use js-yaml to parse and modify pnpm-workspace.yaml
- Add target platform to supportedArchitectures.os and cpu
- Restore original config after pnpm install
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix version
* refactor: streamline package management and filtering logic in before… (#12370)
refactor: streamline package management and filtering logic in before-pack.js
- Consolidated architecture-specific package definitions into a single array for better maintainability.
- Simplified the logic for determining target platform and architecture.
- Enhanced the filtering process for excluding and including packages based on architecture and platform.
- Improved console logging for clarity during package installation.
This refactor aims to improve the readability and efficiency of the prebuild package handling process.
* refactor: update package filtering logic in before-pack.js to read from electron-builder.yml
- Modified the package filtering process to load configuration directly from electron-builder.yml, reducing potential errors from multiple overrides.
- Enhanced maintainability by centralizing the file configuration management.
This change aims to streamline the prebuild package handling and improve configuration clarity.
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: 亢奋猫 <kangfenmao@qq.com>
* build: add commander package as dependency
* refactor(scripts): migrate feishu-notify to TypeScript with CLI interface
- Convert JavaScript implementation to TypeScript with proper type definitions
- Add CLI interface using commander for better usability
- Improve error handling and input validation
- Add version management and subcommand support
* ci(workflows): update feishu notification command and add pnpm install step
Update the feishu notification command to use CLI tool with proper arguments instead of direct node script execution
Add pnpm install step to ensure dependencies are available before running the workflow
* docs: add feishu notification script documentation
Add Chinese and English documentation for the feishu-notify.ts CLI tool
* feat(notify): add generic send command to feishu-notify
Add a new 'send' subcommand to send simple notifications to Feishu with customizable title, description and header color. This provides a more flexible way to send notifications without being tied to specific business logic like the existing 'issue' command.
The implementation includes:
- New send command handler and options interface
- Simple card creation function
- Zod schema for header color validation
- Documentation updates in both Chinese and English
- Removed outdated dependencies: js-yaml, bonjour-service, and emoji-picker-element-data from devDependencies.
- Added js-yaml, bonjour-service, and emoji-picker-element-data back to their respective locations in dependencies.
- Introduced optionalDependencies for @strongtz/win32-arm64-msvc with version ^0.4.7.
- Updated pnpm-lock.yaml to reflect the changes in package.json and added new package versions.
Updated version number to 1.7.11 in package.json and electron-builder.yml. Added release notes highlighting the introduction of the MCP Hub with Auto mode and various bug fixes, including improvements to the Chat and Editor components.
* refactor: switch workflows from yarn to pnpm
Replace Yarn usage with pnpm in CI workflows to standardize package
management and leverage pnpm's store/cache behavior.
- Use pnpm/action-setup to install pnpm (v) instead of enabling corepack
and preparing Yarn.
- Retrieve pnpm store path and update cache actions to cache the pnpm
store and use pnpm-lock.yaml for cache keys and restores.
- Replace yarn commands with pnpm equivalents across workflows:
install, i18n:sync/translate, format, build:* and tsx invocation.
- Avoid committing lockfile changes by resetting pnpm-lock.yaml instead
of yarn.lock when checking for changes.
- Update install flags: use pnpm install --frozen-lockfile / --install
semantics where appropriate.
These changes unify dependency tooling, improve caching correctness,
and ensure CI uses pnpm-specific lockfile and cache paths.
* build: switch pre-commit hook to pnpm lint-staged
Update .husky/pre-commit to run pnpm lint-staged instead of yarn.
This aligns the pre-commit hook with the project's package manager
and ensures lint-staged runs using pnpm's environment and caching.
* chore(ci): remove pinned pnpm version from GH Action steps
Remove the explicit `with: version: 9` lines from multiple GitHub Actions workflows
(auto-i18n.yml, nightly-build.yml, pr-ci.yml, update-app-upgrade-config.yml,
sync-to-gitcode.yml, release.yml). The workflows still call `pnpm/action-setup@v4`
but no longer hardcode a pnpm version.
This simplifies maintenance and allows the action to resolve an appropriate pnpm
version (or use its default) without needing updates whenever the pinned
version becomes outdated. It reduces churn when bumping pnpm across CI configs
and prevents accidental pin drift between workflow files.
* build: Update pnpm to 10.27.0 and add onlyBuiltDependencies config
* Update @cherrystudio/openai to 6.15.0 and consolidate overrides
* Add @langchain/core to overrides
* Add override for openai-compatible 1.0.27
* build: optimize pnpm config and add missing dependencies
- Comment out shamefully-hoist in .npmrc for better pnpm compatibility
- Add React-related packages to optimizeDeps in electron.vite.config.ts
- Add missing peer dependencies and packages that were previously hoisted
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* build: refine pnpm configuration and dependency management
- Simplify .npmrc to only essential electron mirror config
- Move platform-specific dependencies to devDependencies
- Pin sharp version to 0.34.3 for consistency
- Update sharp-libvips versions to 1.2.4
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* reduce app size
* format
* build: remove unnecessary disableOxcRecommendation option from react plugin configuration
* docs: Replace yarn commands with pnpm in documentation and scripts
* Revert "build: optimize pnpm config and add missing dependencies"
This reverts commit acffad31f8.
* build: import dependencies from yarn.lock
* build: Add some phantom dependencies and reorganize dependencies
* build: Keep consistent by removing types of semver
It's not in the previous package.json
* build: Add some phantom dependencies
Keep same version with yarn.lock
* build: Add form-data dependency version 4.0.4
* Add chalk dependency
* build: downgrade some dependencies
Reference: .yarn-state-copy.yml. These phantom dependencies should use top-level package of that version in node_modules
* build: Add phantom dependencies
* build: pin tiptap dependencies to exact versions
Ensure consistent dependency resolution by removing caret ranges and pinning all @tiptap packages to exact version 3.2.0
* chore: pin embedjs dependencies to exact versions
* build: pin @modelcontextprotocol/sdk to exact version 1.23.0
Remove caret from version specifier to prevent automatic upgrades and ensure consistent dependencies
* chore: update @types/node dependency to 22.17.2
Update package.json and pnpm-lock.yaml to use @types/node version 22.17.2 instead of 22.19.3 to maintain consistency across dependencies
* build: move some dependencies to dev deps and pin dependency versions to exact numbers
Remove caret (^) from version ranges to ensure consistent dependency resolution across environments
* chore: move dependencies from prod to dev and update lockfile
Move @ant-design/icons, chalk, form-data, and open from dependencies to devDependencies
Update pnpm-lock.yaml to reflect dependency changes
* build: update package dependencies
- Add new dependencies: md5, @libsql/win32-x64-msvc, @strongtz/win32-arm64-msvc, bonjour-service, emoji-picker-element-data, gray-matter, js-yaml
- Remove redundant dependencies from devDependencies
* build: add cors, katex and pako dependencies
add new dependencies to support cross-origin requests, mathematical notation rendering and data compression
* move some js deps to dev deps
* test: update snapshot tests for Spinner and InputEmbeddingDimension
* chore: exclude .zed directory from biome formatting
* Update @ai-sdk/openai-compatible patch hash
* chore: update @kangfenmao/keyv-storage to version 0.1.3 in package.json and pnpm-lock.yaml
---------
Co-authored-by: icarus <eurfelux@gmail.com>
Co-authored-by: beyondkmp <beyondkmp@gmail.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: kangfenmao <kangfenmao@qq.com>
* fix: update @ai-sdk/openai-compatible to version 1.0.28 and adjust related patches
* fix: add sendReasoning option to OpenAICompatibleProviderOptions and update message conversion logic
* fix: add interval thinking model support and related tests
* fix: add sendReasoning option to OpenAICompatibleProviderOptions and update related logic
* fix: remove MiniMax reasoning model support and update interval thinking model regex
* chore: add comment
* fix: rename interval thinking model references to interleaved thinking model
* feat(gemini): update model types and add support for gemini3 variants
add new model type identifiers for gemini3 flash and pro variants
implement utility functions to detect gemini3 flash and pro models
update reasoning configuration and tests for new gemini variants
* docs(i18n): update chinese translation for minimal_description
* chore: update @ai-sdk/google and @ai-sdk/google-vertex dependencies
- Update @ai-sdk/google to version 2.0.49 with patch for model path fix
- Update @ai-sdk/google-vertex to version 3.0.94 with updated dependencies
* feat(gemini): add thinking level mapping for Gemini 3 models
Implement mapping between reasoning effort options and Gemini's thinking levels. Enable thinking config for Gemini 3 models to support advanced reasoning features.
* chore: update yarn.lock with patched @ai-sdk/google dependency
* test(reasoning): update tests for Gemini model type classification and reasoning options
Update test cases to reflect new Gemini model type classifications (gemini2_flash, gemini3_flash, gemini2_pro, gemini3_pro) and their corresponding reasoning effort options. Add tests for Gemini 3 models and adjust existing ones to match current behavior.
* docs(reasoning): remove outdated TODO comment about model support
* refactor: rename i18n commands for better consistency
- Rename `check:i18n` to `i18n:check`
- Rename `sync:i18n` to `i18n:sync`
- Rename `update:i18n` to `i18n:translate` (clearer purpose)
- Rename `auto:i18n` to `i18n:all` (runs check, sync, and translate)
- Update lint script to use new `i18n:check` command name
This follows the common naming convention of grouping related commands
under a namespace prefix (e.g., `test:main`, `test:renderer`).
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor: update i18n command names and improve documentation
- Renamed i18n commands for consistency: `sync:i18n` to `i18n:sync`, `check:i18n` to `i18n:check`, and `auto:i18n` to `i18n:translate`.
- Updated relevant documentation and scripts to reflect new command names.
- Improved formatting and clarity in i18n-related guides and scripts.
This change enhances the clarity and usability of i18n commands across the project.
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: support gpt 5.2
* feat: support param when set to 'none'
* chore version & simply type
* fix: comment
* fix: typecheck
* replace placeholder
* simplify func
* feat: add gpt-5.1-codex-max
* fix: update Ollama provider options for Qwen model support
Pass the model to buildOllamaProviderOptions and enable 'think' option only for supported Qwen models. This improves reasoning capability handling for Ollama providers.
* fix: empty array
* feat: ollama oss
---------
Co-authored-by: suyao <sy20010504@gmail.com>
- Modified the typecheck script in package.json to run node and web type checks concurrently for improved efficiency.
- Added 'concurrently' as a new dependency in package.json and updated yarn.lock accordingly.