Downloads (v2.1.10)
| 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.10 - File Comments, Touch Reorder, and Update Timeline
✨ New Features
- [Agent Files] Comment on files for the agent. In a text file, hover a line and click '+' (or drag across several lines) to write a comment. In Word, Excel, PDF and PowerPoint files, pick a part and click Comment. Each comment is added to the message as a chip with its location.
- [Updates] View skipped stable-version release notes in a collapsible timeline; single-version updates show their notes directly. Markdown footnote navigation now works correctly with backlinks.
- [Proxy] Test proxy connection in General Settings before saving, with support for PAC proxy/direct fallback reporting.
- [Touch] Reorder lists by pressing and holding a row. Buttons inside a row no longer start a drag. Selection Assistant settings now show enabled and disabled actions in one list separated by a divider.
🐛 Bug Fixes
- [Chat] The message list no longer jumps back to the first message while scrolling a conversation that contains code blocks.
- [Agents] Existing conversations resume correctly after moving the data directory, preserving their history.
- [Local Dictation] Fix local speech recognition silently losing the second half of long utterances.
- [Streaming] Fix missing or duplicated response text when stream replay overlaps incoming output.
- [Composer] Option descriptions in question panels are no longer truncated.
- [Right Panel] The browser sidebar no longer opens unexpectedly when creating or switching Agent tasks.
- [Code Block] Diagram preview toolbars are no longer clipped. Mermaid, Graphviz, SVG, LaTeX, and ECharts previews blend into the message background.
- [Knowledge] File conversion progress starts from 0% and updates immediately instead of every 5 seconds.
- [Conversation List] Recent conversations no longer sort to the bottom after midnight.
- [MiMo] Fix MiMo models returning “Unsupported model” errors.
⚡ Performance
- [Code Blocks] Reduce unnecessary rendering work while scrolling conversations with code blocks.
What's Changed
- fix(move-to-trash): refuse protected paths behind ..-prefixed segments and macOS case variants by @kovsu in #23115
- fix(ui): align tailwind-merge and lucide-react with the app by @kovsu in #23120
- refactor(path-containment): collapse duplicated main-process containment predicates by @kovsu in #23116
- hotfix(aihubmix): omit tool input examples on the Anthropic route by @cherry-coding[bot] in #22364
- fix(account-menu): unify account actions and feedback access by @kangfenmao in #23043
- fix: accept sparse OpenAI response lifecycle events by @Dante-dan in #20323
- feat(external-app): discover system file handlers and native icons by @DeJeune in #23127
- fix(pi-runtime): preserve Google signatures across connection identities by @frangled123 in #23124
- fix(browser): preserve address submission while find is open by @ousugo in #23132
- fix(import): preserve context in flat Claude exports by @ousugo in #23130
- perf(chat-messages): scope tool part lookups to their own message by @kovsu in #23121
- docs(file-processing): propose a FileProcessing-owned task model by @EurFelux in #22996
- fix(claude-code): show the runtime check only when it takes longer than 200ms by @EurFelux in #23159
- refactor(composer): move module-level code out of the composers by @kovsu in #23152
- fix(agent-composer): roll back reasoning effort when saving fails by @kovsu in #23148
- docs(sortable): propose backing Sortable with @dnd-kit/react by @kovsu in #23147
- refactor(composer): share queued follow-up editing by @kovsu in #23149
- fix(import): stop ChatGPT importer from hanging on cyclic parent pointers by @c020627 in #23150
- refactor(composer): share knowledge base draft sync by @kovsu in #23151
- docs(tool-approval): state the external MCP per-call approval guarantees by @cherry-coding[bot] in #23160
- fix(file-storage): fall back to permanent delete when trash is unavailable by @404-Page-Found with @Copilot in #23153
- Fix relative Agent artifact preview and open paths by @404-Page-Found with @Copilot in #23112
- chore(release): sync v2.1.9 metadata by @kangfenmao in #23175
- refactor(ui): back Sortable with @dnd-kit/react by @kovsu in #23170
- feat(file-processing): give file processing its own task model by @EurFelux in #23161
- refactor(knowledge-ingestion): reach file processing only through its task API by @EurFelux in #23162
- perf(resource-list): refresh time grouping only when the day changes by @kovsu in #23178
- refactor(icons): remove dead renderer icons and duplicate primitives by @kovsu in #23177
- refactor(lifecycle): dispose owned emitters on destroy and forbid registering them by @EurFelux in #23176
- fix(code-block): align preview surfaces and toolbar spacing by @DeJeune in #23182
- feat(release-build): add opt-in incremental release builds by @DeJeune in #23134
- revert(release-build): remove incremental release build caching by @DeJeune in #23184
- fix(ai-stream): preserve output across replay handoff by @DeJeune in #22413
- feat(proxy): add connection test by @Dante-dan in #20487
- fix(right-panel): prevent browser sidebar opening on new tasks by @DeJeune in #23187
- fix(pi-runtime): preserve steering boundaries with Pi 1.4.0 by @MyPrototypeWhat in #21743
- fix(composer): wrap ask-question option descriptions instead of truncating by @cherry-coding[bot] in #22995
- fix(agent-session): recover sessions after data directory relocation by @WhiteZeek in #21406
- fix(code-viewer): avoid layout-origin measurements on scroll by @DeJeune in #23218
- refactor(resource-list): share conversation list helpers by @kovsu in #23203
- fix(e2e-regression): launch branch mode on its own inspector port by @cherry-qa[bot] in #23190
- feat(agent-file-pane): comment on files into the composer by @DeJeune in #23186
- docs(app-updater): specify aggregated upgrade release notes by @DeJeune in #23191
- feat(app-updater): show release notes across skipped versions by @DeJeune in #23213
- refactor(agent-runtime): introduce thread contracts and native harness adapters by @DeJeune in #21910
- fix(mimo): send the dotted model IDs the official API accepts by @cherry-coding[bot] in #22768
- fix(local-asr): size FunASR Nano chunks to the decoder KV budget by @angri450 in #22607
- fix(code-viewer): keep the message list viewport when an expanded code viewer attaches by @cherry-coding[bot] in #23198
New Contributors
- @frangled123 made their first contribution in #23124
Full Changelog: v2.1.9...v2.1.10