What's Changed
- feat(chat-branch): persist empty branch nodes by @zhangjiadi225 in #17667
- perf(chat-tabs): skip redundant re-show work in message tools, artifact pane, and trace page by @zhangjiadi225 in #18038
- fix(claude-code): reap sdk cli subprocesses on shutdown by @kovsu in #17969
- fix(tool-loop): raise the default tool-call round cap by @DeJeune in #18072
- fix(directory-tree): close the snapshot-to-stream delivery gap by @DeJeune in #18009
- feat(providers): built-in web search for DeepSeek/OpenRouter/Dashscope + distinguishable resolved model names by @DeJeune in #17983
- fix(v2-migration): allow direct upgrades to v2.0.x by @kangfenmao in #18093
- feat(cache-cleanup): add selective cache and legacy data cleanup by @kangfenmao in #17377
- fix(composer): open image tokens in shared preview by @zhangjiadi225 in #18082
- fix(agent-channels): start WeChat QR login by @Pleasurecruise in #18071
- refactor(proxy): make ProxyService own worker routing policy by @eeee0717 in #18095
- feat: add Claude (Anthropic) conversation import support by @Pleasurecruise in #16164
- feat(cli-config): support detailed models through unified gateway by @eeee0717 in #18014
- feat(data-migration): allow rerunning v1 migration by @kangfenmao in #18002
- fix(mcp-settings): preserve form edits and improve tool details by @Pleasurecruise in #17647
- fix(new-api): serve every endpoint from one host with per-route versions by @DeJeune in #18033
- fix(agent-migration): skip symlinks during migration by @kangfenmao in #18101
- fix(local-model): survive mirror failures and keep embedding inference offline by @eeee0717 in #18016
- chore: release v2.0.2 by @kangfenmao in #18107
- fix(selection-assistant): respect Traditional Chinese locale by @AtomsH4 in #18098
Full Changelog: v2.0.1...v2.0.2