Skip to content

fix(web): restore default remote cursor rendering - #1910

Merged
Benoît Cortier (CBenoit) merged 1 commit into
Devolutions:masterfrom
lamco-admin:fix/web-enable-server-pointer
Sep 8, 2026
Merged

Benoît Cortier (CBenoit) merged 1 commit into
Devolutions:masterfrom
lamco-admin:fix/web-enable-server-pointer

Conversation

@glamberson

Copy link
Copy Markdown
Contributor

build_config() has hardcoded enable_server_pointer: false since the
no_server_pointer to enable_server_pointer rename (218fed0) inverted
the flag's polarity without updating this literal. The CLI call site in
the same commit correctly negated the old value (!args.no_server_pointer);
this bare literal in ironrdp-web was missed.

The native client already defaults to true
(ClientBuilder::enable_server_pointer.unwrap_or(true)), so this restores
parity. Today, remote cursor shapes silently never render in the web
client: ironrdp-session::fast_path::process_pointer_update returns on
its first line when the flag is false, with no error at any log level,
so the regression is invisible until someone reads the source.

Fixes #1900, which independently rebuilt the wasm package with this exact
one-line change and verified all remote cursor shapes work correctly
against a real Windows Server host.

Not bundled here: the issue also suggests exposing this setting on
SessionBuilder so embedders can turn it off deliberately, since nothing
in the current public API reaches it. Leaving that as a separate,
smaller follow-up rather than widening this fix's scope.

cargo xtask check fmt/lints/tests/typos/locks and cargo xtask wasm check all pass.

build_config() has hardcoded enable_server_pointer: false since the
no_server_pointer -> enable_server_pointer rename inverted the flag's
polarity without updating this literal. The CLI call site in the same
commit correctly negated the old value; this bare literal was missed.

The native client already defaults to true
(ClientBuilder::enable_server_pointer.unwrap_or(true)), so this
restores parity: remote cursor shapes silently never render in the web
client today, with no error at any log level, since
fast_path.rs::process_pointer_update returns immediately when the flag
is false.

Fixes Devolutions#1900.
@github-actions github-actions Bot added kind/protocol Affects RDP or related protocol behavior needs-review A human reviewer is the current next actor risk/low Self-contained change with no cross-crate behavioral effect scope/web Affects the web/WASM ecosystem size/XS Size: up to 49 counted lines and 2 files labels Sep 5, 2026

@CBenoit Benoît Cortier (CBenoit) left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The change is a minimal, targeted one-line default fix that aligns with existing client behavior and directly resolves the identified regression without introducing new control flow or API surface.

Pull request overview

Restores the expected default behavior for remote cursor rendering in the WASM/web client by re-enabling server pointer processing in ironrdp-web’s build_config(), matching the native client default and fixing the post-rename polarity regression described in #1900.

Changes:

  • Set enable_server_pointer: true in crates/ironrdp-web/src/session.rs::build_config() so pointer updates are processed and cursor styles can be applied.
File summaries
File Description
crates/ironrdp-web/src/session.rs Fixes the web client config default so server pointer updates are no longer silently dropped, restoring remote cursor shape rendering.
Review details
  • Files reviewed: 1/1 changed files
  • Comments generated: 0
  • Review effort level: Lite

@CBenoit
Benoît Cortier (CBenoit) merged commit 3f0ab8d into Devolutions:master Sep 8, 2026
42 checks passed
Anton Mostovoy (antonmos) added a commit to antonmos/IronRDP that referenced this pull request Sep 8, 2026
…nnection-negotiation

* upstream/master: (124 commits)
  feat(server): let an authenticated connection preempt an existing session (Devolutions#1476)
  ci(pr-automation): recover reviewer stages (Devolutions#1922)
  ci(pr-automation): report review check diagnostics (Devolutions#1926)
  ci(pr-automation): recover agent runtime (Devolutions#1921)
  ci(pr-automation): report reviewer recovery (Devolutions#1920)
  docs(pr-automation): define review recovery intent (Devolutions#1915)
  feat(web): expose enable_server_pointer from the WASM module (Devolutions#1914)
  fix(web): restore default remote cursor rendering (Devolutions#1910)
  feat(usb)!: support SuperSpeed packet sizes (Devolutions#1883)
  ci(pr-automation): explain reviewer ineligibility (Devolutions#1906)
  ci(pr-automation): explain skipped reviews (Devolutions#1907)
  ci(pr-automation): request JSON mode (Devolutions#1908)
  ci(pr-automation): repair empty agent responses (Devolutions#1905)
  ci(pr-automation): diagnose invalid repairs (Devolutions#1904)
  ci(pr-automation): simplify review findings (Devolutions#1901)
  fix(server): bound accept_finalize so a wedged client cannot hold the server (Devolutions#1890)
  ci(pr-automation): improve reviewer diagnostics (Devolutions#1898)
  ci(pr-automation): redispatch explicit retries (Devolutions#1897)
  test: focus PR automation workflow coverage (Devolutions#1896)
  feat(agent): add clipboard image support (Devolutions#1877)
  ...

# Conflicts:
#	crates/ironrdp-server/src/server.rs
@glamberson
Greg Lamberson (glamberson) deleted the fix/web-enable-server-pointer branch October 19, 2026 21:55

This branch was previously deployed

1 inactive deployment
llm-providers — 4b55843b Deployed Sep 5, 2026 by glamberson via Classify pull request #5106
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

kind/protocol Affects RDP or related protocol behavior needs-review A human reviewer is the current next actor risk/low Self-contained change with no cross-crate behavioral effect scope/web Affects the web/WASM ecosystem size/XS Size: up to 49 counted lines and 2 files

Development

Successfully merging this pull request may close these issues.

ironrdp-web: remote cursor shapes never applied — the enable_server_pointer rename inverted the flag but not the literal

3 participants