<!-- qwen-release-notes:v1 -->
## 亮点
- Autofix 在经历五轮后会推迟低优先级建议,并在因轮次限制拒绝继续时发布可见通知。 ([#7913](https://github.com/QwenLM/qwen-code/pull/7913), [#8067](https://github.com/QwenLM/qwen-code/pull/8067))
- 新增可选的 Auto Recall 配置,内置安全限制,提交提示词时自动搜索外部上下文。 ([#7877](https://github.com/QwenLM/qwen-code/pull/7877))
- 增强 /verify 命令,增加时间预算、证据截图及新的维护者验证技术。 ([#8010](https://github.com/QwenLM/qwen-code/pull/8010), [#8014](https://github.com/QwenLM/qwen-code/pull/8014), [#8016](https://github.com/QwenLM/qwen-code/pull/8016))
- Web Shell 现支持上下文任务面板、主题感知视觉效果,并正确处理工件预览与会话状态。 ([#7929](https://github.com/QwenLM/qwen-code/pull/7929), [#8098](https://github.com/QwenLM/qwen-code/pull/8098), [#8078](https://github.com/QwenLM/qwen-code/pull/8078), [#8106](https://github.com/QwenLM/qwen-code/pull/8106))
- GitHub 频道现针对每个事件仅发布一条最终评论,并显示 👀 表情以指示代理正在处理中。 ([#8033](https://github.com/QwenLM/qwen-code/pull/8033), [#8061](https://github.com/QwenLM/qwen-code/pull/8061))
- 新增 API 和 UI 控件,用于在特定工作区中查看、批准和撤销频道配对审批。 ([#8045](https://github.com/QwenLM/qwen-code/pull/8045), [#8081](https://github.com/QwenLM/qwen-code/pull/8081))
## 破坏性变更
暂无已知的破坏性变更。
## 完整变更列表
### 功能
- Autofix 在经历五轮变更后会推迟低优先级建议,仅允许关键发现和未通过的检查来驱动进一步的代码修改。 ([#7913](https://github.com/QwenLM/qwen-code/pull/7913)) by @qqqys
- Goal v3 现已与回合引擎连接,采用确定性许可处理,确保运行时续订不会消耗会话或递归回合预算。 ([#7895](https://github.com/QwenLM/qwen-code/pull/7895)) by @qqqys
- 静态图像读取现返回标准的、自动定向的 JPEG 概览图及源尺寸,以在共享资源预算内支持可靠的缩放。 ([#7911](https://github.com/QwenLM/qwen-code/pull/7911)) by @qqqys
- 分流系统现会在第二阶段草稿明确包含“未验证”语句时,自动触发 2b-bis 沙盒通道推荐。 ([#7965](https://github.com/QwenLM/qwen-code/pull/7965)) by @wenshao
- 新增可选的 Auto Recall 配置,提交提示词时自动搜索外部上下文,并内置安全限制。 ([#7877](https://github.com/QwenLM/qwen-code/pull/7877)) by @doudouOUC
- 更新 WebShell 以使用共享渲染器进行流式图表渲染,确保标准 markdown-chart 块无需额外主机配置即可工作。 ([#7916](https://github.com/QwenLM/qwen-code/pull/7916)) by @zhangxy-zju
- 通过重试失败的搜索并正确区分“未找到匹配项”与“不完整搜索结果”,提升 ripgrep 的可靠性。 ([#7888](https://github.com/QwenLM/qwen-code/pull/7888)) by @water-in-stone
- feat(channels): 添加钉钉交互卡片 ([#6930](https://github.com/QwenLM/qwen-code/pull/6930)) by @BenGuanRan
- feat(web-shell): 优化高级表格控件 ([#7999](https://github.com/QwenLM/qwen-code/pull/7999)) by @ytahdn
- 更新分流评论,以清晰的通过/失败结论开头,默认显示英文并折叠中文翻译。 ([#7974](https://github.com/QwenLM/qwen-code/pull/7974)) by @wenshao
- feat(triage): 在工作区清理后的 ECS 上运行外部 /verify ([#7985](https://github.com/QwenLM/qwen-code/pull/7985)) by @wenshao
- 新增 security.allowPrivateNetworkHooks 设置,允许在可信的平台托管环境中使 HTTP 钩子访问私有网络地址。 ([#7968](https://github.com/QwenLM/qwen-code/pull/7968)) by @xurik
- 为分割窗格标题添加可自定义的操作槽,空间不足时自动溢出为菜单。 ([#7808](https://github.com/QwenLM/qwen-code/pull/7808)) by @samuelhsin
- 新增 GitLab 轮询频道适配器,将 GitLab 待办事项转换为入站消息以进行自动化处理。 ([#7862](https://github.com/QwenLM/qwen-code/pull/7862)) by @OrbitZore
- 新增 API 和 SDK 辅助工具,用于列出已批准的配对发送者并在特定工作区中撤销访问权限。 ([#8045](https://github.com/QwenLM/qwen-code/pull/8045)) by @qqqys
- 为 GitHub 频道引入可选的 reasonFilter 设置,以跳过不需要的通知原因并防止意外的代理操作。 ([#8031](https://github.com/QwenLM/qwen-code/pull/8031)) by @xianjianlf2
- 针对非平凡差异的零发现审查批准,现在会在结论行中明确披露低信号状态。 ([#7987](https://github.com/QwenLM/qwen-code/pull/7987)) by @wenshao
- 新增阈值设置,当推迟工具的总大小符合限制时,自动将其预加载到上下文窗口中。 ([#7922](https://github.com/QwenLM/qwen-code/pull/7922)) by @DragonnZhang
- feat(review): 添加 `review run` —— 无头审查,提供机器可读的结论 ([#7983](https://github.com/QwenLM/qwen-code/pull/7983)) by @wenshao
- 通过维护者验证轮次中的七种新技术增强 verify-pr 技能,以提升变更验证效果。 ([#8010](https://github.com/QwenLM/qwen-code/pull/8010)) by @wenshao
- 将 /verify 代理预算从 25 分钟增加至 120 分钟,以支持与本地维护者轮次相匹配的全面验证。 ([#8014](https://github.com/QwenLM/qwen-code/pull/8014)) by @wenshao
- 每第十次接管轮次自动添加里程碑摘要,以便了解长期修复尝试的进展。 ([#8046](https://github.com/QwenLM/qwen-code/pull/8046)) by @wenshao
- 在代理(agent)回合运行期间,为 GitHub 问题和评论添加临时的眼睛表情反应,以指示正在积极处理中。 ([#8061](https://github.com/QwenLM/qwen-code/pull/8061)) by @yiliang114
- 通过跳过对空闲自动修复候选项的检查来减少扫描延迟,从而优先处理新的交互。 ([#8049](https://github.com/QwenLM/qwen-code/pull/8049)) by @wenshao
- /verify 命令现在能够成功捕获并将证据截图包含在其报告中。 ([#8016](https://github.com/QwenLM/qwen-code/pull/8016)) by @wenshao
- 通过实施按来源的反馈预算,确保在仅处理关键问题(Critical-only)模式下,包含特定短语的维护者反馈不会被延迟。 ([#8071](https://github.com/QwenLM/qwen-code/pull/8071)) by @wenshao
- 在模型请求中标记 UserPromptSubmit 钩子上下文,并记录显示来源,以确保会话回放能准确反映模型所看到的内容。 ([#7956](https://github.com/QwenLM/qwen-code/pull/7956)) by @zjgzx1988
- 在 HTTP、ACP 和 SDK 接口的大文本文件读取中增加字节游标分页功能,以高效检索后续内容而无需重新扫描。 ([#8002](https://github.com/QwenLM/qwen-code/pull/8002)) by @doudouOUC
- qwen review test-efficacy 命令现在使用语句级变异探针(删除单行)来检测未受保护的安全声明,从而验证测试覆盖率。 ([#8020](https://github.com/QwenLM/qwen-code/pull/8020)) by @wenshao
- feat(web-shell): 添加上下文任务面板 ([#7929](https://github.com/QwenLM/qwen-code/pull/7929)) by @ytahdn
- 使用 fork 类型的子代理现在支持可选的 fork_tools 允许列表,以限制执行仅限于特定的标准工具名称或 MCP 服务器模式。 ([#8066](https://github.com/QwenLM/qwen-code/pull/8066)) by @destire-mio
- 通道(Channel)编辑器现在允许操作员查看、批准和撤销配对审批,并提供与配置的允许列表明确区分的确认对话框。 ([#8081](https://github.com/QwenLM/qwen-code/pull/8081)) by @qqqys
- 增强 Web Shell 视觉效果,包括主题感知的输入框高亮、空会话的交互式点动画,以及占位符的新打字机效果。 ([#8098](https://github.com/QwenLM/qwen-code/pull/8098)) by @ytahdn
### 错误修复
- 交互式端到端测试现在会根据环境超时时间动态调整“先读后写”的等待时间,而非使用固定的 15 秒限制,以防止测试不稳定。 ([#7943](https://github.com/QwenLM/qwen-code/pull/7943)) by @qwen-code-dev-bot
- CI 现在在检出代码前清理过期的 .qwen/ 目录,以防止由之前作业遗留的严格文件权限导致的权限拒绝错误。 ([#7977](https://github.com/QwenLM/qwen-code/pull/7977)) by @qwen-code-dev-bot
- CI 验证作业现在在将工作区所有权交还前,能正确恢复 .qwen 目录的写入权限,以防止在自托管运行器上出现检出失败。 ([#7992](https://github.com/QwenLM/qwen-code/pull/7992)) by @yiliang114
- 修复了特定主机上的 ECS 运行器无法将 Qwen 二进制文件更新到请求版本的问题。 ([#8000](https://github.com/QwenLM/qwen-code/pull/8000)) by @yiliang114
- 修复目录列表显示,以明确区分空文件夹和因项目预算限制而被跳过的文件夹。 ([#7868](https://github.com/QwenLM/qwen-code/pull/7868)) by @chinesepowered
- 修复了飞书消息中代码块可能超出大小限制的 bug,该问题由错误计算关闭围栏(fences)所需空间引起。 ([#7850](https://github.com/QwenLM/qwen-code/pull/7850)) by @chinesepowered
- 确保独立 WebShell 链接在会话间导航时保留身份验证令牌和部署基础路径。 ([#7926](https://github.com/QwenLM/qwen-code/pull/7926)) by @ytahdn
- fix(web-shell): 优化通道配对请求 ([#7997](https://github.com/QwenLM/qwen-code/pull/7997)) by @qqqys
- fix(cli): 修正全屏模式下硬件光标偏移一位的问题 ([#7998](https://github.com/QwenLM/qwen-code/pull/7998)) by @chiga0
- fix(cli): 防止 Windows 系统上 SGR 鼠标事件被错误地当作粘贴操作吞没 ([#7988](https://github.com/QwenLM/qwen-code/pull/7988)) by @chiga0
- fix(serve): 允许对大文本文件进行有界读取 ([#7947](https://github.com/QwenLM/qwen-code/pull/7947)) by @doudouOUC
- fix(web-shell): 在卡片中优先使用制品类型元数据 ([#7973](https://github.com/QwenLM/qwen-code/pull/7973)) by @ytahdn
- fix(web-shell): 降低输入框输入延迟 ([#8015](https://github.com/QwenLM/qwen-code/pull/8015)) by @ytahdn
- 修复会话历史分页功能,通过改用稳定的记录边界而非不透明游标,防止在加载早期记录时失败。 ([#8001](https://github.com/QwenLM/qwen-code/pull/8001)) by @ytahdn
- 修复发布说明生成逻辑,以正确处理上一个发布标签与当前发布目标不一致的情况。 ([#7970](https://github.com/QwenLM/qwen-code/pull/7970)) by @qwen-code-dev-bot
- 将浏览器守护进程 SDK 包大小预算增加至 177KB,以容纳最近添加的功能并恢复成功构建。 ([#8024](https://github.com/QwenLM/qwen-code/pull/8024)) by @wenshao
- 修复 Kitty 协议终端中的键盘处理逻辑,以正确将 Command 或 Super 键修饰符映射为快捷键的 meta 标志。 ([#7996](https://github.com/QwenLM/qwen-code/pull/7996)) by @chiga0
- 改进诊断消息,以区分缺失的通道工作进程和在工作区重载期间有意排空的工作进程。 ([#7932](https://github.com/QwenLM/qwen-code/pull/7932)) by @destire-mio
- 在 build-test 命令中增加预检磁盘空间检查,以防止因存储空间不足导致的安装和构建失败。 ([#7986](https://github.com/QwenLM/qwen-code/pull/7986)) by @wenshao
- 修复了 Ctrl+Shift+C 快捷键,使其在终端中正确复制文本,而非触发退出或清屏操作。 ([#8011](https://github.com/QwenLM/qwen-code/pull/8011)) by @chiga0
- 成功写入 Artifact 文件后现在会自动记录,无需单独的手动注册步骤。 ([#7914](https://github.com/QwenLM/qwen-code/pull/7914)) by @chiga0
- 修复了在使用 MCP 提示补全时按 Enter 键会错误地将可选参数视为必填项的问题。 ([#7995](https://github.com/QwenLM/qwen-code/pull/7995)) by @qwen-code-dev-bot
- 在由守护进程管理的 Channel 会话中禁用了原生 cron 任务,以确保计划任务能被正确跟踪和交付。 ([#8034](https://github.com/QwenLM/qwen-code/pull/8034)) by @qqqys
- 如果 GitHub 频道配置了仅包含自身的操作者白名单且无法接收有效通知,现在启动时会失败并给出指导提示。 ([#8055](https://github.com/QwenLM/qwen-code/pull/8055)) by @zjunothing
- 从 send_message 工具中移除了一个 schema 组合器,以修复此前被 Anthropic 模型拒绝请求的兼容性问题。 ([#7989](https://github.com/QwenLM/qwen-code/pull/7989)) by @netbrah
- 修复了终端调整大小时在面板切换动画期间导致过度滚动和历史记录重新渲染的问题。 ([#8009](https://github.com/QwenLM/qwen-code/pull/8009)) by @chiga0
- 分叉的后台代理在恢复时现在能正确刷新工具能力和系统指令,同时保留对话历史。 ([#7927](https://github.com/QwenLM/qwen-code/pull/7927)) by @DragonnZhang
- GitHub 频道的发布现在每个事件仅生成一条最终评论,防止出现重复或中间输出,同时为每次尝试记录详细的审计元数据。 ([#8033](https://github.com/QwenLM/qwen-code/pull/8033)) by @yiliang114
- review-pr 作业现在在签出前恢复工作区所有权,以防止在复用的自托管运行器上出现权限被拒绝的错误。 ([#8062](https://github.com/QwenLM/qwen-code/pull/8062)) by @yiliang114
- 预览版本生成现在会检测现有的稳定版本,并递增补丁版本号,以防止频道包的 npm 发布冲突。 ([#7978](https://github.com/QwenLM/qwen-code/pull/7978)) by @yiliang114
- 由守护进程管理的会话写入器现在使用带有密封锁的完整性保护移交协议,以确保在受控关机期间安全转移所有权。 ([#7976](https://github.com/QwenLM/qwen-code/pull/7976)) by @doudouOUC
- 通过区分非思考内容块与中间处理步骤,现在允许在仅思考阶段进行传输流重试。 ([#7938](https://github.com/QwenLM/qwen-code/pull/7938)) by @ComplexSimply
- reasonFilter 设置现在会验证输入数组,拒绝未知原因,并将空数组视为未设置,以确保通知路由的可靠性。 ([#8035](https://github.com/QwenLM/qwen-code/pull/8035)) by @yiliang114
- 修复了 CJK(中日韩)文本过多可能导致输出 token 限制被突破,从而引发生成期间 API 错误的问题。 ([#7963](https://github.com/QwenLM/qwen-code/pull/7963)) by @zambalee
- 确保活跃的 Todo 列表在工具调用轮次间正确持久化,以维持上下文且不干扰用户输入的优先级。 ([#7919](https://github.com/QwenLM/qwen-code/pull/7919)) by @yiliang114
- 修复了环境变量传播问题,以确保技能子进程使用正确的 CLI 构建和模型配置。 ([#7993](https://github.com/QwenLM/qwen-code/pull/7993)) by @wenshao
- 修复了自动修复循环,使其正确将超时计入失败限制,并更正了移交期间的状态消息。 ([#8044](https://github.com/QwenLM/qwen-code/pull/8044)) by @wenshao
- 通过直接从命令发布确认信息来修复接管确认机制,以防止事件丢失和长时间延迟。 ([#8043](https://github.com/QwenLM/qwen-code/pull/8043)) by @wenshao
- 通过修复列尺寸、冻结列阴影以及行展开期间的滚动位置,稳定了 Web Shell 的表格控件。 ([#8041](https://github.com/QwenLM/qwen-code/pull/8041)) by @ytahdn
- 通过使用假服务器替代真实 LLM,使交互式 read-then-write 集成测试变得确定性。 ([#8064](https://github.com/QwenLM/qwen-code/pull/8064)) by @qwen-code-dev-bot
- 在 Web Shell 中为等待在守护进程队列中执行的消息添加了可见的“服务器排队中”状态。 ([#8065](https://github.com/QwenLM/qwen-code/pull/8065)) by @wenshao
- 通过在沙箱 iframe 中启用脚本并正确处理二进制图像文件,修复了 Web Shell 的 Artifact 预览功能。 ([#8078](https://github.com/QwenLM/qwen-code/pull/8078)) by @ytahdn
- 优化了评论附件守卫,跳过不必要的运行器分配,减少托管任务的队列拥堵。 ([#8095](https://github.com/QwenLM/qwen-code/pull/8095)) by @wenshao
- Web Shell 现在能正确将带有参数的旧版 /skills 调用转换为直接技能命令。 ([#8103](https://github.com/QwenLM/qwen-code/pull/8103)) by @ytahdn
- 更新了 verify-pr 代理,使其在预算内考虑证据捕获成本,以确保图像能够生成。 ([#8104](https://github.com/QwenLM/qwen-code/pull/8104)) by @wenshao
- 对于在守护进程准入前失败的提示,Web Shell 现在会显示明确的状态失败提示和重试操作。 ([#8106](https://github.com/QwenLM/qwen-code/pull/8106)) by @ytahdn
- 为 Web Shell 的问题提交添加了重试功能和进行中状态,以防止静默失败。 ([#8096](https://github.com/QwenLM/qwen-code/pull/8096)) by @ytahdn
- 修复了 Web Shell,使其能正确区分并标记同时会将会话切换为默认模式的一次性工具批准。 ([#8099](https://github.com/QwenLM/qwen-code/pull/8099)) by @ytahdn
- 当因轮次上限限制而拒绝继续时,自动修复现在会向 PR 发布可见通知,而不仅仅是记录日志。 ([#8067](https://github.com/QwenLM/qwen-code/pull/8067)) by @wenshao
- 通过合并并发推送并在长时间代理运行期间 PR 头移动时重试,防止已验证的自动修复结果丢失。([#8042](https://github.com/QwenLM/qwen-code/pull/8042)) by @wenshao
- 在会话关闭期间正确中止活动的动态工作流运行,以防止孤立的调度操作和不必要的 Token 消耗。([#8107](https://github.com/QwenLM/qwen-code/pull/8107)) by @qqqys
- 通过检测结果消息而非计算助手消息来检测轮次完成,从而稳定 setModel E2E 测试。([#8075](https://github.com/QwenLM/qwen-code/pull/8075)) by @qwen-code-dev-bot
- 将多模型 E2E 测试中的单轮模型响应超时时间从 30 秒增加到 60 秒,以减少 CI 上的测试不稳定现象。([#8111](https://github.com/QwenLM/qwen-code/pull/8111)) by @qwen-code-dev-bot
- 通过使状态读取无副作用,并实现带有 ETag 支持的生成保护缓存,防止重复扫描工作区技能。([#8080](https://github.com/QwenLM/qwen-code/pull/8080)) by @doudouOUC
- 守护进程会话维护现在使用写者租约协议来隔离转录更新,并防止在会话删除、归档和清理操作期间发生冲突。([#7975](https://github.com/QwenLM/qwen-code/pull/7975)) by @doudouOUC
- 通过将侧任务回滚操作路由到工作区会话服务,解决了由近期维护更改引入的未绑定标识符导致的构建失败。([#8144](https://github.com/QwenLM/qwen-code/pull/8144)) by @wenshao
- Web Shell 工作区会话现在始终在会话的有效工作目录中执行命令,并推迟 MCP 发现,直到可信重定位完成。([#8068](https://github.com/QwenLM/qwen-code/pull/8068)) by @wenshao
- 权限控制 E2E 测试现在使用共享响应超时,以防止在动态权限模式更改期间因模型响应缓慢而导致的误报失败。([#8149](https://github.com/QwenLM/qwen-code/pull/8149)) by @wenshao
- 修复了自动编辑权限的 E2E 测试不稳定的问题,确保在不依赖实时模型行为的情况下获得确定性结果。([#8154](https://github.com/QwenLM/qwen-code/pull/8154)) by @wenshao
- 修复了窄布局下会话详情菜单溢出问题,并添加了可通过键盘访问的复制完整会话 ID 的操作。([#8127](https://github.com/QwenLM/qwen-code/pull/8127)) by @dreamWB
### 内部变更
- asyncGenerator canUseTool 测试现在验证工具调用参数,而非严格比较文件内容相等性,以稳定针对模型措辞变化的断言。([#7939](https://github.com/QwenLM/qwen-code/pull/7939)) by @qwen-code-dev-bot
- 新增独立的 CI 流水线,用于在稳定的 Qwen Code 版本上自动运行 SWE-bench 基准测试。([#7656](https://github.com/QwenLM/qwen-code/pull/7656)) by @DennisYu07
- 将不稳定的 E2E 测试迁移到确定性测试服务器,以消除由模型输出差异和延迟导致的问题。([#7934](https://github.com/QwenLM/qwen-code/pull/7934)) by @yiliang114
- 扩展的回归测试现在验证会话历史分页行为,包括活动记录跟踪和页大小解析的边界情况。([#7907](https://github.com/QwenLM/qwen-code/pull/7907)) by @PratikWayase
- 可选的守护进程基准测试现在测量即时提示调度阶段,包括 HTTP 接受、消息回显和队列等待持续时间。([#7994](https://github.com/QwenLM/qwen-code/pull/7994)) by @doudouOUC
- 通过优化提示指令(不更改生产代码)稳定了子代理委托的 E2E 测试用例。([#8073](https://github.com/QwenLM/qwen-code/pull/8073)) by @qwen-code-dev-bot
## 新贡献者
- @xianjianlf2 在 [#8031](https://github.com/QwenLM/qwen-code/pull/8031) 中首次贡献
- @zambalee 在 [#7963](https://github.com/QwenLM/qwen-code/pull/7963) 中首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.21.1...v0.21.2
<!-- qwen-release-notes:v1 -->
## Highlights
- Autofix now defers lower-severity suggestions after five rounds and posts visible notices when refusing to proceed due to round limits. ([#7913](https://github.com/QwenLM/qwen-code/pull/7913), [#8067](https://github.com/QwenLM/qwen-code/pull/8067))
- Added an opt-in Auto Recall profile that automatically searches external context with built-in security limits. ([#7877](https://github.com/QwenLM/qwen-code/pull/7877))
- Enhanced the /verify command with increased time budgets, evidence screenshots, and new maintainer verification techniques. ([#8010](https://github.com/QwenLM/qwen-code/pull/8010), [#8014](https://github.com/QwenLM/qwen-code/pull/8014), [#8016](https://github.com/QwenLM/qwen-code/pull/8016))
- Web Shell now supports contextual task panels, theme-aware visuals, and correctly handles artifact previews and session states. ([#7929](https://github.com/QwenLM/qwen-code/pull/7929), [#8098](https://github.com/QwenLM/qwen-code/pull/8098), [#8078](https://github.com/QwenLM/qwen-code/pull/8078), [#8106](https://github.com/QwenLM/qwen-code/pull/8106))
- GitHub channels now emit exactly one final comment per event and display eyes reactions to indicate active agent processing. ([#8033](https://github.com/QwenLM/qwen-code/pull/8033), [#8061](https://github.com/QwenLM/qwen-code/pull/8061))
- Added APIs and UI controls to view, approve, and revoke channel pairing approvals within specific workspaces. ([#8045](https://github.com/QwenLM/qwen-code/pull/8045), [#8081](https://github.com/QwenLM/qwen-code/pull/8081))
## Breaking Changes
No known breaking changes.
## Complete Change List
### Features
- Autofix now defers lower-severity suggestions after five change rounds, allowing only critical findings and failed checks to drive further code modifications. ([#7913](https://github.com/QwenLM/qwen-code/pull/7913)) by @qqqys
- Goal v3 is now connected to the turn engine with deterministic permit handling, ensuring runtime continuations do not consume session or recursive turn budgets. ([#7895](https://github.com/QwenLM/qwen-code/pull/7895)) by @qqqys
- Static image reads now return a canonical, auto-oriented JPEG overview with source dimensions to support reliable zooming within shared resource budgets. ([#7911](https://github.com/QwenLM/qwen-code/pull/7911)) by @qqqys
- The triage system now mechanically triggers the 2b-bis sandboxed-lane recommendation when a Stage 2 draft explicitly contains a not-verified sentence. ([#7965](https://github.com/QwenLM/qwen-code/pull/7965)) by @wenshao
- Adds an opt-in Auto Recall profile that automatically searches external context when you submit a prompt, with built-in security limits. ([#7877](https://github.com/QwenLM/qwen-code/pull/7877)) by @doudouOUC
- Updates WebShell to use a shared renderer for streaming charts, ensuring canonical markdown-chart blocks work without extra host configuration. ([#7916](https://github.com/QwenLM/qwen-code/pull/7916)) by @zhangxy-zju
- Improves ripgrep reliability by retrying failed searches and correctly distinguishing between no matches found and incomplete search results. ([#7888](https://github.com/QwenLM/qwen-code/pull/7888)) by @water-in-stone
- feat(channels): add DingTalk interactive cards ([#6930](https://github.com/QwenLM/qwen-code/pull/6930)) by @BenGuanRan
- feat(web-shell): refine advanced table controls ([#7999](https://github.com/QwenLM/qwen-code/pull/7999)) by @ytahdn
- Updated triage comments to lead with a clear pass or fail verdict and display English by default with Chinese translations folded. ([#7974](https://github.com/QwenLM/qwen-code/pull/7974)) by @wenshao
- feat(triage): run external /verify on ECS behind a workspace wipe ([#7985](https://github.com/QwenLM/qwen-code/pull/7985)) by @wenshao
- Added the security.allowPrivateNetworkHooks setting to allow HTTP hooks to access private network addresses in trusted platform-managed environments. ([#7968](https://github.com/QwenLM/qwen-code/pull/7968)) by @xurik
- Added a customizable action slot to split pane headers that automatically overflows into a menu when space is limited. ([#7808](https://github.com/QwenLM/qwen-code/pull/7808)) by @samuelhsin
- Added a GitLab polling channel adapter that converts GitLab todos into inbound messages for automated processing. ([#7862](https://github.com/QwenLM/qwen-code/pull/7862)) by @OrbitZore
- Added APIs and SDK helpers to list approved pairing senders and revoke access within a specific workspace. ([#8045](https://github.com/QwenLM/qwen-code/pull/8045)) by @qqqys
- Introduced an optional reasonFilter setting for GitHub channels to skip unwanted notification reasons and prevent unintended agent actions. ([#8031](https://github.com/QwenLM/qwen-code/pull/8031)) by @xianjianlf2
- Review approvals with zero findings on non-trivial diffs now explicitly disclose low signal status in the verdict line. ([#7987](https://github.com/QwenLM/qwen-code/pull/7987)) by @wenshao
- Added a threshold setting to automatically preload deferred tools into the context window when their total size fits within limits. ([#7922](https://github.com/QwenLM/qwen-code/pull/7922)) by @DragonnZhang
- feat(review): add `review run` — headless review with a machine-readable verdict ([#7983](https://github.com/QwenLM/qwen-code/pull/7983)) by @wenshao
- Enhanced the verify-pr skill with seven new techniques from maintainer verification rounds to improve change validation. ([#8010](https://github.com/QwenLM/qwen-code/pull/8010)) by @wenshao
- Increased the /verify agent budget from 25 to 120 minutes to allow comprehensive verification matching local maintainer rounds. ([#8014](https://github.com/QwenLM/qwen-code/pull/8014)) by @wenshao
- Added automatic milestone summaries every tenth takeover round to provide visibility into long-running fix attempts. ([#8046](https://github.com/QwenLM/qwen-code/pull/8046)) by @wenshao
- Adds a temporary eyes reaction to GitHub issues and comments while an agent turn is running to indicate active processing. ([#8061](https://github.com/QwenLM/qwen-code/pull/8061)) by @yiliang114
- Reduces scan delays by skipping inspection of idle autofix candidates to prioritize fresh engagements. ([#8049](https://github.com/QwenLM/qwen-code/pull/8049)) by @wenshao
- The /verify command now successfully captures and includes evidence screenshots in its reports. ([#8016](https://github.com/QwenLM/qwen-code/pull/8016)) by @wenshao
- Ensures maintainer feedback containing specific phrases is not deferred in Critical-only mode by implementing a per-source feedback budget. ([#8071](https://github.com/QwenLM/qwen-code/pull/8071)) by @wenshao
- Tags UserPromptSubmit hook context in model requests and records display provenance to ensure session replays accurately reflect what the model saw. ([#7956](https://github.com/QwenLM/qwen-code/pull/7956)) by @zjgzx1988
- Adds byte-cursor paging to large text file reads across HTTP, ACP, and SDK surfaces to efficiently retrieve subsequent content without rescanning. ([#8002](https://github.com/QwenLM/qwen-code/pull/8002)) by @doudouOUC
- The qwen review test-efficacy command now detects unprotected safety statements using statement-level mutation probes that delete single lines to verify test coverage. ([#8020](https://github.com/QwenLM/qwen-code/pull/8020)) by @wenshao
- feat(web-shell): add contextual task panels ([#7929](https://github.com/QwenLM/qwen-code/pull/7929)) by @ytahdn
- Subagents using the fork type now support an optional fork_tools allowlist to restrict execution to specific canonical tool names or MCP server patterns. ([#8066](https://github.com/QwenLM/qwen-code/pull/8066)) by @destire-mio
- The Channel editor now allows operators to view, approve, and revoke pairing approvals with explicit confirmation dialogs distinct from the configured allowlist. ([#8081](https://github.com/QwenLM/qwen-code/pull/8081)) by @qqqys
- Enhanced Web Shell visuals with theme-aware composer highlights, interactive dot animations for empty sessions, and a new typewriter effect for placeholders. ([#8098](https://github.com/QwenLM/qwen-code/pull/8098)) by @ytahdn
### Bug Fixes
- Interactive end-to-end tests now scale read-then-write waits with the environment timeout instead of using a fixed 15-second limit to prevent flakiness. ([#7943](https://github.com/QwenLM/qwen-code/pull/7943)) by @qwen-code-dev-bot
- CI now cleans stale .qwen/ directories before checkout to prevent permission denied errors caused by restrictive file modes left by previous jobs. ([#7977](https://github.com/QwenLM/qwen-code/pull/7977)) by @qwen-code-dev-bot
- CI verify jobs now correctly restore write permissions on the .qwen tree before returning workspace ownership to prevent checkout failures on self-hosted runners. ([#7992](https://github.com/QwenLM/qwen-code/pull/7992)) by @yiliang114
- Fixes an issue where ECS runners on specific hosts failed to update the Qwen binary to the requested version. ([#8000](https://github.com/QwenLM/qwen-code/pull/8000)) by @yiliang114
- Fixes directory listing to clearly distinguish between folders that are empty and those that were skipped due to item budget limits. ([#7868](https://github.com/QwenLM/qwen-code/pull/7868)) by @chinesepowered
- Fixes a bug where code blocks in Feishu messages could exceed size limits by incorrectly calculating space needed for closing fences. ([#7850](https://github.com/QwenLM/qwen-code/pull/7850)) by @chinesepowered
- Ensures standalone WebShell URLs preserve authentication tokens and deployment base paths when navigating between sessions. ([#7926](https://github.com/QwenLM/qwen-code/pull/7926)) by @ytahdn
- fix(web-shell): polish Channel pairing requests ([#7997](https://github.com/QwenLM/qwen-code/pull/7997)) by @qqqys
- fix(cli): correct hardware cursor off-by-one in fullscreen mode ([#7998](https://github.com/QwenLM/qwen-code/pull/7998)) by @chiga0
- fix(cli): prevent SGR mouse events from being swallowed as paste on Windows ([#7988](https://github.com/QwenLM/qwen-code/pull/7988)) by @chiga0
- fix(serve): allow bounded reads of large text files ([#7947](https://github.com/QwenLM/qwen-code/pull/7947)) by @doudouOUC
- fix(web-shell): prefer artifact type metadata in cards ([#7973](https://github.com/QwenLM/qwen-code/pull/7973)) by @ytahdn
- fix(web-shell): reduce composer input latency ([#8015](https://github.com/QwenLM/qwen-code/pull/8015)) by @ytahdn
- Fixed session history pagination to prevent failures when loading earlier records by using stable record boundaries instead of opaque cursors. ([#8001](https://github.com/QwenLM/qwen-code/pull/8001)) by @ytahdn
- Fixed release note generation to correctly handle cases where the previous release tag diverges from the current release target. ([#7970](https://github.com/QwenLM/qwen-code/pull/7970)) by @qwen-code-dev-bot
- Increased the browser daemon SDK bundle size budget to 177KB to accommodate recent feature additions and restore successful builds. ([#8024](https://github.com/QwenLM/qwen-code/pull/8024)) by @wenshao
- Fixed keyboard handling in Kitty protocol terminals to correctly map the Command or Super key modifier to the meta flag for shortcuts. ([#7996](https://github.com/QwenLM/qwen-code/pull/7996)) by @chiga0
- Improved diagnostic messages to distinguish between a missing channel worker and a worker that is intentionally draining during workspace reloads. ([#7932](https://github.com/QwenLM/qwen-code/pull/7932)) by @destire-mio
- Added preflight disk space checks to the build-test command to prevent installation and build failures caused by insufficient storage. ([#7986](https://github.com/QwenLM/qwen-code/pull/7986)) by @wenshao
- Fixed Ctrl+Shift+C to correctly copy text in the terminal instead of triggering quit or clear actions. ([#8011](https://github.com/QwenLM/qwen-code/pull/8011)) by @chiga0
- Artifact file writes are now automatically recorded upon success, eliminating the need for a separate manual registration step. ([#7914](https://github.com/QwenLM/qwen-code/pull/7914)) by @chiga0
- Fixed an issue where pressing Enter during MCP prompt completion incorrectly treated optional parameters as mandatory. ([#7995](https://github.com/QwenLM/qwen-code/pull/7995)) by @qwen-code-dev-bot
- Disabled native cron jobs in daemon-managed Channel sessions to ensure scheduled tasks are correctly tracked and delivered. ([#8034](https://github.com/QwenLM/qwen-code/pull/8034)) by @qqqys
- GitHub channels now fail startup with guidance if configured with a self-only operator allowlist that cannot receive usable notifications. ([#8055](https://github.com/QwenLM/qwen-code/pull/8055)) by @zjunothing
- Removed a schema combinator from the send_message tool to fix compatibility with Anthropic models that previously rejected the request. ([#7989](https://github.com/QwenLM/qwen-code/pull/7989)) by @netbrah
- Fixed a terminal resize issue that caused excessive scrolling and history re-rendering during panel toggle animations. ([#8009](https://github.com/QwenLM/qwen-code/pull/8009)) by @chiga0
- Forked background agents now correctly refresh tool capabilities and system instructions when resumed while preserving conversation history. ([#7927](https://github.com/QwenLM/qwen-code/pull/7927)) by @DragonnZhang
- GitHub channel publications now emit exactly one final comment per event, preventing duplicate or intermediate outputs while recording detailed audit metadata for every attempt. ([#8033](https://github.com/QwenLM/qwen-code/pull/8033)) by @yiliang114
- The review-pr job now restores workspace ownership before checkout to prevent permission denied errors on reused self-hosted runners. ([#8062](https://github.com/QwenLM/qwen-code/pull/8062)) by @yiliang114
- Preview version generation now detects existing stable releases and bumps the patch number to prevent npm publishing conflicts for channel packages. ([#7978](https://github.com/QwenLM/qwen-code/pull/7978)) by @yiliang114
- Daemon-managed session writers now use an integrity-protected handoff protocol with sealed locks to ensure safe ownership transfer during managed shutdowns. ([#7976](https://github.com/QwenLM/qwen-code/pull/7976)) by @doudouOUC
- Transport stream retries are now allowed during the thinking-only phase by distinguishing non-thought content chunks from intermediate processing steps. ([#7938](https://github.com/QwenLM/qwen-code/pull/7938)) by @ComplexSimply
- The reasonFilter setting now validates input arrays, rejects unknown reasons, and treats empty arrays as unset to ensure reliable notification routing. ([#8035](https://github.com/QwenLM/qwen-code/pull/8035)) by @yiliang114
- Fixed an issue where CJK-heavy text could cause output token limits to be exceeded, preventing API errors during generation. ([#7963](https://github.com/QwenLM/qwen-code/pull/7963)) by @zambalee
- Ensured active Todo lists persist correctly across tool turns to maintain context without interfering with user input priority. ([#7919](https://github.com/QwenLM/qwen-code/pull/7919)) by @yiliang114
- Fixed environment variable propagation to ensure skill subprocesses use the correct CLI build and model configuration. ([#7993](https://github.com/QwenLM/qwen-code/pull/7993)) by @wenshao
- Fixed the autofix loop to properly count timeouts toward failure limits and corrected status messages during handoffs. ([#8044](https://github.com/QwenLM/qwen-code/pull/8044)) by @wenshao
- Fixes takeover acknowledgments by posting confirmations directly from the command to prevent event loss and long delays. ([#8043](https://github.com/QwenLM/qwen-code/pull/8043)) by @wenshao
- Stabilizes web shell table controls by fixing column sizing, frozen-column shadows, and scroll position during row expansion. ([#8041](https://github.com/QwenLM/qwen-code/pull/8041)) by @ytahdn
- Makes the interactive read-then-write integration test deterministic by using a fake server instead of a live LLM. ([#8064](https://github.com/QwenLM/qwen-code/pull/8064)) by @qwen-code-dev-bot
- Adds a visible Queued on server status in the web shell for messages waiting in the daemon queue before execution. ([#8065](https://github.com/QwenLM/qwen-code/pull/8065)) by @wenshao
- Fixes web shell artifact previews by enabling scripts in sandboxed iframes and correctly handling binary image files. ([#8078](https://github.com/QwenLM/qwen-code/pull/8078)) by @ytahdn
- Optimized the Comment Attachment Guard to skip unnecessary runner allocation, reducing queue congestion for hosted jobs. ([#8095](https://github.com/QwenLM/qwen-code/pull/8095)) by @wenshao
- Web Shell now correctly translates legacy /skills invocations with arguments into direct skill commands. ([#8103](https://github.com/QwenLM/qwen-code/pull/8103)) by @ytahdn
- Updated the verify-pr agent to account for evidence capture costs within its execution budget to ensure images are generated. ([#8104](https://github.com/QwenLM/qwen-code/pull/8104)) by @wenshao
- Web Shell now displays a clear failure status and Retry action for prompts that fail before daemon admission. ([#8106](https://github.com/QwenLM/qwen-code/pull/8106)) by @ytahdn
- Added retry capability and in-progress states to Web Shell question submissions to prevent silent failures. ([#8096](https://github.com/QwenLM/qwen-code/pull/8096)) by @ytahdn
- Fixed Web Shell to correctly distinguish and label one-time tool approvals that also switch the session to Default mode. ([#8099](https://github.com/QwenLM/qwen-code/pull/8099)) by @ytahdn
- Autofix now posts visible notices to PRs when refusing to proceed due to round-cap limits instead of logging only. ([#8067](https://github.com/QwenLM/qwen-code/pull/8067)) by @wenshao
- Prevents loss of verified autofix results by merging concurrent pushes and retrying when the PR head moves during a long agent run. ([#8042](https://github.com/QwenLM/qwen-code/pull/8042)) by @wenshao
- Properly aborts active dynamic workflow runs during session shutdown to prevent orphaned dispatches and unnecessary token usage. ([#8107](https://github.com/QwenLM/qwen-code/pull/8107)) by @qqqys
- Stabilizes the setModel E2E test by detecting turn completion via result messages instead of counting assistant messages. ([#8075](https://github.com/QwenLM/qwen-code/pull/8075)) by @qwen-code-dev-bot
- Increases the per-turn model response timeout in multi-model E2E tests from 30s to 60s to reduce flakiness on CI. ([#8111](https://github.com/QwenLM/qwen-code/pull/8111)) by @qwen-code-dev-bot
- Prevents repeated workspace skill rescans by making status reads side-effect free and implementing generation-guarded caching with ETag support. ([#8080](https://github.com/QwenLM/qwen-code/pull/8080)) by @doudouOUC
- Daemon session maintenance now uses a writer-lease protocol to isolate transcript updates and prevent conflicts during session deletion, archiving, and cleanup operations. ([#7975](https://github.com/QwenLM/qwen-code/pull/7975)) by @doudouOUC
- Fixed a build failure by routing side-task rollback operations through the workspace session service to resolve an unbound identifier introduced by recent maintenance changes. ([#8144](https://github.com/QwenLM/qwen-code/pull/8144)) by @wenshao
- Web Shell worktree sessions now consistently execute commands in the session's effective working directory and defer MCP discovery until trusted relocation completes. ([#8068](https://github.com/QwenLM/qwen-code/pull/8068)) by @wenshao
- Permission-control E2E tests now use shared response timeouts to prevent false failures caused by slow model responses during dynamic permission mode changes. ([#8149](https://github.com/QwenLM/qwen-code/pull/8149)) by @wenshao
- Fixed a flaky end-to-end test for auto-edit permissions to ensure deterministic results without relying on live model behavior. ([#8154](https://github.com/QwenLM/qwen-code/pull/8154)) by @wenshao
- Fixed session details menus overflowing on narrow layouts and added a keyboard-accessible action to copy the full session ID. ([#8127](https://github.com/QwenLM/qwen-code/pull/8127)) by @dreamWB
### Internal Changes
- The asyncGenerator canUseTool test now validates tool-call arguments instead of strict file content equality to stabilize assertions against model wording variations. ([#7939](https://github.com/QwenLM/qwen-code/pull/7939)) by @qwen-code-dev-bot
- Adds an isolated CI pipeline to automatically run SWE-bench benchmarks on stable Qwen Code releases. ([#7656](https://github.com/QwenLM/qwen-code/pull/7656)) by @DennisYu07
- Migrated flaky end-to-end tests to a deterministic fake server to eliminate failures caused by model output variance and latency. ([#7934](https://github.com/QwenLM/qwen-code/pull/7934)) by @yiliang114
- Expanded regression tests now verify session history pagination behavior, including active record tracking and edge cases for page-size parsing. ([#7907](https://github.com/QwenLM/qwen-code/pull/7907)) by @PratikWayase
- Opt-in daemon benchmarks now measure immediate prompt dispatch stages, including HTTP acceptance, message echo, and queue-wait durations. ([#7994](https://github.com/QwenLM/qwen-code/pull/7994)) by @doudouOUC
- Stabilizes a flaky E2E test case for subagent delegation by refining prompt instructions without changing production code. ([#8073](https://github.com/QwenLM/qwen-code/pull/8073)) by @qwen-code-dev-bot
## New Contributors
- @xianjianlf2 made their first contribution in [#8031](https://github.com/QwenLM/qwen-code/pull/8031)
- @zambalee made their first contribution in [#7963](https://github.com/QwenLM/qwen-code/pull/7963)
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.21.1...v0.21.2