Cua Driver 0.39.0
Summary
This release adds 9 features and includes 67 fixes.
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) Thanks @gakonst.
- add JPEG screenshots to get_window_state and encode from raw pixels. (#6042) Thanks @gakonst.
- plain, upright agent cursor by default; effects and marks opt-in. (#6142)
- add a niri compositor adapter for Linux Wayland. (#6209) Thanks @ayagmar, @injaneity.
- 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) reported by @nick-inkeep.
- capture embedded startup diagnostics. (#3281)
Fixes
- keys for a popup an MPX click opened go through the master keyboard of the session that clicked. (#5652) Thanks @CMGS.
- the macOS WindowServer health check treats any app-bundle host as bundled. (#5680)
- guard Space-free background window enumeration. (#5712) Thanks @CMGS.
- 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) Thanks @philipljh.
- 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) Thanks @abonneth.
- map Wayland punctuation shortcut keys. (#4811) Thanks @louistiti.
- restore Windows cursor after foreground window clicks. (#5772) Thanks @BhaveshY.
- honor modifiers during Windows drags. (#5667) Thanks @stanley50z.
- await synthetic smooth-scroll readback. (#4602) Thanks @Iflaqbhat.
- share the keyring history key provider in cua-driver-core. (#5895) Thanks @injaneity.
- resolve Windows press_key characters on the target's layout. (#6201) Thanks @injaneity; reported by @MankhongGarden.
- deliver libei pointer input to secondary monitors. (#5853) Thanks @injaneity; reported by @Faraclas.
- 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) Thanks @injaneity; reported by @lucasfdale.
- 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) Thanks @CMGS, @injaneity.
- count only the returned elements in an elements diff read. (#5649) Thanks @skap3214.
- never borrow keycode 8 for a Linux text character. (#5595) Thanks @CMGS.
- a file write on the Cua Volume mount no longer fails after the file is in place. (#6322) reported by @stanley50z, @ymqy.
- 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) Thanks @CMGS.
- record KDE Wayland desktops through the portal ScreenCast. (#6361) Thanks @factory-ain3sh.
- scope bounded launch_app to resources.apps launch grants. (#5690) Thanks @Katechnology; reported by @ShadyElsharnoby.
- paint the macOS cursor overlay as a region, not a full-screen frame. (#5650) Thanks @CMGS.
- 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) Thanks @abonneth.
- list bound tabs in the order the browser reports them. (#5527) Thanks @abonneth.
- 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) Thanks @cristicretu.
- stop the Node runtime leaking a libuv handle per future poll. (#5691) Thanks @jhugman, @smraikai.
- keep browser attestation off the renderer while a dialog is open. (#5524) Thanks @abonneth.
- index disabled macOS controls and report enabled: false. (#5635) Thanks @kurtguenther; reported by @will-bogusz.
- remove stale screenshot tool references. (#2317)
- return from a dom_event click when its handler opens a dialog. (#5621) Thanks @sahiljagtap08.
- 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) Thanks @chrisohearn.
- refuse with 'did not verify' when cosign cannot start in install.ps1. (#6483) Thanks @sly321-pixel.
- 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) reported by @nick-inkeep.
- 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)
Performance
Contributors
Thanks to @abonneth, @ayagmar, @BhaveshY, @chrisohearn, @CMGS, @cristicretu, @factory-ain3sh, @Faraclas, @gakonst, @Iflaqbhat, @jhugman, @Katechnology, @kurtguenther, @louistiti, @lucasfdale, @MankhongGarden, @nick-inkeep, @philipljh, @sahiljagtap08, @ShadyElsharnoby, @skap3214, @sly321-pixel, @smraikai, @stanley50z, @will-bogusz, @ymqy for contributing to this release.
Install
macOS and Linux:
/bin/bash -c "$(curl -fsSL https://cua.ai/driver/install.sh)"Windows:
irm https://cua.ai/driver/install.ps1 | iexCua Driver ships universal macOS binaries, x86_64 and arm64 Windows builds,
and Linux preview builds. Release assets also include tag-pinned installer and
uninstaller scripts.
Why GitHub says “Pre-release”
GitHub's label is used only to keep this monorepo's repository-wide “Latest”
pointer from switching between independently released products. A plain Cua
Driver SemVer is a stable release; npm and PyPI publish it on
their normal stable channels, and the installers resolve the versioned
cua-driver-rs-v* releases directly.
SHA256 Checksums
40a0d56b2a1c01fbd0db1d51f6bb276c085a4babfa83d117d28d33e723ca2acc SHA256SUMS
c44069a9b94a0b83cd4b40f40b3f12eeeac7c488ca583ae13b7dbb0bfbe780dd SHA256SUMS.sigstore.json
4421f767f039ad8c9e1285db1cbe66a3f2750eee1c7737e84b1166a80daae331 _install-rust.sh
7d8a8f614c6d324993da63df699577e805241675ddcd3800737a14eed9d2a891 _install-rust.sh.sigstore.json
9fe1379416801678f1d9e2345b2e7ddb3c397e18592c38da3a7cc517b018c2fe checksums.txt
f0a7d7b97cbfb39d72ca71c93cd5b181f3ee88b7883639450216d4bbe91ea832 cua-driver-rs-0.39.0-darwin-arm64.tar.gz
496c267f5957be3982a938f95b88e829bc8f1d30d58f4d77610c0ace959d46e9 cua-driver-rs-0.39.0-darwin-arm64.tar.gz.sigstore.json
653b587615a9ccc61db959f460c4ec7277d20a65116d7ccd1efd3c31d2226a3d cua-driver-rs-0.39.0-darwin-universal-binary.tar.gz
c102ea49d613a65c8eeeb43f2ed26476440e8bfafe566023b95253841299a7ad cua-driver-rs-0.39.0-darwin-universal-binary.tar.gz.sigstore.json
dc16208934f470a46ba7ec00df0f857878874d6ad45a41284e3cec7023942242 cua-driver-rs-0.39.0-darwin-universal.tar.gz
72f186afd65c032f880c6e328b2fa839480f93d3ecd658d8a14718c858f805c5 cua-driver-rs-0.39.0-darwin-universal.tar.gz.sigstore.json
fdd32c87b30478fb47f58edf032ee86fd22d628126f4273e292220c1429cae43 cua-driver-rs-0.39.0-darwin-x86_64.tar.gz
10e191bf6a86e227e9b379d3cc60182e7dc564da0bf09203de4b294e8ed659f4 cua-driver-rs-0.39.0-darwin-x86_64.tar.gz.sigstore.json
ac64cdec870f973b5f74c77ff9aa236891739892b8a4eaf445b49d9d30b0c9dd cua-driver-rs-0.39.0-linux-arm64-binary.tar.gz
a41e9d418bad0ffccf7a922c8e9bd479e2c689267e885b83025e607fe970dc8f cua-driver-rs-0.39.0-linux-arm64-binary.tar.gz.sigstore.json
96bab7af1e0157b301c262f669e6a02098b31eba5926f6e3318ea67311d07d00 cua-driver-rs-0.39.0-linux-arm64.tar.gz
4e241e633352740472177b8c7e41928416a0315e66e95a431d96b5404cfb119d cua-driver-rs-0.39.0-linux-arm64.tar.gz.sigstore.json
c1c489637dc5aab59026a350463b1030a6d1635d7770639282de6c224200dad7 cua-driver-rs-0.39.0-linux-x86_64-binary.tar.gz
d93129a821836866f56e822d2a9ad388d2f4f1c404a7bf47f9624cf6afff187b cua-driver-rs-0.39.0-linux-x86_64-binary.tar.gz.sigstore.json
4b8b0252863c8fd8855543dadf73d09184a6c8fba8889be53d783b1def02117a cua-driver-rs-0.39.0-linux-x86_64.tar.gz
e62d1d80d27bf8592ce1d0395a569d1078eb85b72bbc39616eecb7ba9ff543c7 cua-driver-rs-0.39.0-linux-x86_64.tar.gz.sigstore.json
270900fe04b7951158f042f6575f235a8284cddab6f385473d8b44fe8c54a2d4 cua-driver-rs-0.39.0-windows-arm64-binary.zip
3829f9fa6800a98e7f3216e609d81c6dd12d84ff930d3de4ac711d7018ede217 cua-driver-rs-0.39.0-windows-arm64-binary.zip.sigstore.json
bf8b338534dbd7e44b8a4f0f09006ffcfb768333604befc7196db0753f572c4a cua-driver-rs-0.39.0-windows-arm64.zip
665856f555d55b1ece34d8cfdaf70d6624873ac3219d44ecfce38e7b8c5bbe78 cua-driver-rs-0.39.0-windows-arm64.zip.sigstore.json
fe5d277c0fbbee00a2c8a6503648f5336355f8a5d3907d91cde07a902600ab73 cua-driver-rs-0.39.0-windows-x86_64-binary.zip
d66ce458aaf1bbb0a1faabc846d6b491adb2fb86183341a84d9a06451acc5ce7 cua-driver-rs-0.39.0-windows-x86_64-binary.zip.sigstore.json
4e81e5b13538f3c0da418be2f3be50764e1907f7b934b6266ca8bcb4b475b541 cua-driver-rs-0.39.0-windows-x86_64.zip
e83ed49dbc52ec9d31220aa26939ff1f1e633ba823c9f8f8cb066b259eef2dc3 cua-driver-rs-0.39.0-windows-x86_64.zip.sigstore.json
cc34275e21419db7b46b693b07dc82bab5f4191d0fbeb6216617f1a2cfed5c47 cua-driver-rs-v0.39.0-skills.tar.gz
561553419136637ddcf5ceb33fc18dbc678c3ad3616599be69600885a4b4e46b cua-driver-rs-v0.39.0-skills.tar.gz.sigstore.json
0c6f9ed0f7a8a4e51033b16df44d78ddf32e4b5943523387518d97b92a3a881c cua-hyprland-plugin-0.39.0-81f3e1bbc0d113c1a33a71b4150fb6ece6a5e9cd-build-kit.tar.gz
3f7936ff70fbb57c62f7765de4bee66753296ff880a91aa5285a1240d0916ce1 cua-hyprland-plugin-0.39.0-81f3e1bbc0d113c1a33a71b4150fb6ece6a5e9cd-build-kit.tar.gz.sigstore.json
0ee90a18f406ff3e13f5f4faba390e662c944be0baa29b195c7820b319d399e6 cua-hyprland-plugin-0.39.0-81f3e1bbc0d113c1a33a71b4150fb6ece6a5e9cd.tar.gz
b6ae599ef29aed50dfc7fff951973b5ab365bea1ae0ccbcc4c7ad6c3b7d58025 cua-hyprland-plugin-0.39.0-81f3e1bbc0d113c1a33a71b4150fb6ece6a5e9cd.tar.gz.sigstore.json
0bc0c51dc373067096be35c0b2e89294bfd5a7acafbbf10563d404f87258f353 install.ps1
bb01709f3a31823377bacc4d3f901ad97a3e43501693809f8a128ce4521d2eb9 install.ps1.sigstore.json
a103177e0df86d04d752bfa20c73f99a3e501906f1814c3127da84788539d9ba install.sh
a32464df58ed15586eff34624cdd3f27a85bab4f88e2ca01c4f9bb8ee32dc59e install.sh.sigstore.json
1bde1d55e0220fda853c262b5732ecd9b9bd9b181c7db3ee4013ca4be70a93ce uninstall.ps1
e58a082f25f4b4b519b32821fea6beffd4fab1a846a3fdda55aa2316f8eeec16 uninstall.ps1.sigstore.json
e213843003f6440a16308e3b39e10010caae898a6d4dc65a1b3b7cf18e18cbec uninstall.sh
07d0825c8b3fd11003f5b6d6560d58964a1f05a15257bb227da81224756265cf uninstall.sh.sigstore.json