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
lstool reporting empty directory instead of error for missing or non-directory paths. - [API] Fix OpenAI-compatible streaming dropping the required
argumentsfield 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
- @TideDra made their first contribution in #21138
- @rahuldr07 made their first contribution in #21171
- @0d00ciallo0721 made their first contribution in #21145
- @nanguogu made their first contribution in #21139
- @ggbdpq made their first contribution in #21193
Full Changelog: v2.1.3...v2.1.4