Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-rust-linux.yml
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ jobs:
libei-dev libxkbcommon-dev libx11-dev libxi-dev libxtst-dev libxext-dev
- name: Run Linux Rust tests
working-directory: libs/cua-driver/rust
run: cargo test -p cua-driver -p cua-driver-contract -p cua-driver-core -p cua-driver-testkit -p platform-linux --all-targets --locked
run: cargo test -p cua-driver -p cua-driver-contract -p cua-driver-core -p cua-driver-testkit -p cursor-overlay -p cursor-theme-cli -p platform-linux --all-targets --locked
- name: Compile portable GNOME/KDE portal input
working-directory: libs/cua-driver/rust
run: cargo check -p cua-driver --features portal-input --locked
11 changes: 9 additions & 2 deletions .github/workflows/ci-rust-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,10 +63,17 @@ jobs:
working-directory: libs/cua-driver/rust
# Compile every Rust target without executing desktop-dependent integration
# tests; interactive behavior belongs in e2e-rust-windows.yml.
run: cargo test -p cua-driver -p cua-driver-core -p cua-driver-sdk -p cua-driver-testkit -p platform-windows -p cua-driver-uia --all-targets --no-run --locked
run: cargo test -p cua-driver -p cua-driver-core -p cua-driver-sdk -p cua-driver-testkit -p cursor-overlay -p cursor-theme-cli -p platform-windows -p cua-driver-uia --all-targets --no-run --locked
- name: Run cross-platform cursor renderer unit tests
working-directory: libs/cua-driver/rust
run: |
cargo test -p cursor-overlay --lib --locked
if ($LASTEXITCODE -ne 0) { throw "cursor renderer tests failed with exit $LASTEXITCODE" }
cargo test -p cursor-theme-cli --locked
if ($LASTEXITCODE -ne 0) { throw "cursor theme compiler tests failed with exit $LASTEXITCODE" }
- name: Run Windows delivery guidance unit tests
working-directory: libs/cua-driver/rust
run: 'cargo test -p platform-windows input::delivery::tests:: --lib --locked'
run: "cargo test -p platform-windows input::delivery::tests:: --lib --locked"
- name: Run transport-independent authorization and SDK tests
working-directory: libs/cua-driver/rust
run: |
Expand Down
26 changes: 19 additions & 7 deletions docs/content/docs/how-to-guides/driver/personalize-cursor.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,13 @@ whitespace, and shortens labels longer than 28 characters. The label is visual
identity only. It does not grant authorization, select another session's
capabilities, or expose Cua's private runtime identifier.

The badge also shows execution context when it applies. A filled delivery chip
identifies `background` or `foreground`, followed by an outlined target chip
for `ax`, `pixel`, `browser`, or `desktop`. These chips stay visible while the
action is active and fade independently from the session name. They are drawn
by Cua Driver, so their meaning stays consistent across themes and operating
systems.

The old `set_agent_cursor_style` operation and its `cursor_id`, shape, color,
label, size, opacity, image-path, gradient, and bloom styling fields have been
removed. (`cursor_id` may still appear on input-delivery tools where it names a
Expand All @@ -64,8 +71,6 @@ A source theme is a dotLottie archive with:
- a `cua/theme.json` semantic manifest;
- all twelve actions: `idle`, `observe`, `click`, `drag`, `scroll`, `text`,
`key`, `navigate`, `app`, `transfer`, `record`, and `system`;
- all six modifiers: `background`, `foreground`, `ax`, `pixel`, `browser`, and
`desktop`;
- a representative `still_frame` for every animation;
- an author and license.

Expand All @@ -75,7 +80,7 @@ author, and license. It preserves paths and strokes as vectors, so the native
renderer can draw them at the current display scale instead of enlarging a
fixed-resolution image.

![The six delivery and target modifiers supported by Cua cursor themes](/img/cua-driver/cursor-themes/delivery-target-context.gif)
![The host-rendered delivery and target context chips](/img/cua-driver/cursor-themes/delivery-target-context.gif)

Validate, compile, inspect, and preview the source:

Expand All @@ -96,9 +101,15 @@ cua-driver set_agent_cursor_theme \
'{"session":"demo","theme_id":"com.example.cursor.studio"}'
```

Profile v1 does not compile dotLottie color/theme variants. Publish each
Profile v2 does not compile dotLottie color/theme variants. Publish each
visually distinct design under a separate theme ID.

Profile v2 contains action animations only. The source manifest uses
`"schema": "cua.cursor-theme/2"`,
`"profile": "cua-driver-actions-v2"`, and `"semantics": 2`. V1 source and
compiled artifacts are rejected. Remove the old `modifiers` section and rebuild
the theme with the current compiler.

## Why installation is separate

Theme authoring is a trusted local workflow. The short-lived compiler validates
Expand All @@ -113,9 +124,10 @@ cannot install source or submit inline animation data.

The built-in `cua.default` theme uses the same compiler and renderer. Cua ships
its compiled artifact inside the driver, so users do not need to install it.
The driver applies the stable session color and shared floating motion after
compositing the default theme's action and modifier layers. Installed custom
themes keep their authored colors.
The driver applies the stable session color and shared floating motion to the
default theme's action layer. Installed custom themes keep their authored
colors. The host renders delivery and target chips in the badge for both the
default and custom themes.

Remove a custom theme with:

Expand Down
Loading
Loading