diff --git a/CHANGELOG.md b/CHANGELOG.md index c79c2716100..4f471d3da0a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,6 +12,624 @@ are listed; nightly and preview pre-releases are intentionally omitted. > [GitHub Releases](https://github.com/QwenLM/qwen-code/releases). Do not edit it > by hand — run `npm run changelog` to regenerate. +## [0.22.0](https://github.com/QwenLM/qwen-code/releases/tag/v0.22.0) - 2026-08-22 + +### Highlights + +- Web Shell prevents out-of-memory crashes by bounding transcript retention and trimming oversized replays. ([#9303](https://github.com/QwenLM/qwen-code/pull/9303)) +- Review loops now explain instability by citing specific files with recurring findings or non-shrinking comment volumes. ([#9461](https://github.com/QwenLM/qwen-code/pull/9461)) +- Autofix now audits PR approach for simplicity instead of stopping automation immediately upon a growth-budget breach. ([#9262](https://github.com/QwenLM/qwen-code/pull/9262)) +- Web Shell keeps conversation turns expanded while background shells run, collapsing them only after completion. ([#9632](https://github.com/QwenLM/qwen-code/pull/9632)) +- Created GitHub PRs are now bound to originating sessions with a searchable list and sidebar badge. ([#9543](https://github.com/QwenLM/qwen-code/pull/9543)) +- Non-blocking slash commands now include eleven built-ins like /theme and /tools for immediate execution during streaming. ([#9495](https://github.com/QwenLM/qwen-code/pull/9495)) + +### Breaking Changes + +No known breaking changes. + +### Web Shell Experience + +Improves Web Shell stability, UI responsiveness, streaming performance, and conversation handling during active sessions. + +- Web Shell now bounds daemon transcript retention and trims oversized replays to prevent renderer out-of-memory crashes. ([#9303](https://github.com/QwenLM/qwen-code/pull/9303)) +- Web Shell now keeps conversation turns expanded while their background shells are running, collapsing them only after completion. ([#9632](https://github.com/QwenLM/qwen-code/pull/9632)) +- Fixes web-shell UI so subagent prompts scroll correctly and parallel-agent groups collapse immediately upon completion. ([#9640](https://github.com/QwenLM/qwen-code/pull/9640)) +- Adds a hover tooltip to the create-group icon in Web Shell to clarify its function for mouse users. ([#9400](https://github.com/QwenLM/qwen-code/pull/9400)) +- Updates the conversation loading indicator to use the daemon's hasActivePrompt state, ensuring it remains visible during long tool calls even when streaming is idle. ([#9631](https://github.com/QwenLM/qwen-code/pull/9631)) +- Prevents the Web Shell tool-approval dialog from stealing keyboard focus when it appears while the user is actively typing in an editable element. ([#9609](https://github.com/QwenLM/qwen-code/pull/9609)) +- Optimizes Web Shell streaming performance by reducing main-thread work and reloading oversized transcripts after 15 seconds of inactivity. ([#9672](https://github.com/QwenLM/qwen-code/pull/9672)) +- Routes ordinary Web Shell messages based on session activity rather than Goal status to improve turn handling and insertion logic. ([#9667](https://github.com/QwenLM/qwen-code/pull/9667)) + +### Review & Autofix Logic + +Enhances review loop explanations, Autofix auditing, convergence observations, and PR detection to reduce noise and improve automation reliability. + +- Review loops now explain why they are not settling by citing specific files with recurring findings or comment volumes that are not shrinking. ([#9461](https://github.com/QwenLM/qwen-code/pull/9461)) +- Autofix now audits the PR approach for simplicity and minimal change instead of stopping automation immediately upon a growth-budget breach. ([#9262](https://github.com/QwenLM/qwen-code/pull/9262)) +- Fixed autofix busy-PR detection to include pending workflow runs, preventing duplicate dispatches caused by GitHub status reporting delays. ([#9662](https://github.com/QwenLM/qwen-code/pull/9662)) +- Adds machine-readable convergence observation codes like root-cause-triage and batch-fixes to enable automated review actions. ([#9623](https://github.com/QwenLM/qwen-code/pull/9623)) +- Assigns review agents a dedicated subagent type with only six required tools to reduce token usage and improve performance. ([#9678](https://github.com/QwenLM/qwen-code/pull/9678)) +- Adjusts review body trimming priority to preserve convergence observations about finding rates until all other advisory content is dropped. ([#9715](https://github.com/QwenLM/qwen-code/pull/9715)) +- Extends the /review skill cleanup audit to Aone Code targets, flagging comments or edits made within the review window that were not submitted via the sanctioned path. ([#9633](https://github.com/QwenLM/qwen-code/pull/9633)) + +### Aone & GitHub Integration + +Fixes Aone AGit-Flow caching, presubmit checks, and comment handling while binding GitHub PRs to sessions for better traceability. + +- Fixed incremental review caching for Aone AGit-Flow CRs by computing diffs between local heads instead of relying on ancestry tests that fail after amendments. ([#9630](https://github.com/QwenLM/qwen-code/pull/9630)) +- Enabled /review presubmit on Aone targets to detect self-MRs and head drift by routing through the a1 CLI and comparing author identity. ([#9629](https://github.com/QwenLM/qwen-code/pull/9629)) +- Updated /review --comment output on Aone targets to explicitly disclose that posted comments are unmarked and only join the generic discussion gate. ([#9625](https://github.com/QwenLM/qwen-code/pull/9625)) +- Binds created GitHub PRs to their originating sessions with a searchable list and sidebar badge, supporting up to 10 PRs per session with latest-first ordering. ([#9543](https://github.com/QwenLM/qwen-code/pull/9543)) +- Fixes Aone review support by generating canonical PR links directly from the platform and updating test-plan routing and version floors. ([#9624](https://github.com/QwenLM/qwen-code/pull/9624)) +- Clears deferred Round-5 findings on the Aone write path, ensuring empty --host arguments fail distinctly and test pins correctly guard regressions. ([#9604](https://github.com/QwenLM/qwen-code/pull/9604)) +- Adds a secure fallback path for installing public GitHub extensions on older Git versions by resolving commits via GitHub's anonymous API and downloading archives directly. ([#9680](https://github.com/QwenLM/qwen-code/pull/9680)) + +### Slash Commands & Tools + +Expands non-blocking slash commands, stabilizes menu selection during streaming, and restores interactive HITL prompts on session resume. + +- Extends non-blocking slash commands to eleven built-ins like /theme and /tools, allowing immediate execution during streaming. ([#9495](https://github.com/QwenLM/qwen-code/pull/9495)) +- Stabilizes slash-command menu selection while a response streams by preventing unnecessary re-runs of the suggestion search due to unrelated context updates. ([#9508](https://github.com/QwenLM/qwen-code/pull/9508)) +- serve: restore ask_user_question HITL on session load/resume ([#9665](https://github.com/QwenLM/qwen-code/pull/9665)) +- Integrates import widening logic into fetch-pr --since to streamline incremental scope calculation and reduce token usage. ([#9332](https://github.com/QwenLM/qwen-code/pull/9332)) + +### Security & Dependencies + +Patches high-severity CVEs, secures sandbox images against tampering, and enforces stricter dependency and workflow security gates. + +- The sandbox image is now bound to its specific pulled digest to prevent tampering via mutable tags between resolve and consumption steps. ([#9527](https://github.com/QwenLM/qwen-code/pull/9527)) +- Upgraded dependencies including OpenTelemetry 0.221.x and markdown-it 15 to resolve high-severity CVEs and enforced the security gate as a hard block. ([#9584](https://github.com/QwenLM/qwen-code/pull/9584)) +- Bumps vulnerable dependencies including tar, protobufjs, dompurify, and echarts to patched versions to resolve CVE audits without changing code or package ranges. ([#9703](https://github.com/QwenLM/qwen-code/pull/9703)) +- core: make list_directory opt-in (disabled by default) ([#9424](https://github.com/QwenLM/qwen-code/pull/9424)) + +### SDKs & Permissions + +Updates Python and Java SDKs to support auto permission mode, aligning tool call approval behavior across all client libraries. + +- Updates Python and Java SDKs to support the auto permission mode, aligning them with the CLI and TypeScript SDK for LLM-based tool call approval. ([#9003](https://github.com/QwenLM/qwen-code/pull/9003)) + +### CI & Artifact Handling + +Corrects CI fallback comments, fixes artifact download logic for Office files, and stabilizes verification gates with proper environment variables. + +- The CI fallback comment no longer incorrectly claims a review failed when the same run successfully posted a review earlier. ([#9462](https://github.com/QwenLM/qwen-code/pull/9462)) +- Fixed artifact handling to expand recorded directories into per-file downloads while skipping hidden or junk files, and ensured Office documents download directly. ([#9395](https://github.com/QwenLM/qwen-code/pull/9395)) +- Restores CI=true to autofix verification-gate launches to prevent test flakiness caused by missing environment variables in clean child processes. ([#9649](https://github.com/QwenLM/qwen-code/pull/9649)) +- Excludes idle watchdog timeouts from the cumulative timeout cap so they no longer block PRs while remaining visible in logs. ([#9673](https://github.com/QwenLM/qwen-code/pull/9673)) + +### General Fixes + +Addresses miscellaneous bugs including session recovery races, review body trimming, and daemon state synchronization issues. + +- Fixes session recovery across archive races by prioritizing active storage copies for REST, daemon ACP, and embedded ACP load operations. ([#9513](https://github.com/QwenLM/qwen-code/pull/9513)) +- Removes root barrel self-imports in packages/core and adds an ESLint rule to prevent circular dependencies and enforce architecture boundaries. ([#9635](https://github.com/QwenLM/qwen-code/pull/9635)) +- Refactors acp-integration and serve internals to enforce dependency boundaries with no intended behavior change for users. ([#9144](https://github.com/QwenLM/qwen-code/pull/9144)) +- Moves the push-and-report workflow logic to a separate shell script to reduce YAML size while maintaining execution security. ([#9653](https://github.com/QwenLM/qwen-code/pull/9653)) +- Adds translated Unset entries to all nine CLI locale dictionaries for consistent settings dialog display across languages. ([#9714](https://github.com/QwenLM/qwen-code/pull/9714)) +- review: report the address a drive's service actually bound ([#9655](https://github.com/QwenLM/qwen-code/pull/9655)) + +### Other Changes + +- Release CI now disables install scripts during dependency installation and requires core maintainer approval for security-checks workflow changes. ([#9577](https://github.com/QwenLM/qwen-code/pull/9577)) +- Corrected workflow comments to accurately state that the self-hosted ECS pool supports container runtime execution. ([#9575](https://github.com/QwenLM/qwen-code/pull/9575)) +- Documents a new design for autofix that isolates trusted publishing steps from untrusted code execution to enhance security. ([#9525](https://github.com/QwenLM/qwen-code/pull/9525)) +- Documents how inline terminal image previews render, including limits, fallbacks, and session-resume behavior. ([#8656](https://github.com/QwenLM/qwen-code/pull/8656)) +- Documents the experimental Session Workflow setting, covering its default state, live updates, and Web Shell presentation. ([#8554](https://github.com/QwenLM/qwen-code/pull/8554)) +- Documentation updated to clarify that autofix checks are derived strictly from patch text and to outline sequencing constraints for issue-autofix. ([#9652](https://github.com/QwenLM/qwen-code/pull/9652)) +- autofix: add an operator guide for /takeover from N ([#9622](https://github.com/QwenLM/qwen-code/pull/9622)) +- Corrects the autofix round-seed guide to clarify that any leading whitespace, including spaces, tabs, or newlines, prevents command recognition. ([#9663](https://github.com/QwenLM/qwen-code/pull/9663)) +- Documents architectural invariants classified by enforcement mechanism including ESLint rules, tests, and tsconfig settings. ([#9689](https://github.com/QwenLM/qwen-code/pull/9689)) + +### 中文摘要 + +#### 亮点 + +- Web Shell 通过限制转录保留并修剪过大的重放来防止内存溢出崩溃。 ([#9303](https://github.com/QwenLM/qwen-code/pull/9303)) +- 审查循环现在通过指出存在重复问题的文件或评论数量未减少的情况来说明不稳定的原因。 ([#9461](https://github.com/QwenLM/qwen-code/pull/9461)) +- Autofix 现在在超出增长预算时审计 PR 方法的简洁性,而不是立即停止自动化。 ([#9262](https://github.com/QwenLM/qwen-code/pull/9262)) +- Web Shell 现在会在后台 shell 运行时保持对话轮次展开,仅在完成后折叠。 ([#9632](https://github.com/QwenLM/qwen-code/pull/9632)) +- 创建的 GitHub PR 现在绑定到其源会话,提供可搜索列表和侧边栏徽章。 ([#9543](https://github.com/QwenLM/qwen-code/pull/9543)) +- 非阻塞斜杠命令现在扩展到 /theme 和 /tools 等十一个内置命令,允许在流式传输期间立即执行。 ([#9495](https://github.com/QwenLM/qwen-code/pull/9495)) + +#### Web Shell 体验优化 + +提升 Web Shell 的稳定性、UI 响应速度、流式传输性能以及活跃会话期间的对话处理能力。 + +- Web Shell 现在限制了守护进程转录保留并修剪过大的重放,以防止渲染器内存溢出崩溃。 ([#9303](https://github.com/QwenLM/qwen-code/pull/9303)) +- Web Shell 现在会在后台 shell 运行时保持对话轮次展开,仅在完成后折叠。 ([#9632](https://github.com/QwenLM/qwen-code/pull/9632)) +- 修复 Web Shell UI,使子代理提示正常滚动且并行代理组在完成后立即折叠。 ([#9640](https://github.com/QwenLM/qwen-code/pull/9640)) +- 为 Web Shell 中的 create-group 图标添加悬停提示,以便鼠标用户了解其功能。 ([#9400](https://github.com/QwenLM/qwen-code/pull/9400)) +- 更新对话加载指示器以使用 daemon 的 hasActivePrompt 状态,确保在长时间工具调用期间即使流式传输空闲也能保持可见。 ([#9631](https://github.com/QwenLM/qwen-code/pull/9631)) +- 防止 Web Shell 工具批准对话框在用户正在可编辑元素中输入时弹出并窃取键盘焦点。 ([#9609](https://github.com/QwenLM/qwen-code/pull/9609)) +- 通过减少主线程工作并在空闲 15 秒后重载过大转录文本来优化 Web Shell 流式传输性能。 ([#9672](https://github.com/QwenLM/qwen-code/pull/9672)) +- 根据会话活动而非 Goal 状态路由普通 Web Shell 消息,以改进轮次处理和插入逻辑。 ([#9667](https://github.com/QwenLM/qwen-code/pull/9667)) + +#### 审查与自动修复逻辑 + +增强审查循环解释、Autofix 审计、收敛观察及 PR 检测功能,以减少噪音并提升自动化可靠性。 + +- 审查循环现在会说明未稳定的原因,指出存在重复问题的文件或评论数量未减少的情况。 ([#9461](https://github.com/QwenLM/qwen-code/pull/9461)) +- Autofix 现在在超出增长预算时审计 PR 方法的简洁性和最小变更,而不是立即停止自动化。 ([#9262](https://github.com/QwenLM/qwen-code/pull/9262)) +- 修复了 autofix 繁忙 PR 检测逻辑以包含 pending 状态的工作流运行,防止因 GitHub 状态报告延迟导致的重复分发。 ([#9662](https://github.com/QwenLM/qwen-code/pull/9662)) +- 添加了 root-cause-triage 和 batch-fixes 等机器可读的收敛观察代码以支持自动化审查操作。 ([#9623](https://github.com/QwenLM/qwen-code/pull/9623)) +- 为审查代理分配仅含六个必要工具的专用子代理类型,以减少令牌使用并提升性能。 ([#9678](https://github.com/QwenLM/qwen-code/pull/9678)) +- 调整审查正文裁剪优先级,确保在丢弃其他建议内容前保留关于发现率的收敛观察。 ([#9715](https://github.com/QwenLM/qwen-code/pull/9715)) +- 将 /review 技能清理审计扩展至 Aone Code 目标,标记在审查窗口内未经过批准路径提交的评论或编辑。 ([#9633](https://github.com/QwenLM/qwen-code/pull/9633)) + +#### Aone 与 GitHub 集成 + +修复 Aone AGit-Flow 缓存、预提交检查及评论处理,并将 GitHub PR 绑定至会话以提升可追溯性。 + +- 修复了 Aone AGit-Flow CR 的增量审查缓存,通过计算本地头之间的差异而非依赖修正后失效的祖先测试。 ([#9630](https://github.com/QwenLM/qwen-code/pull/9630)) +- 启用了 Aone 目标上的 /review presubmit 功能,通过 a1 CLI 路由并比对作者身份来检测 self-MR 和头部分支漂移。 ([#9629](https://github.com/QwenLM/qwen-code/pull/9629)) +- 更新了 Aone 目标上 /review --comment 的输出,明确说明发布的评论未标记且仅加入通用讨论网关。 ([#9625](https://github.com/QwenLM/qwen-code/pull/9625)) +- 将创建的 GitHub PR 绑定到其源会话,提供可搜索列表和侧边栏徽章,每会话支持最多 10 个 PR 并按最新优先排序。 ([#9543](https://github.com/QwenLM/qwen-code/pull/9543)) +- 修复 Aone 审查支持,直接从平台生成规范 PR 链接,并更新 test-plan 路由和版本下限。 ([#9624](https://github.com/QwenLM/qwen-code/pull/9624)) +- 清理 Aone 写入路径上延迟的第五轮发现,确保空 --host 参数明确失败且测试桩正确防护回归。 ([#9604](https://github.com/QwenLM/qwen-code/pull/9604)) +- 为旧版 Git 添加安全回退路径,通过 GitHub 匿名 API 解析提交并直接下载归档,以安装公共 GitHub 扩展。 ([#9680](https://github.com/QwenLM/qwen-code/pull/9680)) + +#### 斜杠命令与工具 + +扩展非阻塞斜杠命令,稳定流式传输期间的菜单选择,并在会话恢复时还原交互式 HITL 提示。 + +- 将非阻塞斜杠命令扩展到 /theme 和 /tools 等十一个内置命令,允许在流式传输期间立即执行。 ([#9495](https://github.com/QwenLM/qwen-code/pull/9495)) +- 通过防止因无关上下文更新而重新运行建议搜索,稳定响应流式传输时的斜杠命令菜单选择。 ([#9508](https://github.com/QwenLM/qwen-code/pull/9508)) +- serve: restore ask_user_question HITL on session load/resume ([#9665](https://github.com/QwenLM/qwen-code/pull/9665)) +- 将导入扩展逻辑集成到 fetch-pr --since 中,以简化增量范围计算并减少 token 使用量。 ([#9332](https://github.com/QwenLM/qwen-code/pull/9332)) + +#### 安全与依赖项 + +修补高危 CVE 漏洞,防止沙箱镜像被篡改,并执行更严格的依赖项与工作流安全网关。 + +- 沙箱镜像现在绑定到其特定的拉取摘要,以防止在解析和使用步骤之间通过可变标签进行篡改。 ([#9527](https://github.com/QwenLM/qwen-code/pull/9527)) +- 升级了 OpenTelemetry 0.221.x 和 markdown-it 15 等依赖以修复高危 CVE,并将安全网关设为强制拦截。 ([#9584](https://github.com/QwenLM/qwen-code/pull/9584)) +- 提升 tar、protobufjs、dompurify 和 echarts 等易受攻击依赖项至修补版本,以解决 CVE 审计问题,无需更改代码或包范围。 ([#9703](https://github.com/QwenLM/qwen-code/pull/9703)) +- core: make list_directory opt-in (disabled by default) ([#9424](https://github.com/QwenLM/qwen-code/pull/9424)) + +#### SDK 与权限管理 + +更新 Python 和 Java SDK 以支持 auto 权限模式,统一所有客户端库的工具调用审批行为。 + +- 更新 Python 和 Java SDK 以支持 auto 权限模式,使其与 CLI 和 TypeScript SDK 在基于 LLM 的工具调用审批上保持一致。 ([#9003](https://github.com/QwenLM/qwen-code/pull/9003)) + +#### CI 与工件处理 + +修正 CI 回退评论,修复 Office 文件的工件下载逻辑,并通过正确的环境变量稳定验证网关。 + +- CI 回退评论不再错误地声称审查失败,如果同一运行已成功发布审查。 ([#9462](https://github.com/QwenLM/qwen-code/pull/9462)) +- 修复了工件处理逻辑,将目录展开为单文件下载并跳过隐藏文件,同时确保 Office 文档直接下载。 ([#9395](https://github.com/QwenLM/qwen-code/pull/9395)) +- 恢复 autofix verification-gate 启动时的 CI=true,防止因清理子进程缺少环境变量导致的测试不稳定。 ([#9649](https://github.com/QwenLM/qwen-code/pull/9649)) +- 将空闲看门狗超时排除在累计超时上限之外,使其不再阻塞 PR 但仍保留在日志中。 ([#9673](https://github.com/QwenLM/qwen-code/pull/9673)) + +#### 常规修复 + +解决包括会话恢复竞争、审查正文裁剪及守护进程状态同步在内的各类杂项问题。 + +- 修复跨归档竞争的会话恢复,优先在 REST、daemon ACP 和 embedded ACP 加载操作中使用活动存储副本。 ([#9513](https://github.com/QwenLM/qwen-code/pull/9513)) +- 移除 packages/core 中的根桶自导入并添加 ESLint 规则,防止循环依赖并强制架构边界。 ([#9635](https://github.com/QwenLM/qwen-code/pull/9635)) +- 重构 acp-integration 和 serve 内部结构以强制依赖边界,对用户无预期行为变更。 ([#9144](https://github.com/QwenLM/qwen-code/pull/9144)) +- 将 push-and-report 工作流逻辑移至单独的 Shell 脚本,在保持执行安全性的同时减小 YAML 文件体积。 ([#9653](https://github.com/QwenLM/qwen-code/pull/9653)) +- 为所有九种 CLI 语言字典添加了 Unset 翻译条目,以确保设置对话框的多语言显示一致性。 ([#9714](https://github.com/QwenLM/qwen-code/pull/9714)) +- review: report the address a drive's service actually bound ([#9655](https://github.com/QwenLM/qwen-code/pull/9655)) + +#### 其他变更 + +- 发布 CI 现在在安装依赖时禁用安装脚本,并需要核心维护者批准 security-checks 工作流的更改。 ([#9577](https://github.com/QwenLM/qwen-code/pull/9577)) +- 更正了工作流注释,准确说明自托管 ECS 池支持容器运行时执行。 ([#9575](https://github.com/QwenLM/qwen-code/pull/9575)) +- 文档化了 autofix 的新设计,将可信发布步骤与不可信代码执行隔离以增强安全性。 ([#9525](https://github.com/QwenLM/qwen-code/pull/9525)) +- 文档化了终端内联图片预览的渲染方式,包括限制、回退机制和会话恢复行为。 ([#8656](https://github.com/QwenLM/qwen-code/pull/8656)) +- 文档化了实验性 Session Workflow 设置,涵盖其默认状态、实时更新和 Web Shell 展示方式。 ([#8554](https://github.com/QwenLM/qwen-code/pull/8554)) +- 文档更新了 autofix 检查仅源自 patch 文本的说明,并概述了 issue-autofix 的时序约束。 ([#9652](https://github.com/QwenLM/qwen-code/pull/9652)) +- autofix: add an operator guide for /takeover from N ([#9622](https://github.com/QwenLM/qwen-code/pull/9622)) +- 修正 autofix round-seed 指南,明确任何前导空白(包括空格、制表符或换行)都会导致命令无法识别。 ([#9663](https://github.com/QwenLM/qwen-code/pull/9663)) +- 文档化了按执行机制分类的架构不变量,包括 ESLint 规则、测试和 tsconfig 设置。 ([#9689](https://github.com/QwenLM/qwen-code/pull/9689)) + +### Complete Change List (50 pull requests) + +#### Features + +- review: tell the author why a review loop is not settling ([#9461](https://github.com/QwenLM/qwen-code/pull/9461)) by @wenshao +- web-shell: keep a turn expanded while its background shell runs ([#9632](https://github.com/QwenLM/qwen-code/pull/9632)) by @ytahdn +- autofix: audit the approach instead of stopping on growth-budget breach ([#9262](https://github.com/QwenLM/qwen-code/pull/9262)) by @wenshao +- review: fold the one-hop import widening into fetch-pr --since ([#9332](https://github.com/QwenLM/qwen-code/pull/9332)) by @wenshao +- core: make list_directory opt-in (disabled by default) ([#9424](https://github.com/QwenLM/qwen-code/pull/9424)) by @DragonnZhang +- cli: extend non-blocking slash commands to more builtins ([#9495](https://github.com/QwenLM/qwen-code/pull/9495)) by @DragonnZhang +- review: disclose that Aone posts join the discussion gate only ([#9625](https://github.com/QwenLM/qwen-code/pull/9625)) by @wenshao +- review: detect self-MR on Aone targets in presubmit ([#9629](https://github.com/QwenLM/qwen-code/pull/9629)) by @wenshao +- web-shell: Bind GitHub PRs to sessions with sidebar badge and search ([#9543](https://github.com/QwenLM/qwen-code/pull/9543)) by @wenshao +- review: give the convergence observation a machine-readable half ([#9623](https://github.com/QwenLM/qwen-code/pull/9623)) by @wenshao +- review: report the address a drive's service actually bound ([#9655](https://github.com/QwenLM/qwen-code/pull/9655)) by @wenshao +- review: close Aone residual gaps — composeUrl, test-plan routing, a1 version floor ([#9624](https://github.com/QwenLM/qwen-code/pull/9624)) by @wenshao +- serve: restore ask_user_question HITL on session load/resume ([#9665](https://github.com/QwenLM/qwen-code/pull/9665)) by @doudouOUC + +#### Bug Fixes + +- ci: stop the fallback comment from denying a review it already posted ([#9462](https://github.com/QwenLM/qwen-code/pull/9462)) by @wenshao +- web-shell: bound daemon transcript retention to stop renderer OOM crashes ([#9303](https://github.com/QwenLM/qwen-code/pull/9303)) by @wenshao +- autofix: bind the sandbox image to its pulled digest ([#9527](https://github.com/QwenLM/qwen-code/pull/9527)) by @wenshao +- web-shell: settle parallel-agents collapse and unify agent detail transcript ([#9640](https://github.com/QwenLM/qwen-code/pull/9640)) by @ytahdn +- web-shell: show create-group tooltip ([#9400](https://github.com/QwenLM/qwen-code/pull/9400)) by @deggs7 +- artifacts: expand recorded directories into per-file artifacts ([#9395](https://github.com/QwenLM/qwen-code/pull/9395)) by @zjgzx1988 +- review: make the incremental cache work for Aone AGit-Flow CRs ([#9630](https://github.com/QwenLM/qwen-code/pull/9630)) by @wenshao +- autofix: include pending runs in the busy-PR enumeration ([#9662](https://github.com/QwenLM/qwen-code/pull/9662)) by @wenshao +- web-shell: use daemon live-state hasActivePrompt for loading indicator (#9487) ([#9631](https://github.com/QwenLM/qwen-code/pull/9631)) by @yiliang114 +- cli: keep slash menu selection stable while a response streams ([#9508](https://github.com/QwenLM/qwen-code/pull/9508)) by @yiliang114 +- web-shell: don't steal approval focus while the user is typing ([#9609](https://github.com/QwenLM/qwen-code/pull/9609)) by @yiliang114 +- core: support public GitHub extensions with older Git ([#9680](https://github.com/QwenLM/qwen-code/pull/9680)) by @yiliang114 +- ci: bump vulnerable dependencies to unblock CVE audit ([#9703](https://github.com/QwenLM/qwen-code/pull/9703)) by @yiliang114 +- review: audit Aone targets in cleanup's bypass tripwire ([#9633](https://github.com/QwenLM/qwen-code/pull/9633)) by @wenshao +- autofix: stop counting idle timeouts toward the timeout cap ([#9673](https://github.com/QwenLM/qwen-code/pull/9673)) by @wenshao +- web-shell: route goal messages by session activity ([#9667](https://github.com/QwenLM/qwen-code/pull/9667)) by @ytahdn +- autofix: pass CI=true through the gate's env -i launches ([#9649](https://github.com/QwenLM/qwen-code/pull/9649)) by @wenshao +- review: stop shedding the convergence observation first ([#9715](https://github.com/QwenLM/qwen-code/pull/9715)) by @wenshao +- review: clear the deferred Round-5 findings from the Aone write path ([#9604](https://github.com/QwenLM/qwen-code/pull/9604)) by @wenshao +- cli: Recover sessions across archive races ([#9513](https://github.com/QwenLM/qwen-code/pull/9513)) by @doudouOUC +- sdk: support "auto" permission mode ([#9003](https://github.com/QwenLM/qwen-code/pull/9003)) by @shenyankm + +#### Performance + +- web-shell: optimize streaming transcript rendering ([#9672](https://github.com/QwenLM/qwen-code/pull/9672)) by @ytahdn +- review: give review agents their own subagent type ([#9678](https://github.com/QwenLM/qwen-code/pull/9678)) by @wenshao + +#### Documentation + +- ci: the ECS pool does run containers — correct two comments that say it does not ([#9575](https://github.com/QwenLM/qwen-code/pull/9575)) by @wenshao +- autofix: design runner-level isolation for PAT-bearing steps ([#9525](https://github.com/QwenLM/qwen-code/pull/9525)) by @wenshao +- document inline terminal image previews ([#8656](https://github.com/QwenLM/qwen-code/pull/8656)) by @DragonnZhang +- document the Session Workflow setting ([#8554](https://github.com/QwenLM/qwen-code/pull/8554)) by @DragonnZhang +- autofix: pin the publish-side checks to the patch text ([#9652](https://github.com/QwenLM/qwen-code/pull/9652)) by @wenshao +- autofix: add an operator guide for /takeover from N ([#9622](https://github.com/QwenLM/qwen-code/pull/9622)) by @wenshao +- autofix: correct the round-seed guide on leading whitespace ([#9663](https://github.com/QwenLM/qwen-code/pull/9663)) by @wenshao +- classify architecture invariants by enforcement mechanism (#9152) ([#9689](https://github.com/QwenLM/qwen-code/pull/9689)) by @yiliang114 + +#### Internal Changes + +- chore(ci): Disable install scripts in release CI and guard security-checks workflow ([#9577](https://github.com/QwenLM/qwen-code/pull/9577)) by @yiliang114 +- chore(deps): Clear high-severity CVE baseline and harden the security gate ([#9584](https://github.com/QwenLM/qwen-code/pull/9584)) by @yiliang114 +- i18n(cli): translate Unset in the settings dialog ([#9714](https://github.com/QwenLM/qwen-code/pull/9714)) by @yiliang114 +- refactor(autofix): move the push-and-report body out of the workflow file ([#9653](https://github.com/QwenLM/qwen-code/pull/9653)) by @wenshao +- refactor(cli): keep acp-integration off serve internals (#8084) ([#9144](https://github.com/QwenLM/qwen-code/pull/9144)) by @yiliang114 +- refactor(core): remove root barrel self-imports and enforce the boundary ([#9635](https://github.com/QwenLM/qwen-code/pull/9635)) by @yiliang114 + +### New Contributors + +- @deggs7 made their first contribution in [#9400](https://github.com/QwenLM/qwen-code/pull/9400) + +**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.21.15...v0.22.0 + +## [0.21.15](https://github.com/QwenLM/qwen-code/releases/tag/v0.21.15) - 2026-08-20 + +### Highlights + +- Web Shell now supports inserting file attachments via composer or @ selection, with improved streaming performance and immediate sidebar synchronization. ([#9405](https://github.com/QwenLM/qwen-code/pull/9405), [#9477](https://github.com/QwenLM/qwen-code/pull/9477), [#9570](https://github.com/QwenLM/qwen-code/pull/9570), [#9533](https://github.com/QwenLM/qwen-code/pull/9533)) +- Qwen hybrid models now expose a simple Thinking toggle for reasoning control, and the stable qwen3.8-max model is available via /model. ([#9574](https://github.com/QwenLM/qwen-code/pull/9574), [#9383](https://github.com/QwenLM/qwen-code/pull/9383)) +- The --resume flag is now supported in /review and CI retries to continue interrupted reviews when the PR head has not moved. ([#9153](https://github.com/QwenLM/qwen-code/pull/9153)) +- Added support for authenticated HTTPS Git extension installs with configurable credential persistence for secure private repository cloning. ([#9458](https://github.com/QwenLM/qwen-code/pull/9458)) +- Tool approval and ask-user dialogs now appear as in-flow bottom sheets aligned to chat width for a more integrated experience. ([#9351](https://github.com/QwenLM/qwen-code/pull/9351)) +- Fixed issues where /rewind incorrectly dropped conversation history and duplicate tool-call IDs caused execution errors. ([#9331](https://github.com/QwenLM/qwen-code/pull/9331), [#9436](https://github.com/QwenLM/qwen-code/pull/9436)) + +### Breaking Changes + +No known breaking changes. + +### Web Shell Experience + +Web Shell now features improved streaming performance, unified file uploads, Goal v3 controls, and real-time sidebar synchronization. + +- Web Shell streaming output is now more responsive during long tasks by batching transcript delivery and avoiding expensive Markdown parsing on growing content. ([#9405](https://github.com/QwenLM/qwen-code/pull/9405)) +- Improved Web Shell performance by using live-state activity timestamps to refresh session recency and sort active lists without triggering rate-limited full catalog rescans. ([#9476](https://github.com/QwenLM/qwen-code/pull/9476)) +- Unifies file uploads in Web Shell to offer reference or upload options, storing attachments persistently with duplicate name handling. ([#9477](https://github.com/QwenLM/qwen-code/pull/9477)) +- Web Shell sidebar now immediately synchronizes session changes like renaming or deleting, while improving loading indicator spacing. ([#9533](https://github.com/QwenLM/qwen-code/pull/9533)) +- Web Shell now stops redundant session title catalog refreshes after resolving a display name, reducing unnecessary network requests. ([#9563](https://github.com/QwenLM/qwen-code/pull/9563)) +- Web Shell now supports inserting file attachments into active turns via the composer or @ selection, with preview and queue management. ([#9570](https://github.com/QwenLM/qwen-code/pull/9570)) +- WebShell adopts Goal v3 controls, allowing goals to be managed independently of chat messages with a compact composer row. ([#9393](https://github.com/QwenLM/qwen-code/pull/9393)) +- web-shell: fall back to execCommand copy in non-secure contexts ([#9540](https://github.com/QwenLM/qwen-code/pull/9540)) +- ui: collapse duplicate in-flight tool_group rendered from history + pending ([#9421](https://github.com/QwenLM/qwen-code/pull/9421)) + +### Review & Verification + +Enhanced review workflows with resume support, Aone Code integration, stricter verification disciplines, and accurate volume tracking. + +- The --resume flag is now supported in /review, review run, and CI retries to continue interrupted reviews when the PR head has not moved. ([#9153](https://github.com/QwenLM/qwen-code/pull/9153)) +- Review ledger markers now record the posted inline comment count for the current and previous rounds to track posting volume trends. ([#9413](https://github.com/QwenLM/qwen-code/pull/9413)) +- Review verifiers now enforce four run disciplines from live two-arm verification, including starting stateful targets from fresh state for each row. ([#9447](https://github.com/QwenLM/qwen-code/pull/9447)) +- review: clamp the posting volume at its origin, not only where it is written ([#9460](https://github.com/QwenLM/qwen-code/pull/9460)) +- review: keep the blocker in a COMMENT body every softening path reaches ([#9416](https://github.com/QwenLM/qwen-code/pull/9416)) +- review: add runtime-axis, table-sweep and isolation witness forms ([#9445](https://github.com/QwenLM/qwen-code/pull/9445)) +- Review verifier probes now run in private scratch worktrees to prevent race conditions with auditors reading the shared tree. ([#9221](https://github.com/QwenLM/qwen-code/pull/9221)) +- The review system now validates that consumer-facing contract documentation accurately matches the implemented code behavior. ([#9448](https://github.com/QwenLM/qwen-code/pull/9448)) +- The /review skill now supports posting comments and approvals to Aone Code via the a1 CLI when using the --comment flag. ([#9491](https://github.com/QwenLM/qwen-code/pull/9491)) + +### Autofix & CI Reliability + +Resolved GitHub Actions bottlenecks, fixed workflow queuing deadlocks, and enforced test coverage for automated code fixes. + +- Fixed a CI failure in the flakiness gate by diffing against a pinned base OID instead of resolving HEAD^1, preventing intermittent access errors on the persistent pool. ([#9464](https://github.com/QwenLM/qwen-code/pull/9464)) +- Fixes the flake-gate CI step by computing git diffs before environment scrubbing to prevent access errors on shallow merge-ref objects. ([#9468](https://github.com/QwenLM/qwen-code/pull/9468)) +- Clones the autonomous-fix workflow into a new entity to bypass a GitHub Actions backend issue causing runs to stick in queued state. ([#9482](https://github.com/QwenLM/qwen-code/pull/9482)) +- Added a comment to the autofix workflow file to force GitHub Actions to re-register triggers that had silently stopped executing scheduled and event-based runs. ([#9479](https://github.com/QwenLM/qwen-code/pull/9479)) +- Reduced the size of the qwen-autofix.yml workflow file to stay under GitHub's 500 KB limit, restoring silent-failing automated fix runs that had stopped executing. ([#9517](https://github.com/QwenLM/qwen-code/pull/9517)) +- The shepherd no longer counts permanently queued workflow runs with zero jobs as in-flight, preventing deadlocks that blocked autofix loops for hours. ([#9518](https://github.com/QwenLM/qwen-code/pull/9518)) +- Autofix now requires mutation probes to verify that new guards or branches added in a round are covered by tests before committing changes. ([#9578](https://github.com/QwenLM/qwen-code/pull/9578)) +- Autofix finding replies are now idempotent, skipping duplicate posts when the thread already contains an identical comment from the bot. ([#9463](https://github.com/QwenLM/qwen-code/pull/9463)) +- Release pull requests are now authored by a dedicated bot account instead of the GitHub Actions token, enabling finalization in organizations that restrict Actions-created PRs. ([#9592](https://github.com/QwenLM/qwen-code/pull/9592)) + +### Session & Conversation Management + +Introduced conversation isolation primitives, privacy-preserving ledgers, and fixed history retention issues during compression. + +- Introduces primitives for standalone conversation isolation, enabling deterministic session identity and validated lineage checks. ([#9341](https://github.com/QwenLM/qwen-code/pull/9341)) +- Sessions now persist a privacy-preserving ledger of prompt outcomes to enable accurate cold-load reconciliation without storing user content. ([#9426](https://github.com/QwenLM/qwen-code/pull/9426)) +- Fixed an issue where /rewind would incorrectly drop conversation history after /compress-fast by properly distinguishing rule-based compression markers from summarizing boundaries. ([#9331](https://github.com/QwenLM/qwen-code/pull/9331)) +- Standalone conversation primitives now safely adopt concurrently created directories and enforce strict integrity budgets for JSONL readers. ([#9512](https://github.com/QwenLM/qwen-code/pull/9512)) +- Skipped duplicate tool results during ACP loop detection are now persisted as terminal errors, preventing missing tool results in transcript replays after session resumes. ([#9593](https://github.com/QwenLM/qwen-code/pull/9593)) + +### Agent Capabilities & Models + +Added stable qwen3.8-max model, simplified Thinking toggles, enabled DingTalk media access, and improved tool-call handling. + +- Added the stable qwen3.8-max model to the Token Plan model list, allowing users to select it via /model alongside the existing preview version. ([#9383](https://github.com/QwenLM/qwen-code/pull/9383)) +- Qwen hybrid models now expose a simple Thinking toggle for reasoning control, removing complex effort tiers for supported versions. ([#9574](https://github.com/QwenLM/qwen-code/pull/9574)) +- Enables DingTalk to download and attach media from quoted messages, allowing agents to inspect referenced images and files. ([#9347](https://github.com/QwenLM/qwen-code/pull/9347)) +- Treats duplicate provider tool-call IDs as replays only when arguments match, allowing ID collisions with different arguments to execute normally. ([#9436](https://github.com/QwenLM/qwen-code/pull/9436)) +- Prevents upstream fail-fast placeholder responses like '(request timeout)' from appearing in chat by retrying them internally. ([#8938](https://github.com/QwenLM/qwen-code/pull/8938)) +- cli: surface the daemon duplicate tool-call breaker as a visible loop-detected stop ([#9435](https://github.com/QwenLM/qwen-code/pull/9435)) +- core: reject run_in_background: false for named teammates ([#9433](https://github.com/QwenLM/qwen-code/pull/9433)) +- core: clarify list_agents excludes Agent Team teammates ([#9432](https://github.com/QwenLM/qwen-code/pull/9432)) + +### Extensions & Git Integration + +Enabled authenticated HTTPS Git installs, batch Extension state updates, and PTY worker support for managed terminal sessions. + +- Added support for authenticated HTTPS Git extension installs with configurable credential persistence, enabling secure cloning of private repositories via the daemon. ([#9458](https://github.com/QwenLM/qwen-code/pull/9458)) +- Added batch APIs to update Extension activation states for up to 100 extensions globally or for specific trusted workspaces. ([#8788](https://github.com/QwenLM/qwen-code/pull/8788)) +- Adds PTY worker support to enable managed Agent View sessions with local terminal hosts and authenticated stream forwarding. ([#7800](https://github.com/QwenLM/qwen-code/pull/7800)) + +### Observability & Diagnostics + +Exposed V8 heap metrics, linked distributed tracing contexts, and routed unrecognized diagnostics to bounded sidechannels. + +- ACP child processes now track and report V8 old-generation heap metrics, including peak committed memory and major-GC counts, in daemon status. ([#9380](https://github.com/QwenLM/qwen-code/pull/9380)) +- Links daemon HTTP request spans to inbound W3C traceparent headers to maintain continuous distributed tracing context. ([#9391](https://github.com/QwenLM/qwen-code/pull/9391)) +- Routes unrecognized diagnostics to a bounded sidechannel instead of cluttering the main transcript blocks with debug entries. ([#9202](https://github.com/QwenLM/qwen-code/pull/9202)) +- The bridge now advances a strictly monotonic per-session watermark and exposes it via BridgeSessionSummary.updatedAt in the live-state API. ([#9396](https://github.com/QwenLM/qwen-code/pull/9396)) + +### CLI & Workflow APIs + +Added context file visibility, structured Workflow runtime models, and support for posting comments via a1 CLI. + +- Added a one-time INFO message to the CLI that lists attached context files above the first user prompt, making invisible system prompt attachments visible in the chat. ([#8855](https://github.com/QwenLM/qwen-code/pull/8855)) +- Exposes a structured runtime model for Workflow execution to record lifecycle events, persist state, and support cancellation. ([#9034](https://github.com/QwenLM/qwen-code/pull/9034)) +- Attachment uploads now send filenames as encoded URL query parameters instead of custom headers to prevent cross-origin issues. ([#9567](https://github.com/QwenLM/qwen-code/pull/9567)) +- Suppresses Homebrew update notifications when local metadata confirms no newer version is available, preventing false alerts. ([#9502](https://github.com/QwenLM/qwen-code/pull/9502)) + +### Other Changes + +- Tool approval and ask-user dialogs now appear as in-flow bottom sheets aligned to chat width, and the agent-launch dialog defaults focus to allow. ([#9351](https://github.com/QwenLM/qwen-code/pull/9351)) +- Ensures image payload eviction remains consistent across chat history and forks by rewriting large images to stable text markers. ([#9423](https://github.com/QwenLM/qwen-code/pull/9423)) +- web-shell: add transcript contract prevalidation ([#9388](https://github.com/QwenLM/qwen-code/pull/9388)) +- Refactored CLI internals to move shared helpers for findings validation into a common utility package, ensuring consistent behavior across review commands. ([#9345](https://github.com/QwenLM/qwen-code/pull/9345)) +- Refactored the review pipeline to define certification bar atoms exactly once in a new library module, eliminating duplicate predicate logic across multiple files. ([#9473](https://github.com/QwenLM/qwen-code/pull/9473)) +- Refactors certification path validation to use a single helper function, ensuring consistent exact-path matching across atoms. ([#9484](https://github.com/QwenLM/qwen-code/pull/9484)) +- Adds --provenance to npm publish commands to generate signed attestations verifying package origin from CI pipelines. ([#9532](https://github.com/QwenLM/qwen-code/pull/9532)) +- Centralized ownership for live-task tool-name and delegated prompt-length contracts to prevent silent drift between packages. ([#9497](https://github.com/QwenLM/qwen-code/pull/9497)) +- Fixed a build failure on main caused by missing deleteSessionAttachments mock in the case-variant delete test. ([#9551](https://github.com/QwenLM/qwen-code/pull/9551)) +- E2E tests now retry cleanup removals on transient ENOTEMPTY errors to fix flaky failures in recurring cron job scenarios. ([#9559](https://github.com/QwenLM/qwen-code/pull/9559)) +- chore(ci): Drop NPM_TOKEN in favor of npm Trusted Publishing ([#9552](https://github.com/QwenLM/qwen-code/pull/9552)) +- The autofix brake now treats a BLOCKED handoff as a valid round outcome, preventing false failures when the agent stops to request human intervention. ([#9297](https://github.com/QwenLM/qwen-code/pull/9297)) +- Fixed the diff-read test fixture to prevent double-encoding and ensure correct gating for failed diff read scenarios. ([#9539](https://github.com/QwenLM/qwen-code/pull/9539)) +- Incremental review now builds its scope directly from the PR diff, ensuring every reviewed line matches GitHub's display without requiring post-hoc proof. ([#9267](https://github.com/QwenLM/qwen-code/pull/9267)) +- CI now heals workspaces replaced by symlinks or non-directories before wiping, preventing runner wedges caused by hardened guard refusals. ([#9498](https://github.com/QwenLM/qwen-code/pull/9498)) +- The serve A/B test suite can now stage transcripts on disk before requests, enabling validation of session state behaviors previously unreachable with empty homes. ([#9444](https://github.com/QwenLM/qwen-code/pull/9444)) + +### 中文摘要 + +#### 亮点 + +- Web Shell 现支持通过 composer 或 @ 选择插入文件附件,优化了流式输出性能并实现侧边栏即时同步。 ([#9405](https://github.com/QwenLM/qwen-code/pull/9405), [#9477](https://github.com/QwenLM/qwen-code/pull/9477), [#9570](https://github.com/QwenLM/qwen-code/pull/9570), [#9533](https://github.com/QwenLM/qwen-code/pull/9533)) +- Qwen 混合模型现提供简单的 Thinking 切换以控制推理,稳定的 qwen3.8-max 模型可通过 /model 选择。 ([#9574](https://github.com/QwenLM/qwen-code/pull/9574), [#9383](https://github.com/QwenLM/qwen-code/pull/9383)) +- --resume 标志现支持用于 /review 和 CI 重试,以便在 PR 头部未移动时继续中断的审查。 ([#9153](https://github.com/QwenLM/qwen-code/pull/9153)) +- 增加了对带可配置凭据持久性的 authenticated HTTPS Git 扩展安装支持,实现安全克隆私有仓库。 ([#9458](https://github.com/QwenLM/qwen-code/pull/9458)) +- 工具审批和询问用户对话框现在作为与聊天宽度对齐的流内底部表单显示,体验更集成。 ([#9351](https://github.com/QwenLM/qwen-code/pull/9351)) +- 修复了 /rewind 错误丢弃对话历史以及重复 tool-call ID 导致执行错误的问题。 ([#9331](https://github.com/QwenLM/qwen-code/pull/9331), [#9436](https://github.com/QwenLM/qwen-code/pull/9436)) + +#### Web Shell 体验 + +Web Shell 现在具备更优的流式性能、统一文件上传、Goal v3 控制及实时侧边栏同步功能。 + +- Web Shell 通过批量处理转录交付并避免对增长内容进行昂贵的 Markdown 解析,提升了长任务期间流式输出的响应速度。 ([#9405](https://github.com/QwenLM/qwen-code/pull/9405)) +- 通过利用实时状态活动时间戳刷新会话最近性并排序活动列表,提升了 Web Shell 性能,避免了受限的全量目录重新扫描。 ([#9476](https://github.com/QwenLM/qwen-code/pull/9476)) +- 统一 Web Shell 中的文件上传,提供引用或上传选项,并持久化存储附件且处理重复文件名。 ([#9477](https://github.com/QwenLM/qwen-code/pull/9477)) +- Web Shell 侧边栏现在可立即同步重命名或删除等会话变更,并优化了加载指示器的间距。 ([#9533](https://github.com/QwenLM/qwen-code/pull/9533)) +- Web Shell 在解析显示名称后停止多余的会话标题目录刷新,减少不必要的网络请求。 ([#9563](https://github.com/QwenLM/qwen-code/pull/9563)) +- Web Shell 现在支持通过 composer 或 @ 选择将文件附件插入进行中轮次,包含预览和队列管理。 ([#9570](https://github.com/QwenLM/qwen-code/pull/9570)) +- WebShell 采用 Goal v3 控制,允许独立于聊天消息管理目标,并配备紧凑的 composer 行。 ([#9393](https://github.com/QwenLM/qwen-code/pull/9393)) +- web-shell: fall back to execCommand copy in non-secure contexts ([#9540](https://github.com/QwenLM/qwen-code/pull/9540)) +- ui: collapse duplicate in-flight tool_group rendered from history + pending ([#9421](https://github.com/QwenLM/qwen-code/pull/9421)) + +#### 审查与验证 + +通过恢复支持、Aone Code 集成、更严格的验证准则及准确的体量追踪,增强了审查工作流。 + +- --resume 标志现在支持用于 /review、review run 和 CI 重试,以便在 PR 头部未移动时继续中断的审查。 ([#9153](https://github.com/QwenLM/qwen-code/pull/9153)) +- 审查 ledger 标记现在记录当前和上一轮的已发布内联评论数量,以跟踪发布量趋势。 ([#9413](https://github.com/QwenLM/qwen-code/pull/9413)) +- 审查验证器现在执行来自实时双臂验证的四个运行准则,包括为每一行从全新状态启动有状态目标。 ([#9447](https://github.com/QwenLM/qwen-code/pull/9447)) +- 通过在计数来源处应用共享 volume reader 限制,修复了 review 发布量报告中的不一致问题,确保所有输出表面的数据一致。 ([#9460](https://github.com/QwenLM/qwen-code/pull/9460)) +- review: keep the blocker in a COMMENT body every softening path reaches ([#9416](https://github.com/QwenLM/qwen-code/pull/9416)) +- 扩展了验证器的 brief,增加了用于运行时轴验证、表扫描影响分析和隔离测试的新见证形式,以处理关于未发布版本和硬编码表的声明。 ([#9445](https://github.com/QwenLM/qwen-code/pull/9445)) +- Review verifier 探针现在在私有临时工作树中运行,以防止与读取共享树的审计器发生竞态条件。 ([#9221](https://github.com/QwenLM/qwen-code/pull/9221)) +- review 系统现在验证面向消费者的合同文档是否准确匹配已实现的代码行为。 ([#9448](https://github.com/QwenLM/qwen-code/pull/9448)) +- /review 技能现在支持通过 a1 CLI 的 --comment 标志向 Aone Code 发布评论和批准意见。 ([#9491](https://github.com/QwenLM/qwen-code/pull/9491)) + +#### Autofix 与 CI 可靠性 + +解决了 GitHub Actions 瓶颈,修复了工作流排队死锁,并对自动代码修复强制执行测试覆盖。 + +- 修复了 flakiness gate 中的 CI 故障,改为针对固定的 base OID 进行 diff,避免了在持久化池上解析 HEAD^1 时的间歇性访问错误。 ([#9464](https://github.com/QwenLM/qwen-code/pull/9464)) +- 通过在环境清理前计算 git 差异来修复 flake-gate CI 步骤,防止浅合并引用对象的访问错误。 ([#9468](https://github.com/QwenLM/qwen-code/pull/9468)) +- 将 autonomous-fix 工作流克隆到新实体,以绕过导致运行卡在排队状态的 GitHub Actions 后端问题。 ([#9482](https://github.com/QwenLM/qwen-code/pull/9482)) +- 在 autofix 工作流中添加注释以强制 GitHub Actions 重新注册触发器,修复了定时和事件驱动运行静默停止的问题。 ([#9479](https://github.com/QwenLM/qwen-code/pull/9479)) +- 减小了 qwen-autofix.yml 工作流文件的大小以保持在 GitHub 500 KB 限制内,恢复了此前因超限而静默失败的自动修复运行。 ([#9517](https://github.com/QwenLM/qwen-code/pull/9517)) +- Shepherd 不再将零任务的永久排队运行视为进行中,避免了阻碍 autofix 循环数小时的死锁。 ([#9518](https://github.com/QwenLM/qwen-code/pull/9518)) +- Autofix 现在要求通过变异探测验证新增的防护或分支在提交前已被测试覆盖。 ([#9578](https://github.com/QwenLM/qwen-code/pull/9578)) +- Autofix 查找回复现已幂等,若线程中已存在机器人发布的相同评论,则跳过重复发帖。 ([#9463](https://github.com/QwenLM/qwen-code/pull/9463)) +- 发布 PR 现在由专用机器人账户而非 GitHub Actions 令牌创建,使在限制 Actions 创建 PR 的组织中也能完成发布。 ([#9592](https://github.com/QwenLM/qwen-code/pull/9592)) + +#### 会话与对话管理 + +引入了对话隔离原语和保护隐私的分类账,并修复了压缩过程中的历史记录保留问题。 + +- 引入独立会话隔离原语,支持确定性会话身份验证和谱系检查。 ([#9341](https://github.com/QwenLM/qwen-code/pull/9341)) +- 会话现在持久化一个保护隐私的提示结果分类账,以便在不存储用户内容的情况下实现准确的冷加载对账。 ([#9426](https://github.com/QwenLM/qwen-code/pull/9426)) +- 修复了 /rewind 在 /compress-fast 之后错误丢弃对话历史的问题,方法是正确区分基于规则的压缩标记和总结边界。 ([#9331](https://github.com/QwenLM/qwen-code/pull/9331)) +- 独立对话原语现在能安全采纳并发创建的目录,并对 JSONL 读取器执行严格的完整性预算。 ([#9512](https://github.com/QwenLM/qwen-code/pull/9512)) +- ACP 循环检测期间跳过的重复工具结果现在会持久化为终端错误,避免会话恢复后转录重放时出现缺失的工具结果。 ([#9593](https://github.com/QwenLM/qwen-code/pull/9593)) + +#### Agent 能力与模型 + +添加了稳定的 qwen3.8-max 模型,简化了 Thinking 切换,启用了 DingTalk 媒体访问,并改进了工具调用处理。 + +- 将稳定的 qwen3.8-max 模型添加到 Token Plan 模型列表中,允许用户通过 /model 选择该模型以及现有的预览版本。 ([#9383](https://github.com/QwenLM/qwen-code/pull/9383)) +- Qwen 混合模型现在暴露简单的 Thinking 切换以控制推理,为支持的版本移除了复杂的 effort 层级。 ([#9574](https://github.com/QwenLM/qwen-code/pull/9574)) +- 使 DingTalk 能够下载并附加引用消息中的媒体,让 agent 可以检查引用的图片和文件。 ([#9347](https://github.com/QwenLM/qwen-code/pull/9347)) +- 仅当参数匹配时将重复的 provider tool-call ID 视为重放,允许参数不同的 ID 冲突正常执行。 ([#9436](https://github.com/QwenLM/qwen-code/pull/9436)) +- 防止上游快速失败占位符响应(如 '(request timeout)')显示在聊天中,改为内部重试。 ([#8938](https://github.com/QwenLM/qwen-code/pull/8938)) +- cli: surface the daemon duplicate tool-call breaker as a visible loop-detected stop ([#9435](https://github.com/QwenLM/qwen-code/pull/9435)) +- core: reject run_in_background: false for named teammates ([#9433](https://github.com/QwenLM/qwen-code/pull/9433)) +- core: clarify list_agents excludes Agent Team teammates ([#9432](https://github.com/QwenLM/qwen-code/pull/9432)) + +#### 扩展与 Git 集成 + +启用了认证 HTTPS Git 安装、批量扩展状态更新以及用于托管终端会话的 PTY worker 支持。 + +- 增加了对带有可配置凭据持久性的 authenticated HTTPS Git 扩展安装的支持,实现了通过 daemon 安全克隆私有仓库的功能。 ([#9458](https://github.com/QwenLM/qwen-code/pull/9458)) +- 添加了批量 API,用于全局更新多达 100 个扩展的激活状态或针对特定受信任工作区进行更新。 ([#8788](https://github.com/QwenLM/qwen-code/pull/8788)) +- 添加 PTY worker 支持以启用托管 Agent View 会话,包含本地终端主机和认证流转发。 ([#7800](https://github.com/QwenLM/qwen-code/pull/7800)) + +#### 可观测性与诊断 + +暴露了 V8 堆指标,链接了分布式追踪上下文,并将未识别的诊断路由到有界的侧通道。 + +- ACP 子进程现在跟踪并在 daemon 状态中报告 V8 老生代堆指标,包括峰值提交内存和主要 GC 计数。 ([#9380](https://github.com/QwenLM/qwen-code/pull/9380)) +- 将 daemon HTTP 请求跨度链接到入站 W3C traceparent 头,以维持连续的分布式追踪上下文。 ([#9391](https://github.com/QwenLM/qwen-code/pull/9391)) +- 将未识别的诊断路由到有界的侧通道,而不是用调试条目杂乱主转录块。 ([#9202](https://github.com/QwenLM/qwen-code/pull/9202)) +- Bridge 现在推进严格的每会话单调水印,并通过 live-state API 中的 BridgeSessionSummary.updatedAt 暴露该值。 ([#9396](https://github.com/QwenLM/qwen-code/pull/9396)) + +#### CLI 与工作流 API + +增加了上下文文件可见性、结构化工作流运行时模型,并支持通过 a1 CLI 发布评论。 + +- 在 CLI 中增加了一次性 INFO 消息,在首个用户提示上方列出附加的上下文文件,使原本不可见的系统提示附件在聊天中可见。 ([#8855](https://github.com/QwenLM/qwen-code/pull/8855)) +- 暴露 Workflow 执行的结构化运行时模型,用于记录生命周期事件、持久化状态并支持取消操作。 ([#9034](https://github.com/QwenLM/qwen-code/pull/9034)) +- 附件上传现在将文件名作为编码的 URL 查询参数发送而非自定义头,以避免跨域问题。 ([#9567](https://github.com/QwenLM/qwen-code/pull/9567)) +- 当本地元数据确认无更新版本时抑制 Homebrew 更新通知,防止误报。 ([#9502](https://github.com/QwenLM/qwen-code/pull/9502)) + +#### 其他变更 + +- 工具审批和询问用户对话框现在作为与聊天宽度对齐的流内底部表单显示,agent-launch 对话框默认聚焦于允许。 ([#9351](https://github.com/QwenLM/qwen-code/pull/9351)) +- 通过将大图像重写为稳定文本标记,确保图像负载驱逐在聊天历史和分支间保持一致。 ([#9423](https://github.com/QwenLM/qwen-code/pull/9423)) +- web-shell: add transcript contract prevalidation ([#9388](https://github.com/QwenLM/qwen-code/pull/9388)) +- 重构 CLI 内部结构,将共享的 findings 验证助手移至通用工具包,确保审查命令间行为一致。 ([#9345](https://github.com/QwenLM/qwen-code/pull/9345)) +- 重构审查管道,在新库模块中唯一定义认证栏原子,消除了多个文件中的重复谓词逻辑。 ([#9473](https://github.com/QwenLM/qwen-code/pull/9473)) +- 重构认证路径验证以使用单一辅助函数,确保跨原子的一致性精确路径匹配。 ([#9484](https://github.com/QwenLM/qwen-code/pull/9484)) +- 向 npm publish 命令添加 --provenance 以生成签名证明,验证包源自 CI 流水线。 ([#9532](https://github.com/QwenLM/qwen-code/pull/9532)) +- 集中管理 live-task tool-name 和 delegated prompt-length 契约的所有权,防止包之间出现静默偏差。 ([#9497](https://github.com/QwenLM/qwen-code/pull/9497)) +- 修复了因 case-variant delete 测试中缺少 deleteSessionAttachments mock 而导致 main 分支构建失败的问题。 ([#9551](https://github.com/QwenLM/qwen-code/pull/9551)) +- E2E 测试现在会在遇到瞬态 ENOTEMPTY 错误时重试清理删除,以修复循环 cron 作业场景中的不稳定失败。 ([#9559](https://github.com/QwenLM/qwen-code/pull/9559)) +- chore(ci): Drop NPM_TOKEN in favor of npm Trusted Publishing ([#9552](https://github.com/QwenLM/qwen-code/pull/9552)) +- autofix 刹车现在将 BLOCKED 移交视为有效的轮次结果,防止代理停止请求人工干预时出现误报失败。 ([#9297](https://github.com/QwenLM/qwen-code/pull/9297)) +- 修复了 diff-read 测试夹具以防止双重编码,并确保失败 diff 读取场景的正确门控。 ([#9539](https://github.com/QwenLM/qwen-code/pull/9539)) +- 增量审查现在直接从 PR 差异构建范围,确保每行审查内容与 GitHub 显示一致,无需事后验证。 ([#9267](https://github.com/QwenLM/qwen-code/pull/9267)) +- CI 现在会在清理前修复被符号链接或非目录替换的工作区,防止因硬性防护拒绝导致的运行器卡死。 ([#9498](https://github.com/QwenLM/qwen-code/pull/9498)) +- Serve A/B 测试套件现在可在请求前将转录文件暂存到磁盘,从而验证此前在空主目录下无法触及的会话状态行为。 ([#9444](https://github.com/QwenLM/qwen-code/pull/9444)) + +### Complete Change List (67 pull requests) + +#### Features + +- web-shell: approval and ask-user dialogs as in-flow sheets; fix background-agent false failure ([#9351](https://github.com/QwenLM/qwen-code/pull/9351)) by @ytahdn +- serve: Add live-state session activity watermark ([#9396](https://github.com/QwenLM/qwen-code/pull/9396)) by @doudouOUC +- serve: measure ACP child peak old-generation heap ([#9380](https://github.com/QwenLM/qwen-code/pull/9380)) by @doudouOUC +- review: wire --resume through /review, review run and the CI retry ([#9153](https://github.com/QwenLM/qwen-code/pull/9153)) by @wenshao +- review: record each round's posting volume in the ledger marker ([#9413](https://github.com/QwenLM/qwen-code/pull/9413)) by @wenshao +- review: teach verifiers four run disciplines from a live two-arm verification ([#9447](https://github.com/QwenLM/qwen-code/pull/9447)) by @wenshao +- daemon: add batch extension activation APIs ([#8788](https://github.com/QwenLM/qwen-code/pull/8788)) by @callmeYe +- providers: add qwen3.8-max to Token Plan model list ([#9383](https://github.com/QwenLM/qwen-code/pull/9383)) by @qqqys +- extensions: support authenticated HTTPS Git installs ([#9458](https://github.com/QwenLM/qwen-code/pull/9458)) by @callmeYe +- telemetry: link daemon HTTP request spans to inbound W3C traceparent ([#9391](https://github.com/QwenLM/qwen-code/pull/9391)) by @chiga0 +- web-shell: add transcript contract prevalidation ([#9388](https://github.com/QwenLM/qwen-code/pull/9388)) by @water-in-stone +- web-shell: Consume live-state session activity timestamps ([#9476](https://github.com/QwenLM/qwen-code/pull/9476)) by @doudouOUC +- cli: show loaded context files alongside the first prompt ([#8855](https://github.com/QwenLM/qwen-code/pull/8855)) by @ZijianZhang989 +- review: add runtime-axis, table-sweep and isolation witness forms ([#9445](https://github.com/QwenLM/qwen-code/pull/9445)) by @wenshao +- cli: Add agent view PTY workers ([#7800](https://github.com/QwenLM/qwen-code/pull/7800)) by @ZijianZhang989 +- core: expose workflow execution state ([#9034](https://github.com/QwenLM/qwen-code/pull/9034)) by @qqqys +- cli: Add standalone conversation isolation primitives ([#9341](https://github.com/QwenLM/qwen-code/pull/9341)) by @doudouOUC +- web-shell: unify file uploads and references ([#9477](https://github.com/QwenLM/qwen-code/pull/9477)) by @ytahdn +- serve: persist prompt terminal ledger for cold-load reconciliation ([#9426](https://github.com/QwenLM/qwen-code/pull/9426)) by @chiga0 +- review: rule on contract documentation, and matrix layered guards ([#9448](https://github.com/QwenLM/qwen-code/pull/9448)) by @wenshao +- web-shell: support file attachments in mid-turn messages ([#9570](https://github.com/QwenLM/qwen-code/pull/9570)) by @ytahdn +- register toggle-only reasoning for Qwen hybrid models ([#9574](https://github.com/QwenLM/qwen-code/pull/9574)) by @callmeYe +- web-shell: adopt canonical Goal v3 controls ([#9393](https://github.com/QwenLM/qwen-code/pull/9393)) by @qqqys +- review: post --comment reviews to Aone Code via the a1 CLI ([#9491](https://github.com/QwenLM/qwen-code/pull/9491)) by @wenshao + +#### Bug Fixes + +- triage: diff the flake-gate file list against the pinned base OID ([#9464](https://github.com/QwenLM/qwen-code/pull/9464)) by @yiliang114 +- cli: surface the daemon duplicate tool-call breaker as a visible loop-detected stop ([#9435](https://github.com/QwenLM/qwen-code/pull/9435)) by @doudouOUC +- cli: prevent /rewind from dropping conversation history after /compress-fast ([#9331](https://github.com/QwenLM/qwen-code/pull/9331)) by @yiliang114 +- core: reject run_in_background: false for named teammates ([#9433](https://github.com/QwenLM/qwen-code/pull/9433)) by @yiliang114 +- review: clamp the posting volume at its origin, not only where it is written ([#9460](https://github.com/QwenLM/qwen-code/pull/9460)) by @wenshao +- core: clarify list_agents excludes Agent Team teammates ([#9432](https://github.com/QwenLM/qwen-code/pull/9432)) by @yiliang114 +- core: reject upstream fail-fast placeholder responses ([#8938](https://github.com/QwenLM/qwen-code/pull/8938)) by @yiliang114 +- core: isolate image payload eviction state ([#9423](https://github.com/QwenLM/qwen-code/pull/9423)) by @yiliang114 +- core: treat duplicate provider tool-call ids as replays only when arguments match ([#9436](https://github.com/QwenLM/qwen-code/pull/9436)) by @doudouOUC +- triage: compute the flake-gate diff before the env -i re-exec ([#9468](https://github.com/QwenLM/qwen-code/pull/9468)) by @yiliang114 +- sdk: route unrecognized diagnostics onto a bounded transcript sidechannel ([#9202](https://github.com/QwenLM/qwen-code/pull/9202)) by @yiliang114 +- ci: clone qwen-autofix into a recovery workflow entity ([#9482](https://github.com/QwenLM/qwen-code/pull/9482)) by @wenshao +- ci: no-op touch to re-register the autofix workflow triggers ([#9479](https://github.com/QwenLM/qwen-code/pull/9479)) by @wenshao +- review: keep the blocker in a COMMENT body every softening path reaches ([#9416](https://github.com/QwenLM/qwen-code/pull/9416)) by @wenshao +- ci: keep qwen-autofix.yml under GitHub's 500 KB start-runs limit ([#9517](https://github.com/QwenLM/qwen-code/pull/9517)) by @wenshao +- dingtalk: attach media from quoted messages ([#9347](https://github.com/QwenLM/qwen-code/pull/9347)) by @qqqys +- cli: suppress Homebrew update notification when brew has nothing newer (#9493) ([#9502](https://github.com/QwenLM/qwen-code/pull/9502)) by @yiliang114 +- web-shell: keep sidebar sessions synchronized ([#9533](https://github.com/QwenLM/qwen-code/pull/9533)) by @ytahdn +- cli: give the case-variant delete test the attachments mock ([#9551](https://github.com/QwenLM/qwen-code/pull/9551)) by @wenshao +- review: run verifier probes in a private scratch worktree (#9207) ([#9221](https://github.com/QwenLM/qwen-code/pull/9221)) by @wenshao +- serve: Harden standalone conversation primitives ([#9512](https://github.com/QwenLM/qwen-code/pull/9512)) by @doudouOUC +- tests: retry acp-cron cleanup rm on transient ENOTEMPTY ([#9559](https://github.com/QwenLM/qwen-code/pull/9559)) by @yiliang114 +- autofix: make the brake's BLOCKED handoff a first-class round outcome ([#9297](https://github.com/QwenLM/qwen-code/pull/9297)) by @wenshao +- web-shell: Stop repeated session title catalog refreshes ([#9563](https://github.com/QwenLM/qwen-code/pull/9563)) by @doudouOUC +- daemon: avoid custom attachment upload header ([#9567](https://github.com/QwenLM/qwen-code/pull/9567)) by @ytahdn +- ci: stop counting wedged queued runs as in-flight in the shepherd ([#9518](https://github.com/QwenLM/qwen-code/pull/9518)) by @wenshao +- ci: heal a symlinked workspace instead of wedging the runner on it ([#9498](https://github.com/QwenLM/qwen-code/pull/9498)) by @wenshao +- autofix: mutation-probe new guards before a round commits ([#9578](https://github.com/QwenLM/qwen-code/pull/9578)) by @wenshao +- ci: make autofix finding replies idempotent ([#9463](https://github.com/QwenLM/qwen-code/pull/9463)) by @wenshao +- ci: author the release PR with a third bot PAT ([#9592](https://github.com/QwenLM/qwen-code/pull/9592)) by @yiliang114 +- cli: persist skipped duplicate tool results ([#9593](https://github.com/QwenLM/qwen-code/pull/9593)) by @yiliang114 +- web-shell: fall back to execCommand copy in non-secure contexts ([#9540](https://github.com/QwenLM/qwen-code/pull/9540)) by @yiliang114 +- ui: collapse duplicate in-flight tool_group rendered from history + pending ([#9421](https://github.com/QwenLM/qwen-code/pull/9421)) by @qwen-code-dev-bot + +#### Performance + +- web-shell: keep streaming output responsive ([#9405](https://github.com/QwenLM/qwen-code/pull/9405)) by @ytahdn + +#### Internal Changes + +- refactor(cli): consolidate shared helpers ahead of the legacy audit skill ([#9345](https://github.com/QwenLM/qwen-code/pull/9345)) by @wenshao +- refactor(review): define each certification-bar atom exactly once ([#9473](https://github.com/QwenLM/qwen-code/pull/9473)) by @wenshao +- refactor(review): route the certification path atoms through one needle ([#9484](https://github.com/QwenLM/qwen-code/pull/9484)) by @wenshao +- chore(ci): Add --provenance to npm publish and id-token permission ([#9532](https://github.com/QwenLM/qwen-code/pull/9532)) by @yiliang114 +- refactor: centralize cross-package contracts ([#9497](https://github.com/QwenLM/qwen-code/pull/9497)) by @yiliang114 +- chore(ci): Drop NPM_TOKEN in favor of npm Trusted Publishing ([#9552](https://github.com/QwenLM/qwen-code/pull/9552)) by @yiliang114 +- test(review): single-encode the diff-read fixture and pin the failed-read gate ([#9539](https://github.com/QwenLM/qwen-code/pull/9539)) by @wenshao +- refactor(review): build the incremental scope from the PR's diff, not a check ([#9267](https://github.com/QwenLM/qwen-code/pull/9267)) by @wenshao +- test(ci): stage on-disk session state in the serve A/B ([#9444](https://github.com/QwenLM/qwen-code/pull/9444)) by @wenshao + +### New Contributors + +- @qwen-code-review-bot made their first contribution in [#9594](https://github.com/QwenLM/qwen-code/pull/9594) + +**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.21.14...v0.21.15 + ## [0.21.14](https://github.com/QwenLM/qwen-code/releases/tag/v0.21.14) - 2026-08-19 ### Highlights diff --git a/integrations/external-context/package.json b/integrations/external-context/package.json index 6aca0707094..b661bc8072b 100644 --- a/integrations/external-context/package.json +++ b/integrations/external-context/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/external-context", - "version": "0.21.14", + "version": "0.22.0", "private": true, "description": "Provider-bound external context for Qwen Code", "type": "module", diff --git a/package-lock.json b/package-lock.json index ae19ca2e4ac..2f37bfe6e6b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@qwen-code/qwen-code", - "version": "0.21.14", + "version": "0.22.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@qwen-code/qwen-code", - "version": "0.21.14", + "version": "0.22.0", "hasInstallScript": true, "workspaces": [ "packages/*", @@ -93,7 +93,7 @@ }, "integrations/external-context": { "name": "@qwen-code/external-context", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@modelcontextprotocol/sdk": "^1.30.0", "undici": "^7.28.0", @@ -29251,7 +29251,7 @@ }, "packages/acp-bridge": { "name": "@qwen-code/acp-bridge", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@agentclientprotocol/sdk": "^0.14.1", "@qwen-code/qwen-code-core": "file:../core" @@ -29266,7 +29266,7 @@ }, "packages/audio-capture": { "name": "@qwen-code/audio-capture", - "version": "0.21.14", + "version": "0.22.0", "hasInstallScript": true, "dependencies": { "node-gyp-build": "^4.8.4" @@ -29283,7 +29283,7 @@ }, "packages/channels/base": { "name": "@qwen-code/channel-base", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@agentclientprotocol/sdk": "^0.14.1" }, @@ -29293,9 +29293,9 @@ }, "packages/channels/dingtalk": { "name": "@qwen-code/channel-dingtalk", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "dingtalk-stream-sdk-nodejs": "^2.0.4" }, "devDependencies": { @@ -29304,10 +29304,10 @@ }, "packages/channels/feishu": { "name": "@qwen-code/channel-feishu", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@larksuiteoapi/node-sdk": "^1.73.0", - "@qwen-code/channel-base": "0.21.14" + "@qwen-code/channel-base": "0.22.0" }, "devDependencies": { "typescript": "^5.0.0" @@ -29330,10 +29330,10 @@ }, "packages/channels/github": { "name": "@qwen-code/channel-github", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@octokit/rest": "^21.1.1", - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "https-proxy-agent": "^7.0.6" }, "devDependencies": { @@ -29342,10 +29342,10 @@ }, "packages/channels/gitlab": { "name": "@qwen-code/channel-gitlab", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@gitbeaker/rest": "^42.5.0", - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "zod": "^3.25.0" }, "devDependencies": { @@ -29354,7 +29354,7 @@ }, "packages/channels/plugin-example": { "name": "@qwen-code/channel-plugin-example", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@qwen-code/channel-base": "file:../base", "ws": "^8.18.0" @@ -29368,9 +29368,9 @@ }, "packages/channels/qqbot": { "name": "@qwen-code/channel-qqbot", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "@tencent-connect/qqbot-connector": "^1.1.0", "ws": "^8.18.0" }, @@ -29380,9 +29380,9 @@ }, "packages/channels/telegram": { "name": "@qwen-code/channel-telegram", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "grammy": "^1.41.1", "https-proxy-agent": "^7.0.6", "telegram-markdown-formatter": "^0.1.2" @@ -29393,9 +29393,9 @@ }, "packages/channels/wecom": { "name": "@qwen-code/channel-wecom", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "@wecom/aibot-node-sdk": "^1.0.7" }, "devDependencies": { @@ -29404,9 +29404,9 @@ }, "packages/channels/weixin": { "name": "@qwen-code/channel-weixin", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { - "@qwen-code/channel-base": "0.21.14" + "@qwen-code/channel-base": "0.22.0" }, "devDependencies": { "typescript": "^5.0.0" @@ -29414,7 +29414,7 @@ }, "packages/chrome-extension": { "name": "@qwen-code/chrome-bridge", - "version": "0.21.14", + "version": "0.22.0", "license": "Apache-2.0", "devDependencies": { "@types/chrome": "^0.1.32", @@ -29442,7 +29442,7 @@ }, "packages/cli": { "name": "@qwen-code/qwen-code", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@agentclientprotocol/sdk": "^0.14.1", "@google/genai": "2.6.0", @@ -29767,7 +29767,7 @@ }, "packages/core": { "name": "@qwen-code/qwen-code-core", - "version": "0.21.14", + "version": "0.22.0", "hasInstallScript": true, "dependencies": { "@anthropic-ai/sdk": "^0.36.1", @@ -32752,7 +32752,7 @@ }, "packages/vscode-ide-companion": { "name": "qwen-code-vscode-ide-companion", - "version": "0.21.14", + "version": "0.22.0", "license": "LICENSE", "dependencies": { "@agentclientprotocol/sdk": "^0.14.1", @@ -32822,7 +32822,7 @@ }, "packages/web-shell": { "name": "@qwen-code/web-shell", - "version": "0.21.14", + "version": "0.22.0", "dependencies": { "@codemirror/autocomplete": "^6.18.0", "@codemirror/commands": "^6.7.0", @@ -33571,7 +33571,7 @@ }, "packages/web-templates": { "name": "@qwen-code/web-templates", - "version": "0.21.14", + "version": "0.22.0", "devDependencies": { "@types/react": "^19.0.0", "@types/react-dom": "^19.0.0", @@ -34078,7 +34078,7 @@ }, "packages/webui": { "name": "@qwen-code/webui", - "version": "0.21.14", + "version": "0.22.0", "license": "MIT", "dependencies": { "@qwen-code/sdk": "file:../sdk-typescript", diff --git a/package.json b/package.json index ef385f5710d..50c9d96832e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/qwen-code", - "version": "0.21.14", + "version": "0.22.0", "engines": { "node": ">=22.0.0" }, @@ -26,7 +26,7 @@ "url": "git+https://github.com/QwenLM/qwen-code.git" }, "config": { - "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.21.14" + "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.22.0" }, "scripts": { "start": "node scripts/start.js", diff --git a/packages/acp-bridge/package.json b/packages/acp-bridge/package.json index 55f42d2a452..4fd4e24e363 100644 --- a/packages/acp-bridge/package.json +++ b/packages/acp-bridge/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/acp-bridge", - "version": "0.21.14", + "version": "0.22.0", "description": "Shared ACP bridge core (createHttpAcpBridge factory, BridgeClient, defaultSpawnChannelFactory, BridgeFileSystem injection seam) + primitives (EventBus, AcpChannel, in-memory channel, PermissionMediator interface) used by qwen serve, channels, IDE, TUI, and remote-control adapters.", "repository": { "type": "git", diff --git a/packages/audio-capture/package.json b/packages/audio-capture/package.json index 98c3a89c758..96dbbda9f07 100644 --- a/packages/audio-capture/package.json +++ b/packages/audio-capture/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/audio-capture", - "version": "0.21.14", + "version": "0.22.0", "description": "Native microphone capture backend for Qwen Code voice input", "repository": { "type": "git", diff --git a/packages/channels/base/package.json b/packages/channels/base/package.json index bf35eaafe15..40dad1e10fb 100644 --- a/packages/channels/base/package.json +++ b/packages/channels/base/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-base", - "version": "0.21.14", + "version": "0.22.0", "description": "Base channel infrastructure for Qwen Code", "repository": { "type": "git", diff --git a/packages/channels/dingtalk/package.json b/packages/channels/dingtalk/package.json index 1570e24c167..8b04c34cada 100644 --- a/packages/channels/dingtalk/package.json +++ b/packages/channels/dingtalk/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-dingtalk", - "version": "0.21.14", + "version": "0.22.0", "description": "DingTalk channel adapter for Qwen Code", "repository": { "type": "git", @@ -25,7 +25,7 @@ "test:ci": "vitest run" }, "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "dingtalk-stream-sdk-nodejs": "^2.0.4" }, "devDependencies": { diff --git a/packages/channels/feishu/package.json b/packages/channels/feishu/package.json index 27b63ea8cc2..c1651458e4b 100644 --- a/packages/channels/feishu/package.json +++ b/packages/channels/feishu/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-feishu", - "version": "0.21.14", + "version": "0.22.0", "description": "Feishu (Lark) channel adapter for Qwen Code", "repository": { "type": "git", @@ -26,7 +26,7 @@ }, "dependencies": { "@larksuiteoapi/node-sdk": "^1.73.0", - "@qwen-code/channel-base": "0.21.14" + "@qwen-code/channel-base": "0.22.0" }, "devDependencies": { "typescript": "^5.0.0" diff --git a/packages/channels/github/package.json b/packages/channels/github/package.json index f16a3afa2b5..35387ec5836 100644 --- a/packages/channels/github/package.json +++ b/packages/channels/github/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-github", - "version": "0.21.14", + "version": "0.22.0", "description": "GitHub polling channel adapter for Qwen Code", "repository": { "type": "git", @@ -25,7 +25,7 @@ "test:ci": "vitest run" }, "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "@octokit/rest": "^21.1.1", "https-proxy-agent": "^7.0.6" }, diff --git a/packages/channels/gitlab/package.json b/packages/channels/gitlab/package.json index 15a2e433f70..c630f6ce462 100644 --- a/packages/channels/gitlab/package.json +++ b/packages/channels/gitlab/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-gitlab", - "version": "0.21.14", + "version": "0.22.0", "description": "GitLab polling channel adapter for Qwen Code", "type": "module", "main": "dist/index.js", @@ -21,7 +21,7 @@ }, "dependencies": { "@gitbeaker/rest": "^42.5.0", - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "zod": "^3.25.0" }, "devDependencies": { diff --git a/packages/channels/plugin-example/package.json b/packages/channels/plugin-example/package.json index ea0b5f56e3d..bc09b55d10f 100644 --- a/packages/channels/plugin-example/package.json +++ b/packages/channels/plugin-example/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-plugin-example", - "version": "0.21.14", + "version": "0.22.0", "private": true, "type": "module", "main": "dist/index.js", diff --git a/packages/channels/qqbot/package.json b/packages/channels/qqbot/package.json index b2c5995d2e6..4ce9cf1e319 100644 --- a/packages/channels/qqbot/package.json +++ b/packages/channels/qqbot/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-qqbot", - "version": "0.21.14", + "version": "0.22.0", "description": "QQ Bot (QQ机器人) channel adapter for Qwen Code", "repository": { "type": "git", @@ -25,7 +25,7 @@ "test:ci": "vitest run" }, "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "@tencent-connect/qqbot-connector": "^1.1.0", "ws": "^8.18.0" }, diff --git a/packages/channels/telegram/package.json b/packages/channels/telegram/package.json index 10eab9a5294..d1d349931ea 100644 --- a/packages/channels/telegram/package.json +++ b/packages/channels/telegram/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-telegram", - "version": "0.21.14", + "version": "0.22.0", "description": "Telegram channel adapter for Qwen Code", "repository": { "type": "git", @@ -25,7 +25,7 @@ "test:ci": "vitest run" }, "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "grammy": "^1.41.1", "https-proxy-agent": "^7.0.6", "telegram-markdown-formatter": "^0.1.2" diff --git a/packages/channels/wecom/package.json b/packages/channels/wecom/package.json index 04f47764321..d8cbc5152ec 100644 --- a/packages/channels/wecom/package.json +++ b/packages/channels/wecom/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-wecom", - "version": "0.21.14", + "version": "0.22.0", "description": "WeCom channel adapter for Qwen Code", "repository": { "type": "git", @@ -25,7 +25,7 @@ "test:ci": "vitest run" }, "dependencies": { - "@qwen-code/channel-base": "0.21.14", + "@qwen-code/channel-base": "0.22.0", "@wecom/aibot-node-sdk": "^1.0.7" }, "devDependencies": { diff --git a/packages/channels/weixin/package.json b/packages/channels/weixin/package.json index 85ef512b06a..f3ab350ec39 100644 --- a/packages/channels/weixin/package.json +++ b/packages/channels/weixin/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/channel-weixin", - "version": "0.21.14", + "version": "0.22.0", "description": "WeChat (Weixin) channel adapter for Qwen Code", "repository": { "type": "git", @@ -33,7 +33,7 @@ "test:ci": "vitest run" }, "dependencies": { - "@qwen-code/channel-base": "0.21.14" + "@qwen-code/channel-base": "0.22.0" }, "devDependencies": { "typescript": "^5.0.0" diff --git a/packages/chrome-extension/package.json b/packages/chrome-extension/package.json index bbe6dc3b2c0..06966088773 100644 --- a/packages/chrome-extension/package.json +++ b/packages/chrome-extension/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/chrome-bridge", - "version": "0.21.14", + "version": "0.22.0", "description": "Chrome extension bridge for Qwen CLI - enables AI-powered browser interactions", "private": true, "repository": { diff --git a/packages/cli/package.json b/packages/cli/package.json index 9ad4ca2aeaa..abd8856fdfa 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/qwen-code", - "version": "0.21.14", + "version": "0.22.0", "description": "Qwen Code", "repository": { "type": "git", @@ -37,7 +37,7 @@ "dist" ], "config": { - "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.21.14" + "sandboxImageUri": "ghcr.io/qwenlm/qwen-code:0.22.0" }, "dependencies": { "@agentclientprotocol/sdk": "^0.14.1", diff --git a/packages/core/package.json b/packages/core/package.json index 88caa08c421..fe812278df3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/qwen-code-core", - "version": "0.21.14", + "version": "0.22.0", "description": "Qwen Code Core", "repository": { "type": "git", diff --git a/packages/vscode-ide-companion/package.json b/packages/vscode-ide-companion/package.json index 3fe2d3574f4..d033928a57f 100644 --- a/packages/vscode-ide-companion/package.json +++ b/packages/vscode-ide-companion/package.json @@ -2,7 +2,7 @@ "name": "qwen-code-vscode-ide-companion", "displayName": "Qwen Code Companion", "description": "Enable Qwen Code with direct access to your VS Code workspace.", - "version": "0.21.14", + "version": "0.22.0", "publisher": "qwenlm", "icon": "assets/icon.png", "repository": { diff --git a/packages/web-shell/package.json b/packages/web-shell/package.json index 58982f07892..f00c54d63c1 100644 --- a/packages/web-shell/package.json +++ b/packages/web-shell/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/web-shell", - "version": "0.21.14", + "version": "0.22.0", "type": "module", "main": "./dist/index.js", "module": "./dist/index.js", diff --git a/packages/web-templates/package.json b/packages/web-templates/package.json index 009ad9acc17..1bbe676f639 100644 --- a/packages/web-templates/package.json +++ b/packages/web-templates/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/web-templates", - "version": "0.21.14", + "version": "0.22.0", "description": "Web templates bundled as embeddable JS/CSS strings", "repository": { "type": "git", diff --git a/packages/webui/package.json b/packages/webui/package.json index 6d651d3c730..20c461f57d1 100644 --- a/packages/webui/package.json +++ b/packages/webui/package.json @@ -1,6 +1,6 @@ { "name": "@qwen-code/webui", - "version": "0.21.14", + "version": "0.22.0", "description": "Shared UI components for Qwen Code packages", "type": "module", "main": "./dist/index.cjs",