What's Changed
- fix(dsh-runtime): bind send_message anchors by their target subagent id by @kovsu in #18716
- fix(pi-runtime): honor Cherry proxy environment by @userInner in #18778
- feat(skills): add skill global enablement controls by @ousugo in #18185
- feat(agents): add floating task progress capsule by @ousugo in #18469
- fix(xlsx-preview): terminate parse worker on terminal states by @kovsu in #18773
- fix(file-preview): add horizontal padding and enable wrapping for text previews by @tommyzhang100504 in #18752
- fix(sub-window): keep macOS title-bar left inset when detached window is fullscreen by @tommyzhang100504 in #18398
- fix(api-gateway): skip think:true for Ollama when SDK default triggers auto reasoning by @404-Page-Found in #18744
- feat(screenshot): add interactive screen capture with annotation and OCR by @0xfullex in #18725
- fix(ai-provider): dispatch image + DashScope routing by preset, not raw provider id by @DeJeune in #18735
- fix(shiki): parallelize and deduplicate asset loading by @DeJeune in #18627
- ci(i18n): require complete translations in pull requests by @kangfenmao in #18750
- fix(data-migration): skip irrecoverable Dexie records by @kangfenmao in #18783
- fix(agent-migration): skip unavailable virtual drive workspaces by @kangfenmao in #18727
- fix(migration): clear stale Agent attachment refs on retry by @kangfenmao in #18757
- fix(local-inference): upgrade ONNX Runtime worker lifecycle by @eeee0717 in #18785
- fix(main-window): quit when closing without tray by @ousugo in #18448
- fix(ui-markdown): keep the styles entry in the bundle so formula copy works by @he-yufeng in #18711
- fix(code-mate): filter DSH-incompatible providers from Code Mate UI by @404-Page-Found in #18771
- fix(attachment-routing): block unreadable images for non-vision models by @zhangjiadi225 in #18797
- fix(ollama): preserve default thinking mode by @eeee0717 in #18784
- fix(claude-review): rerun reviews after PR updates by @kangfenmao in #18805
- feat(pi-runtime): add TypeScript-guided code mode tools by @vaayne in #18708
- refactor(settings): reorganize general preferences by @kangfenmao in #18794
- fix(i18n): add Code Mode tool translations by @DeJeune in #18812
- docs(claude-md): scope pre-commit checks to the change at hand by @DeJeune in #18808
- fix(chat-message): restore editing for provider-annotated assistant replies by @DeJeune in #18635
- fix(image-generation): retry image requests without response_format on 400 by @DeJeune in #18702
- fix(code-mate): default unconfigured launches to unified gateway by @eeee0717 in #18811
- feat(pdf-translation): layout-preserving PDF translation via BabelDOC by @eeee0717 in #17007
- feat(pdf-translation): record translations in history and file manager by @eeee0717 in #17980
- feat(mcp): surface MCP prompts and resources in the composer and to the model by @DeJeune in #18075
- fix(ai-service): use lightweight probe for Ollama health check (#18705) by @404-Page-Found in #18789
- fix(web-search): inherit Zhipu model provider keys by @AtomsH4 in #18810
- fix(obsidian-export): prevent duplicate export on double click by @kovsu in #18777
- perf(resource-list): reduce scroll timer churn by @zhangjiadi225 in #18825
- fix(web-search): use current Zhipu provider key by @kangfenmao in #18822
- fix(resource-list): unify drag overlay styling by @zhangjiadi225 in #18837
- fix(gemini-image): restore Nano Banana 2 parameters by @AtomsH4 in #18817
- fix(mcp-runtime): tombstone removed servers to stop ghost stdio clients by @kovsu in #18692
- feat(agent-session): add durable cross-session delivery by @vaayne in #18180
- feat(remote-fetch): allow private-network fetch targets behind a preference by @DeJeune in #18791
- fix(security): close four bypass gaps in existing guards (scheme checks, staging residue, trace perms) by @GeorgeDong32 in #18852
- fix(security): gate legacy IPC senders, unsafe-extension open guard, zip-slip containment by @GeorgeDong32 in #18751
- fix(wechat): send ciphertext size as image upload filesize by @XuanFENNN in #18849
- refactor(shortcut-settings): simplify shortcut controls by @kangfenmao in #18834
- fix(markdown-parser): skip hidden directories in skill directory scanner by @404-Page-Found in #18827
- fix(ai-params): serialize disabled reasoning for Responses models by @AtomsH4 in #18840
- fix(cherryin): refresh balance when returning from top-up by @NatsUIJM in #18841
- fix(dsh-runtime): surface web search citations and result cards by @userInner in #18762
- fix(agent): preselect compatible default model for every runtime by @ousugo in #18813
- feat(resource-list): show empty groups and paginate expansion by @zhangjiadi225 in #18821
- fix(skills): discover nested system skills by @AsahinaYui in #18867
- fix(knowledge-base): steer attached bases through search by @eeee0717 in #18875
- fix(feishu-channel): adopt official LarkChannel by @vaayne in #18544
- feat(model-check): unify provider model checks by @AtomsH4 in #18581
- fix(provider-settings): use granular api-key mutations in key list drawer by @kovsu in #18868
- fix(ipc-security): trust renderer path aliases by @leoking670 in #18851
- fix(openai-image): support URL image responses by @ActiveSky in #18798
- fix(image-export): unclip tables and wait for webfonts before capture by @NatsUIJM in #18779
- fix(topic-naming): restore first-message fallback when disabled by @zhangjiadi225 in #18877
- fix(topic-list): allow spaces in conversation names by @zhangjiadi225 in #18887
- chore(deps): declare @babel/runtime for vite dep optimizer by @vaayne in #18893
- test(cherryin): consolidate top-up refresh coverage by @zhangjiadi225 in #18895
- feat(task-completion): notify assistant and agent completions by @kangfenmao in #17651
- fix(mcp-settings): defer capability fetches until tab activation by @tzlwn1 in #18550
- fix(agents): disable ToolSearch for models that reject dynamically-loaded tools by @NatsUIJM in #18853
- fix(api-gateway): disable Responses storage for Claude Code by @kangfenmao in #18891
- fix(cherry-autonomy-tools): drop root anyOf from notify input schema by @DeJeune in #18888
- fix(model-check): probe image-only models via the image endpoint by @DeJeune in #18886
- fix(provider-error): extract nested detail.error.message and wrap long tokens by @tommyzhang100504 in #18833
- fix(message-service): preserve turnOptions on parts-only data patches by @kovsu in #18876
- fix(dsh-runtime): ship a loadable node-pty on Linux via the dsh rc.7 upgrade by @DeJeune in #18831
- perf: eliminate main-process sync IO stalls in file reads and save dialogs by @GeorgeDong32 in #18861
- fix(agent-runtime): surface ExitPlanMode plans by @userInner in #18830
- fix(pi-runtime): allow trusted reads from enabled skills by @zhangjiadi225 in #18906
- fix(net-fetch): sanitize invalid response headers by @kangfenmao in #18882
- fix(ollama): extract inline reasoning from streamed text by @userInner in #18897
- docs(agent-notes): propose docs governance and spec-driven workflow by @DeJeune in #18843
- docs(references): drop dead docs and fold messaging into chat by @DeJeune in #18844
- docs(references): close the references root into domain directories by @DeJeune in #18848
- docs(contrib): dissolve guides/ into contrib and reference domains by @DeJeune in #18856
- feat(doc-gates): enforce docs structure, frontmatter, and generated index by @DeJeune in #18858
- docs(references): audit documentation against current code by @DeJeune in #18860
- fix(provider-registry): refresh upstream catalog without batch twins by @DeJeune in #18910
- fix(agent-migration): fall back when hard links are unavailable by @kangfenmao in #18836
- fix(quick-assistant): finalize streaming text parts by @kennyzheng-builds in #18223
- fix(paintings): keep model selector provider order stable by @lianshuang-photo in #18313
- fix(sortable): cancel drag when the window loses focus by @kennyzheng-builds in #18604
- fix(markdown): stop rewriting unlinkable links and images into [blocked] by @kennyzheng-builds in #18629
- fix(dsh-runtime): preserve tool approval cards during event races by @DeJeune in #18908
- fix(pyodide): inject context variables into python execution scope by @kovsu in #18901
- test(permission-composer): stabilize ExitPlanMode preview assertion by @kangfenmao in #18913
- chore: release v2.0.8 by @kangfenmao in #18915
- refactor(observability): fold packages/mcp-trace into src by @EurFelux in #18839
New Contributors
- @XuanFENNN made their first contribution in #18849
- @AsahinaYui made their first contribution in #18867
- @leoking670 made their first contribution in #18851
- @ActiveSky made their first contribution in #18798
- @tzlwn1 made their first contribution in #18550
Full Changelog: v2.0.7...v2.0.8