<!-- 使用 release/v0.21.1-nightly.20260730.1643a6c9a 分支下 .github/release.yml 中的配置生成 -->
## 更新内容
* 修复(ci):在 qwen-triage 的容器任务中添加默认 bash shell by @qwen-code-dev-bot 在 https://github.com/QwenLM/qwen-code/pull/7838
* 修复(web-shell):在 composer 中保留粘贴的文本 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7824
* 新增(web-shell):添加监控任务详情 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7817
* 修复(ci):为容器任务添加 git safe.directory by @qwen-code-dev-bot 在 https://github.com/QwenLM/qwen-code/pull/7843
* 修复(ci):为容器任务添加 --init 以回收僵尸进程 by @qwen-code-dev-bot 在 https://github.com/QwenLM/qwen-code/pull/7848
* 修复(core):在结算后台 shell 前等待输出流刷新 by @ComplexSimply 在 https://github.com/QwenLM/qwen-code/pull/7833
* 修复(scripts):重试模型调用并展示降级版发布说明 by @he-yufeng 在 https://github.com/QwenLM/qwen-code/pull/7535
* 新增(web-shell):将语音范围限定至 composer 工作区 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7754
* 新增(hooks):添加已提交提示词的来源追踪 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7762
* 修复(ci):防止 worktree 清理操作导致 verify 任务失败 by @qwen-code-dev-bot 在 https://github.com/QwenLM/qwen-code/pull/7857
* 性能(acp):在会话创建后预加载 providers by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7767
* 测试(channels):在 CI 中运行飞书、微信和 qqbot 测试套件 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7853
* 新增(autofix):对确定性拒绝重试一次 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7796
* 修复(release):发布所有频道包,而不仅仅是 channel-base by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7845
* 新增(web-shell):添加频道管理页面 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7793
* 新增(acp):添加会话级运行时 MCP by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7847
* 新增(core):持久化并回放 Goal v3 状态 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7815
* 新增(core):添加全分辨率图像缩放工具 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7809
* 修复(scripts):强化重试分类并保留超时错误上下文 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7854
* 新增(web-shell):添加 composer 页脚渲染器 by @dreamWB 在 https://github.com/QwenLM/qwen-code/pull/7856
* 修复(core):对永久性配额耗尽的 429 错误快速失败,而非静默重试 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7842
* 修复(web-shell):隔离历史记录与会话草稿 by @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7810
* 修复(triage):在归咎于 PR 之前,先对瞬态 npm ci 失败进行重试 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7884
* 修复(webui):回退使用 history_truncated 标记的 recordId 作为转录分页锚点 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7829
* 新增:将会话写入者租约限制为可选加入 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7894
* 修复(review):将剩余时间预算分配给 review 重试 by @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7852
* 修复(integration):为已提交提示词来源测试配置 Docker 沙箱网络 (#7879) by @qwen-code-dev-bot 在 https://github.com/QwenLM/qwen-code/pull/7881
* 修复(cli):报告真实的 $0.00 成本而非 N/A by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7784
* 修复(core):拒绝 socks5h 和 socks4a 代理 URL by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7786
* 修复(core):修正 checkContentLoop 中的字符类 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7788
* 修复(web-shell):使仅带索引的 /copy 命令生效 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7789
* 修复(core):拒绝 -i 不在末尾的组合 sed 标志 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7790
* 修复(core):将 Grep 模式放在 -e 之后传递,以避免前导短横线被识别为选项 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7863
* 新增(ci):通过在现有 issue 上评论来去重 E2E 失败问题 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7792
* 修复(core):像其他 getErrorMessage 路径一样限制裸 Error 的消息长度 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7865
* 修复(cli):使 wrapToVisualLines 像其兄弟函数一样计算零宽字符 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7873
* 修复(core):将分隔符和省略号计入预览预算 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7874
* 修复(cli):在重新打开分割围栏时不计算不完整的末尾行 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7875
* 修复(cli):使 /copy <message> <index> 选择代码块 by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7883
* 新增(triage):添加 revert-pattern 高风险路径检测 by @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7414
* 新增(web-shell):添加原生工作区文件夹选择器 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7849
* 新增(web-shell):添加频道配置流程 by @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7893
* 修复(test):恢复首次输出基准测试的测量有效性并修正其制品 schema by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7820
* 修复(daemon):强化 Todo Stop Guard 的继续执行逻辑 by @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7821
* 修复(core):从公共 git 目录读取 stash reflog by @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7774
* fix(core): 在 toOpenAPI30 中保留 Draft 4 布尔值互斥边界 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7782
* fix(core): 将 maxDepth 应用于扁平格式内存导入 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7851
* fix(core): 渲染思维部分的推理内容而非布尔标志 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7866
* fix(core): 为纯文本模型桥接工具结果图片 by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/7484
* fix(cli): 修补 ink 以在间接子树移除时清除 staticNode by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7816
* fix(core): 在 API 调用期间自动重试瞬态网络错误 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7898
* fix(cli): 隐藏来自之前轮次的过期粘性待办事项 by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7900
* fix(serve): 在关闭时释放托管会话写入器锁 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7812
* perf(core): 在稳定的系统前缀上添加早期 Anthropic 缓存断点 by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7912
* fix(cli): 为 git 分支名称显示添加轮询回退机制 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7830
* fix(cli): 移除 @mention 工具卡片中冗余的“读取文件”前缀 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7902
* feat(core): 添加 ARMS 会话用户 ID by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7921
* fix(safe-mode): 保留调用方提供的顶级 MCP 服务器 by @VitaliBabkin in https://github.com/QwenLM/qwen-code/pull/7827
* fix(ci): 保持 main 分支上合并后的 E2E 信号存活 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7795
* fix(core): 当输出流无法刷新时短路(跳过)刷新等待 by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/7905
* fix(core): 在 splitCommands 中追踪命令替换内的引号 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7870
* fix(core): 将每个服务器和每个工具的“始终允许”结果计为审批 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7869
* fix(web-shell): 在启动新聊天时向主机报告预期的工作区 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7910
* fix(cli): 默认使用虚拟化终端历史记录 by @ZevGit in https://github.com/QwenLM/qwen-code/pull/5738
* fix(ci): 在清理过程中恢复工作区所有权以防止 EACCES 错误 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7931
* perf(ci): 将 E2E 套件运行时间从约 40 分钟缩短至约 24 分钟 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7798
* feat(channels): 在守护进程会话中暴露循环工具 by @qqqys in https://github.com/QwenLM/qwen-code/pull/7891
* fix(review): 当未重新处理 --effort 时恢复已解决的耗时 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7855
* feat(web-shell): 支持语音保持模式 by @callmeYe in https://github.com/QwenLM/qwen-code/pull/7839
* feat(web-shell): 管理 Channel 配对请求 by @qqqys in https://github.com/QwenLM/qwen-code/pull/7909
* feat(channels): 按原因分发 GitHub 通知 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7826
* feat(web-shell): 添加 git 分支选择器、提交对话框和创建 PR 流程 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7731
* feat(triage): 在 CI 路径上展示沙箱通道 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7917
* fix(scripts): 精简发布说明模型提示词并记录请求耗时 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7941
* feat(web-shell): 为旁支问题建议 BTW by @carffuca in https://github.com/QwenLM/qwen-code/pull/7935
* fix(release): 在发布版本升级期间将 channel-base 依赖固定为精确版本 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7953
* feat(triage): 使验证报告支持中文可读 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7918
* fix(triage): 使构建过程守卫具备可诊断性和僵尸进程感知能力 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7858
* fix(ci): 为每个作业分配独立的代理包装目录 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7951
* feat(autofix): 在五轮修改后延迟提供修复建议 by @qqqys in https://github.com/QwenLM/qwen-code/pull/7913
* feat(core): 将 Goal v3 连接到回合引擎 by @qqqys in https://github.com/QwenLM/qwen-code/pull/7895
* feat(core): 限制图像读取以实现可靠缩放 by @qqqys in https://github.com/QwenLM/qwen-code/pull/7911
* fix(integration): 根据环境变量超时时间调整交互式先读后写等待时间 (#7942) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7943
* test(integration): 修复 asyncGenerator canUseTool 内容断言的不稳定问题 (#7937) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7939
* fix(ci): 在检出前清理过期的 .qwen/ 目录以防止权限拒绝 by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7977
* feat(triage): 将未验证语句转化为机械式的 2b-bis 触发器 by @wenshao in https://github.com/QwenLM/qwen-code/pull/7965
* fix(ci): 恢复验证工作区权限 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7992
* feat(external-context): 添加已提交提示词的自动召回 by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7877
* fix(ci): 更新 ECS 运行器使用的 Qwen 二进制文件 by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/8000
* feat(web-shell): 使用 markdown-chart 渲染流式图表 by @zhangxy-zju in https://github.com/QwenLM/qwen-code/pull/7916
* feat: 增强 ripgrep 的健壮性 by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/7888
* fix(core): 标记从未扩展过项预算的文件夹 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7868
* 修复(feishu):通过 @chinesepowered 在 https://github.com/QwenLM/qwen-code/pull/7850 限制代码块分块大小,使其不超过消息长度限制
* 修复(web-shell):通过 @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7926 保留会话 URL 中的 token 和基础路径
* ci:通过 @DennisYu07 在 https://github.com/QwenLM/qwen-code/pull/7656 添加独立的 DSW SWE-bench 发布流水线
* 修复(web-shell):通过 @qqqys 在 https://github.com/QwenLM/qwen-code/pull/7997 优化频道配对请求
* 修复(cli):通过 @chiga0 在 https://github.com/QwenLM/qwen-code/pull/7998 修正全屏模式下硬件光标差一错误
* 修复(cli):通过 @chiga0 在 https://github.com/QwenLM/qwen-code/pull/7988 防止 Windows 上 SGR 鼠标事件被误吞为粘贴操作
* 新增(channels):通过 @BenGuanRan 在 https://github.com/QwenLM/qwen-code/pull/6930 添加钉钉交互卡片
* 新增(web-shell):通过 @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7999 完善高级表格控件
* 修复(serve):通过 @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7947 允许对大型文本文件进行有界读取
* 修复(web-shell):通过 @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/7973 在卡片中优先使用制品类型元数据
* 修复(web-shell):通过 @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/8015 降低 Composer 输入延迟
* 修复(webui):通过 @ytahdn 在 https://github.com/QwenLM/qwen-code/pull/8001 稳定会话历史分页
* 修复(release):通过 @qwen-code-dev-bot 在 https://github.com/QwenLM/qwen-code/pull/7970 当上一版本与目标分支分叉时跳过 notes-start-tag (#7969)
* 修复(sdk):通过 @wenshao 在 https://github.com/QwenLM/qwen-code/pull/8024 将守护进程浏览器包预算提升至 177KB
* 修复(cli):通过 @chiga0 在 https://github.com/QwenLM/qwen-code/pull/7996 将 Kitty Super (Command) 修饰键映射为 meta
* 修复(daemon):通过 @destire-mio 在 https://github.com/QwenLM/qwen-code/pull/7932 区分正在退出的频道工作器诊断信息
* 新增(triage):通过 @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7974 在验证评论前添加定性结论,并折叠中文内容
* 修复(review):通过 @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7986 在构建测试安装和构建前预检可用磁盘空间
* 测试(integration):通过 @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7934 将不稳定的 E2E 测试迁移至 fake-openai-server
* 新增(triage):通过 @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7985 在清理工作区后于 ECS 上运行外部 /verify
* 修复(cli):通过 @chiga0 在 https://github.com/QwenLM/qwen-code/pull/8011 保留 Ctrl+Shift+C 用于终端复制,而非退出/清屏
* 修复(core):通过 @chiga0 在 https://github.com/QwenLM/qwen-code/pull/7914 自动记录制品文件写入操作
* 修复(cli):通过 @qwen-code-dev-bot 在 https://github.com/QwenLM/qwen-code/pull/7995 修复 MCP 提示词补全不再阻塞可选参数的 Enter 键
* 新增(hooks):通过 @xurik 在 https://github.com/QwenLM/qwen-code/pull/7968 添加 security.allowPrivateNetworkHooks 以允许可信作用域绕过 SSRF 范围检查
* 新增(web-shell):通过 @samuelhsin 在 https://github.com/QwenLM/qwen-code/pull/7808 为拆分窗格头部操作槽位添加溢出处理
* 新增(channels):通过 @OrbitZore 在 https://github.com/QwenLM/qwen-code/pull/7862 添加 GitLab 轮询频道适配器
* 修复(channels):通过 @qqqys 在 https://github.com/QwenLM/qwen-code/pull/8034 在守护进程会话中禁用原生 cron
* 新增(channels):通过 @qqqys 在 https://github.com/QwenLM/qwen-code/pull/8045 添加配对审批管理 API
* 新增(github-channel):通过 @xianjianlf2 在 https://github.com/QwenLM/qwen-code/pull/8031 过滤通知原因
* 修复(channels):通过 @zjunothing 在 https://github.com/QwenLM/qwen-code/pull/8055 拒绝不可用的 GitHub 自允许列表
* 修复(core):通过 @netbrah 在 https://github.com/QwenLM/qwen-code/pull/7989 从 send_message 工具模式中移除顶层 oneOf
* 修复(cli):通过 @chiga0 在 https://github.com/QwenLM/qwen-code/pull/8009 防止调整大小重绘引发滚动风暴
* 新增(review):通过 @wenshao 在 https://github.com/QwenLM/qwen-code/pull/7987 将针对非平凡差异的“零问题通过”披露为低信号
* 修复(core):通过 @DragonnZhang 在 https://github.com/QwenLM/qwen-code/pull/7927 恢复时重新绑定 fork 能力
* 新增(core):通过 @DragonnZhang 在 https://github.com/QwenLM/qwen-code/pull/7922 在上下文窗口阈值内预加载延迟工具
* 修复(channels):通过 @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/8033 使 GitHub 最终响应发布仅执行一次
* 修复(ci):通过 @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/8062 在 PR 审查任务的 checkout 前恢复工作区所有权
* 修复(release):通过 @yiliang114 在 https://github.com/QwenLM/qwen-code/pull/7978 将预览版基础版本提升至已发布稳定版之上
* 测试(web-shell):通过 @PratikWayase 在 https://github.com/QwenLM/qwen-code/pull/7907 扩展恢复历史分页的回归测试覆盖范围
* 修复(serve):通过 @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7976 添加认证会话写入器交接机制
* 测试(integration):通过 @doudouOUC 在 https://github.com/QwenLM/qwen-code/pull/7994 测量即时提示词分发阶段
## 新贡献者
* @VitaliBabkin 在 https://github.com/QwenLM/qwen-code/pull/7827 首次贡献
* @xianjianlf2 在 https://github.com/QwenLM/qwen-code/pull/8031 首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/dsw-manual-poc-20260727-1...v0.21.1-nightly.20260730.1643a6c9a
<!-- Release notes generated using configuration in .github/release.yml at release/v0.21.1-nightly.20260730.1643a6c9a -->
## What's Changed
* fix(ci): add default bash shell to container jobs in qwen-triage by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7838
* fix(web-shell): preserve pasted text in composer by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7824
* feat(web-shell): add monitor task details by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7817
* fix(ci): add git safe.directory for container jobs by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7843
* fix(ci): add --init to container jobs to reap zombie processes by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7848
* fix(core): wait for output stream flush before settling background shells by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/7833
* fix(scripts): retry model calls and surface degraded release notes by @he-yufeng in https://github.com/QwenLM/qwen-code/pull/7535
* feat(web-shell): Scope voice to composer workspace by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7754
* feat(hooks): Add submitted prompt provenance by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7762
* fix(ci): prevent worktree cleanup from failing the verify job by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7857
* perf(acp): Preload providers after session creation by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7767
* test(channels): run the feishu, weixin and qqbot suites in CI by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7853
* feat(autofix): retry deterministic rejection once by @qqqys in https://github.com/QwenLM/qwen-code/pull/7796
* fix(release): publish all channel packages, not just channel-base by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7845
* feat(web-shell): add Channel management page by @qqqys in https://github.com/QwenLM/qwen-code/pull/7793
* feat(acp): add session-scoped runtime MCP by @qqqys in https://github.com/QwenLM/qwen-code/pull/7847
* feat(core): persist and replay Goal v3 state by @qqqys in https://github.com/QwenLM/qwen-code/pull/7815
* feat(core): add full-resolution image zoom tool by @qqqys in https://github.com/QwenLM/qwen-code/pull/7809
* fix(scripts): harden retry classification and preserve deadline error context by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7854
* feat(web-shell): add composer footer renderer by @dreamWB in https://github.com/QwenLM/qwen-code/pull/7856
* fix(core): fast-fail permanent quota-exhaustion 429s instead of silent retry by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7842
* fix(web-shell): isolate history and session drafts by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7810
* fix(triage): retry a transient npm ci before blaming the PR for it by @wenshao in https://github.com/QwenLM/qwen-code/pull/7884
* fix(webui): fall back to history_truncated marker recordId for transcript pagination anchor by @wenshao in https://github.com/QwenLM/qwen-code/pull/7829
* feat: Gate session writer lease behind opt-in by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7894
* fix(review): give the review retry the remaining time budget by @wenshao in https://github.com/QwenLM/qwen-code/pull/7852
* fix(integration): configure Docker sandbox networking for submitted-prompt provenance test (#7879) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7881
* fix(cli): report a genuine $0.00 cost instead of N/A by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7784
* fix(core): reject socks5h and socks4a proxy URLs by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7786
* fix(core): correct the character classes in checkContentLoop by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7788
* fix(web-shell): make /copy with a bare index work by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7789
* fix(core): decline combined sed flags where -i is not last by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7790
* fix(core): pass the Grep pattern behind -e so a leading dash is not an option by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7863
* feat(ci): Deduplicate E2E failure issues by commenting on existing issue by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7792
* fix(core): cap a bare Error's message like every other getErrorMessage path by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7865
* fix(cli): make wrapToVisualLines count zero-width characters like its sibling by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7873
* fix(core): charge the separator and ellipsis to the preview budget by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7874
* fix(cli): do not count a partial trailing line when re-opening a split fence by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7875
* fix(cli): make /copy <message> <index> select the code block by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7883
* feat(triage): add revert-pattern high-risk path detection by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7414
* feat(web-shell): add native workspace folder picker by @qqqys in https://github.com/QwenLM/qwen-code/pull/7849
* feat(web-shell): add Channel configuration flows by @qqqys in https://github.com/QwenLM/qwen-code/pull/7893
* fix(test): Restore first-output benchmark measurement validity and correct its artifact schema by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7820
* fix(daemon): harden Todo Stop Guard continuations by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7821
* fix(core): read the stash reflog from the common git dir by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7774
* fix(core): keep Draft 4 boolean exclusive bounds in toOpenAPI30 by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7782
* fix(core): apply maxDepth to flat-format memory imports by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7851
* fix(core): render a thought part's reasoning instead of the boolean flag by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7866
* fix(core): bridge tool-result images for text-only models by @LaZzyMan in https://github.com/QwenLM/qwen-code/pull/7484
* fix(cli): patch ink to clear staticNode on indirect subtree removal by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7816
* fix(core): auto-retry transient network errors during API calls by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7898
* fix(cli): hide stale sticky todos from previous turns by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7900
* fix(serve): Release managed session writer locks on shutdown by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7812
* perf(core): add early Anthropic cache breakpoint on the stable system prefix by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7912
* fix(cli): add polling fallback for git branch name display by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7830
* fix(cli): remove redundant 'Read file' prefix from @mention tool card by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7902
* feat(core): Add ARMS session user ID by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7921
* fix(safe-mode): preserve caller-supplied top-tier MCP servers by @VitaliBabkin in https://github.com/QwenLM/qwen-code/pull/7827
* fix(ci): keep the post-merge E2E signal on main alive by @wenshao in https://github.com/QwenLM/qwen-code/pull/7795
* fix(core): short-circuit the flush wait when the output stream cannot flush by @ComplexSimply in https://github.com/QwenLM/qwen-code/pull/7905
* fix(core): track quotes inside a command substitution in splitCommands by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7870
* fix(core): count the per-server and per-tool always-allow outcomes as approvals by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7869
* fix(web-shell): report intended workspace to host when starting a new chat by @wenshao in https://github.com/QwenLM/qwen-code/pull/7910
* fix(cli): default to virtualized terminal history by @ZevGit in https://github.com/QwenLM/qwen-code/pull/5738
* fix(ci): restore workspace ownership in cleanup to prevent EACCES by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7931
* perf(ci): cut the E2E suite from ~40min to ~24min by @wenshao in https://github.com/QwenLM/qwen-code/pull/7798
* feat(channels): expose loop tools in daemon sessions by @qqqys in https://github.com/QwenLM/qwen-code/pull/7891
* fix(review): recover the resolved effort when --effort is not re-threaded by @wenshao in https://github.com/QwenLM/qwen-code/pull/7855
* feat(web-shell): honor voice hold mode by @callmeYe in https://github.com/QwenLM/qwen-code/pull/7839
* feat(web-shell): manage Channel pairing requests by @qqqys in https://github.com/QwenLM/qwen-code/pull/7909
* feat(channels): dispatch GitHub notifications by reason by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7826
* feat(web-shell): add git branch picker, commit dialog, and create PR flow by @wenshao in https://github.com/QwenLM/qwen-code/pull/7731
* feat(triage): surface the sandboxed lanes on the CI path by @wenshao in https://github.com/QwenLM/qwen-code/pull/7917
* fix(scripts): slim release-note model prompts and log request timing by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7941
* feat(web-shell): suggest BTW for side questions by @carffuca in https://github.com/QwenLM/qwen-code/pull/7935
* fix(release): pin channel-base dep to exact version during release bump by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7953
* feat(triage): make the verify report readable in Chinese by @wenshao in https://github.com/QwenLM/qwen-code/pull/7918
* fix(triage): make the build-process guard diagnosable and zombie-aware by @wenshao in https://github.com/QwenLM/qwen-code/pull/7858
* fix(ci): give each job its own proxy wrapper directory by @wenshao in https://github.com/QwenLM/qwen-code/pull/7951
* feat(autofix): defer suggestions after five change rounds by @qqqys in https://github.com/QwenLM/qwen-code/pull/7913
* feat(core): connect Goal v3 to the turn engine by @qqqys in https://github.com/QwenLM/qwen-code/pull/7895
* feat(core): bound image reads for reliable zoom by @qqqys in https://github.com/QwenLM/qwen-code/pull/7911
* fix(integration): scale interactive read-then-write waits with env timeout (#7942) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7943
* test(integration): deflake asyncGenerator canUseTool content assertion (#7937) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7939
* fix(ci): clean stale .qwen/ before checkout to prevent Permission denied by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7977
* feat(triage): make the not-verified sentence a mechanical 2b-bis trigger by @wenshao in https://github.com/QwenLM/qwen-code/pull/7965
* fix(ci): restore verify workspace permissions by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7992
* feat(external-context): Add submitted-prompt auto recall by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7877
* fix(ci): update the Qwen binary used by ECS runners by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/8000
* feat(web-shell): render streaming charts with markdown-chart by @zhangxy-zju in https://github.com/QwenLM/qwen-code/pull/7916
* feat: robust ripgrep by @water-in-stone in https://github.com/QwenLM/qwen-code/pull/7888
* fix(core): mark folders the item budget never expanded by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7868
* fix(feishu): keep code-fence chunks within the message size limit by @chinesepowered in https://github.com/QwenLM/qwen-code/pull/7850
* fix(web-shell): preserve token and base path in session URLs by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7926
* ci: add isolated DSW SWE-bench release pipeline by @DennisYu07 in https://github.com/QwenLM/qwen-code/pull/7656
* fix(web-shell): polish Channel pairing requests by @qqqys in https://github.com/QwenLM/qwen-code/pull/7997
* fix(cli): correct hardware cursor off-by-one in fullscreen mode by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7998
* fix(cli): prevent SGR mouse events from being swallowed as paste on Windows by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7988
* feat(channels): add DingTalk interactive cards by @BenGuanRan in https://github.com/QwenLM/qwen-code/pull/6930
* feat(web-shell): refine advanced table controls by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7999
* fix(serve): allow bounded reads of large text files by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7947
* fix(web-shell): prefer artifact type metadata in cards by @ytahdn in https://github.com/QwenLM/qwen-code/pull/7973
* fix(web-shell): reduce composer input latency by @ytahdn in https://github.com/QwenLM/qwen-code/pull/8015
* fix(webui): stabilize session history pagination by @ytahdn in https://github.com/QwenLM/qwen-code/pull/8001
* fix(release): skip notes-start-tag when previous release diverges from target (#7969) by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7970
* fix(sdk): raise daemon browser bundle budget to 177KB by @wenshao in https://github.com/QwenLM/qwen-code/pull/8024
* fix(cli): map Kitty Super (Command) modifier to meta by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7996
* fix(daemon): distinguish draining channel worker diagnostics by @destire-mio in https://github.com/QwenLM/qwen-code/pull/7932
* feat(triage): lead the verify comment with a qualitative verdict, fold the Chinese by @wenshao in https://github.com/QwenLM/qwen-code/pull/7974
* fix(review): preflight free disk before build-test installs and builds by @wenshao in https://github.com/QwenLM/qwen-code/pull/7986
* test(integration): migrate flaky E2E tests to fake-openai-server by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7934
* feat(triage): run external /verify on ECS behind a workspace wipe by @wenshao in https://github.com/QwenLM/qwen-code/pull/7985
* fix(cli): reserve Ctrl+Shift+C for terminal copy, not quit/clear by @chiga0 in https://github.com/QwenLM/qwen-code/pull/8011
* fix(core): auto-record artifact file writes by @chiga0 in https://github.com/QwenLM/qwen-code/pull/7914
* fix(cli): MCP prompt completion no longer blocks Enter for optional params by @qwen-code-dev-bot in https://github.com/QwenLM/qwen-code/pull/7995
* feat(hooks): add security.allowPrivateNetworkHooks to bypass SSRF range checks for trusted scopes by @xurik in https://github.com/QwenLM/qwen-code/pull/7968
* feat(web-shell): add split pane header action slot with overflow by @samuelhsin in https://github.com/QwenLM/qwen-code/pull/7808
* feat(channels): add GitLab polling channel adapter by @OrbitZore in https://github.com/QwenLM/qwen-code/pull/7862
* fix(channels): disable native cron in daemon sessions by @qqqys in https://github.com/QwenLM/qwen-code/pull/8034
* feat(channels): add pairing approval management API by @qqqys in https://github.com/QwenLM/qwen-code/pull/8045
* feat(github-channel): filter notification reasons by @xianjianlf2 in https://github.com/QwenLM/qwen-code/pull/8031
* fix(channels): reject unusable GitHub self-allowlists by @zjunothing in https://github.com/QwenLM/qwen-code/pull/8055
* fix(core): drop top-level oneOf from send_message tool schema by @netbrah in https://github.com/QwenLM/qwen-code/pull/7989
* fix(cli): stop resize repaint from causing scroll storm by @chiga0 in https://github.com/QwenLM/qwen-code/pull/8009
* feat(review): disclose a zero-finding Approve on a non-trivial diff as low signal by @wenshao in https://github.com/QwenLM/qwen-code/pull/7987
* fix(core): rebind fork capabilities on resume by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7927
* feat(core): preload deferred tools within a context-window threshold by @DragonnZhang in https://github.com/QwenLM/qwen-code/pull/7922
* fix(channels): make GitHub final response publication single-shot by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/8033
* fix(ci): restore workspace ownership before checkout in PR review job by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/8062
* fix(release): bump preview base past published stable by @yiliang114 in https://github.com/QwenLM/qwen-code/pull/7978
* test(web-shell): expand restored-history pagination regression coverage by @PratikWayase in https://github.com/QwenLM/qwen-code/pull/7907
* fix(serve): Add certified session writer handoff by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7976
* test(integration): Measure immediate prompt dispatch stages by @doudouOUC in https://github.com/QwenLM/qwen-code/pull/7994
## New Contributors
* @VitaliBabkin made their first contribution in https://github.com/QwenLM/qwen-code/pull/7827
* @xianjianlf2 made their first contribution in https://github.com/QwenLM/qwen-code/pull/8031
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/dsw-manual-poc-20260727-1...v0.21.1-nightly.20260730.1643a6c9a