cua-driver prebuilt binaries — relative-coordinate fork
(vendored under packages/cua-driver).
- macOS: codesigned + notarized universal binary +
QwenCuaDriver.app - Linux: unsigned (x86_64 + arm64, glibc 2.31 floor)
- Windows: unsigned (x86_64 + arm64)
Enable relative coordinates: CUA_DRIVER_RS_COORDINATE_SPACE=1
(default 0 = off; optional CUA_DRIVER_RS_COORDINATE_SCALE=1000).
Enable textual MCP payload filtering for affected model API routes:
MCP_MODEL_PAYLOAD_FILTER=1 (default off).
What's Changed
- feat(review): prove Step 4 (verify) and Step 5 (reverse audit) actually ran by @wenshao in #6965
- ci: quarantine cron-interactive from push E2E to nightly-only by @yiliang114 in #6986
- fix(cron): add deterministic test seam for cron-interactive E2E by @yiliang114 in #6987
- feat(channels): support natural memory references by @qqqys in #6952
- chore: update default model to qwen3.7-max by @qwen-code-dev-bot in #6978
- feat(daemon): add stateless generation SSE by @ytahdn in #6947
- fix(test): widen model-response timeouts in SDK E2E tests for CI stability (#6979) by @qwen-code-dev-bot in #6985
- perf(review): scope Agent 7's build/test to the workspaces the diff changed by @wenshao in #6955
- test(web-shell): add mermaid, split-view + sidebar visual scenarios by @wenshao in #6964
- ci(serve): daemon A/B before/after preview on response-surface PRs by @wenshao in #6975
- fix(cli): Preserve channel startup failure details by @doudouOUC in #6950
- feat(daemon): Aggregate deep health across workspaces by @doudouOUC in #6961
- ci(web-shell): before/after visual previews, showing only changed views by @wenshao in #6963
- feat(serve): add workspace MCP management by @ytahdn in #6954
- feat(web-shell): color-code each split pane by workspace by @wenshao in #6971
- fix(web-shell): filter sessions by source by @ytahdn in #6995
- fix(web-shell): land on the split's first pane when a shrink folds the split by @wenshao in #7000
- fix(headless): run concurrency-safe tool calls in parallel by @wenshao in #6993
- feat(review): fold the findings list into the verify/reverse-audit prompt by @wenshao in #6994
- fix(shell): handle command-specific exit codes by @ytahdn in #7011
- docs: make local PR verification optional by @callmeYe in #7025
- feat(channels): tag daemon sessions with channel source by @xurik in #6991
- fix(core): preserve MCP OAuth challenges from HTTP handshakes by @ytahdn in #7022
- revert: remove local PR verification gate by @callmeYe in #7031
- test(web-shell): add extensions-manager visual scenario by @wenshao in #6997
- feat(daemon): Trace cold first-session startup by @doudouOUC in #6907
- fix(serve): Harden multi-workspace ownership guards by @doudouOUC in #7005
- docs(serve): Close multi-workspace hardening gaps by @doudouOUC in #7019
- feat(web-shell): add archived session export by @doudouOUC in #6910
- fix: bound usage-only streams and abort on quit by @yiliang114 in #7038
- fix(acp): disambiguate model routes by @yiliang114 in #7028
- refactor(web-shell): drop redundant primary-workspace label by @wenshao in #7035
- test(web-shell): make visual-preview captures deterministic + add workspace-sidebar scenario by @wenshao in #7041
- fix(web-shell): batch transcript dispatch to avoid tab-return freeze by @wenshao in #7012
- fix(core): Require explicit approval to exit Plan mode by @doudouOUC in #6967
- ci(autofix): recover from generated-artifact CI gates and stop silent stalls by @wenshao in #6998
- fix(web-shell): use formatSettingCategory for fallback UI category by @wenshao in #7055
- feat(serve): add workspace session-info aggregate endpoint by @samuelhsin in #7077
- feat(web-shell): add skill management pages by @ytahdn in #7018
- ci(autofix): run the schema gate from a trusted staged copy, not the branch tree by @wenshao in #7076
- fix(integration): add missing session_info to E2E capabilities baseline by @qwen-code-dev-bot in #7091
- feat(cli): mouse text selection and copy in VP mode by @chiga0 in #6937
- test(web-shell): align workspace sidebar visual smoke by @yiliang114 in #7107
- fix(tui): pin MaxSizedBox rows and gate the pending backstop for show-more diff (#6809) by @azurecgx in #6957
- fix(integration): harden flaky interactive read-then-write test by @wenshao in #7105
- test(cli): isolate sandbox-relaunch tests from ambient QWEN_SANDBOX_IMAGE by @wenshao in #7093
- ci(autofix): treat Suggestion-level review findings as actionable per AGENTS.md by @wenshao in #7094
- feat(channels): stamp daemon sourceId with channel instance name on created sessions by @xurik in #7078
- feat(channels): confirm natural memory mutations by @qqqys in #7066
- feat(channels): save explicit multi-fact memory safely by @qqqys in #7092
- feat(serve): Complete legacy session workspace telemetry by @doudouOUC in #7003
- fix(core): retry empty tool-result continuations by @yiliang114 in #7039
- fix(core): align planning and response guidance by @DragonnZhang in #7085
- feat(core): Enable artifact defaults and write reminders by @chiga0 in #7068
- feat(web-shell): suggest sending new-topic drafts in a new session by @carffuca in #7098
- fix(web-shell): render built-in tag icons by @callmeYe in #7024
- fix(core): force tool_choice in generateJson to prevent auto-mode classifier deadlock by @qwen-code-dev-bot in #6929
- fix(ci): notify silent triage re-runs by @yiliang114 in #7079
- fix(cli): pop the kitty keyboard protocol after leaving the alternate screen by @zjunothing in #7115
- fix(web-shell): optionally restart SSE after prompt admission by @ytahdn in #7080
- test(serve): cover session-info regressions by @samuelhsin in #7083
- fix(core): accept subagents created after startup instead of rejecting on stale cache by @zjunothing in #7112
- fix(cli): keep streaming code blocks intact when split across commits by @MikeWang0316tw in #7020
- fix(i18n): correct "extenison" typo in extension enable/disable scope help by @chinesepowered in #7057
- feat(tools): add formatDisplayPath() and wire grep/glob/ripGrep descriptions by @zjunothing in #7050
- fix(core): make the per-turn tool-call cap adaptive by @wenshao in #7052
- feat(daemon): propagate prompt IDs to turn events by @makwingchi in #7082
- fix(vscode): preserve Electron Node mode for ACP launch by @yiliang114 in #7106
- docs(cua-driver): fix broken relative-coordinate design link by @chinesepowered in #7130
- fix(core): preserve complete skill descriptions by @callmeYe in #7032
- feat(web-shell): paginate restored session history by @ytahdn in #7064
- fix(core): persist resolved subagent model in metadata by @ARE404 in #7104
- feat(web-shell): toggle the session sidebar with Cmd+B / Ctrl+B by @zjunothing in #7135
- fix(web-shell): stop stacking duplicate copies when restoring prompt text by @zjunothing in #7134
- feat(web-shell): add directory autocomplete to the Add Workspace dialog by @zjunothing in #7125
- feat(cli): support same-turn message steering by @LaZzyMan in #7090
- fix(core): retry malformed repeated thinking tags by @yiliang114 in #7100
- fix(cli): correct misspelled handleUpdateRecieved -> handleUpdateReceived by @chinesepowered in #7132
- fix(cli): hide sticky task panel when agent is idle by @qwen-code-dev-bot in #7062
- feat: support full-turn multimodal routing for image prompts by @yiliang114 in #7045
- fix(cli): keep the model override when a background notification drains by @zjunothing in #7119
- fix(core): align prompt tool examples with schemas by @DragonnZhang in #7088
- fix(cli): require a second Ctrl+C within 1s before a real SIGINT exits the TUI by @zjunothing in #7129
- fix: keep quit and stream logging reliable by @yiliang114 in #7124
- fix(ui): keep SkillReviewDialog right border inside the dialog container by @zjunothing in #7047
- fix(core): preserve existing work in system prompt by @DragonnZhang in #7087
- docs(autofix): make bot PR comments bilingual with collapsed Chinese by @wenshao in #7137
- fix(mcp): terminate descendants after discovery timeout by @morluto in #6926
- feat(agents): support per-model sub-agent concurrency limits by @qwen-code-dev-bot in #6984
- fix(review): report what the transcripts prove; build the roster in one call by @wenshao in #7033
- fix(cli): establish extension store generation baseline on first read by @qwen-code-dev-bot in #7072
- fix(core): remove ask_user_question from the Explore agent's toolset by @zjunothing in #7133
- fix(web-shell): scope advanced table overlays by @ytahdn in #7097
- feat(cli): add daemon Todo stop guard by @doudouOUC in #6945
- feat(cli): show active path in compact tool summaries by @zjunothing in #7043
- fix(core): correct "supercedes" typo in plan-mode system prompt by @chinesepowered in #7058
- fix(ask-user-question): accept long headers and size chips to the container width by @tanzhenxin in #7063
- fix(core): canonicalize restrictive permission paths by @morluto in #6923
- fix(core): align system prompt with interaction mode by @DragonnZhang in #7089
- fix(memory): resolve root symlinks in isAllowedMemoryPath before creation by @wenshao in #6842
- fix(core): add kimi-k3 token limits (1M context, 128K output) by @tanzhenxin in #7144
- fix(integration): use lenient assertion and harden poll in interactive file-system test by @qwen-code-dev-bot in #7113
- feat(daemon): Profile ACP channel initialization by @doudouOUC in #7145
- fix(core): resolve a parameter expansion in command position to its command root by @wenshao in #7143
- fix(cli): make auto output language follow user input by @han-dreamer in #6953
- fix(core): respect enableManagedAutoMemory in memory availability by @han-dreamer in #6941
- fix(cli): tighten VP-mode controls footprint and fix shell tool indicator overlap by @chiga0 in #6931
- fix(acp): resolve textual @ image paths by @yiliang114 in #7123
- feat(vscode): route logs to the Qwen Code Companion output channel by @yiliang114 in #7121
- feat(core): overhaul web_fetch — content fidelity, binary handling, security, and resilience by @tanzhenxin in #7146
- feat(channels): expose workspace-scoped observed contacts by @BenGuanRan in #7109
- test(cli): actually exercise the paste-workaround path in useKeypress by @chinesepowered in #7141
- fix: correct typos in comments, a tool description, and docs by @chinesepowered in #7131
- feat(web-shell): persist the split view across refresh, per tab by @wenshao in #7136
- fix: harden desktop MCP permission-request lifecycle so pending prompts never hang or leak by @mvanhorn in #7013
- fix(cli): correct misspelled migratedInMemorScopes -> migratedInMemoryScopes by @chinesepowered in #7140
- feat(web-shell): add a workspace Goals page, and stop losing /goal on daemon resume by @wenshao in #6561
- feat(core): improve subagent delegation defaults and guardrails by @DragonnZhang in #7048
- feat(review): build every Step 5 auditor of a round in one call, identity first by @wenshao in #7150
- feat(channels): observe group names from inbound messages by @BenGuanRan in #7155
- fix(web-shell): recover new-session decisions wrapped in prose or fences by @wenshao in #7122
- feat(web-shell): git status chip, visual working-tree diff, and sidebar git status by @wenshao in #7054
- feat(channels): recall relevant memory per message by @qwen-code-dev-bot in #7157
- ci(autofix): fan out review targets and stop route-scan starvation by @wenshao in #7127
- fix(web-shell): make approval and question overlays keyboard accessible by @wenshao in #7074
- fix(cli): restore cancelled prompt after streamed output by @barry166 in #7149
- ci(shepherd): add Fleet Shepherd — automated unblocking of the bot-PR fleet by @wenshao in #7142
- fix(channels): scope pairing and allowlist state by workspace by @zjunothing in #7065
- refactor(core): Classify shell safety as read-only, write, or unknown by @doudouOUC in #7053
- chore(vscode-ide-companion): sync third-party notices and guard against future drift by @wenshao in #7161
- feat(cli): Add bounded daemon log rotation by @doudouOUC in #6969
- fix(sdk-java): preserve exception cause in AcpClient init failures by @chinesepowered in #7189
- fix(web-shell): proxy /goals route in Vite dev server by @wenshao in #7187
- fix(sdk-java): correct TIMEOUT_30_MINUTES to actually be 30 minutes by @chinesepowered in #7188
- fix(cli): emit deferred stream-json startup warnings by @barry166 in #7174
- fix(review): judge a CI check by its name's latest run, not by any leftover by @wenshao in #7183
- fix(review): count Step 6's inline findings from the drafted comments, never from typed numbers by @wenshao in #7173
- feat(review): bake the round label into a findings role's identity line and key by @wenshao in #7171
- perf(channels): cache channel memory recall by @qwen-code-dev-bot in #7175
- fix(web-shell): dedupe restored images and harden the sidebar shortcut handler by @zjunothing in #7169
- feat(webshell): replay ChatRecord history in readonly WebShell by @cxruan in #6999
- perf(cli): Defer TUI runtime from ACP startup by @doudouOUC in #7182
- fix(mcp): normalize tool names for strict providers by @ran411285752 in #6976
- ci(autofix): harden the address path against stale targets and untrusted route events by @wenshao in #7163
- fix(core): apply native tool calling schema for gemma 4 by @ghisguth in #7177
- fix(cli): share one process.stdout resize listener in useTerminalSize by @mvanhorn in #7186
- feat(ui): let the user read the full plan from the exit_plan_mode confirmation by @zjunothing in #7060
- fix: surface underlying .cause of OpenAI-compatible connection errors in debug log and API error message by @mvanhorn in #7010
- fix(web-shell): prevent toolbar label clipping by @carffuca in #7196
- fix(review): one disclosure per subject — dedupe Not-reviewed, collapse an all-built-none-launched roster by @wenshao in #7190
- fix(review): an unverified Critical must not become a public blocker — soften the Request changes it rides by @wenshao in #7191
- feat(providers): add qwen3.8-max-preview to Token Plan model list by @qwen-code-dev-bot in #7199
- feat(autofix): label-driven takeover and release; fix forced-dispatch green no-op by @wenshao in #7165
- fix(autofix): stage SKILL.md beside run-agent.mjs so review-address boots (P0, regression from #7165) by @wenshao in #7225
- fix(ci): consolidate issue triage ownership by @yiliang114 in #7180
- fix(cli): allow goal controls during active loops by @yiliang114 in #7202
- test: raise timeout ceiling for I/O-bound tests flaky under CI contention by @wenshao in #7230
- fix(cli): show mode indicator alongside steering hint during streaming by @qwen-code-dev-bot in #7219
- fix(scripts): allow multiple dev:daemon instances by probing Vite port by @wenshao in #7212
- feat(autofix): direct takeover of maintainer-fork PRs by @wenshao in #7213
- feat(daemon): Advertise ACP preheat readiness by @doudouOUC in #7200
- feat(autofix): surface the running model in every autofix report by @wenshao in #7226
- fix(review): say an unread chunk once, under its cause by @wenshao in #7234
- fix(autofix): a no-output crash must not advance the review watermark by @wenshao in #7229
- fix(review): prohibit isolation param in roster output and SKILL.md by @wenshao in #7235
- feat(review): retry transient API failures once; surface quota clearly by @wenshao in #7233
- feat(core): inspect persisted conversation branches by @doudouOUC in #7185
- fix(cli): align npm update checks with global registry by @yiliang114 in #7224
- feat(core): Route Plan-mode shell commands by safety by @doudouOUC in #7172
- test(autofix): exercise the SKILL stage↔resolve contract end-to-end by @wenshao in #7227
- feat(ci): auto-open a deflake fix issue for confirmed flaky tests by @wenshao in #7231
- feat(autofix): auto-manage the bot's own fork PRs without a label by @wenshao in #7243
- feat(web-shell): worktree-isolated sessions for parallel tasks by @wenshao in #7221
- feat(i18n): update catalan translaiton by @jordimas in #7253
- fix(test): deflake tool-control E2E content assertions by @qwen-code-dev-bot in #7261
- fix(sdk): abort SSE request on iterator exit to release daemon subscriber by @chinesepowered in #7257
- fix(core): Enforce Plan mode entry boundary by @doudouOUC in #7248
- test(channels): add memory recall evaluation baseline by @qwen-code-dev-bot in #7220
- fix(channels): exclude discrete ACP messages from replies by @qwen-code-dev-bot in #7223
- fix(ci): create remote-tracking ref for fork PRs in autofix verify gate by @wenshao in #7281
- fix(sdk): clean up SSE requests on errors and dispose by @doudouOUC in #7269
- test(autofix): sync workflow assertions with split model vars by @yiliang114 in #7297
- fix(cli): repaint the TUI after OS sleep/wake or SIGCONT by @wenshao in #7265
- fix(mobile-mcp): restore bounds in UI hierarchy dumps by @LaZzyMan in #7321
- fix(test): stabilize 3 flaky tests (serve startup, usage-stats TTL, TasksStatusMessage keypress) by @qwen-code-dev-bot in #7319
- docs(cli): remove stale include directories limit by @ZijianZhang989 in #7326
- test(feishu): enforce markdown chunk limit assertion by @ZijianZhang989 in #7324
- fix(cli): Preserve cancellation during permission prompts by @doudouOUC in #7295
- feat: add CODEOWNERS for core harness modules by @pomelo-nwu in #7304
- feat(web-shell): support custom slash command actions by @ytahdn in #7267
- fix(core): estimate reasoning_tokens when completion_tokens_details is missing by @yiliang114 in #7239
- fix(ci): tighten API error detection to avoid false positive on review prose by @wenshao in #7328
- fix(web-shell): localize extension tag labels by @callmeYe in #7337
- fix(test): stabilize list_directory E2E — accept text output when model skips tool call by @qwen-code-dev-bot in #7342
- fix(autofix): resolve owning package for nested paths; report verify-failed handoffs as not pushed by @wenshao in #7330
- fix(review): retry gh CLI on transient GitHub errors (5xx) and keyring failures by @wenshao in #7291
- feat(web-shell): add git commit history browser by @wenshao in #7204
- feat: support workspace display names by @samuelhsin in #7179
- feat(channels): add content-safe memory recall telemetry by @qqqys in #7338
- feat(daemon): restore worktree isolation on session load/resume by @wenshao in #7262
- fix(channels): deliver background agent replies by @qwen-code-dev-bot in #7336
- fix(web-shell): proxy extension APIs without intercepting modules by @ytahdn in #7294
- fix(dingtalk): retry transient emotion failures by @qwen-code-dev-bot in #7329
- fix(web-shell): respect voice enabled setting by @callmeYe in #7345
- feat(autofix): re-arm a stranded PR with @qwen-code /retry instead of deleting a marker by @wenshao in #7354
- fix(cli): map positional args to optional MCP prompt parameters by @qwen-code-dev-bot in #7317
- fix(cli): include typed directory in /cd tab completion by @qwen-code-dev-bot in #7320
- feat(serve): make ACP initialize handshake timeout configurable by @qwen-code-dev-bot in #7246
- ci: move release-note classifier from per-PR workflow to release-time batch by @yiliang114 in #7339
- fix(review): make agent launches and cleanup resilient by @wenshao in #7259
- chore: add CODEOWNERS for cua-driver and mobile-mcp by @qwen-code-dev-bot in #7369
- feat(autofix): pick up managed fork PRs in real time instead of waiting for the throttled schedule by @wenshao in #7350
- fix(ci): stop a slow patrol classifier from killing every flaky rerun by @wenshao in #7358
- chore: simplify CODEOWNERS to package-level rules by @pomelo-nwu in #7376
- fix(ci): tell a visuals coverage gap apart from "no visual change" by @wenshao in #7375
- feat(autofix): resolve the review threads whose findings it implemented by @wenshao in #7364
- fix: ask when Auto Mode classifier is unavailable by @LaZzyMan in #7331
- fix(autofix): retry a verification-gate crash instead of burying the agent's fix by @wenshao in #7351
- fix(core): validate goal judge terminal evidence by @qwen-code-dev-bot in #7208
- fix(core): hide interaction tools in plain headless mode by @DragonnZhang in #7285
- fix(cli): show worktree branch in status line instead of workspace branch by @wenshao in #7367
- fix(acp-bridge): make detachClient idempotent via per-clientId attach-ref ledger by @doudouOUC in #7386
- feat(autofix): render the managed fleet into the scan's run summary by @wenshao in #7355
- fix(autofix): refuse a non-main takeover out loud instead of only in the job log by @wenshao in #7382
- fix(cli): update npm installs safely in background by @yiliang114 in #7322
- fix(core): support qwen3.8 side queries on DashScope by @yiliang114 in #7303
- fix(autofix): retry a model API error instead of stranding the PR by @wenshao in #7247
- fix(ci): stop /resolve reports from being guillotined mid-sentence by @wenshao in #7389
- feat(core): add fork_turns to fork subagents by @DragonnZhang in #7346
- fix(web-shell): restore scheduled task reference interactions by @BZ-D in #7313
- feat(auth): add Singapore Token Plan region by @han-dreamer in #7280
- fix(core): bound web-fetch post-processing and preserve fetched content on failure by @tanzhenxin in #7305
- perf(autofix): raise fleet simultaneity from 3 to 5 by @wenshao in #7396
- perf(telemetry): lazy-load the SDK and split OTLP exporter chains by protocol by @doudouOUC in #7276
- fix(core): Fence concurrent ACP session writers by @doudouOUC in #7237
- feat(web-shell): surface worktree isolation in the new-session empty state by @wenshao in #7365
- fix(ci): serialise the two workflows that push to a PR head branch by @wenshao in #7392
- fix(web-shell): persist the daemon bearer token per-tab so it survives refresh by @zjunothing in #7374
- fix(core,cli): drain background notifications outside the subagent's ALS frame by @zjunothing in #7194
- fix(acp-bridge): map Windows-shaped workspace paths to their sandbox mount by @zjunothing in #7228
- fix(core): salvage session usage into the history before deleting transcripts by @zjunothing in #7391
- fix(core): clarify background agent continuation by @DragonnZhang in #7300
- fix(transcript): mark dangling tool history incomplete by @cxruan in #7340
- fix(mcp): add opt-in model payload filtering by @LaZzyMan in #7413
New Contributors
- @xurik made their first contribution in #6991
- @azurecgx made their first contribution in #6957
- @makwingchi made their first contribution in #7082
- @ARE404 made their first contribution in #7104
- @ghisguth made their first contribution in #7177
Full Changelog: cua-driver-rs-v0.7.2...cua-driver-rs-v0.7.3