<!-- Release notes generated using configuration in .github/release.yml at release/v0.20.1-nightly.20260724.7d17c44a3 -->
## 更新内容
* test(telemetry): 覆盖守护进程指标初始化顺序,并记录 metricReader 的不对称性 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7456
* perf(startup): 通过包内动态导入延迟加载 undici by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7455
* fix(autofix): 在提交头被判定前保持红色检查状态可见 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7438
* feat(web-shell): 在编辑器工具栏添加带添加/切换下拉菜单的工作区选择按钮 by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/7390
* fix: 当 AgentTool 设置 isolation:worktree 时,将空的 working_dir 规范化为 unset by @mvanhorn in https://github.com/QwenLM/qwen-code/pull/7403
* fix(core): 广播已完成任务的恢复 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7454
* fix(cli): 细化更新检查错误分类 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7431
* fix(web-shell): 隔离组件样式与宿主 CSS by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7466
* feat(web-shell): 在详情面板中显示子代理会话 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7380
* perf(web-shell): 优化长会话渲染 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7408
* feat(web-shell): 添加渲染后的文件预览 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7467
* feat(core): 添加记忆召回投递遥测 by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/7393
* fix(web-shell): 优化嵌入式 Shell 交互体验 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7477
* fix(release): 在核心版本升级时排除 mobile-mcp by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7474
* fix(ci): 将实际模型名称注入到分类签名中 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7475
* fix(core): 使步进日字段与 Vixie cron 语义对齐 by @destire-mio in https://github.com/QwenLM/qwen-code/pull/7464
* feat(core): 保持已完成后台代理驻留 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7426
* fix(acp-bridge): 关闭 PR #7400 自审查中 prompt-terminal 的后续跟进 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7453
* fix(core): 从代理派生的子环境变量中剥离 Qwen 内部守护进程密钥 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7256
* docs(core): 使 JSDoc @param 名称与实际函数签名对齐 by @ovochouovo in https://github.com/QwenLM/qwen-code/pull/7492
* feat(serve): 支持强制 MCP 重连 by @BZ-D in https://github.com/QwenLM/qwen-code/pull/7488
* fix(cli): Shift+Enter 插入换行符,并停止流式思考块闪烁 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7397
* fix(web-shell): 打开单例子代理详情 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7495
* fix(web-shell): 避免冗余的 Git 状态请求 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7496
* fix(agent): 忽略空的 working_dir 占位符 by @Truraly in https://github.com/QwenLM/qwen-code/pull/7343
* feat(prompts): 允许通过 QWEN_SYSTEM_IDENTITY_MD 覆盖核心身份 by @zjgzx1988 in https://github.com/QwenLM/qwen-code/pull/7478
* fix(cli): 让出给单槽位后台代理 by @hogeheer499-commits in https://github.com/QwenLM/qwen-code/pull/7258
* docs(autofix): 要求提供证据的预提交验证,而非仅显示“已验证” by @wenshao in https://github.com/QwenLM/qwen-code/pull/7486
* feat(autofix): 停止连续 N 次推送失败的 PR by @wenshao in https://github.com/QwenLM/qwen-code/pull/7482
* feat(core): 恢复后台代理名单 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7459
* feat(cli): 通过设置支持自定义技能目录 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7395
* fix(core): 为 qwen3.8-max 和 kimi-k3 模型添加图像模态支持 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7491
* fix(dingtalk): 保留非机器人提及的上下文 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7473
* fix(core): 强化会话删除期间的用量回收处理 by @zjunothing in https://github.com/QwenLM/qwen-code/pull/7425
* fix(core): 使分叉子代理可被发现 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7460
* test(core): 覆盖无工件时的 Shell 截断 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7470
* fix(ci): autofix 路由在非触发标签事件上检查现有标签 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7481
* feat(cli): 复制 VP 选区时保留语义文本 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7286
* test(core): 为 agent.ts 实际调用的注册表方法提供桩实现 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7538
* perf(startup): 首次使用时延迟加载 Google GenAI SDK by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7512
* fix(vscode): 使用文件选择器图片路径作为视觉输入 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7493
* fix(cli): 打开实际的 serve 回退端口 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7501
* fix(ci): 避免单个失败场景导致整个视觉预览崩溃 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7511
* feat(web-shell): 添加选择性 Shadow DOM 隔离 by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7551
* feat(web-shell): 添加 renderChatHeader 插槽以支持自定义会话头部 by @yuanyuanAli in https://github.com/QwenLM/qwen-code/pull/7553
* fix(cli): 以作者单位而非代码块 ID 报告审查覆盖率缺口 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7550
* fix(autofix): 重试被跳过的 Prepare 步骤,而不是让 PR 终端卡住 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7490
* fix(cli): 在发布的审查内容中移除角色代号和简短路径 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7560
* fix(autofix): 重试代理超时,而不是跳过其反馈继续执行 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7563
* feat(serve): 添加工作区级生成功能 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7552
* fix(web-shell): 在制品打开请求中暴露 managedId by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7570
* feat(serve): 持久化工作区频道配置 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7514
* fix(sdk-python): 在 validate_session_id 中要求使用规范形式 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7532
* fix(web-shell): 同步后台代理状态 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7561
* feat(core): 传播受信任的守护进程调用上下文 by @callmeYe 在 https://github.com/QwenLM/qwen-code/pull/7279
* fix(feishu): 在媒体下载清理阶段等待流取消 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7465
* fix(autofix): 使审查反馈报告评论完全支持双语 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7569
* feat(cli): 当 PR 描述为中文时,以双语形式发布审查内容 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7564
* feat(autofix): 自动重试因基础设施问题失败的检查(仅一次) by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7562
* fix(serve): 通过 epoch 令牌检测守护进程重启期间的过期 SSE 游标;保留回合归属并在重放时暴露压缩失败 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7458
* feat(core): 将 GenAI 遥测数据与 ARMS 对齐 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7536
* fix(serve): 避免 TOCTOU 竞态条件导致实时会话从列表响应中丢失 by @yiliang114 与 @Copilot 在 https://github.com/QwenLM/qwen-code/pull/7556
* fix(cli): 防止在 task_stop 后发送监控通知 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7573
* fix(cli): 使用 npm view 进行版本检查,替代 update-notifier (#7515) by @dtometzki 在 https://github.com/QwenLM/qwen-code/pull/7528
* fix(core): 避免生成空白的对话历史页面 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7582
* fix(cli): 暴露未处理的拒绝和渲染错误,而非静默吞没 by @chiga0 在 https://github.com/QwenLM/qwen-code/pull/7406
* fix(web-shell): 隔离斜杠命令插件页面 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7581
* feat(web-shell): 添加工作区代理管理 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7572
* fix(sdk-python): 将 max_tool_calls 和 max_subagent_depth 验证为整数 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7548
* test(autofix): 从工作流中统一来源 infra-signature 列表 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7565
* fix(cli): 修正排队消息的显示样式和排序 by @chiga0 在 https://github.com/QwenLM/qwen-code/pull/7381
* perf(cli): 延迟 ACP 遥测初始化 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7558
* fix(core): 持久化仅使用工具的子代理回合用量 by @DragonnZhang 在 https://github.com/QwenLM/qwen-code/pull/7557
* fix(core): 当提供商需要思考时重试请求 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7534
* feat(autofix): 当门禁拒绝落后于 main 分支的修复时,更新过期的基础版本 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7595
* fix(core): 在 FileReadCache 中记录自动记忆索引读取 by @han-dreamer 在 https://github.com/QwenLM/qwen-code/pull/7468
* fix(web-shell): 通过 ID 初始化工作区选择器 by @patrick-andstar 在 https://github.com/QwenLM/qwen-code/pull/7518
* fix(core): 拒绝嵌套的后台请求 by @patrick-andstar 在 https://github.com/QwenLM/qwen-code/pull/7593
* fix(web-shell): 防止 React 测量详情导致内存溢出 (OOM) by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7596
* fix(core): jsonl write([]) 应保留空文件,而非产生多余换行 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7533
* fix(core): 从钩子和工具发现子环境变量中剥离守护进程密钥 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7527
* fix(core): 保留已禁用的推理强度设置 by @WladmirJunior 在 https://github.com/QwenLM/qwen-code/pull/7541
* feat(sdk-java): 添加守护进程传输层 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7463
* fix(web-shell): 在触控设备上渲染纯文本域编辑器 by @ComplexSimply 在 https://github.com/QwenLM/qwen-code/pull/7587
* fix(core): 在 splitCommands 中将单引号内的反斜杠视为字面量 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7526
* fix(cli): 停止将 version-manager 的 npm 垫片识别为 npm-cli.js by @nerdalytics 在 https://github.com/QwenLM/qwen-code/pull/7545
* fix(core,cli): 将队友主导回合与代理上下文隔离 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7576
* feat(autofix): 自动更新仅基于已修复的过期基础版本的 PR 状态 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7554
* test: 修复 tool-control E2E 测试中 write_file 内容断言的不稳定问题 by @yiliang114 与 @Copilot 在 https://github.com/QwenLM/qwen-code/pull/7613
* fix(sdk-java): 允许终端继续启动下一个提示 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7615
* feat(autofix): 自动恢复停留在过期基础版本上的 PR by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7602
* fix(channels): 将 Telegram 回复路由到论坛主题 by @hogeheer499-commits 在 https://github.com/QwenLM/qwen-code/pull/7612
* fix(acp): 对其他认证类型隐藏已停用的 OAuth 模型 由 @hogeheer499-commits 在 https://github.com/QwenLM/qwen-code/pull/7522
* test(sdk-java): 在慢速测试中扩大 SSE 空闲看门狗的边距 由 @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7617
* feat(core): 添加 Goal v3 状态协议 由 @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7517
* feat(daemon): 添加显式通道交付 由 @BenGuanRan 在 https://github.com/QwenLM/qwen-code/pull/7388
* feat(serve): 将通道生命周期范围限定为工作区运行时 由 @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7577
## 新贡献者
* @ovochouovo 在 https://github.com/QwenLM/qwen-code/pull/7492 中首次贡献
* @Truraly 在 https://github.com/QwenLM/qwen-code/pull/7343 中首次贡献
* @zjgzx1988 在 https://github.com/QwenLM/qwen-code/pull/7478 中首次贡献
* @hogeheer499-commits 在 https://github.com/QwenLM/qwen-code/pull/7258 中首次贡献
* @dtometzki 在 https://github.com/QwenLM/qwen-code/pull/7528 中首次贡献
* @patrick-andstar 在 https://github.com/QwenLM/qwen-code/pull/7518 中首次贡献
* @WladmirJunior 在 https://github.com/QwenLM/qwen-code/pull/7541 中首次贡献
* @nerdalytics 在 https://github.com/QwenLM/qwen-code/pull/7545 中首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.20.1...v0.20.1-nightly.20260724.7d17c44a3
<!-- Release notes generated using configuration in .github/release.yml at release/v0.20.1-nightly.20260724.7d17c44a3 -->
## What's Changed
* test(telemetry): Cover daemon metrics init ordering and document metricReader asymmetry by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7456
* perf(startup): Load undici lazily behind package-local dynamic imports by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7455
* fix(autofix): keep a still-red check visible until its head is judged by @wenshao in https://github.com/QwenLM/qwen-code/pull/7438
* feat(web-shell): add workspace selector button with add/switch dropdown in composer toolbar by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/7390
* fix: normalize empty working_dir to unset when isolation:worktree is set on AgentTool by @mvanhorn in https://github.com/QwenLM/qwen-code/pull/7403
* fix(core): Advertise completed task revival by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7454
* fix(cli): narrow update-check error classification by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7431
* fix(web-shell): isolate component styles from host CSS by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7466
* feat(web-shell): show subagent sessions in detail panel by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7380
* perf(web-shell): optimize long session rendering by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7408
* feat(web-shell): add rendered file previews by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7467
* feat(core): add memory recall delivery telemetry by @ZijianZhang989 in https://github.com/QwenLM/qwen-code/pull/7393
* fix(web-shell): polish embedded shell interactions by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7477
* fix(release): exclude mobile-mcp from core version bump by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7474
* fix(ci): inject actual model name into triage signature by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7475
* fix(core): align stepped day fields with Vixie cron semantics by @destire-mio in https://github.com/QwenLM/qwen-code/pull/7464
* feat(core): keep completed background agents resident by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7426
* fix(acp-bridge): close prompt-terminal follow-ups from the PR #7400 self-review by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7453
* fix(core): strip Qwen-internal daemon secrets from agent-spawned child env by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7256
* docs(core): align JSDoc @param names with actual function signatures by @ovochouovo in https://github.com/QwenLM/qwen-code/pull/7492
* feat(serve): support forced MCP reconnects by @BZ-D in https://github.com/QwenLM/qwen-code/pull/7488
* fix(cli): insert newline on Shift+Enter and stop streaming thinking-block flicker by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7397
* fix(web-shell): open singleton subagent details by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7495
* fix(web-shell): avoid redundant Git status requests by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7496
* fix(agent): ignore empty working_dir placeholders by @Truraly in https://github.com/QwenLM/qwen-code/pull/7343
* feat(prompts): allow overriding core identity via QWEN_SYSTEM_IDENTITY_MD by @zjgzx1988 in https://github.com/QwenLM/qwen-code/pull/7478
* fix(cli): yield to single-slot background agents by @hogeheer499-commits in https://github.com/QwenLM/qwen-code/pull/7258
* docs(autofix): require evidenced pre-commit verification, not a bare "verified" by @wenshao in https://github.com/QwenLM/qwen-code/pull/7486
* feat(autofix): stop a PR that fails to push for N rounds in a row by @wenshao in https://github.com/QwenLM/qwen-code/pull/7482
* feat(core): restore background agent roster by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7459
* feat(cli): support custom skill directories via settings by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7395
* fix(core): add image modality support for qwen3.8-max and kimi-k3 models by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7491
* fix(dingtalk): preserve non-bot mention context by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7473
* fix(core): harden the usage salvage around session deletion by @zjunothing in https://github.com/QwenLM/qwen-code/pull/7425
* fix(core): make fork subagents discoverable by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7460
* test(core): Cover Shell truncation without an artifact by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7470
* fix(ci): autofix route checks existing labels on non-trigger label events by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7481
* feat(cli): preserve semantic text when copying VP selections by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7286
* test(core): stub the registry methods agent.ts actually calls by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7538
* perf(startup): lazy-load Google GenAI SDK on first use by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7512
* fix(vscode): use file picker image paths for vision input by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7493
* fix(cli): open the actual serve fallback port by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7501
* fix(ci): don't let one failing scenario sink the whole visual preview by @wenshao in https://github.com/QwenLM/qwen-code/pull/7511
* feat(web-shell): add selective Shadow DOM isolation by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7551
* feat(web-shell): add renderChatHeader slot for custom session header by @yuanyuanAli in https://github.com/QwenLM/qwen-code/pull/7553
* fix(cli): say review coverage gaps in the author's units, not chunk ids by @wenshao in https://github.com/QwenLM/qwen-code/pull/7550
* fix(autofix): retry a skipped-Prepare instead of stranding the PR terminal by @wenshao in https://github.com/QwenLM/qwen-code/pull/7490
* fix(cli): keep role codenames and brief paths out of the posted review body by @wenshao in https://github.com/QwenLM/qwen-code/pull/7560
* fix(autofix): retry an agent timeout instead of advancing past its feedback by @wenshao in https://github.com/QwenLM/qwen-code/pull/7563
* feat(serve): add workspace-level generation by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7552
* fix(web-shell): expose managedId in artifact open requests by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7570
* feat(serve): persist workspace channel configuration by @qqqys in https://github.com/QwenLM/qwen-code/pull/7514
* fix(sdk-python): require canonical form in validate_session_id by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7532
* fix(web-shell): sync background agent status by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7561
* feat(core): propagate trusted daemon invocation context by @callmeYe in https://github.com/QwenLM/qwen-code/pull/7279
* fix(feishu): await stream cancels in media download teardown by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7465
* fix(autofix): make the review-address report comment fully bilingual by @wenshao in https://github.com/QwenLM/qwen-code/pull/7569
* feat(cli): post the review body bilingually when the PR description is Chinese by @wenshao in https://github.com/QwenLM/qwen-code/pull/7564
* feat(autofix): auto-rerun a check that died on infrastructure, once by @wenshao in https://github.com/QwenLM/qwen-code/pull/7562
* fix(serve): detect stale SSE cursors across daemon restarts via epoch token; preserve turn attribution and surface compaction failures in replay by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7458
* feat(core): Align GenAI telemetry with ARMS by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7536
* fix(serve): avoid TOCTOU race dropping live sessions from list response by @yiliang114 with @Copilot in https://github.com/QwenLM/qwen-code/pull/7556
* fix(cli): prevent monitor notifications after task_stop by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7573
* Fix(cli): use npm view for update check instead of update-notifier (#7515) by @dtometzki in https://github.com/QwenLM/qwen-code/pull/7528
* fix(core): avoid empty transcript history pages by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7582
* fix(cli): surface unhandled rejections and render errors instead of swallowing them by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7406
* fix(web-shell): isolate slash command plugin pages by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7581
* feat(web-shell): add workspace agent management by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7572
* fix(sdk-python): validate max_tool_calls and max_subagent_depth as integers by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7548
* test(autofix): single-source the infra-signature list from the workflow by @wenshao in https://github.com/QwenLM/qwen-code/pull/7565
* fix(cli): correct queued message display style and ordering by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7381
* perf(cli): Defer ACP telemetry initialization by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7558
* fix(core): persist usage for tool-only subagent rounds by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7557
* fix(core): retry requests when providers require thinking by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7534
* feat(autofix): update a stale base when the gate rejects a behind-main fix by @wenshao in https://github.com/QwenLM/qwen-code/pull/7595
* fix(core): record auto-memory index reads in FileReadCache by @han-dreamer in https://github.com/QwenLM/qwen-code/pull/7468
* fix(web-shell): initialize workspace selector from ID by @patrick-andstar in https://github.com/QwenLM/qwen-code/pull/7518
* fix(core): reject nested background requests by @patrick-andstar in https://github.com/QwenLM/qwen-code/pull/7593
* fix(web-shell): prevent React measure detail OOM by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7596
* fix(core): jsonl write([]) should leave an empty file, not a stray newline by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7533
* fix(core): strip daemon secrets from hook and tool-discovery child env by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7527
* fix(core): preserve disabled reasoning effort by @WladmirJunior in https://github.com/QwenLM/qwen-code/pull/7541
* feat(sdk-java): Add daemon transport by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7463
* fix(web-shell): render a plain textarea composer on touch devices by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/7587
* fix(core): treat backslash as literal inside single quotes in splitCommands by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7526
* fix(cli): stop treating version-manager npm shims as npm-cli.js by @nerdalytics in https://github.com/QwenLM/qwen-code/pull/7545
* fix(core,cli): isolate teammate leader turns from agent context by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7576
* feat(autofix): auto-update a PR red only from a stale, since-fixed base by @wenshao in https://github.com/QwenLM/qwen-code/pull/7554
* test: deflake write_file content assertion in tool-control E2E test by @yiliang114 with @Copilot in https://github.com/QwenLM/qwen-code/pull/7613
* fix(sdk-java): let a terminal continuation start the next prompt by @wenshao in https://github.com/QwenLM/qwen-code/pull/7615
* feat(autofix): auto-recover a PR parked on a stale base by @wenshao in https://github.com/QwenLM/qwen-code/pull/7602
* fix(channels): route Telegram replies to forum topics by @hogeheer499-commits in https://github.com/QwenLM/qwen-code/pull/7612
* fix(acp): hide discontinued OAuth model for other auth types by @hogeheer499-commits in https://github.com/QwenLM/qwen-code/pull/7522
* test(sdk-java): widen the SSE idle-watchdog margins in the slow-line test by @wenshao in https://github.com/QwenLM/qwen-code/pull/7617
* feat(core): add Goal v3 state protocol by @qqqys in https://github.com/QwenLM/qwen-code/pull/7517
* feat(daemon): add explicit channel delivery by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/7388
* feat(serve): scope channel lifecycle to workspace runtimes by @qqqys in https://github.com/QwenLM/qwen-code/pull/7577
## New Contributors
* @ovochouovo made their first contribution in https://github.com/QwenLM/qwen-code/pull/7492
* @Truraly made their first contribution in https://github.com/QwenLM/qwen-code/pull/7343
* @zjgzx1988 made their first contribution in https://github.com/QwenLM/qwen-code/pull/7478
* @hogeheer499-commits made their first contribution in https://github.com/QwenLM/qwen-code/pull/7258
* @dtometzki made their first contribution in https://github.com/QwenLM/qwen-code/pull/7528
* @patrick-andstar made their first contribution in https://github.com/QwenLM/qwen-code/pull/7518
* @WladmirJunior made their first contribution in https://github.com/QwenLM/qwen-code/pull/7541
* @nerdalytics made their first contribution in https://github.com/QwenLM/qwen-code/pull/7545
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.20.1...v0.20.1-nightly.20260724.7d17c44a3