Skip to content

chore(release): prepare for publishing - #2240

Closed
devolutionsbot wants to merge 2 commits into
masterfrom
release-plz/2026-10-26T16-25-38Z
Closed

devolutionsbot wants to merge 2 commits into
masterfrom
release-plz/2026-10-26T16-25-38Z

Conversation

@devolutionsbot

@devolutionsbot devolutionsbot commented Oct 26, 2026 •

Copy link
Copy Markdown
Contributor

🤖 New release

  • iron-remote-desktop: 0.8.0 -> 0.8.1 (✓ API compatible changes)
  • ironrdp-core: 0.3.0 -> 0.3.1 (✓ API compatible changes)
  • ironrdp-pdu: 0.10.0 -> 0.11.0 (⚠ API breaking changes)
  • ironrdp-connector: 0.11.0 -> 0.12.0 (⚠ API breaking changes)
  • ironrdp-acceptor: 0.11.0 -> 0.11.1 (✓ API compatible changes)
  • ironrdp-cfg: 0.2.0 -> 0.3.0 (⚠ API breaking changes)
  • ironrdp-dvc: 0.9.0 -> 0.9.1 (✓ API compatible changes)
  • ironrdp-dvc-pipe-proxy: 0.6.0 -> 0.6.1 (✓ API compatible changes)
  • ironrdp-graphics: 0.10.0 -> 0.10.1 (✓ API compatible changes)
  • ironrdp-egfx: 0.4.0 -> 0.5.0 (✓ API compatible changes)
  • ironrdp-mstsgu: 0.0.2 -> 0.0.3 (✓ API compatible changes)
  • ironrdp-rdcleanpath: 0.3.0 -> 0.3.1 (✓ API compatible changes)
  • ironrdp-rdpdr: 0.8.0 -> 0.8.1 (✓ API compatible changes)
  • ironrdp-rdpeudp-tokio: 0.1.0 -> 0.2.0 (⚠ API breaking changes)
  • ironrdp-str: 0.2.0 -> 0.2.1 (✓ API compatible changes)
  • ironrdp-rdpeusb: 0.1.0 -> 0.2.0 (⚠ API breaking changes)
  • ironrdp-rdpsnd-native: 0.7.0 -> 0.8.0 (✓ API compatible changes)
  • ironrdp-session: 0.12.0 -> 0.13.0 (⚠ API breaking changes)
  • ironrdp-dvc-com-plugin: 0.2.0 -> 0.2.1 (✓ API compatible changes)
  • ironrdp-server: 0.13.0 -> 0.14.0 (⚠ API breaking changes)
  • ironrdp-rdpdr-native: 0.8.0 -> 0.8.1 (✓ API compatible changes)
  • ironrdp-svc: 0.9.0 -> 0.9.1
  • ironrdp-async: 0.11.0 -> 0.11.1
  • ironrdp-cliprdr: 0.8.0 -> 0.8.1
  • ironrdp-displaycontrol: 0.9.0 -> 0.9.1
  • ironrdp-echo: 0.5.0 -> 0.5.1
  • ironrdp-rdpsnd: 0.10.0 -> 0.10.1
  • ironrdp-rdpeai: 0.1.0 -> 0.1.1
  • ironrdp-rdpegt: 0.1.0 -> 0.1.1
  • ironrdp-rdpei: 0.2.0 -> 0.2.1
  • ironrdp-rdpel: 0.0.1 -> 0.0.2
  • ironrdp-rdpevor: 0.1.0 -> 0.1.1
  • ironrdp-tokio: 0.11.0 -> 0.11.1
  • ironrdp-vmconnect: 0.1.0 -> 0.1.1
  • ironrdp-egfx-native: 0.1.0 -> 0.1.1
  • ironrdp-rdpecam: 0.1.0 -> 0.1.1
  • ironrdp-rdpewa: 0.1.0 -> 0.1.1
  • ironrdp-input: 0.8.0 -> 0.8.1
  • ironrdp-blocking: 0.11.0 -> 0.11.1
  • ironrdp-rpc: 0.1.0 -> 0.1.1

⚠ ironrdp-pdu breaking changes

--- failure enum_repr_int_removed: enum repr(u*)/repr(i*) removed ---

Description:
repr(u*) or repr(i*) was removed from an enum. This can cause its memory representation to change, breaking FFI use cases.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#repr-int-enum-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_repr_int_removed.ron

Failed in:
  enum LogonErrorNotificationType in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs:251

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_variant_added.ron

Failed in:
  variant LogonErrorNotificationType:NtStatus in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-pdu/src/rdp/session_info/logon_extended.rs:269

⚠ ironrdp-connector breaking changes

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field Config.desktop_physical_size in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/lib.rs:166
  field Config.desktop_orientation in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/lib.rs:171
  field Config.device_scale_factor in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/lib.rs:177
  field Config.monitor_extended_layout in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/lib.rs:182
  field Config.relative_mouse_input in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/lib.rs:190

--- failure enum_no_repr_variant_discriminant_changed: enum variant had its discriminant change value ---

Description:
The enum's variant had its discriminant value change. This breaks downstream code that used its value via a numeric cast like `as isize`.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html#assigning-discriminant-values
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_no_repr_variant_discriminant_changed.ron

Failed in:
  variant ClientConnectorState::BasicSettingsExchangeSendInitial 5 -> 8 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:255
  variant ClientConnectorState::BasicSettingsExchangeWaitResponse 6 -> 9 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:258
  variant ClientConnectorState::ChannelConnection 7 -> 10 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:261
  variant ClientConnectorState::SecureSettingsExchange 8 -> 11 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:265
  variant ClientConnectorState::ConnectTimeAutoDetection 9 -> 12 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:269
  variant ClientConnectorState::LicensingExchange 10 -> 13 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:273
  variant ClientConnectorState::MultitransportBootstrapping 11 -> 14 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:287
  variant ClientConnectorState::MultitransportPending 12 -> 15 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:315
  variant ClientConnectorState::CapabilitiesExchange 13 -> 16 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:333
  variant ClientConnectorState::ConnectionFinalization 14 -> 17 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:336
  variant ClientConnectorState::Connected 15 -> 18 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:339
  variant ClientConnectorState::Redirected 16 -> 19 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-connector/src/connection.rs:345

⚠ ironrdp-cfg breaking changes

--- failure trait_method_added: pub trait method added ---

Description:
A non-sealed public trait added a new method without a default implementation, which breaks downstream implementations of the trait
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-new-item-no-default
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/trait_method_added.ron

Failed in:
  trait method ironrdp_cfg::PropertySetExt::usb_devices_to_redirect in file /tmp/.tmp107qXt/IronRDP/crates/ironrdp-cfg/src/lib.rs:706
  trait method ironrdp_cfg::PropertySetExt::set_usb_devices_to_redirect in file /tmp/.tmp107qXt/IronRDP/crates/ironrdp-cfg/src/lib.rs:708
  trait method ironrdp_cfg::PropertySetExt::clear_usb_devices_to_redirect in file /tmp/.tmp107qXt/IronRDP/crates/ironrdp-cfg/src/lib.rs:710

⚠ ironrdp-rdpeudp-tokio breaking changes

--- failure auto_trait_impl_removed: auto trait no longer implemented ---

Description:
A public type has stopped implementing one or more auto traits. This can break downstream code that depends on the traits being implemented.
        ref: https://doc.rust-lang.org/reference/special-types-and-traits.html#auto-traits
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/auto_trait_impl_removed.ron

Failed in:
  type MultitransportBootstrap is no longer UnwindSafe, in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeudp-tokio/src/multitransport.rs:61
  type MultitransportBootstrap is no longer RefUnwindSafe, in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeudp-tokio/src/multitransport.rs:61
  type MultitransportBootstrap is no longer UnwindSafe, in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeudp-tokio/src/multitransport.rs:61
  type MultitransportBootstrap is no longer RefUnwindSafe, in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeudp-tokio/src/multitransport.rs:61
  type UdpTransport is no longer UnwindSafe, in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeudp-tokio/src/transport.rs:306
  type UdpTransport is no longer RefUnwindSafe, in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeudp-tokio/src/transport.rs:306
  type UdpTransport is no longer UnwindSafe, in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeudp-tokio/src/transport.rs:306
  type UdpTransport is no longer RefUnwindSafe, in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeudp-tokio/src/transport.rs:306

⚠ ironrdp-rdpeusb breaking changes

--- failure constructible_struct_adds_field: externally-constructible struct adds field ---

Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
        ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/constructible_struct_adds_field.ron

Failed in:
  field DeviceInfo.isochronous in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeusb/src/io/device.rs:76
  field DeviceInfo.isochronous in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-rdpeusb/src/io/device.rs:76

⚠ ironrdp-session breaking changes

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_variant_added.ron

Failed in:
  variant ActiveStageOutput:WindowSurfaceUpdates in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-session/src/active_stage.rs:932
  variant ActiveStageOutput:SessionId in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-session/src/active_stage.rs:947
  variant ActiveStageOutput:LogonErrors in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-session/src/active_stage.rs:982
  variant ProcessorOutput:SessionId in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-session/src/x224/mod.rs:53
  variant ProcessorOutput:LogonErrors in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-session/src/x224/mod.rs:85

⚠ ironrdp-server breaking changes

--- failure enum_marked_non_exhaustive: enum marked #[non_exhaustive] ---

Description:
A public enum has been marked #[non_exhaustive]. Pattern-matching on it outside of its crate must now include a wildcard pattern like `_`, or it will fail to compile.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#attr-adding-non-exhaustive
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_marked_non_exhaustive.ron

Failed in:
  enum MouseEvent in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/handler.rs:28

--- failure enum_no_repr_variant_discriminant_changed: enum variant had its discriminant change value ---

Description:
The enum's variant had its discriminant value change. This breaks downstream code that used its value via a numeric cast like `as isize`.
        ref: https://doc.rust-lang.org/reference/items/enumerations.html#assigning-discriminant-values
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_no_repr_variant_discriminant_changed.ron

Failed in:
  variant MouseEvent::VerticalScroll 11 -> 3 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/handler.rs:52
  variant MouseEvent::Scroll 12 -> 5 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/handler.rs:58
  variant MouseEvent::RelMove 13 -> 6 in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/handler.rs:62

--- failure enum_variant_added: enum variant added on exhaustive enum ---

Description:
A publicly-visible enum without #[non_exhaustive] has a new variant.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#enum-variant-new
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_variant_added.ron

Failed in:
  variant DisplayUpdate:LargePointer in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/display.rs:37
  variant ServerEvent:EvictedByOtherConnection in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/server.rs:1438
  variant ServerEvent:Disconnect in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/server.rs:1441
  variant ServerEvent:Redirect in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/server.rs:1444
  variant ServerEvent:Rdpdr in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/server.rs:1447
  variant ServerEvent:Rdpeai in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/server.rs:1448
  variant ServerEvent:SetAutoReconnectCookie in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/server.rs:1452
  variant ServerEvent:Usb in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/server.rs:1459

--- failure enum_variant_missing: pub enum variant removed or renamed ---

Description:
A publicly-visible enum has at least one variant that is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/enum_variant_missing.ron

Failed in:
  variant MouseEvent::RightPressed, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:29
  variant MouseEvent::RightReleased, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:30
  variant MouseEvent::LeftPressed, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:31
  variant MouseEvent::LeftReleased, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:32
  variant MouseEvent::MiddlePressed, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:33
  variant MouseEvent::MiddleReleased, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:34
  variant MouseEvent::Button4Pressed, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:35
  variant MouseEvent::Button4Released, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:36
  variant MouseEvent::Button5Pressed, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:37
  variant MouseEvent::Button5Released, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/handler.rs:38

--- failure inherent_method_missing: pub method removed or renamed ---

Description:
A publicly-visible method or associated fn is no longer available under its prior name. It may have been renamed or removed entirely.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/inherent_method_missing.ron

Failed in:
  RdpServer::display_suppressed_handle, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/server.rs:618
  RdpServer::autodetect_rtt_handle, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/server.rs:628
  RdpServer::rtt_snapshot, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/server.rs:653
  RdpServer::gfx_handle, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/server.rs:664
  RdpServer::get_svc_processor, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/server.rs:999
  RdpServer::get_channel_id_by_type, previously in file /tmp/.tmp8gb9OY/ironrdp-server/src/server.rs:1005

--- failure method_parameter_count_changed: pub method parameter count changed ---

Description:
A publicly-visible method now takes a different number of parameters, not counting the receiver (self) parameter.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/method_parameter_count_changed.ron

Failed in:
  ironrdp_server::autodetect::AutoDetectManager::send_rtt_request takes 0 parameters in /tmp/.tmp8gb9OY/ironrdp-server/src/autodetect.rs:46, but now takes 1 parameters in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/autodetect.rs:168
  ironrdp_server::autodetect::AutoDetectManager::handle_response takes 1 parameters in /tmp/.tmp8gb9OY/ironrdp-server/src/autodetect.rs:62, but now takes 2 parameters in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/autodetect.rs:345
  ironrdp_server::autodetect::AutoDetectManager::expire_stale_probes takes 1 parameters in /tmp/.tmp8gb9OY/ironrdp-server/src/autodetect.rs:110, but now takes 2 parameters in /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/autodetect.rs:454

--- failure trait_method_parameter_count_changed: pub trait method parameter count changed ---

Description:
A trait method now takes a different number of parameters.
        ref: https://doc.rust-lang.org/cargo/reference/semver.html#trait-item-signature
       impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.47.0/src/lints/trait_method_parameter_count_changed.ron

Failed in:
  RdpServerDisplay::updates now takes 1 instead of 0 parameters, in file /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/display.rs:397
  GfxServerFactory::build_gfx_handler now takes 1 instead of 0 parameters, in file /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/gfx.rs:45
  GfxServerFactory::build_server_with_handle now takes 1 instead of 0 parameters, in file /tmp/.tmp107qXt/IronRDP/crates/ironrdp-server/src/gfx.rs:54
Changelog

iron-remote-desktop

[0.8.1] - 2026-10-27

Features

  • Add reason error codes (#2127) (0c7e3abfb3)

    An RDCleanPath error PDU carries a general error code next to an HTTP
    status, WSA error or TLS alert, so a client cannot tell why a proxy
    rejected a connection: an expired credential and a misconfigured one
    both arrive as HTTP 401.

    Split the open error_code space into ranges, specified in the crate
    README:

    • 100 to 16383: standard reasons, for conditions any client can explain
      without knowing which proxy it talks to. This adds EXPIRED_ERROR_CODE,
      NOT_YET_VALID_ERROR_CODE, REVOKED_ERROR_CODE,
      TARGET_UNREACHABLE_ERROR_CODE, DNS_RESOLUTION_FAILED_ERROR_CODE and
      TLS_HANDSHAKE_FAILED_ERROR_CODE (100 to 105), which Display
      describes.
    • 16384 to 32767 (IMPLEMENTATION_SPECIFIC_ERROR_CODES): reasons each
      proxy defines for checks tied to its own credential format or topology.
      IronRDP never assigns these, and a client interprets them only when it
      knows which proxy it talks to.
    • 32768 and above stay reserved, so that independent implementations
      storing the code as a signed 16-bit integer can represent every code in
      use.

    The web client exposes the code as RDCleanPathDetails.errorCode, and
    @devolutions/iron-remote-desktop-rdp exports the standard codes as
    RDCleanPathErrorCode.

    The reason travels in the existing error_code field, not in a new one.
    A new error field would follow the last one, [3], and IronRDP-based
    peers decode RDCleanPath with der's derived decoder, which rejects
    unknown fields at the end of a SEQUENCE with TrailingData despite the
    context-specific tags: deployed IronRDP clients would fail to decode
    error PDUs carrying it. Deployed IronRDP clients decode any code, show
    an unknown one as an unknown error, and still read the HTTP status, WSA
    error and TLS alert, which proxies keep sending alongside the reason.
    The native client and the FFI already treat any code other than the
    negotiation one as a general error, so they need no change.

    Proxies can send these codes with any version, since error_code is a
    plain integer. The constants and the web client's errorCode need
    releases of ironrdp-rdcleanpath and the web packages; the Devolutions
    Gateway follow-up, which will use the standard codes and its own
    implementation-specific ones, needs the crates.io release. That release
    also carries the der 0.8 upgrade already on master, which is breaking
    because the crate re-exports der.

    🤖 Generated with Claude Code

ironrdp-core

[0.3.1] - 2026-10-27

Bug Fixes

  • Check remaining length when skipping padding and reading client core data (#2130) (b69cda22ec)

ironrdp-pdu

[0.11.0] - 2026-10-27

Security

  • Support Entra RDS AAD session authentication (#2248) (c790e6d4f2)

    Add MS-RDPBCGR RDS AAD (SecurityProtocol::RDSAAD) negotiation and
    NUL-terminated JSON nonce, assertion, and authentication-result framing
    to ironrdp-connector, along with
    FailureCode::ENTRA_AUTH_REQUIRED_BY_SERVER in ironrdp-pdu.

    Expose the optional entra-auth feature in ironrdp-client
    (client-entra-auth in ironrdp) to acquire or accept
    proof-of-possession RDP access tokens, fetch fresh AAD challenge nonces,
    sign compact JWS assertions with RSA-256 and req_cnf key binding, and
    enforce strict TLS validation without CredSSP or password fallback.

ironrdp-connector

[0.12.0] - 2026-10-27

Security

  • Support Entra RDS AAD session authentication (#2248) (c790e6d4f2)

    Add MS-RDPBCGR RDS AAD (SecurityProtocol::RDSAAD) negotiation and
    NUL-terminated JSON nonce, assertion, and authentication-result framing
    to ironrdp-connector, along with
    FailureCode::ENTRA_AUTH_REQUIRED_BY_SERVER in ironrdp-pdu.

    Expose the optional entra-auth feature in ironrdp-client
    (client-entra-auth in ironrdp) to acquire or accept
    proof-of-possession RDP access tokens, fetch fresh AAD challenge nonces,
    sign compact JWS assertions with RSA-256 and req_cnf key binding, and
    enforce strict TLS validation without CredSSP or password fallback.

ironrdp-acceptor

[0.11.1] - 2026-10-27

Bug Fixes

  • Send RDP as the Demand Active source descriptor (#2119) (d921607fc8)

    The server Demand Active PDU used an empty source descriptor, which
    DemandActive encodes as a single NUL byte. Jump Desktop rejects it
    (bad packet - source Descriptor not set to RDP) and drops the
    connection right after the TLS upgrade.

    Send RDP instead. It encodes as RDP\0, the same four bytes the
    FreeRDP server writes, and the value already used by the server Demand
    Active fixture in ironrdp-testsuite-core.

  • Error on steps after the acceptor ends (#2231) (e51dcfee4a)

    Stepping an Acceptor, a ChannelConnectionSequence or a
    FinalizationSequence after a failed step, or after it finished,
    reached unreachable!() and panicked. Both states are reachable through
    the public API: a failed step leaves the sequence consumed, and the
    accepted or finished state stays until the caller moves on.

    Each sequence now returns an error in those states, and a finished one
    stays finished, so an accepted acceptor still yields its result. The
    type docs state this. The client connector already answers the same
    misuse with an error.

  • Send a zero pduSource in Monitor Layout (#2230) (3ca12ee636)

    MS-RDPBCGR 2.2.12.1 requires the pduSource field of the Monitor Layout
    PDU to be zero, but the acceptor wrapped it with the I/O channel ID like
    the finalization PDUs. The acceptor now passes zero for this PDU only;
    the share data helper takes the pduSource it writes instead of naming it
    after the I/O channel.

ironrdp-cfg

[0.3.0] - 2026-10-27

Features

  • Redirect USB devices over URBDRC with nusb and RemoteFX USB backends (#2181) (35247071a3)

    Adds host-device backends for the MS-RDPEUSB (URBDRC) client and wires
    them into ironrdp-client and the viewer, so local USB devices can be
    redirected to the server. On Windows it redirects USB the way mstsc
    does, through the in-box RemoteFX USB drivers, when policy allows it,
    and falls back to nusb otherwise. It also fixes three interop bugs in
    ironrdp-rdpeusb found by redirecting a device to Windows Server 2025.

ironrdp-dvc

[0.9.1] - 2026-10-27

Features

  • Redirect USB devices over URBDRC with nusb and RemoteFX USB backends (#2181) (35247071a3)

    Adds host-device backends for the MS-RDPEUSB (URBDRC) client and wires
    them into ironrdp-client and the viewer, so local USB devices can be
    redirected to the server. On Windows it redirects USB the way mstsc
    does, through the in-box RemoteFX USB drivers, when policy allows it,
    and falls back to nusb otherwise. It also fixes three interop bugs in
    ironrdp-rdpeusb found by redirecting a device to Windows Server 2025.

ironrdp-dvc-pipe-proxy

[0.6.1] - 2026-10-27

Build

  • Mark exposed dependencies as public (#2213) (405e6576ba)

    These crates expose types or traits from these dependencies in their
    public API, so a breaking release of the dependency requires a breaking
    release of the crate:

    • ironrdp-str: ironrdp-core, whose Encode and DecodeOwned traits
      the string types implement.
    • ironrdp-dvc-pipe-proxy: ironrdp-dvc, through DvcNamedPipeProxy's
      DvcProcessor implementation.
    • ironrdp-dvc-com-plugin: ironrdp-dvc, plus ironrdp-pdu and
      ironrdp-svc through the PduResult return type and the SvcMessage
      callback bound of load_dvc_plugin.
    • ironrdp-mstsgu: ironrdp-error, whose Error<GwErrorKind> the
      GwClient methods return.

ironrdp-graphics

[0.10.1] - 2026-10-27

Bug Fixes

  • Reject RLGR3 values larger than their remainder (#2132) (e31f2b89ad)

    RLGR3's code_remainder - val1 (rlgr.rs) overflowed when the stream
    set val1 larger: a panic in debug builds, a garbage value in release.
    It's now an InvalidIntegralConversion error. FreeRDP rejects it too.

  • Keep Progressive tile state per surface (#2117) (00820f6e47)

    ProgressiveDecoder kept its tile grid and the set of tiles sent in the
    current RDPGFX frame per (surface_id, codec_context_id). Windows moves
    a surface to a new codec context mid-session, deletes the old one with
    DeleteEncodingContext, and keeps refining the same tiles under the new
    id. Two things then went wrong without any error:

    • A REGION under the new context that relies on a tile sent earlier in
      the same frame under the old context (MS-RDPEGFX 2.2.4.2.1.5 allows
      REGION rectangles to be covered by tiles from an earlier REGION in the
      frame) found no tile in its own set and painted nothing.
    • A TILE_UPGRADE under the new context for a tile whose first pass
      arrived under the old context found a fresh tile with pass == 0 and
      was skipped.

    On a Windows 11 host this left vertical 64-pixel columns of earlier
    animation frames on screen (swiping cards in a browser) until something
    repainted the area, such as scrolling.

ironrdp-egfx

[0.5.0] - 2026-10-27

Features

  • [breaking] Composite surfaces mapped to RemoteApp windows (#2197) (6e54d5e9ec)

    With the graphics pipeline in a RemoteApp session, Windows servers
    present each application window from its own surface through
    MapSurfaceToWindow or MapSurfaceToScaledWindow (MS-RDPEGFX 2.2.2.20 and
    2.2.2.23). The client only forwarded these PDUs to handler callbacks, so
    nothing those surfaces drew reached the windows.

    The compositor now records window mappings and, at each EndFrame,
    materializes dirty regions of window-mapped surfaces into window
    updates: the RAIL window ID, the presented size and the changed region
    in window coordinates, scaled when the server asks for a different
    target size. GraphicsPipelineClient::drain_window_updates exposes them,
    the session emits ActiveStageOutput::WindowSurfaceUpdates and the client
    forwards RdpOutputEvent::WindowSurfaceUpdates. A mapping the client
    cannot present, such as a mapped area larger than its surface, is
    ignored and the surface keeps its previous mapping; FreeRDP also refuses
    oversized mappings.

    🤖 Generated with Claude Code

Bug Fixes

  • Keep Progressive tile state per surface (#2117) (00820f6e47)

    ProgressiveDecoder kept its tile grid and the set of tiles sent in the
    current RDPGFX frame per (surface_id, codec_context_id). Windows moves
    a surface to a new codec context mid-session, deletes the old one with
    DeleteEncodingContext, and keeps refining the same tiles under the new
    id. Two things then went wrong without any error:

    • A REGION under the new context that relies on a tile sent earlier in
      the same frame under the old context (MS-RDPEGFX 2.2.4.2.1.5 allows
      REGION rectangles to be covered by tiles from an earlier REGION in the
      frame) found no tile in its own set and painted nothing.
    • A TILE_UPGRADE under the new context for a tile whose first pass
      arrived under the old context found a fresh tile with pass == 0 and
      was skipped.

    On a Windows 11 host this left vertical 64-pixel columns of earlier
    animation frames on screen (swiping cards in a browser) until something
    repainted the area, such as scrolling.

ironrdp-mstsgu

[0.0.3] - 2026-10-27

Build

  • Mark exposed dependencies as public (#2213) (405e6576ba)

    These crates expose types or traits from these dependencies in their
    public API, so a breaking release of the dependency requires a breaking
    release of the crate:

    • ironrdp-str: ironrdp-core, whose Encode and DecodeOwned traits
      the string types implement.
    • ironrdp-dvc-pipe-proxy: ironrdp-dvc, through DvcNamedPipeProxy's
      DvcProcessor implementation.
    • ironrdp-dvc-com-plugin: ironrdp-dvc, plus ironrdp-pdu and
      ironrdp-svc through the PduResult return type and the SvcMessage
      callback bound of load_dvc_plugin.
    • ironrdp-mstsgu: ironrdp-error, whose Error<GwErrorKind> the
      GwClient methods return.

ironrdp-rdcleanpath

[0.3.1] - 2026-10-27

Features

  • Add reason error codes (#2127) (0c7e3abfb3)

    An RDCleanPath error PDU carries a general error code next to an HTTP
    status, WSA error or TLS alert, so a client cannot tell why a proxy
    rejected a connection: an expired credential and a misconfigured one
    both arrive as HTTP 401.

    Split the open error_code space into ranges, specified in the crate
    README:

    • 100 to 16383: standard reasons, for conditions any client can explain
      without knowing which proxy it talks to. This adds EXPIRED_ERROR_CODE,
      NOT_YET_VALID_ERROR_CODE, REVOKED_ERROR_CODE,
      TARGET_UNREACHABLE_ERROR_CODE, DNS_RESOLUTION_FAILED_ERROR_CODE and
      TLS_HANDSHAKE_FAILED_ERROR_CODE (100 to 105), which Display
      describes.
    • 16384 to 32767 (IMPLEMENTATION_SPECIFIC_ERROR_CODES): reasons each
      proxy defines for checks tied to its own credential format or topology.
      IronRDP never assigns these, and a client interprets them only when it
      knows which proxy it talks to.
    • 32768 and above stay reserved, so that independent implementations
      storing the code as a signed 16-bit integer can represent every code in
      use.

    The web client exposes the code as RDCleanPathDetails.errorCode, and
    @devolutions/iron-remote-desktop-rdp exports the standard codes as
    RDCleanPathErrorCode.

    The reason travels in the existing error_code field, not in a new one.
    A new error field would follow the last one, [3], and IronRDP-based
    peers decode RDCleanPath with der's derived decoder, which rejects
    unknown fields at the end of a SEQUENCE with TrailingData despite the
    context-specific tags: deployed IronRDP clients would fail to decode
    error PDUs carrying it. Deployed IronRDP clients decode any code, show
    an unknown one as an unknown error, and still read the HTTP status, WSA
    error and TLS alert, which proxies keep sending alongside the reason.
    The native client and the FFI already treat any code other than the
    negotiation one as a general error, so they need no change.

    Proxies can send these codes with any version, since error_code is a
    plain integer. The constants and the web client's errorCode need
    releases of ironrdp-rdcleanpath and the web packages; the Devolutions
    Gateway follow-up, which will use the standard codes and its own
    implementation-specific ones, needs the crates.io release. That release
    also carries the der 0.8 upgrade already on master, which is breaking
    because the crate re-exports der.

    🤖 Generated with Claude Code

ironrdp-rdpdr

[0.8.1] - 2026-10-27

Bug Fixes

  • Check remaining length when skipping padding and reading client core data (#2130) (b69cda22ec)

ironrdp-rdpeudp-tokio

[0.2.0] - 2026-10-27

Features

  • Support STUN and ICE candidate gathering (#2245) (79343b26cb)

    Add a standalone RFC 8489 STUN Binding probe and an optional ice
    feature to ironrdp-rdpeudp-tokio for UDP ICE candidate gathering,
    connectivity checks, nominated-pair selection, and UDP TURN relay
    transport beneath the existing RDPEUDP2, TLS, and RDPEMT stack.

    Expose connect_udp_with_socket, gather_ice_candidates,
    connect_udp_with_ice, accept_udp_with_ice, and
    MultitransportBootstrap::connect_with_ice while keeping the default
    direct connect_udp path unchanged.

ironrdp-str

[0.2.1] - 2026-10-27

Build

  • Mark exposed dependencies as public (#2213) (405e6576ba)

    These crates expose types or traits from these dependencies in their
    public API, so a breaking release of the dependency requires a breaking
    release of the crate:

    • ironrdp-str: ironrdp-core, whose Encode and DecodeOwned traits
      the string types implement.
    • ironrdp-dvc-pipe-proxy: ironrdp-dvc, through DvcNamedPipeProxy's
      DvcProcessor implementation.
    • ironrdp-dvc-com-plugin: ironrdp-dvc, plus ironrdp-pdu and
      ironrdp-svc through the PduResult return type and the SvcMessage
      callback bound of load_dvc_plugin.
    • ironrdp-mstsgu: ironrdp-error, whose Error<GwErrorKind> the
      GwClient methods return.

ironrdp-rdpeusb

[0.2.0] - 2026-10-27

Features

  • Redirect USB devices over URBDRC with nusb and RemoteFX USB backends (#2181) (35247071a3)

    Adds host-device backends for the MS-RDPEUSB (URBDRC) client and wires
    them into ironrdp-client and the viewer, so local USB devices can be
    redirected to the server. On Windows it redirects USB the way mstsc
    does, through the in-box RemoteFX USB drivers, when policy allows it,
    and falls back to nusb otherwise. It also fixes three interop bugs in
    ironrdp-rdpeusb found by redirecting a device to Windows Server 2025.

ironrdp-rdpsnd-native

[0.8.0] - 2026-10-27

Features

  • Harden Windows client playback path (#1648) (2d9a9bf114)

    Keep client format order for wFormatNo, play pre-v8 Wave PDUs, and apply
    volume on a broader CPAL PCM offer so ActiveX mode 0 can redirect remote
    audio reliably.

    Also fix clippy noise in the RDPSND client suite and keep interleaved
    volume L/R phase stable across wave blocks. Volume scaling is a simple
    amplitude map, not a logarithmic MS-RDPEA model.

  • Wire MS-RDPEAI capture into Windows client and ActiveX (#1642) (205fe038cc)

    Add the client MS-RDPEAI capture path on top of hardened RDPSND
    playback: connector CFG + static channel wiring, CPAL PCM capture
    backend, ironrdp-client --audio-capture, and ActiveX
    AudioCaptureRedirectionMode.

    PCM capture only accepts encode formats that match the Open capture
    stream, rejects non-16-bit capture (Data PDU size contract), and gates
    the capture backend behind ironrdp-rdpsnd-native/capture.

    Depends on feat(rdpsnd): harden Windows client playback path #1648 (playback).

  • [breaking] Compressed audio over AUDIO_PLAYBACK_DVC (#2203) (45b67591e9)

    Windows 8 and later servers stream audio over the AUDIO_PLAYBACK_DVC and
    AUDIO_PLAYBACK_LOSSY_DVC dynamic channels, preferring AAC or ADPCM on
    constrained links, but IronRDP declined those channels and could only
    play PCM and Opus. Wave Confirm PDUs echoed the server timestamp,
    playback dropped audio when its fixed 500 ms ring filled, and devices
    could not be chosen.

    • ironrdp-rdpsnd gains a pure codec module (PCM, G.711 A-law and
      µ-law, IMA and Microsoft ADPCM decoders and encoders, bit-exact with the
      Windows ACM codecs), an RdpsndDvc processor whose RdpsndDvcState
      lets both dynamic channels share one negotiation (Windows negotiates on
      the reliable channel and sends AAC on the lossy one), the UDP Wave
      datagrams, and a playout jitter-buffer policy. Wave Confirm PDUs
      report the hold time plus the handler's playback latency, and handlers
      pick the formats to advertise from the server's list.
    • The CPAL backend decodes every offered format it can, including AAC
      through Media Foundation on Windows, plays through the jitter buffer
      with a configurable latency target, reports buffered plus device
      latency, follows the default device or a selected one, and maps the
      server volume to the Windows audio session. Microphone capture encodes
      to PCM, G.711 or ADPCM and selects its device.
    • ironrdp-client registers the dynamic channels next to the static one
      on a shared backend and adds AudioConfig (ironrdp_audiooutputdevice,
      ironrdp_audioinputdevice, ironrdp_audiolatency); the viewer adds
      --audio-output-device, --audio-input-device, --audio-latency and
      --list-audio-devices.

Bug Fixes

ironrdp-session

[0.13.0] - 2026-10-27

Features

  • [breaking] Composite surfaces mapped to RemoteApp windows (#2197) (6e54d5e9ec)

    With the graphics pipeline in a RemoteApp session, Windows servers
    present each application window from its own surface through
    MapSurfaceToWindow or MapSurfaceToScaledWindow (MS-RDPEGFX 2.2.2.20 and
    2.2.2.23). The client only forwarded these PDUs to handler callbacks, so
    nothing those surfaces drew reached the windows.

    The compositor now records window mappings and, at each EndFrame,
    materializes dirty regions of window-mapped surfaces into window
    updates: the RAIL window ID, the presented size and the changed region
    in window coordinates, scaled when the server asks for a different
    target size. GraphicsPipelineClient::drain_window_updates exposes them,
    the session emits ActiveStageOutput::WindowSurfaceUpdates and the client
    forwards RdpOutputEvent::WindowSurfaceUpdates. A mapping the client
    cannot present, such as a mapped area larger than its surface, is
    ignored and the surface keeps its previous mapping; FreeRDP also refuses
    oversized mappings.

    🤖 Generated with Claude Code

  • [breaking] Broaden mstscax compatibility (#2211) (98413f16cc)

    Hosts written against Microsoft's mstscax control (RDM, MsRdpEx,
    scripting hosts, mstsc-style shells) still hit members that IronRDP's
    ActiveX control left unimplemented. A comparison against mstscax.dll
    10.0.26100 (its embedded MSTSCLib type library, AdvancedSettings vtable
    and property handlers) identified the most-used gaps; this change closes
    six of them.

    Late-bound Automation: every published MSTSCLib member of the control
    and of the Advanced, Secured, Transport and RemoteProgram settings
    objects is reachable through IDispatch by name and DISPID, with
    arguments coerced to the published Automation types and calls routed to
    the existing vtable slots through DispCallFunc. The control also
    implements IProvideClassInfo2, IQuickActivate and
    IPersistPropertyBag/IPersistPropertyBag2. No type library is created
    or registered, so GetTypeInfo still returns E_NOTIMPL.

  • Expose EGFX compositing (#2120) (c25dba154b)

    ActiveStage composites the EGFX output after each PDU. That only works
    when the GraphicsPipelineClient lives inside it.

    Why run it somewhere else:

    • H.264 decoding can be slow (a busy GPU).
    • While it decodes, the session loop doesn't read the socket.
    • Audio waits behind video, and GNOME Remote Desktop drops audio older
      than 50 ms.
    • Running the pipeline on its own thread fixes that, but then nothing
      composites its output: the reset and composite steps were private.

    What this adds:

    • composite_graphics_pipeline(gfx, image): follows a pending
      ResetGraphics, applies the finished output regions, and takes the
      RemoteApp window regions.
    • CompositedGraphics: whether it reset, the union region, each region,
      and the window updates.
    • ActiveStage calls it too, so its behavior doesn't change.
    • ironrdp-egfx is now a # public dependency, since
      GraphicsPipelineClient is in the signature. CompositedGraphics is
      #[non_exhaustive].

    Using it off the session loop, the caller also:

    • registers a channel processor named ironrdp_egfx::CHANNEL_NAME that
      forwards each message to the pipeline;
    • sends the pipeline's replies (capabilities, frame acks) through the
      tunnel dvc_tunnel_for_channel names, or over TCP with
      ActiveStage::encode_dvc_messages;
    • shares the image with the session under a lock (bitmaps and the
      pointer write to it too);
    • paints the window updates into the RemoteApp windows they name, as
      ActiveStage returns them in WindowSurfaceUpdates;
    • remembers a reset until the next paint, and tracks damage itself.

    The function's docs say the same.

    🤖 Generated with Claude Code

ironrdp-dvc-com-plugin

[0.2.1] - 2026-10-27

Build

  • Mark exposed dependencies as public (#2213) (405e6576ba)

    These crates expose types or traits from these dependencies in their
    public API, so a breaking release of the dependency requires a breaking
    release of the crate:

    • ironrdp-str: ironrdp-core, whose Encode and DecodeOwned traits
      the string types implement.
    • ironrdp-dvc-pipe-proxy: ironrdp-dvc, through DvcNamedPipeProxy's
      DvcProcessor implementation.
    • ironrdp-dvc-com-plugin: ironrdp-dvc, plus ironrdp-pdu and
      ironrdp-svc through the PduResult return type and the SvcMessage
      callback bound of load_dvc_plugin.
    • ironrdp-mstsgu: ironrdp-error, whose Error<GwErrorKind> the
      GwClient methods return.

ironrdp-server

[0.14.0] - 2026-10-27

Security

ironrdp-rdpdr-native

[0.8.1] - 2026-10-27

Bug Fixes

  • Confine Unix drive paths to the share (#2221) (bbebd384ce)

    The Unix RDPDR drive backend resolved server-supplied paths by joining
    strings, so .., symbolic links and mount points could lead the server
    outside the shared directory, and its create, rename and delete handling
    did not follow NT semantics.

    Server paths are now parsed into components without touching the
    filesystem and opened one component at a time relative to the share,
    refusing symbolic links and mount points with openat2 where available
    and a device check otherwise.
    Names Windows cannot hold are refused with STATUS_OBJECT_NAME_INVALID,
    and opens never block, so a FIFO in the share cannot stall the client.

    Create, rename, delete and directory queries follow MS-FSA and report
    the NT status the Windows backend reports for the same condition:

    • Overwriting dispositions truncate only after every check passes, so a
      refused open leaves the file intact, and an invalid disposition or
      directory request fails with STATUS_INVALID_PARAMETER.
    • A delete marked on a handle runs when the file's last handle closes,
      the channel resets or the backend drops, and removes the name it was
      marked through only while that name still refers to the file.
    • Opening a file marked for deletion, or any path through a directory
      marked for deletion, fails with STATUS_DELETE_PENDING; only an empty
      directory can be marked, and the shared directory never.
    • A rename moves only the handle's own file, follows every handle opened
      through the renamed link, removes the source when the target is another
      hard link of the same file, and refuses targets that are directories,
      marked for deletion or open, as well as directories that hold open
      files.
    • Directory listings enumerate a final *, return . and .. except
      in the share, and report errors instead of an early end or an empty
      match.
    • FileStandardInformation reports the delete mark and leaves the marked
      link out of NumberOfLinks.

    File IDs skip IDs still in use, and the number of open files is capped
    at a quarter of the descriptor limit, at most 1024.

ironrdp-rdpewa

[0.1.1] - 2026-10-27

Added

  • Initial MS-RDPEWA protocol crate with CBOR PDU codec, client processor, and server skeleton.


This PR was generated with release-plz.

Copilot AI balanced review requested due to automatic review settings October 26, 2026 16:25
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 3691c43 to bf784e4 Compare October 26, 2026 16:26

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.

🟡 Changes recommended

Resolve both manifest conflicts and correct breaking-release versions, propagating updates through consumers, lockfiles, and changelogs.

23 open issues

And 3 more that still need to be addressed.

What changed in this PR

Prepares IronRDP crates for publication by updating package versions, internal dependency requirements, changelogs, and lockfiles. No runtime implementation changes are included.

Changes:

  • Advances release versions across protocol, session, transport, and native-backend crates.
  • Updates internal consumers and refreshes workspace and fuzzing dependency locks.
  • Adds release notes covering recent features, fixes, and dependency changes.

Approval is blocked by unresolved conflicts in two manifests and patch releases that introduce breaking public API changes, including the core read_padding! macro contract.

File Description
fuzz/​Cargo.lock Synchronizes fuzzing dependencies with release versions.
crates/​ironrdp/​Cargo.toml Updates facade dependency requirements.
crates/​ironrdp-vmconnect/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-vmconnect/​Cargo.toml Updates public connector types; requires version 0.2.0.
crates/​ironrdp-viewer/​Cargo.toml Updates the configuration dependency requirement.
crates/​ironrdp-tokio/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-tokio/​Cargo.toml Exposes the async API break; requires version 0.12.0.
crates/​ironrdp-svc/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-svc/​Cargo.toml Updates public PDU types; requires version 0.10.0.
crates/​ironrdp-str/​CHANGELOG.md Records public dependency annotations.
crates/​ironrdp-str/​Cargo.toml Advances the string crate version.
crates/​ironrdp-session/​CHANGELOG.md Records compositing, compatibility, and decoding fixes.
crates/​ironrdp-session/​Cargo.toml Advances session release and public dependencies.
crates/​ironrdp-server/​Cargo.toml Advances server release and dependency requirements.
crates/​ironrdp-rpc/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-rpc/​Cargo.toml Updates RPC version and protocol dependencies.
crates/​ironrdp-rdpsnd/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-rdpsnd/​Cargo.toml Updates public PDU return types; requires version 0.11.0.
crates/​ironrdp-rdpsnd-native/​CHANGELOG.md Records playback, capture, and codec changes.
crates/​ironrdp-rdpsnd-native/​Cargo.toml Advances native audio to 0.8.0.
crates/​ironrdp-rdpewa/​CHANGELOG.md Adds a release heading above initial notes.
crates/​ironrdp-rdpewa/​Cargo.toml Changes public callback error types; requires version 0.2.0.
crates/​ironrdp-rdpevor/​Cargo.toml Contains an unresolved dependency conflict that prevents TOML parsing.
crates/​ironrdp-rdpeusb/​CHANGELOG.md Records USB support and interoperability fixes.
crates/​ironrdp-rdpeusb/​Cargo.toml Advances USB protocol support to 0.2.0.
crates/​ironrdp-rdpeusb-native/​Cargo.toml Updates native USB backend dependencies.
crates/​ironrdp-rdpeudp-tokio/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-rdpeudp-tokio/​Cargo.toml Updates public PDU signatures; requires version 0.2.0.
crates/​ironrdp-rdpel/​CHANGELOG.md Adds the location-channel release heading.
crates/​ironrdp-rdpel/​Cargo.toml Updates location-channel version and dependencies.
crates/​ironrdp-rdpei/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-rdpei/​Cargo.toml Changes exposed PDU error types; requires version 0.3.0.
crates/​ironrdp-rdpegt/​Cargo.toml Updates geometry-channel dependency requirements.
crates/​ironrdp-rdpecam/​Cargo.toml Updates camera-channel dependency requirements.
crates/​ironrdp-rdpeai/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-rdpeai/​Cargo.toml Changes public callback error types; requires version 0.2.0.
crates/​ironrdp-rdpdr/​CHANGELOG.md Records padding-related decoding fixes.
crates/​ironrdp-rdpdr/​Cargo.toml Changes public backend error types; requires version 0.9.0.
crates/​ironrdp-rdpdr-native/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-rdpdr-native/​Cargo.toml Changes public PDU error types; requires version 0.9.0.
crates/​ironrdp-pdu/​CHANGELOG.md Records compatibility enhancements and decoding fixes.
crates/​ironrdp-pdu/​Cargo.toml Advances PDU to 0.11.0.
crates/​ironrdp-mstsgu/​CHANGELOG.md Records public dependency annotations.
crates/​ironrdp-mstsgu/​Cargo.toml Advances the gateway crate to 0.0.3.
crates/​ironrdp-input/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-input/​Cargo.toml Updates public PDU event types; requires version 0.9.0.
crates/​ironrdp-graphics/​CHANGELOG.md Records RLGR validation and performance improvements.
crates/​ironrdp-graphics/​Cargo.toml Updates public PDU parameter types; requires version 0.11.0.
crates/​ironrdp-egfx/​CHANGELOG.md Records RemoteApp window compositing.
crates/​ironrdp-egfx/​Cargo.toml Advances graphics-pipeline release and PDU requirement.
crates/​ironrdp-egfx-native/​Cargo.toml Updates the native backend’s EGFX requirement.
crates/​ironrdp-echo/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-echo/​Cargo.toml Changes public PDU error types; requires version 0.6.0.
crates/​ironrdp-dvc/​CHANGELOG.md Records USB-related dynamic-channel changes.
crates/​ironrdp-dvc/​Cargo.toml Changes public trait return types; requires version 0.10.0.
crates/​ironrdp-dvc-pipe-proxy/​CHANGELOG.md Records public dependency annotations.
crates/​ironrdp-dvc-pipe-proxy/​Cargo.toml Changes public callback error types; requires version 0.7.0.
crates/​ironrdp-dvc-com-plugin/​CHANGELOG.md Records public dependency annotations.
crates/​ironrdp-dvc-com-plugin/​Cargo.toml Changes exposed PDU error types; requires version 0.3.0.
crates/​ironrdp-displaycontrol/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-displaycontrol/​Cargo.toml Changes public callback error types; requires version 0.10.0.
crates/​ironrdp-daemon/​Cargo.toml Updates configuration and PDU requirements.
crates/​ironrdp-core/​CHANGELOG.md Records checked padding and cursor changes.
crates/​ironrdp-core/​Cargo.toml Macro contract change requires 0.4.0 or restored compatibility.
crates/​ironrdp-connector/​CHANGELOG.md Records compatibility-related feature changes.
crates/​ironrdp-connector/​Cargo.toml Advances connector to 0.12.0 and updates PDU.
crates/​ironrdp-cliprdr/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-cliprdr/​Cargo.toml Changes public PDU error types; requires version 0.9.0.
crates/​ironrdp-client/​Cargo.toml Contains unresolved conflict markers that prevent workspace loading.
crates/​ironrdp-cfg/​CHANGELOG.md Records USB redirection configuration support.
crates/​ironrdp-cfg/​Cargo.toml Advances configuration utilities to 0.3.0.
crates/​ironrdp-capture-replay/​Cargo.toml Updates protocol and graphics dependency requirements.
crates/​ironrdp-blocking/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-blocking/​Cargo.toml Updates public connector/PDU types; requires version 0.12.0.
crates/​ironrdp-async/​CHANGELOG.md Adds the proposed release heading.
crates/​ironrdp-async/​Cargo.toml Updates public connector/PDU types; requires version 0.12.0.
crates/​ironrdp-agent/​Cargo.toml Updates configuration and gateway dependencies.
crates/​ironrdp-activex/​Cargo.toml Updates ActiveX dependency requirements.
crates/​ironrdp-acceptor/​CHANGELOG.md Records the Demand Active source-descriptor fix.
crates/​ironrdp-acceptor/​Cargo.toml Updates public connector types; requires version 0.12.0.
Cargo.lock Updates workspace versions and resolved dependencies.

Review effort: Balanced

Comment thread crates/ironrdp-client/Cargo.toml Outdated
Comment thread crates/ironrdp-rdpevor/Cargo.toml Outdated
Comment thread crates/ironrdp-acceptor/Cargo.toml Outdated
[package]
name = "ironrdp-acceptor"
version = "0.11.0"
version = "0.11.1"
Comment thread crates/ironrdp-async/Cargo.toml Outdated
[package]
name = "ironrdp-async"
version = "0.11.0"
version = "0.11.1"
Comment thread crates/ironrdp-blocking/Cargo.toml Outdated
[package]
name = "ironrdp-blocking"
version = "0.11.0"
version = "0.11.1"
Comment thread crates/ironrdp-rdpeudp-tokio/Cargo.toml Outdated
[package]
name = "ironrdp-rdpeudp-tokio"
version = "0.1.0"
version = "0.1.1"
Comment thread crates/ironrdp-rdpewa/Cargo.toml Outdated
[package]
name = "ironrdp-rdpewa"
version = "0.1.0"
version = "0.1.1"
Comment thread crates/ironrdp-rdpsnd/Cargo.toml Outdated
[package]
name = "ironrdp-rdpsnd"
version = "0.10.0"
version = "0.10.1"
Comment thread crates/ironrdp-svc/Cargo.toml Outdated
[package]
name = "ironrdp-svc"
version = "0.9.0"
version = "0.9.1"
Comment thread crates/ironrdp-vmconnect/Cargo.toml Outdated
[package]
name = "ironrdp-vmconnect"
version = "0.1.0"
version = "0.1.1"
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from bf784e4 to 589df61 Compare October 26, 2026 16:36
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 589df61 to 830bb57 Compare October 26, 2026 16:36
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 830bb57 to 391ae57 Compare October 26, 2026 17:24
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 391ae57 to c2ef514 Compare October 26, 2026 17:24
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from c2ef514 to 849a68c Compare October 26, 2026 17:51
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 849a68c to 7680ebd Compare October 26, 2026 17:51
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 7680ebd to bd0878e Compare October 26, 2026 18:56
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from bd0878e to d122146 Compare October 26, 2026 18:57
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from d122146 to 64604a2 Compare October 26, 2026 19:07
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 64604a2 to 25ed0d5 Compare October 26, 2026 19:07
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 25ed0d5 to fb0e383 Compare October 26, 2026 19:18
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from fb0e383 to 4336700 Compare October 26, 2026 19:18
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 4336700 to e539fb2 Compare October 26, 2026 20:40
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from e539fb2 to a210ed7 Compare October 26, 2026 20:40
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from a210ed7 to 2ff9c5a Compare October 27, 2026 01:10
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 2ff9c5a to a849647 Compare October 27, 2026 01:10
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from a849647 to 32bdf6e Compare October 27, 2026 01:19
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 32bdf6e to 08295c3 Compare October 27, 2026 01:19
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 08295c3 to 5bc12f2 Compare October 27, 2026 01:32
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 5bc12f2 to 4620843 Compare October 27, 2026 01:32
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 4620843 to 66814a6 Compare October 27, 2026 01:44
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 66814a6 to a0cbc23 Compare October 27, 2026 01:45
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from a0cbc23 to d0264fb Compare October 27, 2026 01:57
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from d0264fb to 16b5f8d Compare October 27, 2026 01:57
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 16b5f8d to 83fd84f Compare October 27, 2026 02:21
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 83fd84f to 9eeb184 Compare October 27, 2026 02:21
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 9eeb184 to e1a0fe5 Compare October 27, 2026 02:31
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from e1a0fe5 to 5d61d83 Compare October 27, 2026 02:31
@devolutionsbot
devolutionsbot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 5d61d83 to 1c28d5e Compare October 27, 2026 02:45
@github-actions
github-actions Bot force-pushed the release-plz/2026-10-26T16-25-38Z branch from 1c28d5e to 25b6d39 Compare October 27, 2026 02:45
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the needs-author-action The pull request author is the current next actor label Oct 27, 2026
@github-actions github-actions Bot removed the needs-author-action The pull request author is the current next actor label Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants