v2.0.4
Added 6
- Add back-to-top button and line-break mode to notes
- Add delete impact preview to agent workspace
- Add tab navigation shortcuts
- Restore MCP-over-HTTP endpoints (/v1/mcps) in API gateway
- Add opt-in MCP sessions with server-to-client push and progress in API gateway
- Handle GROUP_MESSAGE_CREATE event with per-channel mention-only toggle for QQ channel
Changed 3
- Serve the trace viewer incrementally and bound its retention
- Virtualize large span trees in trace viewer
- Route only PDFs through document processors in knowledge readers
Fixed 10
- Sync tray-dependent preferences in settings
- Propagate stream abort signal into in-flight MCP tool calls
- Normalize legacy v1 MCP tool names before model replay
- Block unreadable images for text-only models in chat attachments
- Find deeply nested workspace file mentions in agent
- Keep window shortcuts local in shortcut service
- Preserve auto-backup intervals across restarts
- Persist assistant group collapse in resource list
- Wrap long unbroken lines in wrapped mode instead of clipping in code viewer
- Honor auto-collapse setting when disabled for thinking blocks
What's Changed
- test(ai): add chat turn integration trajectories by @xjt-box in https://github.com/CherryHQ/cherry-studio/pull/17550
- perf(ai-trace): serve the trace viewer incrementally and bound its retention by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18203
- ci(prepare-release): sync and translate i18n before cutting a release by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18214
- fix(settings): sync tray-dependent preferences by @ousugo in https://github.com/CherryHQ/cherry-studio/pull/17445
- feat(notes): add back-to-top button and line-break mode by @LWWZH in https://github.com/CherryHQ/cherry-studio/pull/17788
- feat(agent-workspace): add delete impact preview by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18164
- fix(mcp-runtime): propagate stream abort signal into in-flight MCP tool calls by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18294
- fix(ai-messages): normalize legacy v1 MCP tool names before model replay by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18224
- fix(chat-attachments): block unreadable images for text-only models by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18297
- refactor(knowledge-readers): route only PDFs through document processors by @eeee0717 in https://github.com/CherryHQ/cherry-studio/pull/18161
- fix(agent): find deeply nested workspace file mentions by @ousugo in https://github.com/CherryHQ/cherry-studio/pull/18139
- fix(shortcut-service): keep window shortcuts local by @Pleasurecruise in https://github.com/CherryHQ/cherry-studio/pull/18282
- fix(backup): preserve auto-backup intervals across restarts by @ousugo in https://github.com/CherryHQ/cherry-studio/pull/18226
- fix(resource-list): persist assistant group collapse by @kennyzheng-builds in https://github.com/CherryHQ/cherry-studio/pull/18252
- docs(claude-md): cap inline comments, ban behavior-pinning tests, drop linear-history rule by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18302
- fix(code-viewer): wrap long unbroken lines in wrapped mode instead of clipping by @tommyzhang100504 in https://github.com/CherryHQ/cherry-studio/pull/18290
- fix(thinking-block): honor auto-collapse setting when disabled by @linktao159357 in https://github.com/CherryHQ/cherry-studio/pull/18073
- fix(topic-naming): keep auto-rename requests free of assistant tool config by @tommyzhang100504 in https://github.com/CherryHQ/cherry-studio/pull/18320
- fix(mini-app): reuse existing sidebar tab by @kennyzheng-builds in https://github.com/CherryHQ/cherry-studio/pull/18233
- fix(assistant-editor): recover from legacy save failures by @kennyzheng-builds in https://github.com/CherryHQ/cherry-studio/pull/18257
- perf(trace-viewer): virtualize large span trees by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18296
- fix(knowledge): add cursor pagination to knowledge base lists by @eeee0717 in https://github.com/CherryHQ/cherry-studio/pull/18300
- fix(system-ocr): send image bytes on Windows so JPEG decodes by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18335
- refactor(file-utils): split path spec from filename convention, add RelativeFilePath brands by @EurFelux in https://github.com/CherryHQ/cherry-studio/pull/18229
- refactor(knowledge): type material paths as PosixRelativeFilePath by @EurFelux in https://github.com/CherryHQ/cherry-studio/pull/18230
- feat(shortcuts): add tab navigation shortcuts by @ousugo in https://github.com/CherryHQ/cherry-studio/pull/16629
- fix(windows-env): preserve Unicode command paths by @AtomsH4 in https://github.com/CherryHQ/cherry-studio/pull/18201
- fix(dashscope): skip web_extractor when thinking is disabled by @tommyzhang100504 in https://github.com/CherryHQ/cherry-studio/pull/18349
- fix(agent-editor): let an explicit close discard a failed agent save by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18331
- fix(composer): use active editor for long text paste by @Pleasurecruise in https://github.com/CherryHQ/cherry-studio/pull/18301
- fix(agent-session): filter system reminder echoes by @kennyzheng-builds in https://github.com/CherryHQ/cherry-studio/pull/18250
- fix(agent-jobs): allow bounded scheduled task concurrency by @vaayne in https://github.com/CherryHQ/cherry-studio/pull/18355
- fix(mcp-settings): allow copying MCP logs by @404-Page-Found in https://github.com/CherryHQ/cherry-studio/pull/18249
- feat(api-gateway): restore MCP-over-HTTP endpoints (/v1/mcps) by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18080
- feat(api-gateway): add opt-in MCP sessions with server-to-client push and progress by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18094
- fix(ai-stream): keep overflowed replay parseable after ring eviction by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18295
- fix(agent-session): discard crashed sessions' resume tokens at boot reconcile by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18289
- fix(painting): keep size controls clear of nearby content by @SiinXu in https://github.com/CherryHQ/cherry-studio/pull/18360
- feat(qq-channel): handle GROUP_MESSAGE_CREATE event with per-channel mention-only toggle by @lanex2000 in https://github.com/CherryHQ/cherry-studio/pull/18152
- fix(image-viewer): bake rotation/flip into saved image by @kennyzheng-builds in https://github.com/CherryHQ/cherry-studio/pull/18322
- fix(tool-approval): advance multiple permission requests by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18312
- fix(window-manager): hide Dock icon on close-to-tray (#18186) by @GeorgeDong32 in https://github.com/CherryHQ/cherry-studio/pull/18366
- fix(claude-code-runtime): budget auto-compaction against the real request by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18338
- feat(agent-composer): support folder mentions by @AtomsH4 in https://github.com/CherryHQ/cherry-studio/pull/18342
- fix(system-ocr): transcode non-PNG images to PNG on Windows by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18361
- fix(doubao): normalize missing Responses annotations by @AtomsH4 in https://github.com/CherryHQ/cherry-studio/pull/18392
- feat(api-gateway): unified token estimator + real tool-result images by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/17195
- fix(knowledge): reject relative paths that escape the material root on the host by @EurFelux in https://github.com/CherryHQ/cherry-studio/pull/18401
- chore(renderer-utils): remove unused renderer utilities by @Pleasurecruise in https://github.com/CherryHQ/cherry-studio/pull/18418
- fix(provider-settings): restore model name truncation in manage drawer by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18416
- ci(claude-review): improve PR review automation by @kangfenmao in https://github.com/CherryHQ/cherry-studio/pull/18423
- ci(claude): consolidate GitHub workflows by @kangfenmao in https://github.com/CherryHQ/cherry-studio/pull/18426
- fix(skill-creator): frontmatter name must match folder name per Agent Skills spec by @NatsUIJM in https://github.com/CherryHQ/cherry-studio/pull/18417
- fix(model-selector): add edge fade to overflowing tag filter row by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18414
- fix(remote-fetch): follow redirects in built-in fetch and web search by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18380
- fix(ui): keep DialogContent clickable over titlebar drag region by @tommyzhang100504 in https://github.com/CherryHQ/cherry-studio/pull/18406
- feat(local-model): add DirectML and CoreML acceleration by @eeee0717 in https://github.com/CherryHQ/cherry-studio/pull/18350
- fix(prompt-editor): preserve newlines in prompt preview (#18377) by @GeorgeDong32 in https://github.com/CherryHQ/cherry-studio/pull/18390
- fix(provider-registry): map deepseek auto thinking to enabled by @404-Page-Found in https://github.com/CherryHQ/cherry-studio/pull/18274
- fix(observability): record final provider body in http trace by @tommyzhang100504 in https://github.com/CherryHQ/cherry-studio/pull/18348
- fix(stream-manager): stop leaking per-stream destroyed listeners on WebContents by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18278
- feat(model-pricing): support tiered rates by input token count by @chujiamo in https://github.com/CherryHQ/cherry-studio/pull/18248
- feat(claude-code): disable Claude Agent SDK non-essential traffic by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18433
- test(renderer): remove low-value implementation assertions by @Pleasurecruise in https://github.com/CherryHQ/cherry-studio/pull/18424
- fix(cherryin): align audio capabilities with model support by @AtomsH4 in https://github.com/CherryHQ/cherry-studio/pull/18386
- fix(mcp): use findExecutableInEnv for npx/uv resolution on Windows by @PiedPiper911 in https://github.com/CherryHQ/cherry-studio/pull/18436
- fix(main-window-navigation): allow /app routes and query strings in route allowlist by @tommyzhang100504 in https://github.com/CherryHQ/cherry-studio/pull/18266
- fix(oauth): allow canceling pending browser sign-ins by @AtomsH4 in https://github.com/CherryHQ/cherry-studio/pull/18367
- refactor(qq-channel): unify group-message dedup with rollback & mention strip by @lanex2000 in https://github.com/CherryHQ/cherry-studio/pull/18383
- fix(api-gateway): send stable prompt_cache_key for internal Agent Responses requests by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18343
- fix(error-display): surface the provider's real error instead of status text by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18431
- feat(file-processing): enforce document input limits by @eeee0717 in https://github.com/CherryHQ/cherry-studio/pull/18364
- fix(knowledge): keep deduplicated filenames within limit by @Pleasurecruise in https://github.com/CherryHQ/cherry-studio/pull/18358
- Feat/add querit webcontent provider by @wzm-nh in https://github.com/CherryHQ/cherry-studio/pull/18451
- fix(provider-registry): resolve same-family model sizes via size-preserving key by @GeorgeDong32 in https://github.com/CherryHQ/cherry-studio/pull/18391
- fix(ai-transport): stop quadratic memory growth that crashes the renderer on long fast streams by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18450
- fix(chat-stream): harden multi-model retry and stream convergence by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18304
- fix(external-apps): use official Windows Terminal icon by @ousugo in https://github.com/CherryHQ/cherry-studio/pull/18455
- feat(conversation-activity): track recent activity separately by @zhangjiadi225 in https://github.com/CherryHQ/cherry-studio/pull/18308
- fix(rename): stop IME composition Enter from committing a pinyin title by @kennyzheng-builds in https://github.com/CherryHQ/cherry-studio/pull/18456
- feat(context-settings): read attachments in full, gate fs_read, and restore a last-N context limit by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18192
- fix(stream-manager): pass assistantId through the retry context resolution by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18492
- fix(context-settings): pass assistant id to retry compaction by @kangfenmao in https://github.com/CherryHQ/cherry-studio/pull/18495
- feat(permission-composer): add enter/esc shortcuts for tool approval by @kovsu in https://github.com/CherryHQ/cherry-studio/pull/18359
- fix(web-search): read the Zhipu search key from its model provider by @kennyzheng-builds in https://github.com/CherryHQ/cherry-studio/pull/18480
- 🤖 Daily Auto I18N Sync: Aug 13, 2026 by @github-actions[bot] in https://github.com/CherryHQ/cherry-studio/pull/18502
- ci(prepare): skip prek git-hook install when CI is set by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18503
- test(main-i18n): drop catalog-content assertions from t() tests by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18506
- feat(provider-registry): serve DeepSeek V4 Pro over the Responses API by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18462
- ci(main-test): run main-process test shards on macOS and Windows by @DeJeune in https://github.com/CherryHQ/cherry-studio/pull/18478
- chore: release v2.0.4 by @kangfenmao in https://github.com/CherryHQ/cherry-studio/pull/18509
- fix(api-gateway): stop the gateway shutdown from hanging on a live stream by @kennyzheng-builds in https://github.com/CherryHQ/cherry-studio/pull/18489
New Contributors
- @linktao159357 made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/18073
- @NatsUIJM made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/18417
- @chujiamo made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/18248
- @PiedPiper911 made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/18436
- @wzm-nh made their first contribution in https://github.com/CherryHQ/cherry-studio/pull/18451
Full Changelog: https://github.com/CherryHQ/cherry-studio/compare/v2.0.3...v2.0.4