github CherryHQ/cherry-studio v2.0.9

pre-release4 hours ago

What's Changed

  • fix(skills): support valid GitHub SKILL.md links by @AtomsH4 in #18907
  • feat(provider-registry): remote catalog hot-update without an app release by @DeJeune in #16857
  • refactor(agent-runtime): unify declarative tool approval policy by @DeJeune in #18865
  • fix(provider-registry): send enable_thinking for Qwen on openai-compatible providers by @404-Page-Found in #18772
  • fix(tabs): prevent pinning transient mini-apps by @userInner in #18904
  • perf(chat): lazy-load disabled message outline by @ActiveSky in #18971
  • fix(pi-agent): resolve citations for third-party MCP tool outputs by @404-Page-Found in #18829
  • fix(api-gateway): skip Anthropic tools without an input_schema by @userInner in #18780
  • docs(code-review): require dual sources for network downloads by @kangfenmao in #18953
  • feat(privacy): publish August 2026 policy update by @kangfenmao in #19022
  • ci(claude-review): keep review failures advisory by @kangfenmao in #19031
  • feat(shortcuts): restore Ctrl+L clear messages shortcut by @SiinXu in #19021
  • fix(skills): only block skills on provable dependency gaps, and split SkillService by @kennyzheng-builds in #18549
  • fix(api-gateway): keep Agent SDK system messages out of the assistant turn by @kennyzheng-builds in #18697
  • feat(assistant-settings): add model settings navigation by @AtomsH4 in #19030
  • fix(code-viewer): highlight the first frame without the debounce delay by @kovsu in #18950
  • fix(ai-messages): drop unanswered approvals from replayed history by @DeJeune in #18066
  • fix(message-locate): cancel stale requests on conversation switch by @zhangjiadi225 in #18994
  • fix(topic-navigation): recover deleted active topics by @zhangjiadi225 in #18995
  • fix(permission-mode): improve option legibility by @AtomsH4 in #19035
  • fix(code-mate): ignore stale provider selections by @eeee0717 in #19015
  • fix(job-scheduler): persist automatic next runs by @AtomsH4 in #19017
  • fix(api-gateway): downgrade inline system messages for Ollama by @userInner in #19042
  • refactor(mcp): move builtin server knowledge out of the MCP runtime by @DeJeune in #18630
  • fix(pdf-translation): show resource download progress by @eeee0717 in #19051
  • fix(migration): preserve agent identity files when v1 source workspace is removed by @404-Page-Found in #19053
  • refactor(external-app): unify external open targets by @zhangjiadi225 in #19027
  • feat(local-model): enable inference hardware acceleration by default by @eeee0717 in #19055
  • test(job-scheduler): fix flaky nextRun assertion on natural interval fire by @DeJeune in #19057
  • fix(agent-session): update lastActivityAt when reusing placeholder session by @404-Page-Found in #19036
  • feat(sidebar): pin assistants and agents to the sidebar by @bigben446 in #18345
  • feat(mini-app): split the mini app view into two panes by @bigben446 in #18425
  • fix(topics): prevent old title flash after rename by @ousugo in #18760
  • fix(command-execution): restore Bash output on Windows by @DeJeune in #17682
  • fix(code-style): isolate theme catalog updates by @DeJeune in #19069
  • fix(agent-composer): show full AskUserQuestion titles by @SiinXu in #19016
  • fix(notes): preserve navigation after renaming by @SiinXu in #19020
  • fix(agents): lazy-load AgentSessionImageCaptureHost in Sessions by @404-Page-Found in #19078
  • fix(user-data-relocation): copy symlink targets during migration by @kangfenmao in #19033
  • fix(paths): divert dev logs directory away from packaged installs by @kovsu in #18068
  • fix(right-pane): animate maximize and restore instead of committing at the boundary by @kovsu in #19083
  • fix(topic-list): clear messages for non-active topics by @zhangjiadi225 in #19004
  • fix(conversation-routing): prevent stale session actions by @zhangjiadi225 in #18970
  • fix(composer): preserve drafts when stream open is blocked by @zhangjiadi225 in #18999
  • fix(message-list): isolate message targeting by tab by @zhangjiadi225 in #18997
  • fix(chat): restore clear-messages shortcut after event removal by @DeJeune in #19091
  • fix(ovms): list all configured OVMS models regardless of loading state by @404-Page-Found in #18826
  • fix(citations): clear sources when switching conversations by @zhangjiadi225 in #18996
  • fix(topic-rename): wait for persistence before showing success by @zhangjiadi225 in #19005
  • fix(chat): prevent arrow-key scroll jitter in message list by @404-Page-Found in #18769
  • feat(usage): redesign usage analytics with ECharts by @zhangjiadi225 in #19084
  • fix(html-artifact): prevent bare-text height jitter in inline preview by @tommyzhang100504 in #18998
  • perf(chat): remove unused flow navigation listener by @ActiveSky in #19085
  • fix(keyboard): make message scroll containers focusable for arrow-key navigation (#19070) by @xxiaoxiong in #19099
  • test(trace-viewer): drop the virtualizer scroll debounce before jsdom teardown by @kovsu in #19101
  • fix(binary-manager): validate installs by the bins a recipe exposes by @DeJeune in #19087
  • fix(data-migration): skip Dexie records with unreadable large values by @DeJeune in #19086
  • fix(message-locate): bind global-search locate requests to their conversation by @kovsu in #19094
  • fix(pi-agent): resolve citations for pi's tool_call wrapper by @DeJeune in #19071
  • fix(provider): remove retired GitHub Models integration by @ousugo in #19072
  • fix(composer): surface full url on truncated link chips and speed up og hover by @tommyzhang100504 in #19107
  • fix(composer): prevent editable toggle from restoring sent draft text by @tommyzhang100504 in #19113
  • fix(api-gateway): convert max_tokens to max_completion_tokens for OpenAI reasoning models by @404-Page-Found in #18768
  • fix(mini-app): relay guest keydown so renderer shortcuts work in webviews by @LWWZH in #19076
  • fix(mcp): collect prompt arguments in a dialog before insert by @mturac in #18946
  • fix(quick-assistant): use the configured quick model by @metrovoc in #19080
  • docs(claude-md): replace broken pnpm test advice with working targeted commands by @tommyzhang100504 in #19135
  • fix(provider): align Responses behavior and provider state ownership by @DeJeune in #18449
  • fix(deepseek-harness): write the versioned dsh credentials layout by @DeJeune in #19131
  • fix(model-list): read the Ollama context window from /api/show by @DeJeune in #19046
  • fix(agent-runtime): default missing model context window to 256K by @DeJeune in #18847
  • fix(app-startup): apply launch-on-boot preference to system by @kennyzheng-builds in #18225
  • chore(download-binaries): share downloaded tools across git worktrees by @EurFelux in #19126
  • feat(mcp): add built-in install_mcp_server tool for one-click MCP registration by @NatsUIJM in #18609
  • fix(screenshot-overlay): keep the toolbar on screen for a full-screen selection by @DeJeune in #19150
  • fix(anthropic-provider): accept thinking blocks without a signature by @DeJeune in #19146
  • fix(api-gateway): fold inline system messages for openai-chat-completions by @DeJeune in #19145
  • fix(model-selector): distinguish duplicate model names by @SiinXu in #19018
  • fix(screenshot): let Escape dismiss an overlay before any selection by @EurFelux in #18932
  • fix(quick-panel): keep skill names readable by @ousugo in #19142
  • fix(api-gateway): map chat reasoning_effort to Responses by @HappyAny in #18854
  • test(agents-migration): fix flaky high-fan-out copy test on Windows CI by @DeJeune in #19132
  • fix(screenshot): show the IME candidate window while annotating text by @EurFelux in #18934
  • fix(models): hydrate custom model registry limits by @userInner in #19155
  • fix(composer): preview Markdown attachments by @userInner in #19154
  • fix(model-drawer): drop native number spinners from model settings inputs by @EurFelux in #19125
  • ci(provider-registry): author catalog sync commits through GraphQL by @DeJeune in #19181
  • fix(binary-manager): retry pipx installs across PyPI mirrors in China by @eeee0717 in #19102
  • fix(binary-manager): make BabelDOC installable from mainland China by @eeee0717 in #19098
  • fix(models): hydrate custom model registry metadata by @userInner in #19174
  • perf(mini-app): stabilize pool callbacks by @userInner in #19169
  • chore(gh-create-issue): add restricted engineering task template by @EurFelux in #19173
  • fix(prompt-editor): align prompt action button styles by @zhangjiadi225 in #19190
  • feat(prompt-bindings): add contextual prompt visibility by @zhangjiadi225 in #18378
  • fix(quick-panel): prevent hidden action hitboxes after tab switches by @zhangjiadi225 in #19187
  • feat(launchpad): refresh built-in app icons by @SiinXu in #19059
  • fix(artifact-pane): clear the elevated composer in a maximized pane by @kovsu in #19034
  • fix(prompt-interpolation): preserve literal replacement text by @kovsu in #17574
  • feat(artifact-pane): add copy path context menu to workspace file tree by @kovsu in #18776
  • fix(filesystem-mcp): parse ripgrep JSON output by @kovsu in #17598
  • feat(export): convert markdown alerts to notion callouts by @GeorgeDong32 in #18611
  • fix(deepseek-harness): heal stale managed keys at top-level of versioned credentials by @404-Page-Found in #19162
  • perf(screenshot): make the capture overlay appear immediately by @EurFelux in #18933
  • fix(markdown): copy tables from local source blocks by @ousugo in #19193
  • feat(provider-registry): add DeepSeek V4 Flash Vision Exp with image input by @EurFelux in #19236
  • fix(settings): avoid router-hook crash when ModelSettings renders off… by @keygenqt in #19205
  • feat(sidebar): support middle-click and context menu to open in new tab by @ousugo in #19202
  • docs(references): verify stale paths fixed for #18850 by @404-Page-Found in #19227
  • fix(stream-manager): ignore stale terminal callbacks by @kovsu in #17997
  • refactor(observability): remove orphaned IPC trace patch by @cyq1017 in #19246
  • fix(popups): stop IME candidate Enter from resolving PromptPopup with raw pinyin by @404-Page-Found in #19224
  • feat(appearance): surface the chat and work list positions in settings by @kennyzheng-builds in #19200
  • docs(development): remove empty Development section heading by @c020627 in #19237
  • fix(agent-migration): tolerate unreadable legacy database by @kangfenmao in #18912
  • refactor(i18n): flatten locale catalogs to dotted keys by @DeJeune in #19143
  • fix(agents): delete an agent's task schedules with the agent by @yzxcj797 in #19215
  • fix: remove unsupported 'includeServerSideToolInvocations' field from Gemini tool config by @LWWZH in #15098
  • fix(agent): discover workspace .agents skills by @userInner in #19258
  • fix(composer): preserve pasted screenshots with text flavors by @userInner in #19260
  • fix(quick-panel): preserve labels while aligning descriptions by @ousugo in #19199
  • fix(agent-creation): show go-to-chat action after tool creation by @zhangjiadi225 in #19195
  • fix(composer): isolate referenced conversation instructions by @userInner in #19257
  • fix(agent-search): exclude hidden reasoning from search by @kennyzheng-builds in #17661
  • feat(skills): open installed skill folders by @SiinXu in #18929
  • feat(skills): restore file browser and translation by @SiinXu in #18993
  • perf(home-composer): skip unchanged streaming renders by @DeJeune in #18468
  • fix(chat-markdown): animate streamed inline code by @tommyzhang100504 in #19156
  • fix(agent): add back navigation to subagent flows by @ousugo in #19266
  • feat(settings): clarify Global Memory scope and add memory overview by @404-Page-Found in #19229
  • fix(provider-registry): distinguish integer image ranges by @userInner in #19256
  • fix(api-gateway): restore Gemini 3 thought signatures on replayed tool calls by @DeJeune in #19047
  • fix(provider): add defaultChatEndpoint to lmstudio preset so Pi/DSH endpoint resolution succeeds by @newdeme in #19006
  • fix(settings): default settings entries to model services by @ousugo in #19137
  • fix(painting-size): keep selected chip outline visible by @SiinXu in #18982
  • feat(pi-icon): use official Pi mark by @eeee0717 in #19277
  • feat(agent-dialogs): refine create and edit experience by @kangfenmao in #19013
  • feat(wechat-channel): support native iLink media by @vaayne in #19278
  • fix(code-editor): resolve editor height and language extension lookups by @kovsu in #18951
  • fix(chat-shell): keep sidebar resize handle aligned after settings navigation by @ousugo in #19123
  • fix(agent-runtime): serialize stop and retry teardown by @AtomsH4 in #19252
  • perf(painting): parallelize history file hydration by @userInner in #19283
  • fix(composer): show first picker attachment on unused assistant by @SiinXu in #19293
  • fix(screenshot): keep overlays on the active macOS Space by @userInner in #19281
  • feat(data): support JSON Merge Patch for provider settings by @userInner in #19280
  • perf(dsh-runtime): bundle packaged dependencies by @kangfenmao in #19191
  • refactor(code): retire CLI config read IO, broadcast managed-tool status by @GeorgeDong32 in #18671
  • fix(provider-model): reconcile ambiguous delete failures by @AtomsH4 in #19301
  • chore: release v2.0.9 by @kangfenmao in #19308

New Contributors

Full Changelog: v2.0.8...v2.0.9

Don't miss a new cherry-studio release

NewReleases is sending notifications on new releases.