github QwenLM/qwen-code desktop-v0.24.3
Qwen Code Desktop v0.24.3

5 hours ago

What's Changed

  • fix(cli): scope the ACP permission queue to the session by @chiga0 in #11802
  • feat(channels): add shared output modes with DingTalk support by @qqqys in #11822
  • feat(web-shell): slide the active pill between tabs by @callmeYe in #11844
  • refactor(goal): delete the first-generation Stop-hook Goal implementation by @qqqys in #11900
  • fix(ci): separate autofix runner labels from queued reviews by @yiliang114 in #11912
  • feat(daemon): enumerate installed extension skills locally by @callmeYe in #11281
  • feat(web-shell): follow the reading position in the global turn navigation by @callmeYe in #11801
  • feat(workflows): share a per-turn token budget from a +Nk directive by @qqqys in #11917
  • feat(serve): add budget-based ACP child admission by @doudouOUC in #11911
  • feat(cli): add bwrap kernel sandbox backend for Linux by @doudouOUC in #11614
  • fix(cli): restore shared Skill status and runner CI checks by @qqqys in #11933
  • fix(vscode): retire legacy ACP input bridges by @yiliang114 in #11928
  • feat(core): support external reasoning profiles and defaults by @callmeYe in #11856
  • feat(settings): turn cross-session messaging on by default by @qqqys in #11840
  • fix(web-shell): show Qwen Live tasks in session sidebar by @qqqys in #11830
  • fix(ci): isolate runner schedule fixture module scope by @doudouOUC in #11938
  • feat(core): run saved workflows by name and pin workflow grants to script content by @qqqys in #11943
  • feat(workflow): preserve source references across runs and resumes by @qqqys in #11931
  • refactor(vscode): remove unused token limit mirror by @yiliang114 in #11946
  • fix(core): carry the PTY load reason on the call, not in module state by @yiliang114 in #11923
  • feat(workflow): correlate agent dispatches and nested workflow calls by @qqqys in #11932
  • docs(goal): retire the Stop-hook era prose after the implementation was removed by @qqqys in #11922
  • fix(core): keep escaped trailing whitespace when trimming hook matchers by @yiliang114 in #11871
  • feat(workflows): size guideline, structure preview and large-run warning by @qqqys in #11939
  • fix(core): expand ${session_id} and stamp User-Agent on the Responses wire by @yiliang114 in #11947
  • feat(workflows): let the model invoke extension workflows that declare whenToUse by @qqqys in #11957
  • feat(daemon): support summary projection for prompt and replay APIs by @ytahdn in #11920
  • ci(desktop): publish the desktop app when the CLI releases by @yiliang114 in #11575
  • test(cli): unbreak the bwrap sandbox suites on the Windows lane (#11968) by @qwen-code-dev-bot in #11970
  • fix(core): keep tool parameters on the MiniMax chat-completions wire by @yiliang114 in #11842
  • fix(web-shell): stop the approval sheet resizing while reading by @ytahdn in #11930
  • fix(release): gate pool-routed validation jobs on a disk floor by @qwen-code-dev-bot in #11972
  • feat(web-shell): add footnote previews and per-turn sources by @callmeYe in #11480
  • fix(web-shell): preserve separators in tool description paths by @ytahdn in #11977
  • feat(telemetry): emit a Goal lifecycle event and metrics by @qqqys in #11927
  • feat(cli): reload hook registry when /hooks opens by @qqqys in #11904
  • fix(core): persist Goal turn endings outside model history by @qqqys in #11924
  • feat(serve): reclaim idle ACP children when admission is full by @doudouOUC in #11940
  • feat(web-shell): connect to a selected remote daemon by @yiliang114 in #11548
  • fix(web-shell): keep the recap below a turn's outputs and dedupe it by @ytahdn in #11986
  • feat(web-shell): preview files from expanded tool details by @ytahdn in #11982
  • fix(ci): heal the docker lock cache ownership in e2e-test-linux (#11990) by @qwen-code-dev-bot in #11992
  • feat(serve): start workflow runs with args, sourceRef and a caller-supplied script by @qqqys in #11979
  • refactor(serve): separate ACP control plane and channel harness by @wenshao in #11916
  • fix(cli): register model-invocable commands before headless turns by @qqqys in #11994
  • fix(vscode): reach the workspace daemon from a remote window's webview by @yiliang114 in #11983
  • feat(web-shell): customize context details and collapse snapshots by @ytahdn in #11996
  • docs(serve): clarify daemon event recovery contracts by @wenshao in #12015
  • test(serve): harden REST docs contract checks by @yiliang114 in #12009
  • feat(goal): bill foreground subagents and verifier token usage by @qqqys in #11998
  • docs(users): point onboarding at Token Plan instead of Coding Plan by @wenshao in #11980
  • feat(dingtalk): carry sender identity in direct messages by @BenGuanRan in #12017
  • feat(goal): show turn and active-time budgets by @qqqys in #11999
  • fix(cli): make the ink useBoxMetrics loop guard independent of machine speed by @yiliang114 in #11835
  • fix(ci): skip completed desktop releases by @yiliang114 in #12013
  • fix(web-shell): honor ui.theme and general.language in the standalone Web Shell by @yiliang114 in #11961
  • feat(omni): integrate multimodal media pipeline into main by @LaZzyMan in #12019
  • docs(daemon): complete integration path guide by @yiliang114 in #12005
  • docs(serve): record merged ACP boundary acceptance by @wenshao in #12024
  • fix(ci): wait for the published export renderer before packaging the VSIX by @yiliang114 in #12036
  • fix(web-shell): stop dropping the daemon credential on two navigation paths by @yiliang114 in #12011
  • fix(acp): restore managed auto-memory extraction by @yiliang114 in #12018
  • fix(cli): close twelve OpenTUI parity gaps found against ink by @chiga0 in #11806
  • fix(core): count Stop-hook blocks across tool round trips by @qqqys in #12062
  • feat(workflows): let agent() narrow a subagent to an explicit tool allowlist by @qqqys in #12051
  • fix(core): avoid false interruption after completed slash commands by @ytahdn in #12052
  • test(cli): refresh the loop-guard comments to the shipped mechanism by @yiliang114 in #12065
  • fix(web-shell): restore context usage after page refresh by @ytahdn in #12070
  • docs(hooks): merge the duplicated Browsing sections by @qqqys in #12071
  • feat: select the OpenAI wire API per model by @tanzhenxin in #11538
  • fix(desktop): wait out the daemon drain before removing the smoke workspace by @yiliang114 in #12049
  • fix(core,cli): green the Windows lane's three remaining failures by @yiliang114 in #12063
  • fix(ci): wait for the release on npm before dispatching the benchmark by @yiliang114 in #12086
  • feat(core): identify hook invocations in progress events and announce the message bus by @qqqys in #12075
  • feat(external-context): Support configurable Mem0 providers by @yiliang114 in #9952
  • fix(extensions): show progress and clear the update flag after an update by @yiliang114 in #11886
  • fix(acp): preserve user resource links in transcript replay by @XIQIXIQIXIQI in #12088
  • feat(web-shell): support host settings item exclusions by @Lilian0122 in #11975
  • feat(web-shell): fold oversized pastes into an attachment card by @ytahdn in #12084
  • feat(browser-use): add Playwright-based Browser SDK by @tanzhenxin in #11241
  • feat(workflows): add a name-only lock that restricts the Workflow tool to named workflows by @qqqys in #12078
  • fix(core): load system-scope hooks under their own source by @qqqys in #12077
  • fix(core): report real outcomes from the http, prompt and function hook runners by @qqqys in #12081
  • fix(core): scrub a known path the filesystem re-spells by @yiliang114 in #12087
  • fix(vscode): reject unsupported IPv6 remote webview URLs by @yiliang114 in #12092
  • feat(web-shell): manage git remotes from the workspace branch picker by @wenshao in #11163
  • fix(web-shell): alias the tools.workflowNameOnly settings row by @yiliang114 in #12100
  • test(core): compare hook progress outcomes without the invocation id by @qqqys in #12104
  • fix(web-shell): alias tools.workflowNameOnly in the settings panel (#12094) by @qwen-code-dev-bot in #12103
  • docs(core): tell /goal-draft the objective limit propose_goal enforces by @qqqys in #12101
  • feat(cli): write Goal state records into session exports by @qqqys in #12099
  • feat(goal): judge terminal proposals from the transcript tail by @qqqys in #12105
  • fix(cli): prefer per-session cached token count in /context by @kabishou11 in #12066
  • refactor(goal): stop showing checkpoint health on every surface by @qqqys in #12114
  • feat(web-shell): add PWA installability and Android development shell by @jabrailkhalil in #11722
  • fix(core): keep MCP App html in recorded transcripts so replay can render by @yiliang114 in #12131
  • fix(core): resolve DeepSeek's official API deepseek-flash name at V4 limits by @he-yufeng in #11909
  • refactor(goal): delete the evidence checkpoint and catalog code by @qqqys in #12120
  • refactor(cli): draw the ink Goal cards from the view OpenTUI already uses by @qqqys in #12110
  • test(serve): bind guide operations to their protocol sections by @mohammedmessaoudene-cmd in #11808
  • fix(core): keep the DeepSeek V4 generation suffix through model-name normalization by @he-yufeng in #12124
  • fix(core): treat only space/tab/newline as word separators in isAsyncOperator by @yiliang114 in #11865
  • fix(mcp): show MCP App resource load warnings by @doudouOUC in #11960
  • fix(serve): read channel settings from user scope when workspace is home by @yiliang114 in #11083
  • fix(core): purge a deleted session's prompts from the log history by @L4XB in #11769
  • fix(workflows): refuse a resume that has no journal, and keep a run's sourceRef across restarts by @qqqys in #12097
  • refactor(goal): cut what the Goal tools cost every model request by two fifths by @qqqys in #12123
  • feat(core): define enabled and disabledReason in the hooks listing by @qqqys in #12139
  • test(cli): step through Grok before MiniMax in the provider-order test by @harjothkhara in #10089
  • feat(core): export hook event display metadata and pure timeout helpers by @qqqys in #12138
  • docs(ci): explain why the review-pr sweep needs a whole-workspace quarantine by @CanReader in #10493
  • docs(daemon): complete REST integration coverage by @yiliang114 in #12144
  • docs(config): note baseUrl is the /v1 root for hosted OpenAI-compatible gateways (#10362) by @now-ing in #11155
  • fix(web-shell): keep first-prompt session when its attach is superseded by @cactuser-Lu in #12149
  • feat(browser-use): add Chrome Native Messaging relay by @tanzhenxin in #11242
  • fix(goal): say which newer records recovery walked past by @qqqys in #12148
  • fix(review): put PR worktree absolute path in dimension-agent briefs by @kabishou11 in #11926
  • feat(workflows): record a checkpoint for every run and surface runs a restart interrupted by @qqqys in #12159
  • fix(web-shell): allow sequential SDK requests during session creation by @shenyankm in #11913
  • feat(web-shell): render the compression outcome from structured meta by @ytahdn in #12141
  • test(sdk): validate content block stops per message by @yiliang114 in #12158
  • feat(core): add container execution for subagents by @wenshao in #11711
  • feat(web-shell): draw the commit history as a lane graph, across all branches, with search by @wenshao in #12152
  • refactor(goal): retire recovery of Goals recorded before Goal state was journaled by @qqqys in #12155
  • feat(live): admit the Web Shell as a browser Live Host by @qqqys in #12166
  • fix(web-shell): keep the mermaid canvas fixed while zooming out by @ytahdn in #12177
  • fix(core): stop session recovery from flagging unanswered notifications by @yiliang114 in #12007
  • fix(cli): keep full-turn tool cancellation out of the error path by @yiliang114 in #11154
  • feat(web-shell): add per-turn satisfied / not satisfied marks by @ytahdn in #12174
  • feat(live): resolve the Live Voice model from a realtimeOnly modelProviders route by @qqqys in #12173
  • refactor(goal)!: stop emitting the active_goal stream event by @qqqys in #12181
  • feat(web-shell): publish the package with the cli release by @yiliang114 in #12178
  • refactor(goal): keep one Goal card on the ACP wire and name the module for it by @qqqys in #12187
  • perf(core): manifest-only refresh for the extension catalog route by @callmeYe in #12153
  • feat(core): assemble the system prompt from the resident tool set by @yiliang114 in #12145
  • feat(web-shell): hold a Live Voice call from the browser by @qqqys in #12189
  • refactor(goal): read the unreadable-state running card through the core reader by @qqqys in #12194
  • fix(release): temporarily pause web-shell publishing by @yiliang114 in #12202
  • test(core): await full run exit before resuming in the authoring-hint test by @yiliang114 in #12196
  • feat(web-shell): show a Goal's turn and active-time ceilings on the status strip by @qqqys in #12201
  • feat(serve): let users stop workspace runtimes to release ACP capacity by @doudouOUC in #12008
  • fix(core): parse LSP frames by byte length so non-ASCII responses are not dropped by @yiliang114 in #12210
  • fix(desktop): stage the node-pty prebuild into the bundled runtime by @yiliang114 in #12225
  • docs(verify-pr): add local follow-up discovery, publish path, and build recipes by @wenshao in #12232
  • feat(web-shell): move the Plan entry into the composer add menu by @wenshao in #12218
  • fix(ci): reclaim Docker cache and clean review scratch directories by @yiliang114 in #12135
  • fix(core): handle simple Bash comments in permission rules by @yiliang114 in #12096
  • fix(ci): pass --allow-escape-sequences to the failure watcher's job-log download by @qwen-code-dev-bot in #12117
  • feat(web-shell): restore remote workspace add flow by @yiliang114 in #12085
  • feat(web-shell): expose assistant turn settlement lifecycle by @yiliang114 in #11251
  • fix(cli): require explicit trust for undecided workspaces by @yiliang114 in #12198
  • fix(web-shell): make the published package resolvable for consumers by @yiliang114 in #12188
  • docs(session-recovery): sync shape-B claims with the landed provenance channel by @yiliang114 in #12203
  • docs(vscode): record why the remote-webview URL refuses a bracketed IPv6 literal by @yiliang114 in #12140
  • fix(web-shell): Use neutral colors for the active Plan chip by @wenshao in #12241
  • feat(core): Add the bwrap execution foundation by @doudouOUC in #12067
  • fix(web-shell): Use neutral colors for Git mode chips by @wenshao in #12251
  • fix(cli): make /context categories add up to the provider total by @yiliang114 in #12119
  • test(ci): cover the review-scratch suite in the yaml import ratchet by @yiliang114 in #12259
  • test(core): keep the scp-like removal witness scp-like on win32 by @yiliang114 in #12263
  • refactor(web-shell): simplify remote workspace flow by @yiliang114 in #12264
  • fix(ci): retry transient E2E build artifact download failures once (#12125) by @qwen-code-dev-bot in #12128
  • fix(web-shell): hand keyboard focus on when the Plan chip goes by @wenshao in #12248
  • fix(web-shell): contain the inline message editor in narrow panes by @Lilian0122 in #12175
  • test(core): skip the bwrap execution suite on win32 (#12281) by @qwen-code-dev-bot in #12282
  • ci(shepherd): close bot PRs whose merge would change nothing by @wenshao in #12150
  • ci(pnpm): install with pnpm everywhere and retire package-lock.json by @yiliang114 in #11859
  • feat(web-shell): choose the Live Voice model and voice from the setup card by @qqqys in #12199
  • feat(web-shell): expose slash-command exports as artifacts by @ytahdn in #12050
  • feat(browser-use): support concurrent sessions sharing a Chrome profile by @tanzhenxin in #12229
  • docs(serve): Document ACP child heap calibration by @doudouOUC in #12265
  • fix(export): raise the document runtime budget for transcript growth by @yiliang114 in #12298
  • feat(web-shell): simplify mobile composer actions by @wenshao in #12252
  • fix(web-shell): keep Live Voice strings out of the exported transcript renderer by @qqqys in #12305
  • test(web-shell): guard Live strings on the built transcript bundle, not the source tree by @qqqys in #12316
  • fix(web-shell): keep Live Voice entry in live boundary by @yiliang114 in #12319
  • feat(cli,docs): attribute each context file to its extension, and say what one costs by @yiliang114 in #12318
  • fix(core): hide unavailable image zoom guidance by @yiliang114 in #12271
  • fix(core): gate teammate guidance and budget large tool surfaces by @yiliang114 in #12142
  • feat(core): judge each inbound cross-session message for the session it is addressed to by @qqqys in #12292
  • feat(web-shell): open link artifacts in a new page by @ytahdn in #12317
  • feat(web-shell): show the microphone level during a browser Live Voice call by @qqqys in #12294
  • feat(acp-bridge): surface request and tool timing on paged transcript replay by @qqqys in #12304
  • feat(serve): retry and rerun workflow runs from persisted history by @qqqys in #12291
  • feat(web-shell): move the workspace and git chips out of the composer toolbar by @ytahdn in #12299
  • fix(web-shell): avoid unnecessary table horizontal scrolling by @ytahdn in #12312
  • refactor(browser-use): accept a set of Chrome extension ids by @tanzhenxin in #12300
  • feat(core,docs): add conditional extension rules and cap context warnings by @yiliang114 in #12034
  • test(core): report what a tool-surface configuration actually withholds by @yiliang114 in #12346
  • fix(web-shell): check publish artifacts against the npm pack list by @yiliang114 in #12343
  • feat(web-shell): project paged transcript events into a trajectory by @qqqys in #12337
  • feat(core): preserve prompt cache for deferred tools by @DragonnZhang in #10410
  • feat(core): let a background turn carry a message from another session by @qqqys in #12342
  • fix(workflows): write run snapshots atomically by @qqqys in #12341
  • feat(web-shell): capture the Live Voice microphone with an AudioWorklet by @qqqys in #12338
  • feat(core): Route runtime tools through bwrap by @doudouOUC in #12269
  • fix(review): fence base-tree reuse on state kept outside the mount by @wenshao in #11540
  • feat(review): swap re-review rounds to a fix-audit shape under the critical posture by @wenshao in #10136
  • perf(sdk): dedupe in-flight workspace-providers requests per resolved URL by @Willam2004 in #12327
  • feat(chrome-extension): publish the extension to the Chrome Web Store by @tanzhenxin in #12329
  • docs(chrome): disclose browser data handling and limited use by @tanzhenxin in #12330
  • feat(web-shell): support host settings item allowlists by @Lilian0122 in #12328
  • fix(web-shell): restore mobile history navigation by @wenshao in #12362
  • fix(workflows): write a resumed run's checkpoint before it registers by @qqqys in #12347
  • fix(live): report the cause when Live Voice fails to start with a non-Error by @qqqys in #12377
  • fix(core): reject broadcast-capable hook PIDs by @yiliang114 in #12344
  • feat(java): Add managed runtime state foundation by @doudouOUC in #12301
  • fix(web-shell): stop the header title from showing the new-session placeholder by @ytahdn in #12379
  • feat(core): Add managed session record foundation by @doudouOUC in #12302
  • feat(live): let a browser Host answer a screen request from a shared screen by @qqqys in #12378
  • fix(ci): retry transient npm ci failures in e2e.yml install steps (#11726) by @qwen-code-dev-bot in #11731
  • fix(release): retry transient standalone runtime downloads (#11870) by @qwen-code-dev-bot in #11879
  • feat(serve): let channel grouping take an ownership hint and skip tolerated names by @qqqys in #12383
  • fix(cli): don't crash startup when the output-language file is unwritable (#10453) by @qwen-code-dev-bot in #10455
  • fix(serve): tell clients which history entries cannot be retried by @qqqys in #12349
  • perf(cli): optimize one-shot headless execution by @yiliang114 in #12340
  • feat(serve): restore every trusted workspace's own serve.channels at boot by @qqqys in #12385
  • feat(java): Add JDBC binding and session persistence by @doudouOUC in #12390
  • feat(web-shell): present structured shell execution results by @ytahdn in #12311
  • feat(web-shell): trajectory table showing where a run spent its time by @qqqys in #12388
  • feat(desktop): integrate the macOS title bar by @yiliang114 in #12393
  • test(integration): support deferred MCP tool calls in SDK E2E by @dvd233 in #12365
  • feat(serve): Define Hosted Harness private protocol by @doudouOUC in #12409
  • test(cli): keep an ambient GIT_CONFIG_GLOBAL from hijacking withHome by @yiliang114 in #12407
  • fix(release): resume automated web-shell publishing by @yiliang114 in #12387
  • feat(core): add monitor tool to system prompt guidance by @yiliang114 in #12408
  • feat(daemon): Add batched workspace session catalogs by @samuelhsin in #12254
  • refactor(build,release): Use pnpm workspace builds and publishing by @yiliang114 in #12400

New Contributors

Full Changelog: cua-driver-rs-v0.20.9...desktop-v0.24.3

Don't miss a new qwen-code release

NewReleases is sending notifications on new releases.