Files
wehub-resource-sync 91e75e620b
CI: cua-driver distro-compat matrix / debian:12 (glibc 2.36) (push) Has been cancelled
CI: SPDX Headers / Check SPDX headers (warn-only) (push) Has been cancelled
CD: Docs MCP Server / build (linux/amd64) (push) Has been cancelled
CD: Docs MCP Server / build (linux/arm64) (push) Has been cancelled
CD: Docs MCP Server / merge (push) Has been cancelled
CI: cua-driver distro-compat matrix / Resolve release version (push) Has been cancelled
CI: cua-driver distro-compat matrix / fedora:41 (glibc 2.40) (push) Has been cancelled
CI: cua-driver distro-compat matrix / rockylinux:9 (glibc 2.34) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:22.04 (glibc 2.35) (push) Has been cancelled
CI: cua-driver distro-compat matrix / ubuntu:24.04 (glibc 2.39) (push) Has been cancelled
CI: cua-driver distro-compat matrix / Distro compat summary (push) Has been cancelled
CI: Rust Linux unit / Rust Linux unit and compile (push) Has been cancelled
CI: Rust Windows unit / Rust Windows unit and compile (push) Has been cancelled
CI: Nix Linux Rust source / Nix / compositor build (push) Has been cancelled
CI: Nix Linux Rust source / Nix / driver package (push) Has been cancelled
CI: Nix Linux Rust source / Nix / Rust unit tests (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:19 +08:00

8.9 KiB

Desktop action support

This ledger records the canonical Rust harness contracts for Windows, macOS, and Linux. It is derived from typed CaseSpec rows and accepted E2E evidence, not from a successful driver response alone.

  • Delivered means a fixture-owned state change was observed.
  • Refused means the exact structured refusal code and all required desktop side-effect oracles passed.
  • Gap means unsupported or not yet proven. A missing row is never evidence that an action is impossible.

AX and PX describe how the target is selected. They do not require the same delivery backend: a PX target may be hit-tested and delivered through AX/UIA when that is the background-safe route.

Accepted baselines

Environment Exact source Accepted evidence
Windows/Win32 6d7f02e4 Run 29211506624: 114/114 rows, 93 delivered and 21 exact refusals
macOS/Quartz 448d052f Logged-in local matrix: 133/133 rows with owned per-cell MP4 evidence
Linux/X11 72083bb4 Run 29213365684: 108/108 rows, 71 delivered and 37 exact refusals
Linux/Sway 72083bb4 Run 29213349962: 108/108 rows, 71 delivered and 37 exact refusals

Shared web harnesses

Foreground rows listed here are delivered for both AX and PX.

OS Harness Background delivered Background refused
Windows Electron left click and child window AX/PX right click and double click AX/PX, plus drag PX: background_occluded; type text, press key, hotkey, and scroll AX/PX plus editor save AX: background_unavailable; start_minimized launch: background_unavailable when Windows denies the foreground lock, with no process spawned
Windows Tauri left/right/double click AX/PX, type text AX/PX, press key AX/PX, child window AX/PX, scroll AX, editor save AX hotkey AX/PX and scroll PX: background_unavailable; drag PX: background_occluded
macOS Electron left/right/double click AX/PX, type text AX/PX, press key AX/PX, hotkey AX/PX, child window AX/PX, editor save AX scroll AX/PX and drag PX: background_unavailable
macOS Tauri left/right/double click AX/PX, type text AX/PX, press key AX/PX, hotkey AX/PX, scroll AX/PX, child window AX/PX, editor save AX drag PX: background_unavailable
macOS WKWebView left/right/double click AX/PX, type text AX/PX, press key AX/PX, hotkey AX/PX, scroll AX/PX, child window AX/PX, editor save AX drag PX: background_unavailable
Linux X11 Electron Background AX left click and child-window actions deliver with strict focus, z-order, cursor, and input-leak oracles Background PX left click, AX/PX right and double click, PX child window and drag, AX/PX keyboard and scroll, and AX editor save return exact background_unavailable
Linux X11 Tauri Background AX/PX left click and child-window actions deliver with strict focus, z-order, cursor, and input-leak oracles Other background pointer, keyboard, scroll, drag, and editor-save shapes return exact background_unavailable
Linux Sway Electron The full 36-cell catalog has accepted fixture-owned evidence; safe semantic and compositor routes deliver Focus-bound and raw background shapes without a target-addressed route return their declared exact refusal
Linux Sway Tauri The full 36-cell WebKitGTK catalog has accepted fixture-owned evidence, including live compositor geometry and roleless WebProcess targeting Focus-bound and raw background shapes without a target-addressed route return their declared exact refusal

All shared background rows require fixture state, focus, z-order, cursor, and no-leaked-input evidence. Foreground rows require fixture state and retain a video plus before/after turn evidence.

Native Windows

Harness Proven contracts Refusals and gaps
WPF Native AX controls; background combo selection, left click, and value changes; PX background left click through UIA hit-testing; foreground pointer gestures Background F5 and PX drag are background_unavailable. Additional PX gesture rows remain unproven.
WinUI3 Current UIA control, value, selection, popup, and slider rows Background right/double-click refusal behavior and broader PX coverage remain unproven.
WebView2 CDP page operations; native PX background left click through UIA hit-testing Native keyboard and broader pointer cells remain unproven outside the shared Tauri/Electron hosts.

background_uipi_blocked is a production refusal code with no canonical elevated fixture today. It must not be counted as covered until a controlled integrity-level harness can exercise it.

Native macOS

Harness Proven contracts Refusals and gaps
AppKit AX tree/capture; AX background left click, set value, and type text; PX background left/right/double click; PX foreground right/double click and slider drag; AX foreground/background scroll; desktop PX foreground left click PX background slider drag returns exact background_unavailable. Native press key, hotkey, AX-addressed right/double click, and broader control combinations remain unproven.
SwiftUI AX tree/capture; AX background left click and set value; foreground popover-trigger activation The fixture proves popover_open=true, but the transient panel remains absent from targeted AX enumeration. Other native pointer and keyboard combinations remain unproven.
WKWebView Full 36-cell shared-web catalog through the dedicated repo-local native host PX background drag returns exact background_unavailable; the other 35 shared cells deliver. Native host-specific controls are outside this fixture.

Native Linux

Linux is recorded per display server and compositor because Wayland protocols are capabilities, not one uniform API.

Environment Proven contracts Refusals and gaps
X11/Openbox Exact run 29213365684 passed all 108 declared outcomes: 71 deliveries and 37 exact refusals. GTK3 AT-SPI actions and values, foreground XTest pointer/keyboard routes, capture, desktop scope, and the complete Electron/Tauri catalog all reached fixture-owned oracles. Xvfb does not prove the real-Xorg MPX/uinput background pointer route. Toolkits that reject XSendEvent retain exact refusals.
Sway/wlroots Exact run 29213349962 passed the same 108 outcomes as X11: 71 deliveries and 37 exact refusals. The complete Electron, Tauri, GTK3, capture, and desktop-scope catalogs use live Sway identity/geometry and external fixture oracles. Stock Wayland cannot target raw focus-bound input at an occluded surface. Those rows retain exact refusals; another wlroots compositor is not assumed equivalent until a material divergence is reported and tested.
GNOME/Mutter A real GNOME 46 Wayland run passed the full GTK3 matrix, 31/31. The WinRects helper supplies stable window ids, frame and buffer geometry, stacking, verified activation, stage capture, and the compositor cursor. AT-SPI handles semantic actions; persistent portal/libei sessions deliver foreground PX click, right/double click, drag, scroll, type, key, and hotkey. Background rows either deliver through AT-SPI with focus and leak guards or return the declared exact refusal. The helper requires installation plus one Shell-session restart. Without it, target-bound foreground input refuses. Portal video and a shared Electron/Tauri GNOME run remain open.
KDE/KWin A Plasma 6 session reached GTK AT-SPI discovery, generic toplevel discovery, and portal-interface preflight. Portal input is compiled into release binaries. No behavioral matrix is accepted. A target-addressable KWin activation adapter is not implemented, so foreground portal/libei input refuses instead of injecting into the wrong focused app.
Nested cua-compositor The optional backend owns its nested session and is covered by typed shared, native, and capture catalogs. Run 29197643541 passed native GTK3 31/31; run 29197887387 passed capture/scope 5/5. Full shared run 29199596935 passed 26/36 Electron rows before the occluded-subtree and wheel-frame repairs. The lane remains experimental. The accepted full shared run still has 10 failures; focused replacement runs reduce that set but do not promote the environment. Unicode text and a canonical parallel-drag row remain unproven. This private route is not evidence of a stock-Wayland capability.

PX background left-click rows may resolve the screen point to an actionable AT-SPI node. Such a pass proves the public PX-addressed behavior and its desktop side effects, but it does not prove raw pixel delivery to canvases or games.

Maintenance rule

Update this document only when a typed row is added, removed, or changes contract and an empirical run supports the change. Keep unsupported delivery as an exact refusal where the driver can determine it before dispatch. When an OS API reports success but offers no effect read-back, retain a visible gap rather than inventing a fixture-specific refusal in production code.