github CherryHQ/cherry-studio v2.0.4

4 hours ago

What's Changed

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

New Contributors

Full Changelog: v2.0.3...v2.0.4

Don't miss a new cherry-studio release

NewReleases is sending notifications on new releases.