github CherryHQ/cherry-studio v2.1.4

3 hours ago

Downloads (v2.1.4)

Platform Architecture Download
Windows x64 Installer · Portable
Windows arm64 Installer · Portable
macOS Apple silicon (arm64) DMG · ZIP
macOS Intel (x64) DMG · ZIP
Linux x64 AppImage · DEB · RPM
Linux arm64 AppImage · DEB · RPM
Release Notes

Cherry Studio 2.1.4 - New Models, Device Connections, and Bug Fixes

✨ New Features

  • [Device connections] Connect over reachable LAN or externally configured VPN networks with IPv4/IPv6 support, automatic address prioritization, and manual selection by network interface. Action required: update to a compatible mobile app to save and verify additional addresses and scan pairing codes containing more than 16 addresses.
  • [Messages] Add export to multi-select action bar: export selected messages as Markdown, Word, or to Notion/Yuque/Obsidian/Joplin/Siyuan.
  • [Models] Add GPT-6.1 Sol support for OpenAI and OpenAI Codex, including pricing and reasoning settings.
  • [Models] Add Claude Sonnet 5.5 and Opus 5.5 with thinking controls and native web-tool eligibility.
  • [Models] Claude Code provider now offers Claude Opus 5.5 (with fast mode) and Claude Fable 5.1.
  • [Models] Add MiniMax M3.1 Flash Preview with five reasoning effort levels.
  • [ComfyUI] Add local ComfyUI image provider: pick saved workflows as models and generate from the paintings page.
  • [Launchpad] Built-in app tiles now use theme-aware card surfaces.

🐛 Bug Fixes

  • [Agent] Fix Agent sessions becoming unusable when the previous Claude Code process was slow to exit.
  • [Agent] Fix repeated message conflicts and stale titles in newly created remote Agent sessions.
  • [Agent] Fix checkpoint error message on edit-and-resend — now explains the issue clearly.
  • [Agent] Fix Agent session messages remaining in the list after a successful delete.
  • [Agent tasks] Reclaim unused heartbeat workspaces together with orphaned schedules.
  • [Chat] Fix Regenerate using the wrong provider — now uses the composer selection.
  • [Chat] Fix multi-model group retry using the assistant's default model instead of the reply's own model.
  • [Chat] Fix conversations restored via archive undo jumping away when opened.
  • [Chat] Fix tool call panels not using the same viewport-aware height as the thinking panel.
  • [Chat] Topic chats no longer inline browser tool schemas, reducing multi-thousand-token overhead.
  • [Chat] Only treat the tag block that opens a reply as inline reasoning — literal tags in answers no longer truncate content.
  • [Knowledge] Fix MCP package (DXT/MCPB) installs with paths differing only in case or Unicode form.
  • [Knowledge] Fix captured URL snapshots named with percent-escapes when the page path is not ASCII.
  • [Knowledge] Remember the last knowledge base used by the save dialog.
  • [Skills] Fix skills.sh installs for repositories storing skills under .gemini/skills/, .claude/skills/, or .agents/skills/.
  • [Skills] Fix skill ZIP imports with paths differing only in case or Unicode form.
  • [Translate] Fix Mermaid diagrams not being preserved and rendered during translation.
  • [File preview] Fix file preview showing path fragments as language for files in dotted directories or without extensions.
  • [File preview] Fix PDF preview not rendering Chinese/CJK text that uses non-embedded CID fonts.
  • [File icon] Fix file icons for Windows paths — artifact cards now show the correct icon.
  • [Markdown] Fix SVGs in chat being rendered with sizes measured for previously rendered SVGs.
  • [Model list] Keep numeric group names in model order while a search filter is active.
  • [Rich text editor] Formatting applied from the toolbar is now saved to the note.
  • [Browser] Restore resizing along the full height of the browser sidebar separator.
  • [Chat layout] Use narrower 280 px default for file and artifact panes on first run.
  • [Diagnostics] Fix health check reporting “No API key configured” for Claude Code CLI-based provider.
  • [Diagnostics] Show status link, processing state, and local history for diagnostic reports.
  • [Selection Assistant] Fix result code blocks not wrapping at narrow widths.
  • [Selection Assistant] Fix black screen after closing the action window while in macOS fullscreen.
  • [Screenshot] Fix Windows screenshot capture on mixed-DPI multi-monitor layouts.
  • [Web search] Fix API key rotation never reaching other keys when a duplicate entry exists.
  • [OpenClaw] Fix misleading “binary incompatible” error when the config-schema probe was merely slow.
  • [Copilot] Fix GitHub Copilot GPT-6 model routing by selecting the Responses API for the GPT-6 family.
  • [DSH] Fix Windows managed DSH temporary-directory cleanup and upgrade to 0.2.0-rc.2.
  • [Claude Agent] Upgrade Claude Agent SDK to 0.3.284 with preserved instructions on resume.
  • [Agent creation] Remove DeepSeek Harness from new-agent runtime options; existing agents remain supported.
  • [Filesystem] Fix ls tool reporting empty directory instead of error for missing or non-directory paths.
  • [API] Fix OpenAI-compatible streaming dropping the required arguments field for tools with no parameters.
  • [HTML preview] Fix text jumping when scrollbar appears/disappears at content-size threshold.
  • [Scheduled tasks] Keep multi-hour selections compact and support editable, validated Cron expressions.
  • [Composer] Copied Excel cells now paste as text when rich text is alongside an image.
  • [Provider settings] Clarify that Doubao models use Volcengine Ark with supported API base URL.
  • [macOS] Fix main window not reopening on first Dock click after closing with the red button.
  • [Provider] Keep model provider list position on enable/disable; show new providers at the top.

What's Changed

  • feat(composer): search nested resources from slash panel by @SiinXu in #21007
  • chore(release): sync v2.1.3 metadata by @kangfenmao in #21018
  • fix(agent-tasks): consolidate orphan schedule cleanup by @squarepots in #20912
  • fix(reasoning-extraction): keep literal think tags in the answer by @tommyzhang100504 in #21023
  • chore(deps): align node engine range with pnpm 12 by @EurFelux in #21025
  • fix(windows-signing): skip foreign native dependency binaries by @DeJeune in #21027
  • fix(agent-creation): hide DeepSeek Harness runtime option by @kangfenmao in #21034
  • chore(deps): upgrade vitest to v5 by @EurFelux in #21032
  • fix(openclaw): report schema probe timeouts instead of binary incompatibility by @lianshuang-photo in #21036
  • fix(composer): prefer text for rich Excel clipboard pastes by @Bruce-Yii in #21031
  • feat(diagnostics): show report status and local history by @SiinXu in #20568
  • fix(screenshot): match scaled secondary displays by @SiinXu in #20455
  • fix(scheduled-tasks): improve frequency controls by @SiinXu in #20290
  • fix(dev-profile): isolate preboot paths under one root by @SiinXu in #20135
  • fix(main-window): restore macOS window on first Dock click by @SiinXu in #19642
  • fix(agent-session): drop deleted messages from the visible list by @SiinXu in #19498
  • fix(html-preview): reserve stable scrollbar gutter to stop text jump by @SiinXu in #19491
  • feat(launchpad): add theme-aware card surfaces to built-in app tiles by @SiinXu in #17157
  • fix(selection-action): wrap long result code blocks inside the panel by @SiinXu in #19503
  • fix(provider): keep list order on enable and insert new providers first by @SiinXu in #19488
  • fix(v2-migration): retry startup storage failures by @SiinXu in #20454
  • perf(export): parallelize pasted-text reads during plain-text export by @SiinXu in #20751
  • fix(chat-layout): use narrower default artifact pane width by @SiinXu in #18981
  • fix(assistant-browser): defer the browser tool surface for topic chats by @lianshuang-photo in #21102
  • fix(agent-session): clarify unsupported checkpoint copy on fork and edit-and-resend by @lianshuang-photo in #21089
  • feat(comfyui): add a local ComfyUI image provider (supports Qwen-Image 2.1) by @LXD-8 in #20878
  • fix(i18n): compile the ignored-file globs of the hardcoded-string gate by @c020627 in #21108
  • fix(mcp-dify-knowledge): honor an explicit topK of 0 in search_knowledge by @yetuge in #21084
  • fix(window-manager): never hide a fullscreen window on close by @tommyzhang100504 in #21072
  • fix(file-preview): serve pdf.js CMaps over IPC so non-embedded CID CJK text renders by @NatsUIJM in #21067
  • fix(skill-install): check and check out the same tree for marketplace installs by @kovsu in #21135
  • fix(copilot): route GPT-6 family through Responses API by @TideDra in #21138
  • fix(rich-editor): persist toolbar formatting in the Notes live preview by @lianshuang-photo in #21095
  • fix(model-list): keep numeric group names in model order by @Bruce-Yii in #21130
  • fix(markdown): remeasure the chat SVG renderer per source by @c020627 in #21107
  • fix(file-icon): resolve the icon from the base name of Windows paths too by @c020627 in #21109
  • feat(provider-registry): support MiniMax M3.1 Flash Preview by @ousugo in #21140
  • fix(remote-access): publish session metadata updates by @zhangjiadi225 in #21136
  • fix(agent-session): limit unconfirmed runtime exits to history rewrites by @kovsu in #21161
  • fix(skills): resolve skills under dot-prefixed convention directories by @404-Page-Found in #21158
  • fix(right-pane): restore full-height browser resize handle by @ousugo in #21141
  • feat(provider-registry): serve Claude Opus 5.5 and Fable 5.1 on Claude Code by @rahuldr07 in #21171
  • fix(chat): keep multi-model group replies on their own model when retrying by @0d00ciallo0721 in #21145
  • fix(chat): use composer model override on regenerate by @404-Page-Found in #21100
  • fix(app-shell): close the window when the tab-close shortcut fires on the last tab by @0d00ciallo0721 in #21144
  • feat(provider-registry): support Sonnet 5.5 and Opus 5.5 progress by @DeJeune in #21173
  • feat(provider-settings): clarify Doubao Volcengine Ark setup by @404-Page-Found in #21116
  • perf(remote-access): coalesce agent text deltas and cache append byte lengths by @zhangjiadi225 in #21172
  • fix(translate): preserve and render Mermaid markdown by @nanguogu in #21139
  • feat(agent-session): open session_search/session_read results as jump cards by @NatsUIJM in #21142
  • fix(filesystem): write replace_all replacements literally by @yetuge in #21127
  • chore: version packages by @github-actions[bot] in #21175
  • fix(home-page): clear last-used topic id on NOT_FOUND recovery by @404-Page-Found in #21112
  • fix(diagnostics): probe external-CLI providers without an app API key by @rahuldr07 in #21170
  • fix(skill-install): reject ZIP entries that collide once case and Unicode are folded by @kovsu in #21155
  • chore(claude-code): upgrade agent SDK runtime to 0.3.284 by @DeJeune in #21178
  • feat(provider-registry): support GPT-6.1 Sol by @ousugo in #21192
  • fix(filesystem): report why ls cannot list a path instead of calling it empty by @yetuge in #21189
  • fix(api-gateway): emit an empty arguments object for arg-less tool calls by @yetuge in #21195
  • feat(messages): add export to multi-select action bar by @404-Page-Found in #20829
  • fix(file-preview): derive the code language from the file name only by @c020627 in #21038
  • fix(websearch): rotate API keys over distinct entries by @c020627 in #21039
  • fix(knowledge-base): decode the URL segment used in a snapshot name by @c020627 in #21040
  • fix(mcp): reject DXT/MCPB archives whose entries fold to one path by @yetuge in #21186
  • fix(knowledge): remember the last knowledge base used by the save dialog by @ggbdpq in #21193
  • fix(agent-session): replace edited history before streaming by @DeJeune in #21203
  • fix(dsh-runtime): upgrade to 0.2.0-rc.2 and restore Windows cleanup by @404-Page-Found in #21099
  • fix(tool-disclosure): match the thinking panel height and scroll containment by @kovsu in #21160
  • fix(provider-registry): enable native search for Grok 4.7 by @DeJeune in #21207
  • feat(device-connections): unify LAN and VPN setup with dual-stack access by @DeJeune in #21179
  • chore: version packages by @github-actions[bot] in #21210
  • ci(release-packages): disable GitHub release creation by @DeJeune in #21211
  • feat(device-connections): simplify pairing with prioritized addresses by @DeJeune in #21213
  • fix(test-infrastructure): isolate Electron mocks and bound DPAPI test by @DeJeune in #21219
  • fix(release): avoid Node UTF-8 pipe read overflow by @DeJeune in #21222
  • fix(release): backport #21229 to v2.1.4 by @DeJeune in #21236
  • fix(release): backport #21240 to v2.1.4 by @kangfenmao in #21241

New Contributors

Full Changelog: v2.1.3...v2.1.4

Don't miss a new cherry-studio release

NewReleases is sending notifications on new releases.