<!-- qwen-release-notes:v1 -->
## 亮点
_详见下方的完整变更列表。_
## 破坏性变更
暂无已知的破坏性变更。
## 完整变更列表
### 新功能
- feat(cli): 添加有界守护进程日志轮转 ([#6969](https://github.com/QwenLM/qwen-code/pull/6969)) by @doudouOUC
- feat(review): 将轮次标签嵌入到 findings 角色的身份行和键中 ([#7171](https://github.com/QwenLM/qwen-code/pull/7171)) by @wenshao
- feat(webshell): 在只读 WebShell 中回放 ChatRecord 历史记录 ([#6999](https://github.com/QwenLM/qwen-code/pull/6999)) by @cxruan
- feat(ui): 允许用户从 exit_plan_mode 确认中查看完整计划 ([#7060](https://github.com/QwenLM/qwen-code/pull/7060)) by @zjunothing
- feat(providers): 将 qwen3.8-max-preview 添加到 Token Plan 模型列表 ([#7199](https://github.com/QwenLM/qwen-code/pull/7199)) by @qwen-code-dev-bot
### 缺陷修复
- fix(sdk-java): 在 AcpClient 初始化失败时保留异常原因 ([#7189](https://github.com/QwenLM/qwen-code/pull/7189)) by @chinesepowered
- fix(web-shell): 在 Vite 开发服务器中代理 /goals 路由 ([#7187](https://github.com/QwenLM/qwen-code/pull/7187)) by @wenshao
- fix(sdk-java): 修正 TIMEOUT_30_MINUTES 使其真正表示 30 分钟 ([#7188](https://github.com/QwenLM/qwen-code/pull/7188)) by @chinesepowered
- fix(cli): 延迟输出 stream-json 启动警告 ([#7174](https://github.com/QwenLM/qwen-code/pull/7174)) by @barry166
- fix(review): 根据 CI 检查名称的最新运行结果进行判断,而非残留项 ([#7183](https://github.com/QwenLM/qwen-code/pull/7183)) by @wenshao
- fix(review): 从草稿评论中统计 Step 6 的内联 findings,绝不从手动输入的数字中统计 ([#7173](https://github.com/QwenLM/qwen-code/pull/7173)) by @wenshao
- fix(web-shell): 去重恢复的图片并加固侧边栏快捷键处理器 ([#7169](https://github.com/QwenLM/qwen-code/pull/7169)) by @zjunothing
- fix(mcp): 为严格提供商规范化工具名称 ([#6976](https://github.com/QwenLM/qwen-code/pull/6976)) by @ran411285752
- fix(core): 为 gemma 4 应用原生工具调用 schema ([#7177](https://github.com/QwenLM/qwen-code/pull/7177)) by @ghisguth
- fix(cli): 在 useTerminalSize 中共享一个 process.stdout 调整大小监听器 ([#7186](https://github.com/QwenLM/qwen-code/pull/7186)) by @mvanhorn
- fix: 在调试日志和 API 错误消息中暴露 OpenAI 兼容连接错误的底层 .cause ([#7010](https://github.com/QwenLM/qwen-code/pull/7010)) by @mvanhorn
- fix(web-shell): 防止工具栏标签被截断 ([#7196](https://github.com/QwenLM/qwen-code/pull/7196)) by @carffuca
- fix(review): 每个主题仅披露一次 — 去重 Not-reviewed,折叠全构建未启动的清单 ([#7190](https://github.com/QwenLM/qwen-code/pull/7190)) by @wenshao
- fix(review): 未验证的 Critical 不得成为公开阻塞项 — 弱化其关联的 Request changes ([#7191](https://github.com/QwenLM/qwen-code/pull/7191)) by @wenshao
### 性能优化
- perf(channels): 缓存通道内存召回 ([#7175](https://github.com/QwenLM/qwen-code/pull/7175)) by @qwen-code-dev-bot
- perf(cli): 将 TUI 运行时延迟至 ACP 启动之后 ([#7182](https://github.com/QwenLM/qwen-code/pull/7182)) by @doudouOUC
### 内部变更
- chore(vscode-ide-companion): 同步第三方通知并防范未来的偏差 ([#7161](https://github.com/QwenLM/qwen-code/pull/7161)) by @wenshao
- ci(autofix): 加固地址路径以应对过期目标和不信任的路由事件 ([#7163](https://github.com/QwenLM/qwen-code/pull/7163)) by @wenshao
## 新贡献者
- @ghisguth 在 [#7177](https://github.com/QwenLM/qwen-code/pull/7177) 中完成了首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.19.12...v0.20.0
<!-- qwen-release-notes:v1 -->
## Highlights
_See the complete change list below._
## Breaking Changes
No known breaking changes.
## Complete Change List
### Features
- feat(cli): Add bounded daemon log rotation ([#6969](https://github.com/QwenLM/qwen-code/pull/6969)) by @doudouOUC
- feat(review): bake the round label into a findings role's identity line and key ([#7171](https://github.com/QwenLM/qwen-code/pull/7171)) by @wenshao
- feat(webshell): replay ChatRecord history in readonly WebShell ([#6999](https://github.com/QwenLM/qwen-code/pull/6999)) by @cxruan
- feat(ui): let the user read the full plan from the exit_plan_mode confirmation ([#7060](https://github.com/QwenLM/qwen-code/pull/7060)) by @zjunothing
- feat(providers): add qwen3.8-max-preview to Token Plan model list ([#7199](https://github.com/QwenLM/qwen-code/pull/7199)) by @qwen-code-dev-bot
### Bug Fixes
- fix(sdk-java): preserve exception cause in AcpClient init failures ([#7189](https://github.com/QwenLM/qwen-code/pull/7189)) by @chinesepowered
- fix(web-shell): proxy /goals route in Vite dev server ([#7187](https://github.com/QwenLM/qwen-code/pull/7187)) by @wenshao
- fix(sdk-java): correct TIMEOUT_30_MINUTES to actually be 30 minutes ([#7188](https://github.com/QwenLM/qwen-code/pull/7188)) by @chinesepowered
- fix(cli): emit deferred stream-json startup warnings ([#7174](https://github.com/QwenLM/qwen-code/pull/7174)) by @barry166
- fix(review): judge a CI check by its name's latest run, not by any leftover ([#7183](https://github.com/QwenLM/qwen-code/pull/7183)) by @wenshao
- fix(review): count Step 6's inline findings from the drafted comments, never from typed numbers ([#7173](https://github.com/QwenLM/qwen-code/pull/7173)) by @wenshao
- fix(web-shell): dedupe restored images and harden the sidebar shortcut handler ([#7169](https://github.com/QwenLM/qwen-code/pull/7169)) by @zjunothing
- fix(mcp): normalize tool names for strict providers ([#6976](https://github.com/QwenLM/qwen-code/pull/6976)) by @ran411285752
- fix(core): apply native tool calling schema for gemma 4 ([#7177](https://github.com/QwenLM/qwen-code/pull/7177)) by @ghisguth
- fix(cli): share one process.stdout resize listener in useTerminalSize ([#7186](https://github.com/QwenLM/qwen-code/pull/7186)) by @mvanhorn
- fix: surface underlying .cause of OpenAI-compatible connection errors in debug log and API error message ([#7010](https://github.com/QwenLM/qwen-code/pull/7010)) by @mvanhorn
- fix(web-shell): prevent toolbar label clipping ([#7196](https://github.com/QwenLM/qwen-code/pull/7196)) by @carffuca
- fix(review): one disclosure per subject — dedupe Not-reviewed, collapse an all-built-none-launched roster ([#7190](https://github.com/QwenLM/qwen-code/pull/7190)) by @wenshao
- fix(review): an unverified Critical must not become a public blocker — soften the Request changes it rides ([#7191](https://github.com/QwenLM/qwen-code/pull/7191)) by @wenshao
### Performance
- perf(channels): cache channel memory recall ([#7175](https://github.com/QwenLM/qwen-code/pull/7175)) by @qwen-code-dev-bot
- perf(cli): Defer TUI runtime from ACP startup ([#7182](https://github.com/QwenLM/qwen-code/pull/7182)) by @doudouOUC
### Internal Changes
- chore(vscode-ide-companion): sync third-party notices and guard against future drift ([#7161](https://github.com/QwenLM/qwen-code/pull/7161)) by @wenshao
- ci(autofix): harden the address path against stale targets and untrusted route events ([#7163](https://github.com/QwenLM/qwen-code/pull/7163)) by @wenshao
## New Contributors
- @ghisguth made their first contribution in [#7177](https://github.com/QwenLM/qwen-code/pull/7177)
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.19.12...v0.20.0