Cua
← All updates

Week of November 2, 2026

Cua Driver

Features

  • Compat gateways for E2B and Daytona, Hetzner as your own cloud, the elastic pool, cua share and the public relay — #5778.
  • Let macOS actions skip the post-action window-change wait — #6033.
  • Add JPEG screenshots to get_window_state and encode from raw pixels — #6042.
  • Plain, upright agent cursor by default; effects and marks opt-in — #6142.
  • Add a niri compositor adapter for Linux Wayland — #6209.
  • Cursor floats while moving, soft halo, lean/heading rotation modes — #6325.
  • Fast path with act-time target guards, behind a default-off flag (CUA-3102) — #6332.
  • Opt-in refusal of ungranted macOS Automation scripting — #5777.
  • Capture embedded startup diagnostics — #3281.
  • Add cua-driver test to check a new install end to end (CUA-3660) — #6765.
  • Capture the KWin desktop through ScreenShot2 behind kwin-capture — #6890.
  • Write the KWin desktop entry for the install that owns the CLI — #6836.

Fixes

  • Keys for a popup an MPX click opened go through the master keyboard of the session that clicked — #5652.
  • The macOS WindowServer health check treats any app-bundle host as bundled — #5680.
  • Guard Space-free background window enumeration — #5712.
  • Stabilize the known flaky release-gate tests — #5538.
  • Build client-kind SDK constructors without rebuilding the driver — #5896.
  • Give the DOM-click baseline readback a longer budget — #5918.
  • Remove zero-caller macOS drag and AXValue helpers — #5962.
  • Remove zero-caller input, portal screencast, sway and overlay functions — #5958.
  • Inline identical refusal forwarders — #5963.
  • Delete zero-caller API in cua-driver-core and cua-driver — #5815.
  • Refuse Windows Chromium clicks from a minimized-window snapshot — #5686.
  • Treat Windows elements read while minimized as stale on resolver-routed clicks — #6049.
  • Remove dead macOS active-Space helper and single-use snapshot wrapper — #6094.
  • Drop the unused test-only capture registry action API — #6114.
  • Share overlay query reads across Linux and Windows — #6117.
  • Locate Finder by name on macOS — #5390.
  • Map Wayland punctuation shortcut keys — #4811.
  • Restore Windows cursor after foreground window clicks — #5772.
  • Honor modifiers during Windows drags — #5667.
  • Await synthetic smooth-scroll readback — #4602.
  • Share the keyring history key provider in cua-driver-core — #5895.
  • Resolve Windows press_key characters on the target's layout — #6201.
  • Deliver libei pointer input to secondary monitors — #5853.
  • Report denied Linux portal screenshots instead of falling back to X11 — #6124.
  • Share the DevTools /json/version probe across browser adapters — #6098.
  • Report the current frontmost app on macOS without the overlay — #6182.
  • Name current snapshots on a token-only refusal, and refuse a bare row a re-read orphaned — #6259.
  • Stop the Linux focus restore when the saved window is gone — #5596.
  • Count only the returned elements in an elements diff read — #5649.
  • Never borrow keycode 8 for a Linux text character — #5595.
  • A file write on the Cua Volume mount no longer fails after the file is in place — #6322.
  • Draw the GNOME helper cursor's tip on the click point — #6344.
  • Stop the X11 agent cursor splitting in two while it moves — #6343.
  • Quarantine the linux-kvm concurrent flake, fix the TCC seed lock and the Windows portmap pick — #6365.
  • Restore the X11 active window by bouncing the core focus when only the WM's record moved — #5651.
  • Record KDE Wayland desktops through the portal ScreenCast — #6361.
  • Scope bounded launch_app to resources.apps launch grants — #5690.
  • Paint the macOS cursor overlay as a region, not a full-screen frame — #5650.
  • Expose legacy macOS page fallback — #5590.
  • Collapse daemon-proxy spawn and test the macOS proxy path — #5812.
  • Stop unit tests mutating the process environment — #6417.
  • Keep browser refusal codes through protected scope attestation — #5573.
  • List bound tabs in the order the browser reports them — #5527.
  • Tell picom's damage lag from a torn frame in the X11 overlay test — #6431.
  • Report a sent but unanswered AT-SPI option pick as may-have-landed — #6445.
  • Time the batch pause test on a paused clock — #6453.
  • Treat a niri focus read-back the deadline cut off as unconfirmed — #6436.
  • Stamp the window-local point on macOS 27 background clicks — #5492.
  • Stop the Node runtime leaking a libuv handle per future poll — #5691.
  • Keep browser attestation off the renderer while a dialog is open — #5524.
  • Index disabled macOS controls and report enabled: false — #5635.
  • Remove stale screenshot tool references — #2317.
  • Return from a dom_event click when its handler opens a dialog — #5621.
  • Clear clippy -D warnings on main — #6461.
  • Bind every sdk test socket under a short /tmp dir — #6466.
  • Force embedded mode in the SDK in-process loader tests — #6485.
  • Normalize list_windows z-index parity — #2172.
  • Detect Hyprland input internals instead of pinning 0.56.2 — #6495.
  • Refuse with 'did not verify' when cosign cannot start in install.ps1 — #6483.
  • Add SPDX headers to cua-driver sources (CUA-3388) — #6516.
  • Treat niri workspace read-backs the cleanup deadline cut off as unconfirmed — #6520.
  • Keep a full budget for each dom_event click readback — #6519.
  • Initialize recording hooks for embedded platform registries — #5785.
  • Keep cua-driver-core clippy-clean without default features — #6543.
  • Raise own-process windows on the AppKit main queue (CUA-3309) — #6559.
  • Return from a trusted browser click when its handler opens a dialog — #6562.
  • Windows type_text posts UTF-16 units in order and repairs dropped tails (CUA-3122) — #6341.
  • Refuse disabled macOS controls on every token writer — #6503.
  • Start the composited X11 overlay test's reads once its desktop is on screen — #6512.
  • Refuse MCP requests before initialize on HTTP and envelope transports — #6743.
  • Keep polling macOS grants after the permissions gate times out — #6739.
  • Keep idle-end launch ownership only until a terminal end — #6738.
  • Keep a macOS sheet's own id for focus and snapshot scope — #6758.
  • Restore the prior X11 foreground after foreground type_text — #6768.
  • Keep a session's last use on its lifecycle record — #6773.
  • Restore the Windows foreground only after typed input drained — #6779.
  • Finalize the previous recording when a new one starts — #6794.
  • One macOS focus arbiter decides every activation undo — #6803.
  • Report a timed-out capture worker to the next caller — #6809.
  • Commit or roll back browser setup explicitly — #6808.
  • Hold every tool route on runtime admission while permissions are pending — #6802.
  • Admit per-pid state-capture workers in one critical section — #6807.
  • Name the no-window case in turn evidence (fixes Linux release gate) — #6839.
  • Retry perception resolve after extension lock contention — #6844.
  • Sweep orphaned extension staging and clean it on every refusal — #6845.
  • Report macOS opened-window identity per action — #6928.
  • Type exact text on the active keyboard layout or refuse it — #6827.
  • Name the dialog that blocks keys and how to reach a spreadsheet cell (CUA-3763) — #6937.
  • Clear portal-input clippy lints in platform-linux — #6940.
  • Renumber Linux list_windows z_index after its filters — #6938.
  • Call Text Input Sources only with the thread affinity macOS requires (CUA-3763) — #6939.
  • Cover foreground activation enabling a macOS AppKit control — #6947.

Performance

  • Build the tool contract manifest once per process — #5977.
  • Batch macOS type_text key events and stop polling a field that never changes — #6884.
  • Batch type_text key events on Windows and Linux — #6892.

Thanks to @AlexFalher, @BhaveshY, @CMGS, @Faraclas, @Iflaqbhat, @Katechnology, @MankhongGarden, @ShadyElsharnoby, @abonneth, @astrovm, @ayagmar, @chrisohearn, @cristicretu, @dry, @factory-ain3sh, @gakonst, @jhugman, @kurtguenther, @lidge-jun, @louistiti, @lucasfdale, @nick-inkeep, @philipljh, @sahiljagtap08, @shellwen, @skap3214, @sly321-pixel, @smraikai, @stanley50z, @will-bogusz, @ymqy for contributing.

Lume

Features

  • Add lume cp for host↔guest file transfer — #4896.
  • Compat gateways for E2B and Daytona, Hetzner as your own cloud, the elastic pool, cua share and the public relay — #5778.
  • Install source builds as lume-local, beside the released lume — #5804.
  • Ask first, CI runners, TCP shares, secure networks and the phone app, behind experiments — #6355.

Fixes

  • Stop a VM in lume serve without ending the server — #4662.
  • Preserve legacy multipart disk bytes during assembly — #4714.
  • Preserve background service during updates — #4337.
  • Shell-escape remote command arguments in lume ssh (#3879) — #3911.
  • Refuse a macOS guest start at the host's macOS guest limit — #3958.
  • Report a VM stopped once its guest stops on its own — #4853.
  • Pull parameterized OCI tar disk parts — #5192.
  • Print VM details as labeled fields in terminals — #5358.
  • Verify VM owner before stopping — #5611.
  • Reach macOS VMs over vsock, not Local Network or VPN routes (CUA-3139) — #6380.

Thanks to @0xABAN, @Iflaqbhat, @cooleryu, @coygeek, @jmgilman, @lorenzozanee, @shobhitagnihotri69, @zpv for contributing.

Get every update: follow with RSS.

Open in your browser to continue

Sign-in often fails inside this app's built-in browser. Open this page in Safari or Chrome to continue.