<!-- qwen-release-notes:v1 -->
## 亮点
- 新增原生支持从目录、压缩包、Git 仓库、URL 和 npm 包安装 Qoder 插件,并自动加载 system-prompt。 ([#8661](https://github.com/QwenLM/qwen-code/pull/8661))
- 在 CLI 和桌面应用中通过二维码启用本地控制配对,实现安全的局域网访问,并新增首次启动时自动创建默认工作区。 ([#8727](https://github.com/QwenLM/qwen-code/pull/8727), [#8814](https://github.com/QwenLM/qwen-code/pull/8814))
- 在 Web Shell 中新增图片拖放支持,并为右侧面板添加全屏切换功能,以改善工件和子代理的可见性。 ([#8696](https://github.com/QwenLM/qwen-code/pull/8696), [#8614](https://github.com/QwenLM/qwen-code/pull/8614))
- 修复 Linux Wayland 下的文本复制问题,优先使用原生 wl-copy;为 macOS 桌面应用启用麦克风访问权限并配置所需权限。 ([#8481](https://github.com/QwenLM/qwen-code/pull/8481), [#8715](https://github.com/QwenLM/qwen-code/pull/8715))
- 通过忽略不受支持的 OpenTelemetry 导出器环境变量来防止遥测启动失败,并修复会话归属标记逻辑。 ([#8703](https://github.com/QwenLM/qwen-code/pull/8703), [#8712](https://github.com/QwenLM/qwen-code/pull/8712))
- 提升大型代码差异审查的性能,并通过预留 20 分钟保底时间确保在预算耗尽时内容生成不中断。 ([#8773](https://github.com/QwenLM/qwen-code/pull/8773), [#8791](https://github.com/QwenLM/qwen-code/pull/8791))
## 破坏性变更
暂无已知的破坏性变更。
## 完整变更列表
### 新功能
- 新增原生支持从目录、压缩包、Git 仓库、URL 和 npm 包安装 Qoder 插件,自动将 system-prompt.md 作为扩展上下文加载。 ([#8661](https://github.com/QwenLM/qwen-code/pull/8661)) by @callmeYe
- 基于标签使用轮询策略自动将问题分配给区域负责人,优先分配给当前开放指派问题最少的负责人。 ([#8668](https://github.com/QwenLM/qwen-code/pull/8668)) by @yiliang114
- 新增守护进程 API 端点和 SDK 辅助函数,支持在单次批量请求中启用或禁用最多 100 个技能,并提供按目标错误报告。 ([#8664](https://github.com/QwenLM/qwen-code/pull/8664)) by @callmeYe
- qwen review submit 命令现在会在 stderr 和 JSON stdout 中输出已提交审查的直接链接。 ([#8770](https://github.com/QwenLM/qwen-code/pull/8770)) by @wenshao
- 在 CLI 和桌面应用中新增本地控制配对功能,支持通过二维码实现安全的局域网访问及新增控制菜单选项。 ([#8727](https://github.com/QwenLM/qwen-code/pull/8727)) by @yiliang114
- 为 Web Shell 右侧面板添加全屏切换功能,便于查看工件和子代理详情。 ([#8614](https://github.com/QwenLM/qwen-code/pull/8614)) by @wenshao
- 新增保护机制,在单次交互式 ACP 会话中工具连续失败后暂停执行。 ([#8469](https://github.com/QwenLM/qwen-code/pull/8469)) by @doudouOUC
- 增强 Workflow 工具描述,补充编排策略和默认流水线指导,以改善模型行为。 ([#8694](https://github.com/QwenLM/qwen-code/pull/8694)) by @qqqys
- 桌面应用现在首次启动时自动在 ~/Documents/Qwen 创建默认工作区,并在不阻塞主线程的情况下启动运行时。 ([#8814](https://github.com/QwenLM/qwen-code/pull/8814)) by @yiliang114
- Web Shell 现在在状态栏以迷你进度胶囊显示上下文窗口使用情况,支持悬停提示和可访问性标签。 ([#8794](https://github.com/QwenLM/qwen-code/pull/8794)) by @wenshao
- Web Shell 现在支持将 PNG、JPEG、GIF、WebP 和 BMP 图片拖入编辑器,并提供完整的附件管理和并发限制。 ([#8696](https://github.com/QwenLM/qwen-code/pull/8696)) by @water-in-stone
- 稳定的 Qwen Live Host 软件包现已镜像至阿里云 OSS,支持自动回退至 GitHub,并支持长达一小时的归档下载。 ([#8674](https://github.com/QwenLM/qwen-code/pull/8674)) by @LaZzyMan
- 基于新增的 model.openAILogRetentionDays 设置(默认 7 天),自动在后台清理过期的 OpenAI API 日志。 ([#8862](https://github.com/QwenLM/qwen-code/pull/8862)) by @doudouOUC
### 错误修复
- 当仓库配置通过 diff.external 或 core.fsmonitor 执行外部程序时,对只读 Git 命令要求显式确认。 ([#8645](https://github.com/QwenLM/qwen-code/pull/8645)) by @yiliang114
- 在启动期间忽略不受支持的 OTEL_TRACES_EXPORTER、OTEL_LOGS_EXPORTER 和 OTEL_METRICS_EXPORTER 环境变量,从而防止遥测初始化失败。 ([#8703](https://github.com/QwenLM/qwen-code/pull/8703)) by @zjunothing
- 改进 WebSearch 启动提示,在未配置搜索模型时提供可复制粘贴的 settings.json 示例及环境变量替代方案。 ([#8665](https://github.com/QwenLM/qwen-code/pull/8665)) by @qwen-code-dev-bot
- 在 Linux Wayland 会话中优先使用原生的 wl-copy 命令进行文本复制,若不可用则回退到 xclip、xsel 或 OSC 52。 ([#8481](https://github.com/QwenLM/qwen-code/pull/8481)) by @zjunothing
- 修复会话归属问题,要求 QWEN_CODE_SERVE 和 QWEN_CODE_DESKTOP 标记的值必须精确为 1,防止 0 或 false 等值导致误判。 ([#8712](https://github.com/QwenLM/qwen-code/pull/8712)) by @yiliang114
- 修复渲染问题:Pull Request 中的排队确认评论原本显示为纯文本而非带有有效链接的格式化 Markdown。 ([#8726](https://github.com/QwenLM/qwen-code/pull/8726)) by @wenshao
- 统一所有守护进程接口中调用方提供的会话 ID,以确保会话创建和验证的一致性。 ([#8415](https://github.com/QwenLM/qwen-code/pull/8415)) by @doudouOUC
- 通过将 usage_update 帧聚合为单个上下文计量器显示,减少演示事件日志中的噪音。 ([#8762](https://github.com/QwenLM/qwen-code/pull/8762)) by @wenshao
- 通过为响应体切换为显式读取循环,修复了外部上下文读取的兼容性问题。 ([#8764](https://github.com/QwenLM/qwen-code/pull/8764)) by @wenshao
- 通过添加所需的使用描述和音频输入权限,为 macOS 桌面应用启用了麦克风访问权限。 ([#8715](https://github.com/QwenLM/qwen-code/pull/8715)) by @yiliang114
- 通过正确等待测试环境搭建,修复了 Qoder 插件安装集成测试中的竞态条件。 ([#8793](https://github.com/QwenLM/qwen-code/pull/8793)) by @yiliang114
- 通过更新内存提取超时时间并延长清单 fixture 的拆卸限制,修复了不稳定的 CI 测试。 ([#8797](https://github.com/QwenLM/qwen-code/pull/8797)) by @wenshao
- 在保留令牌计费功能的同时,从 Web Shell 记录中隐藏原始的 ACP 使用更新通知。 ([#8790](https://github.com/QwenLM/qwen-code/pull/8790)) by @carffuca
- 紧凑化本地控制对话框,确保二维码、配对链接和断开连接按钮无需滚动即可显示。 ([#8800](https://github.com/QwenLM/qwen-code/pull/8800)) by @yiliang114
- 通过切换至 REST 端点修复工作流标签修改问题,避免与旧版 GitHub CLI 版本产生错误。 ([#8761](https://github.com/QwenLM/qwen-code/pull/8761)) by @wenshao
- 为 ACP 会话恢复实现了专用的 60 秒超时机制,以防止卡死并改进错误处理。 ([#8691](https://github.com/QwenLM/qwen-code/pull/8691)) by @doudouOUC
- Web Shell 不再将未识别的守护进程事件的调试投影作为对话内容显示在记录中。 ([#8812](https://github.com/QwenLM/qwen-code/pull/8812)) by @wenshao
- 后台 Shell 测试现在使用唯一的临时路径,以防止共享 sidecar 文件导致的文件权限错误。 ([#8813](https://github.com/QwenLM/qwen-code/pull/8813)) by @wenshao
- 本地控制现在在移动端打开活动的桌面会话,而不是空白的 Web Shell,并改进了网络地址验证的安全性。 ([#8806](https://github.com/QwenLM/qwen-code/pull/8806)) by @yiliang114
- 桌面应用在自动更新失败时现在会显示具体的错误信息,而不是静默返回或尝试不安全的重试。 ([#8807](https://github.com/QwenLM/qwen-code/pull/8807)) by @yiliang114
- 浮动待办面板现在遵循会话工作流设置:禁用时显示为无交互进度,启用时打开计划执行视图。 ([#8828](https://github.com/QwenLM/qwen-code/pull/8828)) by @yiliang114
- 工作区信任现在针对每个项目的 .env 文件单独评估,以防止不受信任的父目录将密钥泄露到受信任的子工作区。 ([#8706](https://github.com/QwenLM/qwen-code/pull/8706)) by @zjunothing
- 在 macOS 上,关闭窗口现在改为隐藏而非销毁,允许从程序坞即时恢复,同时保留焦点行为。 ([#8802](https://github.com/QwenLM/qwen-code/pull/8802)) by @yiliang114
- 会话工作现在通过特定的附件标识进行隔离,以防止过时的异步操作损坏共享同一会话 ID 的新附件。 ([#8833](https://github.com/QwenLM/qwen-code/pull/8833)) by @doudouOUC
- Shell 注册表测试现在使用隔离的临时目录以防止冲突,并使用共享辅助函数对通知进行清理以实现一致显示。 ([#8795](https://github.com/QwenLM/qwen-code/pull/8795)) by @wenshao
- 有界重放快照现在将连续的助手文本和思维块压缩为最多包含 256 个源事件的条目,同时保留元数据边界。 ([#8801](https://github.com/QwenLM/qwen-code/pull/8801)) by @wenshao
- 添加了空闲看门狗,在沙箱静默挂起 20 分钟后将其终止,并实现了过期容器回收机制,以防止泄漏的 runner 消耗资源。 ([#8816](https://github.com/QwenLM/qwen-code/pull/8816)) by @wenshao
- 扩展了环境变量黑名单,以防止不受信任的工作区 .env 值泄露到会话子进程中,并加固了清理生命周期。 ([#8763](https://github.com/QwenLM/qwen-code/pull/8763)) by @wenshao
- 会话切换错误现在会列出具体阻塞后台任务的 ID 和状态,并指导用户使用正确的命令停止它们。([#8742](https://github.com/QwenLM/qwen-code/pull/8742)) by @yiliang114
- 守护进程拥有的运行时现在可以通过内置工具完成授权的外部文本写入,而无需禁用 ACP 委托或扩大工作区边界。([#8852](https://github.com/QwenLM/qwen-code/pull/8852)) by @doudouOUC
- 修复了一个 Bug:将 QWEN_CODE_SERVE 设置为 0 或 false 时,在直接启动 ACP 期间会错误地移除 NODE_OPTIONS 和 NODE_PATH。([#8811](https://github.com/QwenLM/qwen-code/pull/8811)) by @yiliang114
- 修复了一个问题:刷新提供程序模板时,如果所选模型属于其他提供程序,会错误地重置用户已选择的模型。([#8868](https://github.com/QwenLM/qwen-code/pull/8868)) by @yiliang114
- 将剩余的加固改进移植到 verify gate,以防止因缺少身份标识的失败导致不必要的全量重新运行。([#8878](https://github.com/QwenLM/qwen-code/pull/8878)) by @wenshao
- 在共享守护进程环境中,通过将容器名称切换为随机 8 位十六进制后缀,修复了沙箱容器名称冲突的问题。([#8880](https://github.com/QwenLM/qwen-code/pull/8880)) by @wenshao
- 修复了提供程序更新提示:尊重“稍后提醒”选项,通过记录 24 小时冷却时间,而不是每次启动时都重新提示。([#8829](https://github.com/QwenLM/qwen-code/pull/8829)) by @qwen-code-dev-bot
- 通过 /review 发布的审查评论现在使用规范的段落和列表格式,在存在未解决的 Critical(严重问题)或覆盖率披露时提升可读性。([#8825](https://github.com/QwenLM/qwen-code/pull/8825)) by @wenshao
### 性能
- 审查流程现在通过在执行验证前预留 20 分钟的最低时间用于内容生成,确保在预算耗尽时仍能完成内容撰写与提交。([#8791](https://github.com/QwenLM/qwen-code/pull/8791)) by @wenshao
- 针对 25 行以下的微型代码差异,自动审查超时时间已减半,在保持高投入和行内注释的同时降低延迟。([#8774](https://github.com/QwenLM/qwen-code/pull/8774)) by @wenshao
- 对于超过 3000 行的代码差异,通过减少审计轮次并禁用专家代理来防止超时,从而提升代码审查性能。([#8773](https://github.com/QwenLM/qwen-code/pull/8773)) by @wenshao
- 通过 QWEN_TRIAGE_TIMEOUT_MINUTES 仓库变量使分类任务超时时间可配置,以防止长时间运行的检查被过早取消。([#8810](https://github.com/QwenLM/qwen-code/pull/8810)) by @wenshao
### 文档
- 在 README 的文档语言栏中添加了韩语 (한국어),以便直接访问本地化指南。([#8836](https://github.com/QwenLM/qwen-code/pull/8836)) by @dss1222
### 内部变更
- 同步了依赖锁定文件中的 external-context 工作区版本,以防止不必要的本地安装变动和工作树污染。([#8858](https://github.com/QwenLM/qwen-code/pull/8858)) by @wenshao
- 从守护进程中移除了旧的 /demo 调试页面,因为其功能已完全被主 Web Shell 界面覆盖。([#8805](https://github.com/QwenLM/qwen-code/pull/8805)) by @wenshao
- 改进了 Web Shell 会话切换逻辑:当目标会话仍在关闭时会自动重试,而不是立即报告永久错误。([#8864](https://github.com/QwenLM/qwen-code/pull/8864)) by @yiliang114
## 新增贡献者
- @dss1222 在 [#8836](https://github.com/QwenLM/qwen-code/pull/8836) 中完成了首次贡献
**完整更新日志**: https://github.com/QwenLM/qwen-code/compare/v0.21.8...v0.21.9
<!-- qwen-release-notes:v1 -->
## Highlights
- Added native support for installing Qoder plugins from directories, archives, Git repos, URLs, and npm packages with automatic system-prompt loading. ([#8661](https://github.com/QwenLM/qwen-code/pull/8661))
- Enabled Local Control pairing via QR code in CLI and Desktop apps for secure LAN access and added automatic default workspace creation on first launch. ([#8727](https://github.com/QwenLM/qwen-code/pull/8727), [#8814](https://github.com/QwenLM/qwen-code/pull/8814))
- Added drag-and-drop support for images in Web Shell and a fullscreen toggle for the right panel to improve artifact and subagent visibility. ([#8696](https://github.com/QwenLM/qwen-code/pull/8696), [#8614](https://github.com/QwenLM/qwen-code/pull/8614))
- Fixed Linux Wayland text copying to prefer native wl-copy and enabled microphone access for the macOS Desktop app with required entitlements. ([#8481](https://github.com/QwenLM/qwen-code/pull/8481), [#8715](https://github.com/QwenLM/qwen-code/pull/8715))
- Prevented telemetry startup failures by ignoring unsupported OpenTelemetry exporter environment variables and fixed session attribution marker logic. ([#8703](https://github.com/QwenLM/qwen-code/pull/8703), [#8712](https://github.com/QwenLM/qwen-code/pull/8712))
- Improved code review performance for large diffs and guaranteed composition survival during budget stops by reserving a 20-minute floor. ([#8773](https://github.com/QwenLM/qwen-code/pull/8773), [#8791](https://github.com/QwenLM/qwen-code/pull/8791))
## Breaking Changes
No known breaking changes.
## Complete Change List
### Features
- Adds native support for installing Qoder plugins from directories, archives, Git repos, URLs, and npm packages, automatically loading system-prompt.md as extension context. ([#8661](https://github.com/QwenLM/qwen-code/pull/8661)) by @callmeYe
- Automatically assigns issues to area owners based on labels using a round-robin strategy that prefers owners with the fewest open assigned issues. ([#8668](https://github.com/QwenLM/qwen-code/pull/8668)) by @yiliang114
- Adds a daemon API endpoint and SDK helpers to enable or disable up to 100 Skills in a single batch request with per-target error reporting. ([#8664](https://github.com/QwenLM/qwen-code/pull/8664)) by @callmeYe
- The qwen review submit command now outputs the direct URL to posted reviews in both stderr and JSON stdout. ([#8770](https://github.com/QwenLM/qwen-code/pull/8770)) by @wenshao
- Added Local Control pairing to the CLI and Desktop app, allowing secure LAN access via QR code and a new Control menu option. ([#8727](https://github.com/QwenLM/qwen-code/pull/8727)) by @yiliang114
- Added a fullscreen toggle to the Web Shell right panel for easier viewing of artifacts and subagent details. ([#8614](https://github.com/QwenLM/qwen-code/pull/8614)) by @wenshao
- Added a guard to pause tool execution after repeated failures within a single interactive ACP session. ([#8469](https://github.com/QwenLM/qwen-code/pull/8469)) by @doudouOUC
- Enhanced the Workflow tool description with orchestration policies and default pipelining guidance for better model behavior. ([#8694](https://github.com/QwenLM/qwen-code/pull/8694)) by @qqqys
- Desktop now automatically creates a default workspace at ~/Documents/Qwen and starts the runtime on first launch without blocking the main thread. ([#8814](https://github.com/QwenLM/qwen-code/pull/8814)) by @yiliang114
- Web Shell now displays context window usage as a mini progress pill in the status bar with tooltips and accessible labels. ([#8794](https://github.com/QwenLM/qwen-code/pull/8794)) by @wenshao
- Web Shell now supports dragging and dropping PNG, JPEG, GIF, WebP, and BMP images into the composer with full attachment management and concurrency limits. ([#8696](https://github.com/QwenLM/qwen-code/pull/8696)) by @water-in-stone
- Stable Qwen Live Host packages are now mirrored to Aliyun OSS with automatic fallback to GitHub and support for up to one-hour archive downloads. ([#8674](https://github.com/QwenLM/qwen-code/pull/8674)) by @LaZzyMan
- Added automatic background cleanup for expired OpenAI API logs based on the new model.openAILogRetentionDays setting, which defaults to seven days. ([#8862](https://github.com/QwenLM/qwen-code/pull/8862)) by @doudouOUC
### Bug Fixes
- Requires explicit confirmation for read-only Git commands when repository configuration executes external programs via diff.external or core.fsmonitor. ([#8645](https://github.com/QwenLM/qwen-code/pull/8645)) by @yiliang114
- Prevents telemetry initialization failures by ignoring unsupported OTEL_TRACES_EXPORTER, OTEL_LOGS_EXPORTER, and OTEL_METRICS_EXPORTER environment variables during startup. ([#8703](https://github.com/QwenLM/qwen-code/pull/8703)) by @zjunothing
- Improves the WebSearch startup notice to include a copy-pasteable settings.json example and environment variable alternative when no search model is configured. ([#8665](https://github.com/QwenLM/qwen-code/pull/8665)) by @qwen-code-dev-bot
- Prefers the native wl-copy command for text copying on Linux Wayland sessions, falling back to xclip, xsel, or OSC 52 if unavailable. ([#8481](https://github.com/QwenLM/qwen-code/pull/8481)) by @zjunothing
- Fixes session attribution to require exact value 1 for QWEN_CODE_SERVE and QWEN_CODE_DESKTOP markers, preventing false positives from values like 0 or false. ([#8712](https://github.com/QwenLM/qwen-code/pull/8712)) by @yiliang114
- Fixed a rendering issue where the queued-acknowledgement comment on pull requests displayed raw text instead of formatted Markdown with working links. ([#8726](https://github.com/QwenLM/qwen-code/pull/8726)) by @wenshao
- Standardized caller-supplied session IDs across all daemon interfaces to ensure consistent session creation and validation. ([#8415](https://github.com/QwenLM/qwen-code/pull/8415)) by @doudouOUC
- Reduced noise in the demo event log by aggregating usage_update frames into a single context meter display. ([#8762](https://github.com/QwenLM/qwen-code/pull/8762)) by @wenshao
- Fixed a compatibility issue in external context reading by switching to an explicit reader loop for response bodies. ([#8764](https://github.com/QwenLM/qwen-code/pull/8764)) by @wenshao
- Enabled microphone access for the macOS Desktop app by adding the required usage description and audio-input entitlement. ([#8715](https://github.com/QwenLM/qwen-code/pull/8715)) by @yiliang114
- Fixed a race condition in the Qoder plugin install integration test by properly awaiting the test rig setup. ([#8793](https://github.com/QwenLM/qwen-code/pull/8793)) by @yiliang114
- Fixed flaky CI tests by updating memory extraction timeouts and extending manifest fixture teardown limits. ([#8797](https://github.com/QwenLM/qwen-code/pull/8797)) by @wenshao
- Hidden raw ACP usage update notifications from Web Shell transcripts while retaining token accounting functionality. ([#8790](https://github.com/QwenLM/qwen-code/pull/8790)) by @carffuca
- Compacted the Local Control dialog to ensure the QR code, pairing link, and disconnect button remain visible without scrolling. ([#8800](https://github.com/QwenLM/qwen-code/pull/8800)) by @yiliang114
- Fixed workflow label mutations by switching to REST endpoints to avoid errors with older GitHub CLI versions. ([#8761](https://github.com/QwenLM/qwen-code/pull/8761)) by @wenshao
- Implemented a dedicated 60-second timeout for ACP session restoration to prevent hangs and improve error handling. ([#8691](https://github.com/QwenLM/qwen-code/pull/8691)) by @doudouOUC
- Web Shell no longer displays debug projections for unrecognized daemon events as conversation content in transcripts. ([#8812](https://github.com/QwenLM/qwen-code/pull/8812)) by @wenshao
- Background shell tests now use unique temporary paths to prevent file permission errors caused by shared sidecar files. ([#8813](https://github.com/QwenLM/qwen-code/pull/8813)) by @wenshao
- Local Control now opens the active Desktop session on mobile instead of a blank Web Shell and improves network address verification security. ([#8806](https://github.com/QwenLM/qwen-code/pull/8806)) by @yiliang114
- Desktop now displays specific error messages when automatic updates fail instead of silently returning or attempting unsafe retries. ([#8807](https://github.com/QwenLM/qwen-code/pull/8807)) by @yiliang114
- The floating Todo panel now respects the Session Workflow setting, appearing as non-interactive progress when disabled and opening the plan execution view when enabled. ([#8828](https://github.com/QwenLM/qwen-code/pull/8828)) by @yiliang114
- Workspace trust is now evaluated separately for each project .env file to prevent untrusted parent directories from leaking secrets into trusted child workspaces. ([#8706](https://github.com/QwenLM/qwen-code/pull/8706)) by @zjunothing
- On macOS, closing the main window now hides it instead of destroying it, allowing instant restoration from the Dock while preserving focus behavior. ([#8802](https://github.com/QwenLM/qwen-code/pull/8802)) by @yiliang114
- Session work is now fenced by specific attachment identity to prevent stale asynchronous operations from corrupting newer attachments sharing the same session ID. ([#8833](https://github.com/QwenLM/qwen-code/pull/8833)) by @doudouOUC
- Shell registry tests now use isolated temporary directories to prevent conflicts, and notifications are sanitized using a shared helper for consistent display. ([#8795](https://github.com/QwenLM/qwen-code/pull/8795)) by @wenshao
- Bounded replay snapshots now compact consecutive assistant text and thought chunks into entries of at most 256 source events while preserving metadata boundaries. ([#8801](https://github.com/QwenLM/qwen-code/pull/8801)) by @wenshao
- Added an idle watchdog to kill silent sandbox hangs after 20 minutes and implemented stale container reaping to prevent leaked runners from consuming resources. ([#8816](https://github.com/QwenLM/qwen-code/pull/8816)) by @wenshao
- Extended the environment variable denylist to prevent untrusted workspace .env values from leaking into session subprocesses and hardened the scrub lifecycle. ([#8763](https://github.com/QwenLM/qwen-code/pull/8763)) by @wenshao
- Session-switch errors now list specific blocking background tasks with their IDs and statuses, directing users to the correct commands to stop them. ([#8742](https://github.com/QwenLM/qwen-code/pull/8742)) by @yiliang114
- Daemon-owned runtimes can now complete authorized external text writes via built-in tools without disabling ACP delegation or widening workspace boundaries. ([#8852](https://github.com/QwenLM/qwen-code/pull/8852)) by @doudouOUC
- Fixed a bug where setting QWEN_CODE_SERVE to 0 or false incorrectly removed NODE_OPTIONS and NODE_PATH during direct ACP launches. ([#8811](https://github.com/QwenLM/qwen-code/pull/8811)) by @yiliang114
- Fixed an issue where refreshing a provider template incorrectly reset the user's selected model if that model belonged to a different provider. ([#8868](https://github.com/QwenLM/qwen-code/pull/8868)) by @yiliang114
- Ported remaining hardening improvements to the verify gate to prevent unnecessary full re-runs caused by identity-less failures. ([#8878](https://github.com/QwenLM/qwen-code/pull/8878)) by @wenshao
- Fixed sandbox container name collisions in shared daemon environments by switching to random 8-character hex suffixes for container names. ([#8880](https://github.com/QwenLM/qwen-code/pull/8880)) by @wenshao
- Fixed the provider update prompt to respect the 'Remind me later' choice by persisting a 24-hour cooldown instead of re-prompting on every startup. ([#8829](https://github.com/QwenLM/qwen-code/pull/8829)) by @qwen-code-dev-bot
- Review comments posted via /review are now formatted with proper paragraphs and lists to improve readability when unresolved Criticals or coverage disclosures are present. ([#8825](https://github.com/QwenLM/qwen-code/pull/8825)) by @wenshao
### Performance
- The review process now guarantees compose and submission survive budget stops by reserving a 20-minute floor for composition before verification. ([#8791](https://github.com/QwenLM/qwen-code/pull/8791)) by @wenshao
- Automatic review timeouts for micro diffs under 25 lines are now halved to reduce latency while maintaining high effort and inline comments. ([#8774](https://github.com/QwenLM/qwen-code/pull/8774)) by @wenshao
- Code review performance is improved for diffs over 3000 lines by reducing audit rounds and disabling the specialist agent to prevent timeouts. ([#8773](https://github.com/QwenLM/qwen-code/pull/8773)) by @wenshao
- Made the triage job timeout configurable via the QWEN_TRIAGE_TIMEOUT_MINUTES repository variable to prevent premature cancellations of long-running checks. ([#8810](https://github.com/QwenLM/qwen-code/pull/8810)) by @wenshao
### Documentation
- Korean (한국어) has been added to the documentation language bar in the README to provide direct access to localized guides. ([#8836](https://github.com/QwenLM/qwen-code/pull/8836)) by @dss1222
### Internal Changes
- Synchronized the external-context workspace version in the dependency lockfile to prevent unnecessary local install churn and working tree dirtiness. ([#8858](https://github.com/QwenLM/qwen-code/pull/8858)) by @wenshao
- Removed the legacy /demo debug page from the daemon as its functionality is fully covered by the main Web Shell interface. ([#8805](https://github.com/QwenLM/qwen-code/pull/8805)) by @wenshao
- Improved Web Shell session switching to retry when a target session is still closing instead of immediately reporting a permanent error. ([#8864](https://github.com/QwenLM/qwen-code/pull/8864)) by @yiliang114
## New Contributors
- @dss1222 made their first contribution in [#8836](https://github.com/QwenLM/qwen-code/pull/8836)
**Full Changelog**: https://github.com/QwenLM/qwen-code/compare/v0.21.8...v0.21.9