github CherryHQ/cherry-studio v2.1.8

3 hours ago

Downloads (v2.1.8)

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.8 - Editing, Voice, and Integration Updates

✨ New Features

  • [File Editing] Isolate drafts across notes, skills and artifacts, retain failed edits for retry, and support up to 8 MiB text editing and previews.
  • [Language] Add Italian (it-IT) UI support with full translations and emoji picker.
  • [Voice] Hold the mouse button in a text input to start dictation, release to transcribe.
  • [Voice] Streaming speech synthesis with real-time audio playback.
  • [Web Search] Add Tencent Yuanbao Search as a built-in provider.
  • [Scheduled Tasks] Create and manage scheduled tasks through an agent chat with an interactive task card.
  • [Screenshot] Copy the capture to clipboard while keeping the overlay open.
  • [Selection] Select text anywhere to automatically copy it and show a quick-quote toolbar.
  • [Composer] File and link tokens align with the text line, show per-type file icons, and load favicons while editing.
  • [RTF] Preview Rich Text Format files as formatted documents.
  • [Feishu] Configure whether the bot only replies to @mentions in group chats.
  • [Remote Access] Set a custom hostname, IP or port for pairing invitations.
  • [Assistant] Remember the “Also archive related topics” choice for future archives.

🐛 Bug Fixes

  • [Notes] Fix note content being overwritten when switching between cached notes.
  • [Skills] Show localized error messages when a ZIP or folder is missing SKILL.md, without leaking temporary paths.
  • [Chat] Expand long user messages by default; keep follow-up queues independent of read receipts.
  • [Proxy] Match short wildcard IP bypass rules like 192.168.* on Windows.
  • [Claude Code] Keep the 1M context budget when routing through the internal gateway.
  • [Tab Bar] Closing the last tab opens the Launchpad instead of quitting the app.
  • [File Preview] Preserve reading state when refreshing files; fix line spacing for Word documents.
  • [Sidebar] Selected entries use neutral filled icons in both light and dark themes.
  • [Chat Layout] Isolate list-group expansion state per window.
  • [Paintings] Cap loading grid density to prevent performance issues.
  • [MCP] Keep literal # characters in saved headers and environment values.
  • [Knowledge] Ship a baseline sqlite-vec build for Linux x64.
  • [Voice] Add diagnostics for operation failures and stream timeouts.
  • [Agent Session] Continue the target workspace when creating across agents; surface compaction failures.
  • [Messages] Drop historical tool parts with incompatible replay inputs.
  • [Virtual List] Hand sticky headers over at the pinned stack bottom.
  • [Notes] Fixed an issue where dismissing the "note changed on disk" conflict dialog left the editor session stuck, failing all later note renames, deletions, and moves with misleading errors.

🔒 Security

  • [Electron] Upgrade to 44.9.3 for certificate security fixes.

What's Changed

  • hotfix(voice): read code blocks and inline code aloud by @DeJeune in #21799
  • hotfix(agent-bootstrap): allow users to decline onboarding by @DeJeune in #21798
  • fix(doc): read the text boxes, footnotes and endnotes of a legacy .doc by @L4XB in #20636
  • hotfix(translate): keep dictation controls beside input text by @DeJeune in #21825
  • hotfix(computer-use): preserve tool output and paginate AX observations by @DeJeune in #21824
  • fix(error-boundary): allow copying error details by @ActiveSky in #19485
  • fix(release): preserve final newline when updating hotfix notes by @DeJeune in #21830
  • fix(pi-runtime): send adaptive thinking for always-adaptive Claude models by @cherry-coding[bot] in #21810
  • feat(input-file-preview): preview files in right pane by @SiinXu in #19894
  • fix(prompt-management): expose global prompts from editors by @1lck in #21673
  • fix(api-gateway): resolve Coding Partner model ids carrying a [1M] marker by @404-Page-Found in #21873
  • fix(web-search): make Querit and Crawl4AI URL fetch checks pass by @404-Page-Found in #21874
  • refactor(web-search): extract shared protocols and integrate Desktop by @zhangjiadi225 in #21807
  • fix(chat-scroll): use viewport movement to resolve scroll direction by @1lck in #21783
  • feat(i18n): add Thai localization by @KuronanaTh in #20637
  • fix(webview): fix address bar history flash and partial URL selection on click by @EurFelux in #21879
  • feat(prompt-polish): lock the prompt editor while polishing by @EurFelux in #21878
  • hotfix(settings): restore scrollbars and align Computer Use layout by @kangfenmao in #21794
  • chore: version packages by @github-actions[bot] in #21848
  • fix(package-release): reject changesets for ignored packages by @DeJeune in #21890
  • fix(sidebar): open pinned Agent instead of All Agents by @gokay-ai in #20327
  • test(e2e): identify the built-in agent by builtin_role, not its display name by @cherry-coding[bot] in #21895
  • test(e2e): accept the placeholder label when selecting the A-03 work directory by @cherry-coding[bot] in #21894
  • fix(pdf-translation): normalize sidecar IPv6 proxy bypass entries by @kangfenmao in #21549
  • refactor(sidebar-shortcuts): carry agent pin intent on tab state by @cherry-coding[bot] in #21843
  • fix(windows-asr): accept canonical 16 kHz WAV input by @SiinXu in #21762
  • feat(model-pricing): configure per-image prices by @WhiteZeek in #21892
  • test(pdf-translation): take the gateway host from the scoped credential by @1lck in #21902
  • fix(chat-messages): display Pi generated images inline by @WhiteZeek in #21908
  • fix(remote-access): byte-budget agent list pages under the record ceiling by @cherry-coding[bot] in #21854
  • feat(web-search): add DeepSeek Search & Fetch provider by @angri450 in #21909
  • fix(composer): preserve the edited queued draft when switching Edit targets by @cherry-coding[bot] in #21863
  • chore: version packages by @github-actions[bot] in #21915
  • feat(doc-governance): integrate spec-driven development workflow by @DeJeune in #18920
  • feat(voice): add configurable dictation shortcuts by @ousugo in #21695
  • fix(rtk): stop caching a timed-out probe as unavailable by @lianshuang-photo in #21606
  • fix(provider): accept null AiHubMix model pricing by @lorenzozanee in #21923
  • fix(openai-responses): accept url_citation without start/end index by @EurFelux in #21944
  • feat(agent-sessions): allow pinned sessions to be dragged into a custom order by @NatsUIJM in #21948
  • fix(image-preview): avoid Windows caption controls by @chronicle12345 in #21950
  • fix(file-metadata): upgrade isbinaryfile so CJK text is not read as binary by @zzoraemon043 in #21954
  • fix(mcp): retry legacy connect on bare probe 5xx responses by @ningyixi in #21946
  • fix(model-parameters): omit sampling params for all Claude models that reject them by @pcbeingused333 in #21939
  • fix(selection-action): seed translate languages from saved preferences by @EurFelux in #21960
  • chore(release): sync v2.1.7 metadata by @kangfenmao in #21963
  • fix(file-snapshot): preserve lossless filesystem identities by @acedatacloud-dev in #21952
  • chore(computer-use): bump SDK and native runtimes to 0.1.9 by @DeJeune in #21966
  • fix(markdown): avoid cumulative word animation delays by @DeJeune in #21971
  • fix(code-viewer): correct virtual row offsets for wrapped collapsed blocks by @404-Page-Found in #21157
  • feat(message-display): allow expanding long user messages by default by @louisfy in #21806
  • fix(agent-create): default to Pi and list it first by @kangfenmao in #21985
  • fix(agent-session): honor permission modes for agent delegation by @WhiteZeek in #21936
  • fix(language-select): hide raw language code from translate selector trigger by @zzx04-cool in #21993
  • fix(skill-marketplace): keep distinct same-named install sources by @acedatacloud-dev in #21924
  • refactor(voice): unify speech and transcription execution lifecycle by @DeJeune in #21795
  • feat(utility-process): support bounded request streams by @DeJeune in #21920
  • feat(voice): stream Qwen3 speech to bounded playback by @DeJeune in #21925
  • feat(local-asr): add Qwen3 1.7B complete transcription by @DeJeune in #21928
  • feat(voice): support streaming Qwen3 dictation by @DeJeune in #21964
  • feat(voice): stream Apple system speech PCM by @DeJeune in #21969
  • feat(voice): read incremental assistant text by @DeJeune in #21988
  • fix(navigation): refine sidebar, launchpad and tab visuals by @kangfenmao in #21980
  • fix(ai-sdk-provider): omit tool input examples on the CherryIN Anthropic model by @cherry-coding[bot] in #22001
  • chore: version packages by @github-actions[bot] in #22018
  • fix(remote-access): support paged message summaries by @WhiteZeek in #21992
  • feat(provider-registry): support MiniMax-M3.1-Flash by @SaladDay in #21999
  • fix(file-preview): resolve relative Markdown images against the document by @cherry-coding[bot] in #22015
  • chore: version packages by @github-actions[bot] in #22019
  • refactor(mcp): trim built-in tool and skill descriptions to 120 characters by @angri450 in #22025
  • chore: version packages by @github-actions[bot] in #22030
  • fix(api-gateway): report OS-refused gateway binds with recovery steps by @cherry-coding[bot] in #22009
  • fix(tool-schema): add properties map to parameterless MCP tool schemas by @cherry-coding[bot] in #22004
  • fix(remote-transport): apply backpressure instead of aborting at the queued-bytes cap by @drakeo338 in #21979
  • fix(file-preview): treat a missing w:lineRule as auto line spacing by @cherry-coding[bot] in #22031
  • chore: version packages by @github-actions[bot] in #22032
  • chore: version packages by @github-actions[bot] in #22033
  • fix(provider): tolerate chat-completions tool_call deltas without a function object by @cherry-coding[bot] in #22006
  • fix(agent-session): surface automatic compaction failures by @WhiteZeek in #21929
  • chore: version packages by @github-actions[bot] in #22034
  • fix(package-release): skip obsolete changeset runs by @DeJeune in #22037
  • feat(scheduled-tasks): create scheduled tasks through an agent chat by @1lck in #21796
  • feat(scheduled-tasks): interactive task card for scheduled tasks created in chat by @1lck in #21823
  • feat(runtime-activity): keep active AI and background tasks awake by @DeJeune in #20891
  • feat(application): confirm quit while runtime tasks are active by @DeJeune in #20892
  • fix(error-detail): hide direct reports for verified HTTP 5xx by @SiinXu in #20721
  • docs(readme): refresh v2 features and product screenshots by @kangfenmao in #22039
  • test(e2e): add SET-05 About page case by @cherry-qa[bot] in #22047
  • fix(provider-models): project Ollama's embedding capability for knowledge-base model picking by @cherry-coding[bot] in #22064
  • feat(qa-ondemand): run single desktop QA plans on demand by @kangfenmao in #22057
  • fix(knowledge): ship a baseline sqlite-vec build on Linux x64 by @cherry-coding[bot] in #22056
  • feat(voice): add mouse-hold dictation by @ousugo in #22063
  • fix(tab-bar): close the last tab into the Launchpad fallback by @NatsUIJM in #22085
  • feat(selection): add automatic copy and quote toolbar by @ousugo in #22099
  • fix(web-search): default Crawl4AI URL fetching to the Cloud API host by @cherry-coding[bot] in #22102
  • fix(mcp-settings): keep literal '#' in saved headers and env values by @cherry-coding[bot] in #22065
  • fix(agent-session): continue the target Agent workspace on cross-Agent create by @NatsUIJM in #22076
  • fix(sidebar): align hidden sidebar spacing with content frame by @kangfenmao in #22111
  • chore(deps): upgrade selection-hook to 2.1.2 by @0xfullex in #22079
  • fix(api-gateway): classify statusless upstream timeouts and aborts as 504 by @cherry-coding[bot] in #22081
  • ci(issue-management): remove stale issue auto-closing by @kangfenmao in #22115
  • fix(composer): drain follow-up queues independently of read receipts by @ousugo in #21149
  • feat(composer-tokens): align chips with prose, per-type file icons, link favicons by @DeJeune in #21792
  • feat(screenshot): add copy-to-clipboard action by @UmarAlMukhtar in #22110
  • fix(message-actions): balance read aloud icon weight by @DeJeune in #22119
  • fix(claude-code): keep the [1m] context budget on the gateway route by @NatsUIJM in #22116
  • fix(report-artifacts): align cards and clarify preview actions by @DeJeune in #22338
  • fix(proxy): match short wildcard IP bypass rules like 192.168.* by @HHHSL in #22118
  • feat(i18n): add Italian (it-IT) language support by @lianshuang-photo in #21029
  • fix(electron): upgrade to 44.9.3 for certificate security fixes by @DeJeune in #22357
  • fix(chat-attachments): restore external file cards and clarify preview actions by @DeJeune in #22347
  • fix(voice): add operation failure and stream timeout diagnostics by @DeJeune in #22371
  • test(e2e): cover conversations, composer, message actions and settings navigation by @cherry-qa[bot] in #22367
  • feat(assistant): remember the related-topics choice when archiving by @cherry-coding[bot] in #22378
  • fix(virtual-list): hand sticky headers over at the pinned stack bottom by @cherry-coding[bot] in #22379
  • fix(resource-list): show the whole-group drop indicator under section headers by @cherry-coding[bot] in #22380
  • fix(external-app): list the default application once in open-with by @cherry-coding[bot] in #22377
  • ci(qa-ondemand): correct startup budget and Windows timezone by @kangfenmao in #22070
  • feat(web-search): add Tencent Yuanbao Search provider by @WhiteZeek in #22343
  • feat(file-preview): add rich text format preview by @DeJeune in #22376
  • chore: version packages by @github-actions[bot] in #22391
  • feat(remote-access): support custom pairing addresses and ports by @DeJeune in #21387
  • chore: version packages by @github-actions[bot] in #22397
  • chore: version packages by @github-actions[bot] in #22398
  • fix(agent-lifecycle): reclaim purged session transcripts immediately by @lianshuang-photo in #21582
  • fix(remote-access): preserve entered HTTP and HTTPS addresses by @DeJeune in #22409
  • fix(e2e-regression): make CDP and inspector ports configurable by @cherry-qa[bot] in #22423
  • fix(skills): parse CRLF frontmatter with the strict YAML engine by @cherry-coding[bot] in #22410
  • chore(codeowners): assign main core and data owners by @DeJeune in #22438
  • fix(resource-list): prevent session hover preview shaking by @DeJeune in #22417
  • fix(file-preview): preserve reading state when refreshing files by @ousugo in #20897
  • chore: version packages by @github-actions[bot] in #22456
  • fix(proxy-settings): explain TUN mode in Proxy Mode and correct the painting image warning by @lianshuang-photo in #21090
  • fix(chat-layout): isolate list-group expansion state per window by @NatsUIJM in #20848
  • fix(paintings): cap loading grid density by @SiinXu in #17585
  • fix(i18n): restore Italian proxy translations by @DeJeune in #22473
  • fix(pi-runtime): omit reasoning.summary for third-party Responses hosts by @cherry-coding[bot] in #22491
  • fix(ai-messages): drop historical tool parts with non-object replay inputs by @cherry-coding[bot] in #22507
  • feat(feishu-channel): make the group mention requirement configurable by @cherry-coding[bot] in #22472
  • test(e2e): add settings persistence cases (SET-02, SET-03) by @cherry-qa[bot] in #22390
  • test(system-speech): avoid executing writable request fixtures by @DeJeune in #22529
  • fix(notes): keep the file-edit session's identity when switching back to a cached note by @cherry-coding[bot] in #22406
  • fix(i18n): localize the file preview and correct the Italian busy-session copy by @cherry-coding[bot] in #22348
  • fix(skills): localize local skill import failures and stop printing temp paths by @cherry-coding[bot] in #22421
  • chore: version packages by @github-actions[bot] in #22530
  • fix(sidebar): use filled icons for selected navigation by @DeJeune in #22537
  • hotfix(file-edit): isolate drafts and serialize file persistence by @DeJeune in #22420
  • fix(release): backport #22617 to v2.1.8 by @DeJeune in #22672
  • fix(release): backport #22671 to v2.1.8 by @kangfenmao in #22676

New Contributors

Full Changelog: v2.1.7...v2.1.8

Don't miss a new cherry-studio release

NewReleases is sending notifications on new releases.