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
- @linktao159357 made their first contribution in #18073
- @NatsUIJM made their first contribution in #18417
- @chujiamo made their first contribution in #18248
- @PiedPiper911 made their first contribution in #18436
- @wzm-nh made their first contribution in #18451
Full Changelog: v2.0.3...v2.0.4