github QwenLM/qwen-code v0.23.4
Release v0.23.4

latest release: cua-driver-rs-v0.20.8
4 hours ago

Highlights

See the complete change list below.

Breaking Changes

  • Removes configurable message-prefix filtering from channels, so eligible messages now follow normal sender, group, mention, and pairing policies without a prefix. (#11571) by @qqqys
  • fix(core)!: read command hook timeout in seconds (#11615) by @qqqys

Complete Change List

Features

  • Lets approved Web Shell Goal proposals start automatically after their owning turn finishes, removing the need to copy a manual /goal set command. (#11360) by @qqqys
  • feat(sdk): add a peer endpoint so a program outside Qwen Code can join cross-session messaging (#11560) by @qqqys
  • Adds optional Goal limits via model.goalMaxTurns and model.goalMaxActiveMinutes, and rebases active Goal time on restore. (#11457) by @qqqys
  • Web Shell scheduled runs can now route to a configured model and session group when New session each run is selected. (#11396) by @qqqys
  • Browser notifications in Web Shell now identify the session, show prompt and reply excerpts, and open the target session when clicked. (#11447) by @doudouOUC
  • Improves Web Shell composer compactness and makes context usage clearer across composer, conversation, and sidebar. (#11509) by @wenshao
  • Adds visual input, proactive assistance, and local memory to the standalone Qwen Live experience. (#11369) by @wangxiongts
  • Automatic reviews of small static documentation navigation changes now use a focused reviewer with narrower scope and capped outcomes. (#11456) by @wenshao
  • feat(subagents): add Codex executor and native agent builtins (#11474) by @wenshao
  • feat(core): add CodeModeOnly tool execution (#10607) by @DragonnZhang
  • Moved Workflow authoring reference into the bundled workflow-authoring skill, reducing default tool description overhead. (#11520) by @qqqys
  • Hid the Web Shell sources panel add-source button by default; it can be re-enabled with the addSource=1 URL parameter. (#11639) by @callmeYe
  • Channel turns in CLI resume, Web Shell, and session previews now display exactly the prompt the model received. (#11646) by @qqqys
  • Added Web preview panels with desktop and mobile widths, refresh, external opening, saved HTML artifacts, and per-session URL and width memory. (#11276) by @wenshao
  • Added inline editing and resending of the latest user message in Web Shell, retaining attached images and files while generating a new reply. (#11650) by @ytahdn
  • feat(core): add permission_mode, agent_id and prompt_id to every hook input (#11618) by @qqqys
  • Adds a Continue execution action in Web Shell for recoverable interrupted sessions, allowing users to resume the original conversation without duplicating messages. (#11545) by @wenshao
  • feat(skills): extension skills are named by their extension (#10841) by @nerdalytics
  • feat(vscode): add an explicit session source switch (#11584) by @yiliang114
  • feat(core): auto-retry transient network errors (EOF) where Ctrl+Y is unavailable (#10347) by @qwen-code-dev-bot
  • feat(workflows): add effort and disallowedTools to agent() options (#11691) by @qqqys
  • feat(goal): rerun a stalled checkpoint in batches, smaller after each stall (#11690) by @qqqys
  • feat(web-shell): add model role and context window configuration (#11342) by @wenshao
  • feat(cua): add app-bound actions and compact native observations (#11705) by @LaZzyMan
  • feat: agent board — share work across independently started agents (#9402) by @yiliang114
  • feat(review): record a default deadline in the plan so every run has a wall (#11686) by @wenshao
  • feat(web-shell): make Session Workflow dependencies navigable and quiet its chrome (#10938) by @yiliang114
  • feat(web-shell): Improve context overview and add manual compression (#11700) by @wenshao
  • feat(core): make the web_search budget configurable and bound the extractor fallback (#11692) by @qqqys
  • feat(web-shell): restore the workspace Git picker in the sidebar hover details (#11818) by @ytahdn
  • feat(web-shell): Add manual compression to composer context hover (#11782) by @wenshao

Bug Fixes

  • Deflakes a replayed-loop CI test by widening the fabricated timeline-event margin from 75 to 300 seconds without changing workflow or product behavior. (#11581) by @wenshao
  • Fixes autofix gating so regressions count against the brake and test weakening is gated, preventing a fix round from shipping new problems for free. (#10188) by @wenshao
  • Preserves the originally submitted prompt for UserPromptSubmit hooks so Auto Recall works for Web Shell submissions and opted-in ACP or daemon clients. (#11455) by @doudouOUC
  • Restores workspace-configured startup channels when qwen serve starts without an explicit channel argument, while explicit channel selection still takes precedence. (#11472) by @qqqys
  • Fixes qwen serve startup so persisted workspace-scope MCP configuration is loaded after ACP preheat. (#11145) by @kabishou11
  • Fixes VS Code diff handling so diffs can be closed reliably using either the original or workspace-resolved path. (#10494) by @CanReader
  • Frees web terminal PTY resources when the terminal exits instead of waiting for later release. (#11572) by @yiliang114
  • Adds one bounded retry to E2E build artifact uploads to reduce transient CI failures. (#11375) by @qwen-code-dev-bot
  • Preserves child error details when agent sessions are explicitly closed or killed, improving diagnostic logging. (#11190) by @now-ing
  • Web Shell now preserves cancelled responses across reloads and shows how long the request ran before cancellation. (#11608) by @ytahdn
  • Pins the fleet updater install to the /usr/local prefix so runners execute the newly installed version instead of continuing to use an older install on PATH. (#11593) by @yiliang114
  • fix(core): recover from rejected Responses encrypted reasoning (#11596) by @DragonnZhang
  • Improves checkpoint verification by stripping markdown fences and retrying with one corrective model call for certain malformed or inconsistent verifier answers. (#11578) by @qqqys
  • Shows the Try again action in source previews only after attachment or workspace-file load failures, and clears it after a successful retry. (#11629) by @callmeYe
  • Routes successful plain-text hook stdout to additionalContext for SessionStart, UserPromptSubmit, and UserPromptExpansion events while other events keep system-message behavior. (#11612) by @qqqys
  • Fixed OpenTUI renderer display gaps across transcript, composer, footer, dialogs, keyboard, and startup approval to match ink. (#11630) by @chiga0
  • Reattached image snapshots are now labeled as potentially outdated so earlier session images are not treated as current UI state. (#11602) by @yiliang114
  • Localized VS Code rewind preflight failures when editing a sent message, replacing raw transport errors with a translated message. (#11628) by @yiliang114
  • fix(core): preserve Responses retry metadata and assistant phases (#11652) by @DragonnZhang
  • fix(cli): keep the expanded confirmation dialog inside the viewport (#11656) by @qwen-code-dev-bot
  • fix(core): retry transient server errors in established streams (#11634) by @DragonnZhang
  • fix(vscode): preserve IDE workspace env var on Remote-SSH (#11556) (#11624) by @yiliang114
  • fix(vscode): give the edit back when a permission diff is closed (#11171) by @yiliang114
  • Persists a one-line diagnostic when a Goal evidence checkpoint fails and displays it before the Goal stops, improving visibility into why checkpoints fail. (#11576) by @qqqys
  • Suppresses unnecessary error toasts in Web Shell when a submission is rejected due to preflight cancellation or abort, avoiding confusing failure messages. (#11676) by @yiliang114
  • fix(core): redact request-body prefix in Responses debug logs (#11668) by @yiliang114
  • Correctly labels blocked Goal cards as Goal blocked in Web Shell instead of the broader Goal aborted label, improving status clarity. (#11174) by @yu-xin-c
  • Updates a CLI serve test to wait for the fire-and-forget handler to finish before completing, improving test reliability without changing production behavior. (#11417) by @qwen-code-dev-bot
  • Prevents Responses reasoning replay data from being sent to incompatible providers by stripping or ignoring foreign thoughtSignature payloads during request building. (#11567) by @yiliang114
  • Fixes local-files bridge trust and bystander issues by reserving a resolving state and preventing parked tabs from wiping stored grants on disconnect. (#11169) by @wenshao
  • Moves the DashScope conversation cache breakpoint before reattached images so the cached prefix no longer shifts between turns. (#11640) by @yiliang114
  • fix(core): report real stop_hook_active on Stop hooks (#11613) by @qqqys
  • fix(core): cite web search sources as bare URLs (#11677) by @qqqys
  • ACP child spawns now derive V8 old-space targets from actual host memory instead of trusting an unlimited cgroup sentinel value. (#11653) by @doudouOUC
  • Prevents stale concurrent leader assignments from dispatching the same task to multiple teammates. (#10237) by @AaronZ345
  • fix(telemetry): gate request_text/response_text on logPrompts (#11670) by @yiliang114
  • fix(vscode): unify session history and remove source switch (#11713) by @yiliang114
  • fix(acp): preserve original filenames in resource-link prompts (#11721) by @zhangxy-zju
  • fix(vscode): shut the ACP CLI down gracefully instead of killing it (#11642) by @yiliang114
  • fix(core): redact error text in usage-statistics telemetry sink (#11649) by @yiliang114
  • fix(core): reap surviving hook process trees on Windows (#11623) by @yiliang114
  • fix(core): compute cron next-fire time with epoch arithmetic across DST fall-back (#11723) by @yiliang114
  • fix(goal): remove backtracking fence unwrap from judge replies (#11693) by @yiliang114
  • fix(core): keep the mirrored reasoning field off Fireworks requests (#11701) by @bluefateludi
  • fix(core): fire active-todo reminders at delegation boundaries and user turns (#10963) by @yiliang114
  • fix(core): guard internal git calls against configured helper programs (#11669) by @yiliang114
  • fix(lsp): synchronize target documents before queries (#11443) by @shenyankm
  • fix(core): run web terminal PTYs on the bundled ConPTY backend (#11643) by @yiliang114
  • fix(core): retry status-less upstream errors instead of ending the turn (#11291) by @wenshao
  • fix(dashscope): send request metadata only for qwen-family models (#11606) by @shoemoney
  • fix(web-shell): prevent terminal query freezes and clean up protocol rejection (#11748) by @yiliang114
  • fix(cli): break Ink useBoxMetrics commit-phase setState loop (React #185) (#11565) by @zaalipro
  • fix(dingtalk): handle replied rich-text media (#11759) by @qqqys
  • fix(dingtalk): preserve callback text (#11757) by @qqqys
  • fix(cli): prevent dialog clipping in short terminals (#9040) by @shenyankm
  • fix(web-shell): keep mid-turn messages the daemon rejects at idle (#11289) by @wenshao
  • fix(core): strip AppImage PYTHONHOME/PYTHONPATH from stdio MCP children (#11763) by @yiliang114
  • fix(cua): address tool failures and efficiency in OSWorld runs (#11683) by @tanzhenxin
  • fix(cua): bound observations and reduce model round trips (#11735) by @DragonnZhang
  • fix(web-shell): pin es2021 floor across both build configs and harden terminal tests (#11758) by @yiliang114
  • fix(core): let the producer's own budget decide shell output size (#11727) by @doudouOUC
  • fix(review): document the deadline's pause ceilings and improve capture-local errors (#11779) by @wenshao
  • fix(ci): raise the build heap cap from 3072 to 4096 MB (#11781) by @doudouOUC
  • fix(cli): reap running monitors when the process dies on an uncaught exception (#11742) by @yiliang114
  • fix(web-shell): move source download to the header (#11641) by @callmeYe
  • fix(skills): re-apply a Skill's side effects when a session is resumed (#11280) by @TianYuan1024
  • fix(web-shell): make the cockpit visual capture deterministic (#11786) by @yiliang114
  • fix(dingtalk): remove background agent headings (#11800) by @qqqys
  • fix(cli): treat write-side PTY EIO as a benign teardown race (#11788) by @yiliang114
  • fix(goal): keep a full-claim checkpoint replay from spending a stall, and tidy batching follow-ups (#11796) by @qqqys
  • fix(cli): resolve ACP core settings against the active target dir (#11647) by @yiliang114
  • fix(sdk): support standalone session creation over HTTP (#11812) by @doudouOUC
  • fix(core): accept Claude Code tool names in tool hook matchers (#11826) by @qqqys
  • fix(cli): keep history item ids strictly increasing across mixed base timestamps (#11743) by @yiliang114
  • fix(ci): pass autofix reasoning effort to Kimi K3 (#11843) by @yiliang114
  • fix(ci): restore Windows test baseline (#11787) by @yiliang114
  • fix(cua): recover macOS App observation and input for 0.20.7 (#11841) by @LaZzyMan
  • fix(cli): only suggest -y for tool calls denied for lack of approval (#11828) by @qqqys
  • fix(web-shell): stabilize goal proposal approval layout (#11839) by @qqqys
  • fix(dws): align group and direct chat access controls (#11836) by @qqqys

Performance

  • Improves session recovery performance by removing a redundant deep copy of conversation history. (#11595) by @DragonnZhang
  • perf(web-shell): load metadata on demand and reuse capability checks (#11644) by @ytahdn

Documentation

  • docs(daemon): publish the REST API reference (#11592) by @yiliang114
  • docs(vscode): record the cross-source delete consequence (#11730) by @yiliang114
  • docs(daemon): describe the prompt rate-limit and queue-full responses separately (#11733) by @yiliang114
  • docs: translate permission card and browser notification designs (#11775) by @wenshao

Internal Changes

  • Removes the obsolete DingTalk background response aggregation setting while keeping immediate Agent responses, transports, attachments, splitting, and interactive cards. (#11570) by @qqqys
  • Adds review tests that pin the fold invariant for multi-line entries and updates related comments without changing executable product behavior. (#11533) by @wenshao
  • Refactors the DashScope web search client behind a backend interface with no user-facing behavior change. (#11490) by @qqqys
  • Strengthens integration tests to verify /compress actually reduces token usage. (#11259) by @yu-xin-c
  • Removes the unused trusted hooks manager and makes unregisterSkillHooks actually remove session hooks registered by a skill's root directory. (#11621) by @qqqys
  • test(integration): isolate the QWEN_HOME-unset case from the real $HOME (#10900) (#10920) by @qwen-code-dev-bot
  • test(core): pin the deferred exit-time PTY release against trailing output (#11585) by @yiliang114
  • Adds missing hook events to the settings schema and hook execution bus so editors no longer flag them as unknown keys and all hook events are dispatched consistently. (#11620) by @qqqys
  • Consolidates shared Web Shell sidebar test setup into a single harness to prevent inconsistent behavior across suites. (#9797) by @bluefateludi
  • chore: enforce Playwright version parity and close the deferred #11101 follow-ups (#11371) by @yiliang114
  • chore(pnpm): gate pnpm-lock on package-lock and declare hoisted imports (#11625) by @yiliang114
  • test(lockfile): pin the Playwright parity check's first manifest and both nested directions (#11716) by @yiliang114
  • refactor(core): apply one matcher rule to every hook event (#11619) by @qqqys
  • test(web-shell): give the 200-record history-viewport smoke case its own budget (#11740) by @yiliang114
  • test(core): account for the extra Windows fstat in the tail-growth session mocks (#11750) by @Bug-killer-prog
  • chore(release): bump node repl to 0.1.4 (#11771) by @LaZzyMan
  • chore(pnpm): scope build approvals, pin the ACP zod peer, add a lockfile freshness lane (#11797) by @yiliang114
  • ci(lint): stop new cli imports from the core package root (#11798) by @yiliang114

New Contributors

Full Changelog: v0.23.3...v0.23.4

Don't miss a new qwen-code release

NewReleases is sending notifications on new releases.