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

latest release: sdk-typescript-v0.1.13
2 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

New Contributors

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

Don't miss a new qwen-code release

NewReleases is sending notifications on new releases.