npm @qwen-code/qwen-code 0.23.1
Release v0.23.1

2 hours ago

Highlights

See the complete change list below.

Breaking Changes

Complete Change List

Features

  • feat(web-shell): visualize and manage dynamic workflow runs (#10594) by @qqqys
  • feat(ipc): tell senders when a message is refused, and expire held ones (#10809) by @qqqys
  • feat(serve): add session resource catalog (#10837) by @w9lsky
  • feat(web-shell): give running subagents a live status in the transcript (#10939) by @wenshao
  • Enables opening OSC 8 links with a plain click in VP mode and adds a right-click menu with Open Link, Copy Link Address, and Copy Selection. (#10979) by @chiga0
  • feat(channels): Add worktree-isolated named tasks (#10643) by @doudouOUC
  • Adds session turn navigation protocol support in daemon and SDK for bounded turn indexing, snapshots, and transcript paging. (#10751) by @doudouOUC
  • feat(web-shell): restore environment panel state (#10627) by @ytahdn
  • feat(ipc): keep the peer inbox reachable, and say so when it is not (#10800) by @qqqys
  • feat: chat transcript mr2a html export (#10076) by @water-in-stone
  • feat(serve): Fence Conversations writers with mandatory session leases (#10924) by @doudouOUC
  • feat: load custom output styles from ~/.qwen/output-styles and .qwen/output-styles (#10761) by @qqqys
  • feat(ui): add ui.showToolCallArgs to render tool-call arguments inline (#10565) by @TianYuan1024
  • feat(ipc): hold peer messages across review classes, let repositories only tighten inbound settings (#11026) by @qqqys
  • feat(skills): add built-in zvec-grep installer (#10723) by @zhourrr
  • feat(core): send session ID to Routify endpoints (#10896) by @DragonnZhang
  • feat(core): make todo_write opt-in (#10645) by @DragonnZhang
  • feat(serve): add workspace-scoped Skills runtime (#10697) by @ytahdn
  • feat(channels): filter messages by configured prefix (#10817) by @qqqys
  • feat(review): add low-effort recall floor (#9912) by @yu-xin-c
  • feat(workflows): return run handles and persist inline scripts (#11089) by @qqqys
  • feat(review): add the prose-execution audit and the counter-frame audit (#10221) by @wenshao
  • feat(web-shell): add headless global turn navigation (#11054) by @doudouOUC
  • feat(web-shell): bridge a browser-granted local directory into a session (#10962) by @wenshao
  • feat(acp): make subagent execution visible via parent tool_call updates (#8729) by @PratikWayase
  • feat(dingtalk): make background agent aggregation optional (#10899) by @qqqys
  • feat(ipc): let a user-minted controller token drive a session without per-message review (#11090) by @qqqys
  • feat(ci): surface the resolved model and CLI version in autofix round reports (#11124) by @wenshao
  • feat(web-shell): align sidebar session scopes (#11240) by @ytahdn
  • feat(web-shell): explain shell approval commands (#11266) by @ytahdn
  • feat(web-shell): customize artifact icons (#11247) by @ytahdn
  • feat(update): support a configurable release download base URL (#11150) by @XIQIXIQIXIQI
  • feat(web-shell): show what a Goal has spent against the window it is allowed (#11254) by @qqqys
  • feat(external-context): Add opt-in auto recall for administrator-owned Mem0 dialects (#11246) by @doudouOUC
  • feat(goal): show what a Goal has spent against the window it is allowed (#11248) by @qqqys
  • feat(channels): Implement named-session worktree reset (Part 4B) (#11015) by @doudouOUC
  • feat(serve): allow concurrent standalone daemons with session fencing (#11207) by @doudouOUC
  • feat(web-shell): add continuous history and compact turn navigation (#11208) by @doudouOUC
  • feat(external-context): Add daemon memory writes (#11311) by @doudouOUC
  • feat(web-shell): add a context usage tab to the right sidebar (#11177) by @wenshao
  • feat(web-shell): refine file cards and configure drop destination (#11298) by @ytahdn
  • feat(cli): reap owned worktrees when daemon sessions are deleted (#11309) by @doudouOUC
  • feat(channels): add shared multiline instructions field to channel management (#11082) by @yiliang114
  • feat(goal): pause a Goal after three autonomous turns that make no progress (#11239) by @qqqys
  • feat(core): configure model reasoning capabilities (#10999) by @callmeYe
  • feat(goal): size the checkpoint verifier timeout for a full claim list, and let operators set it (#11305) by @qqqys
  • feat(dingtalk): show dynamic lifecycle tags (#10504) by @BenGuanRan
  • feat(external-context): Add daemon memory deletion (#11337) by @doudouOUC
  • feat(core): expand ${session_id} in per-provider customHeaders (#11282) by @yiliang114
  • feat(cli): OpenTUI parity closeout (dialogs, composer, shell mode) (#11152) by @chiga0

Bug Fixes

  • fix(web-shell): make the 30 s overview-poll e2e deterministic (#10934) by @yiliang114
  • fix(cli): submit exact slash commands from the live input (#10929) by @yiliang114
  • fix(web-shell): disable Push while the branch is behind its upstream (#10754) by @wenshao
  • fix(cli): resolve session-management settings per request, not from the stale this.settings cache (#10095) by @tomsen02
  • fix(ci): name the failing job when a main CI run reports no test result (#10855) by @qwen-code-dev-bot
  • fix(cli): complete the live slash-submit deps and fixture (#10944) (#10961) by @qwen-code-dev-bot
  • fix(test): end interactive PTY sessions a test never closed (#10971) by @qwen-code-dev-bot
  • fix(cli): submit exact OpenTUI slash commands from live input (#10987) by @yiliang114
  • Fixes OpenTUI so Enter submits or accepts completions based on the live editor buffer, preventing stale render state from misrouting the keystroke. (#10986) by @wenshao
  • Prevents the DingTalk channel from printing clientSecret and stream ticket to stdout during SDK connect logging. (#10945) by @yiliang114
  • Fixes OpenTUI transcript visibility so slash command output, /clear results, and steer messages appear in the transcript. (#10947) by @chiga0
  • Syncs the documented daemon capability count to 153 to match the current registry after recent feature additions. (#11012) by @yiliang114
  • fix(dws): recognize slash commands after bot mentions (#10930) by @qqqys
  • fix(ci): retry a registry-side npm audit failure instead of reporting it as a CVE (#11006) by @yiliang114
  • fix(cli): allow quit before slash commands load (#11029) by @yiliang114
  • fix(test): stop measuring model latency on the shared E2E pool (#11004) by @qwen-code-dev-bot
  • fix(cli): keep input closed until chat initialization completes (#11000) by @yiliang114
  • fix: restore ACP-related main CI checks (#11033) by @yiliang114
  • fix(web-shell): label usage-limited goal cards correctly (#10553) by @yu-xin-c
  • fix(test): sync the pinned no-AK integration script list (#11050) (#11052) by @qwen-code-dev-bot
  • fix(web-shell): scope select-all in the cell value dialog to the value (#10857) by @LizunovSergey
  • fix(test): raise the ACP initialize budget for inline E2E daemon spawns (#11034) (#11041) by @qwen-code-dev-bot
  • fix(core): allow manual retry after auto mode blocks (#11025) by @qqqys
  • fix(cli): route turn-index reads through runtime-root pin (#11036) by @yiliang114
  • fix(core): coalesce concurrent Config.initialize() calls (#11037) by @yiliang114
  • fix(cli): repair the live slash gate fallout on main (#10940) by @qwen-code-dev-bot
  • fix(core): reject ambiguous send_message destinations (#10090) by @GCGH159
  • fix(core): strip reasoning_content from Cerebras requests (#11049) by @yiliang114
  • fix(goal): end daemon turns at verification checkpoints (#11011) by @qqqys
  • fix(core): harden Config.initialize() join path (#11075) by @yiliang114
  • fix(docs): correct DaemonSessionProvider path in architecture diagram (#11099) by @yiliang114
  • fix(cli): wait for the startup chat before an OpenTUI turn sends (#11042) (#11046) by @qwen-code-dev-bot
  • fix(cli): deliver Agent View queued follow-ups from the provider (#10315) by @yiliang114
  • fix(cli): keep the tmux IME composition cell free of a fixed background (#8177) (#10998) by @now-ing
  • fix(cli): route the transcript turn-index handler through the pin choke point (#11047) by @wenshao
  • fix(release): let an operator retune the quality lane timeouts (#11104) (#11110) by @qwen-code-dev-bot
  • fix(release): price the static quality lane from the reserved host (#11127) by @qwen-code-dev-bot
  • fix(review): keep quoted code from blinding the footer strip (#10458) by @wenshao
  • fix(web-shell): close the four deferred #9812 review follow-ups (#11107) by @yiliang114
  • fix(release): block the transport-timeout pass-through on any exception header (#10902) by @yiliang114
  • fix(ci): stop the scripts-suite timeout knob from failing open on an empty value (#10910) by @yiliang114
  • fix(test): put the scripts suite's quiet-host budgets on its own knob (#11106) by @qwen-code-dev-bot
  • fix(ci): salvage superseded review runs and hold the loop's report-time base refresh (#10123) by @wenshao
  • fix(core): normalize tool schemas for grammar-based providers (#10080) by @yiliang114
  • fix(core): include full filePath alongside fileName in edit/write-file diff results (#8607) by @JonathanOrr
  • fix(export): shrink the exported transcript renderer to what a read-only transcript needs (#11038) by @yiliang114
  • fix(core): preserve host-confirmed user answers in auto classification (#11084) by @qqqys
  • fix(goal): pause the Goal on every user-cancel path, and say why (#10802) by @qqqys
  • fix(acp): emit standard session title updates (#8782) by @zjunothing
  • fix(ci): record the release.yml size drift two in-allowance PRs accumulated (#11157) by @wenshao
  • fix(web-shell): keep the auto-sized dialog's gutter on a phone (#11077) by @yiliang114
  • fix(dws): isolate IM ingestion across conversations (#10952) by @qqqys
  • fix(core): replay retained shell notifications after transient unbind (#11132) by @yiliang114
  • fix(test): stop timing tsx startup in the export separator bound (#11044) by @qwen-code-dev-bot
  • fix(web-shell): scope mock sessions by workspace (#10273) by @AaronZ345
  • fix(export): point documents at a published renderer, drop mermaid (#11167) by @yiliang114
  • fix(serve): bound and diagnose a session reclaim that can never succeed (#11120) by @doudouOUC
  • fix(web-shell): keep daemon prompt state authoritative through silence (#9487) (#10941) by @yiliang114
  • fix(skills): register frontmatter hooks on the /<skill-name> path (#11068) by @TianYuan1024
  • fix(ci): give web-shell E2E Smoke the ECS timeout allowance its siblings have (#11212) by @doudouOUC
  • fix(core): surface ask_user_question cancellation reasons (#9070) by @destire-mio
  • fix(core): add explicit stop directive to tool cancellation messages (#10180) by @aniruddhaadak80
  • fix(vscode): canonicalize workspace paths (#11201) by @yiliang114
  • fix(serve): report child-owned session turns as active work (#11265) by @yiliang114
  • fix(cua): stabilize automatic observation diffs (#11293) by @LaZzyMan
  • fix(cli): stop housekeeping hanging on a deleted bind mount (#11285) by @doudouOUC
  • fix(ci): reap leaked E2E sandbox containers (#11264) by @yiliang114
  • fix(ci): isolate E2E directories across Vitest forks (#11312) by @yiliang114
  • fix(goal-draft): keep drafts concise and verifiable (#11284) by @qqqys
  • fix(serve): fail fast on unsupported target mutations in the CDP tunnel (#11315) by @wenshao
  • fix(channels): restore worktree-task routes through the managed load path (#11308) by @doudouOUC
  • fix(channels): spell the fake worktree path in its canonical form (#11317) (#11318) by @qwen-code-dev-bot
  • fix(web-shell): cancel pending locate scroll timers on unmount (#11322) by @doudouOUC
  • fix(live-host): keep packaging in the standalone npm workspace (#11329) by @yiliang114
  • fix(web-shell): preserve running subagent timer across replay (#11332) by @ytahdn
  • fix(core): stop the background-agent launch result from inviting the parent to peek (#11324) by @qqqys
  • fix(web-shell): prefer clipboard text over image attachments (#11334) by @ytahdn
  • fix(rewind): close the review findings left open when #10959 merged (#11344) by @yiliang114
  • fix(goal): count a checkpoint the verifier never answers as a stall (#11304) by @qqqys
  • fix(serve): configure live-state polling with a five-second default (#11339) by @doudouOUC
  • fix(web-shell): stop surfacing SSE backpressure warning in transcript (#11340) by @ytahdn
  • fix(core): retry statusless SSE throttling errors (#11216) by @DragonnZhang
  • fix(ci): reap release integration containers (#11330) by @yiliang114
  • fix(web-shell): show session active work (#11267) by @yiliang114
  • fix(docs): stop daemon capability totals drifting (#11370) by @yiliang114
  • fix(web-shell): require answers before submitting questions (#11341) by @ytahdn
  • fix(web-shell): keep the transcript column on the composer axis while the turn rail shows (#11338) by @qqqys
  • fix(web-shell): gate todo progress interaction (#11382) by @yiliang114

Performance

  • perf(web-shell): derive the session workflow projection once (#10871) by @yiliang114
  • perf(cli): avoid hashing invalid inline image cache hits (#10626) by @zjunothing
  • perf(cli): let tests resolve core modules individually (#10917) by @yiliang114
  • perf(cli): import core modules directly instead of the package root (#10957) by @yiliang114
  • perf(dev): add pnpm worktree bootstrap foundation (#10449) by @yiliang114
  • perf(web-shell): avoid an unnecessary initial turn-index page request (#11323) by @doudouOUC

Documentation

  • Updates Web Shell follow-up suggestion settings copy to accurately describe Tab, Right Arrow, and Enter key behavior. (#10851) by @Theater-ahyeon
  • docs(web-shell): add global turn navigation Phase 2 design (#11020) by @doudouOUC
  • docs(cli): mention Token Plan env setup in the qwen auth removal notice (#10993) by @now-ing
  • docs: record where a background agent shows up, and who owns it (#10951) by @yiliang114
  • docs(core): say why the Todo dependency semantics are not behind the flag (#11078) by @yiliang114
  • docs(arena): clarify unset run limits (#9860) by @AaronZ345
  • docs(auth): document Token Plan setup (endpoint, regions, env key, settings.json example) (#10980) by @now-ing
  • docs(serve): clarify API-only HTTP integration (#11314) by @yiliang114
  • docs(serve): sync the daemon capability tag count with the registry (#11368) by @wenshao

Internal Changes

New Contributors

Full Changelog: v0.23.0...v0.23.1

Don't miss a new qwen-code release

NewReleases is sending notifications on new releases.