diff --git a/Cargo.lock b/Cargo.lock index b357e75712..428eb70ef2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1143,7 +1143,7 @@ dependencies = [ "document-features", "mio", "parking_lot", - "rustix 1.1.5", + "rustix 1.1.6", "signal-hook", "signal-hook-mio", "winapi", @@ -1166,9 +1166,9 @@ checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-bigint" -version = "0.7.6" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bb08299a6046833a879ace115697f12fd2bd6c8d3e93c909ffc9e0738e7cae0" +checksum = "9c035cb64cba03dad2fb921f3e218785e8cf9a41790da5eb3a1400f62fa2be11" dependencies = [ "cpubits", "ctutils", @@ -1274,9 +1274,9 @@ dependencies = [ [[package]] name = "ctutils" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d28fb6aa7dd680b3ffd1a3e64e115c177bdba63c0ae7f9cd48129ff05c4fa0" +checksum = "fe3e9d21d39e6f39ff46e03d5b621424f88ee23d8a1672c6bfc9ccc7f2da4f6a" dependencies = [ "cmov", "subtle", @@ -1340,9 +1340,9 @@ dependencies = [ [[package]] name = "der" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a878c850e9e421b20262e9b41f9c860e4785fa07541c266b62ff9d1ef998a80a" +checksum = "6a996a108feb8b427a6e12fcf6af4aa83409b79d72c15337d7741368131ee004" dependencies = [ "const-oid 0.10.2", "der_derive", @@ -1566,7 +1566,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "51a91c9b32ac4e8105dec255e849e0d66e27d7c34d184364fb93e469db08f690" dependencies = [ "drm-sys", - "rustix 1.1.5", + "rustix 1.1.6", ] [[package]] @@ -1609,7 +1609,7 @@ version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0681a4fc24c767085329728d8dfba959af91228aa4610cca4f8ce317ba46ae0" dependencies = [ - "der 0.8.2", + "der 0.8.3", "digest 0.11.3", "elliptic-curve", "rfc6979", @@ -1650,9 +1650,9 @@ checksum = "0e9c71c2167ca323c882b99918929403426e2373ea17242ff5653e0d5e1058be" [[package]] name = "elliptic-curve" -version = "0.14.1" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d65aa39b3a5c1c9c1b745c9a019234bb7a21b77abcb4f4d266d706e2d577d65" +checksum = "900f37e7e18d74a2347389af6cd69e3a30d5cc9e697f40004865679aa75e9c7c" dependencies = [ "base16ct", "crypto-bigint", @@ -1757,7 +1757,7 @@ dependencies = [ "embed-resource", "ironrdp", "ironrdp-cliprdr-native", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc-pipe-proxy", "ironrdp-rdcleanpath", "ironrdp-rdpdr-native", @@ -1986,7 +1986,7 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bd49230192a3797a9a4d6abe9b3eed6f7fa4c8a8a4947977c6f80025f92cbd8" dependencies = [ - "rustix 1.1.5", + "rustix 1.1.6", "windows-link", ] @@ -2612,7 +2612,7 @@ checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" [[package]] name = "iron-remote-desktop" -version = "0.8.0" +version = "0.8.1" dependencies = [ "console_error_panic_hook", "tracing", @@ -2635,7 +2635,7 @@ dependencies = [ "ironrdp-cliprdr", "ironrdp-cliprdr-native", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-echo", @@ -2663,12 +2663,12 @@ dependencies = [ [[package]] name = "ironrdp-acceptor" -version = "0.11.0" +version = "0.12.0" dependencies = [ "async-trait", "ironrdp-async", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-pdu", "ironrdp-svc", "rand 0.9.5", @@ -2688,7 +2688,7 @@ dependencies = [ "ironrdp-cliprdr-format", "ironrdp-cliprdr-native", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-daemon", "ironrdp-displaycontrol", "ironrdp-egfx", @@ -2746,7 +2746,7 @@ name = "ironrdp-ainput" version = "0.9.0" dependencies = [ "bitflags 2.13.2", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "num-derive 0.5.1", "num-traits", @@ -2754,11 +2754,11 @@ dependencies = [ [[package]] name = "ironrdp-async" -version = "0.11.0" +version = "0.12.0" dependencies = [ "bytes", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-pdu", "tracing", "web-time", @@ -2780,11 +2780,11 @@ dependencies = [ [[package]] name = "ironrdp-blocking" -version = "0.11.0" +version = "0.12.0" dependencies = [ "bytes", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-pdu", "tracing", ] @@ -2802,7 +2802,7 @@ version = "0.0.0" dependencies = [ "aes-gcm 0.10.3", "hmac 0.12.1", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-egfx", "ironrdp-graphics", @@ -2818,7 +2818,7 @@ dependencies = [ [[package]] name = "ironrdp-cfg" -version = "0.2.0" +version = "0.3.0" dependencies = [ "ironrdp-propertyset", ] @@ -2834,7 +2834,7 @@ dependencies = [ "ironrdp-cliprdr", "ironrdp-cliprdr-native", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-dvc-com-plugin", @@ -2885,10 +2885,10 @@ dependencies = [ [[package]] name = "ironrdp-cliprdr" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitflags 2.13.2", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-pdu", "ironrdp-svc", "tracing", @@ -2899,7 +2899,7 @@ dependencies = [ name = "ironrdp-cliprdr-format" version = "0.3.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "png", ] @@ -2909,7 +2909,7 @@ version = "0.8.0" dependencies = [ "ironrdp-cliprdr", "ironrdp-cliprdr-format", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "nix 0.31.3", "tracing", "visibility", @@ -2923,9 +2923,9 @@ dependencies = [ [[package]] name = "ironrdp-connector" -version = "0.11.0" +version = "0.12.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-error 0.2.1", "ironrdp-pdu", "ironrdp-svc", @@ -2950,7 +2950,7 @@ dependencies = [ [[package]] name = "ironrdp-core" -version = "0.3.0" +version = "0.3.1" dependencies = [ "ironrdp-error 0.2.1", ] @@ -2987,9 +2987,9 @@ dependencies = [ [[package]] name = "ironrdp-displaycontrol" -version = "0.9.0" +version = "0.10.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -2998,10 +2998,10 @@ dependencies = [ [[package]] name = "ironrdp-dvc" -version = "0.9.0" +version = "0.10.0" dependencies = [ "ironrdp-bulk", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-pdu", "ironrdp-svc", "tracing", @@ -3009,9 +3009,9 @@ dependencies = [ [[package]] name = "ironrdp-dvc-com-plugin" -version = "0.2.0" +version = "0.3.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -3022,10 +3022,10 @@ dependencies = [ [[package]] name = "ironrdp-dvc-pipe-proxy" -version = "0.6.0" +version = "0.7.0" dependencies = [ "async-trait", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -3035,9 +3035,9 @@ dependencies = [ [[package]] name = "ironrdp-echo" -version = "0.5.0" +version = "0.6.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "tracing", @@ -3045,12 +3045,12 @@ dependencies = [ [[package]] name = "ironrdp-egfx" -version = "0.4.0" +version = "0.5.0" dependencies = [ "arbitrary", "bit_field", "bitflags 2.13.2", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-graphics", "ironrdp-pdu", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "ironrdp-egfx-native" -version = "0.1.0" +version = "0.2.0" dependencies = [ "ironrdp-egfx", "tracing", @@ -3094,7 +3094,7 @@ dependencies = [ "ironrdp-bulk", "ironrdp-cliprdr", "ironrdp-cliprdr-format", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-egfx", @@ -3111,7 +3111,7 @@ dependencies = [ [[package]] name = "ironrdp-graphics" -version = "0.10.0" +version = "0.11.0" dependencies = [ "bit_field", "bitflags 2.13.2", @@ -3120,7 +3120,7 @@ dependencies = [ "bytemuck", "byteorder", "expect-test", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-pdu", "num-derive 0.5.1", "num-traits", @@ -3131,7 +3131,7 @@ dependencies = [ [[package]] name = "ironrdp-input" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitvec", "ironrdp-pdu", @@ -3140,7 +3140,7 @@ dependencies = [ [[package]] name = "ironrdp-mstsgu" -version = "0.0.2" +version = "0.0.3" dependencies = [ "base64 0.22.1", "bitflags 2.13.2", @@ -3148,7 +3148,7 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-error 0.2.1", "ironrdp-tls", "log", @@ -3173,7 +3173,7 @@ dependencies = [ [[package]] name = "ironrdp-pdu" -version = "0.10.0" +version = "0.11.0" dependencies = [ "arbitrary", "bit_field", @@ -3182,7 +3182,7 @@ dependencies = [ "der-parser", "expect-test", "hmac 0.12.1", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-error 0.2.1", "md-5 0.10.6", "num-bigint", @@ -3207,24 +3207,24 @@ version = "0.1.1" name = "ironrdp-rail" version = "0.2.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-svc", ] [[package]] name = "ironrdp-rdcleanpath" -version = "0.3.0" +version = "0.3.1" dependencies = [ - "der 0.8.2", + "der 0.8.3", ] [[package]] name = "ironrdp-rdpdr" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitflags 2.13.2", "getrandom 0.3.4", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-error 0.2.1", "ironrdp-pdu", "ironrdp-svc", @@ -3233,9 +3233,9 @@ dependencies = [ [[package]] name = "ironrdp-rdpdr-native" -version = "0.8.0" +version = "0.9.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-pdu", "ironrdp-rdpdr", "ironrdp-svc", @@ -3247,9 +3247,9 @@ dependencies = [ [[package]] name = "ironrdp-rdpeai" -version = "0.1.0" +version = "0.2.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-rdpsnd", @@ -3259,9 +3259,9 @@ dependencies = [ [[package]] name = "ironrdp-rdpecam" -version = "0.1.0" +version = "0.2.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -3280,9 +3280,9 @@ dependencies = [ [[package]] name = "ironrdp-rdpegt" -version = "0.1.0" +version = "0.2.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "tracing", @@ -3290,10 +3290,10 @@ dependencies = [ [[package]] name = "ironrdp-rdpei" -version = "0.2.0" +version = "0.3.0" dependencies = [ "bitflags 2.13.2", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -3302,9 +3302,9 @@ dependencies = [ [[package]] name = "ironrdp-rdpel" -version = "0.0.1" +version = "0.0.2" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -3316,7 +3316,7 @@ name = "ironrdp-rdpemt" version = "0.1.0" dependencies = [ "arbitrary", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-error 0.2.1", "subtle", "tracing", @@ -3328,18 +3328,18 @@ version = "0.1.0" dependencies = [ "arbitrary", "bitflags 2.13.2", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-error 0.2.1", "tracing", ] [[package]] name = "ironrdp-rdpeudp-tokio" -version = "0.1.0" +version = "0.2.0" dependencies = [ "bytes", "ironrdp-async", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-error 0.2.1", "ironrdp-pdu", "ironrdp-rdpemt", @@ -3359,9 +3359,9 @@ dependencies = [ [[package]] name = "ironrdp-rdpeusb" -version = "0.1.0" +version = "0.2.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-str", @@ -3385,9 +3385,9 @@ dependencies = [ [[package]] name = "ironrdp-rdpevor" -version = "0.1.0" +version = "0.2.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-egfx", "ironrdp-pdu", @@ -3398,9 +3398,9 @@ dependencies = [ [[package]] name = "ironrdp-rdpewa" -version = "0.1.0" +version = "0.2.0" dependencies = [ - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -3425,10 +3425,10 @@ dependencies = [ [[package]] name = "ironrdp-rdpsnd" -version = "0.10.0" +version = "0.11.0" dependencies = [ "bitflags 2.13.2", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "ironrdp-svc", @@ -3439,11 +3439,11 @@ dependencies = [ [[package]] name = "ironrdp-rdpsnd-native" -version = "0.7.0" +version = "0.8.0" dependencies = [ "anyhow", "cpal", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-error 0.2.1", "ironrdp-rdpeai", "ironrdp-rdpsnd", @@ -3456,10 +3456,10 @@ dependencies = [ [[package]] name = "ironrdp-rpc" -version = "0.1.0" +version = "0.2.0" dependencies = [ "anyhow", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-input", "ironrdp-pdu", "ironrdp-propertyset", @@ -3473,7 +3473,7 @@ dependencies = [ [[package]] name = "ironrdp-server" -version = "0.13.0" +version = "0.14.0" dependencies = [ "async-trait", "bytes", @@ -3482,7 +3482,7 @@ dependencies = [ "ironrdp-async", "ironrdp-cliprdr", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-echo", @@ -3516,10 +3516,10 @@ dependencies = [ [[package]] name = "ironrdp-session" -version = "0.12.0" +version = "0.13.0" dependencies = [ "ironrdp-bulk", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-egfx", @@ -3540,18 +3540,18 @@ version = "0.0.0" [[package]] name = "ironrdp-str" -version = "0.2.0" +version = "0.2.1" dependencies = [ "bytemuck", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", ] [[package]] name = "ironrdp-svc" -version = "0.9.0" +version = "0.10.0" dependencies = [ "bitflags 2.13.2", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-pdu", ] @@ -3571,7 +3571,7 @@ dependencies = [ "ironrdp-cliprdr", "ironrdp-cliprdr-format", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-displaycontrol", "ironrdp-dvc", "ironrdp-echo", @@ -3629,7 +3629,7 @@ dependencies = [ "ironrdp-cliprdr", "ironrdp-cliprdr-format", "ironrdp-cliprdr-native", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-daemon", "ironrdp-dvc", "ironrdp-dvc-pipe-proxy", @@ -3683,7 +3683,7 @@ dependencies = [ [[package]] name = "ironrdp-tokio" -version = "0.11.0" +version = "0.12.0" dependencies = [ "ironrdp-async", "ironrdp-connector", @@ -3729,11 +3729,11 @@ dependencies = [ [[package]] name = "ironrdp-vmconnect" -version = "0.1.0" +version = "0.2.0" dependencies = [ "ironrdp-async", "ironrdp-connector", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-dvc", "ironrdp-pdu", "sha2 0.10.9", @@ -3759,7 +3759,7 @@ dependencies = [ "iron-remote-desktop", "ironrdp", "ironrdp-cliprdr-format", - "ironrdp-core 0.3.0", + "ironrdp-core 0.3.1", "ironrdp-futures", "ironrdp-pdu", "ironrdp-propertyset", @@ -4382,9 +4382,9 @@ dependencies = [ [[package]] name = "nusb" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03fba503685f5c3e9f6a11ff9711c16086ab6beacaa6ad3df9e217a91a8d4c82" +checksum = "1de8b6d15f559f50760dad6c1b56fde4041f99dc96a08e55c2b41f44c7417ad9" dependencies = [ "core-foundation 0.10.1", "core-foundation-sys", @@ -4394,7 +4394,7 @@ dependencies = [ "linux-raw-sys 0.12.1", "log", "once_cell", - "rustix 1.1.5", + "rustix 1.1.6", "slab", "tokio", "wasm-bindgen", @@ -4830,9 +4830,9 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c87def4c32ab89d880effc9e097653c8da5d6ef28e6b539d313baaacfbafcbe" +checksum = "7e036b411754132fd6b74e94b74e9a13c5cf606fa93d1885c35860d3060820b1" [[package]] name = "openssl-sys" @@ -5046,9 +5046,9 @@ dependencies = [ [[package]] name = "picky-asn1" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ff038f9360b934342fb3c0a1d6e82c438a2624b51c3c6e3e6d7cf252b6f3ee3" +checksum = "f9e56b8955035e2593f7f7e7f8d30c9c7a0ce5a5e31cc529f8f087a9e0437526" dependencies = [ "oid", "serde", @@ -5070,9 +5070,9 @@ dependencies = [ [[package]] name = "picky-asn1-x509" -version = "0.15.5" +version = "0.15.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f110226d163cea4380b0e5ef698a107061d198b279cc27d2b2c1e95c08cd9b0" +checksum = "98dd311a5e525d1200365273a509b9d07bccf3481aaa901047fdca19830ca721" dependencies = [ "base64 0.23.1", "crypto-bigint", @@ -5167,7 +5167,7 @@ version = "0.8.0-rc.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "986d2e952779af96ea048f160fd9194e1751b4faea78bcf3ceb456efe008088e" dependencies = [ - "der 0.8.2", + "der 0.8.3", "spki 0.8.1", ] @@ -5187,7 +5187,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "451913da69c775a56034ea8d9003d27ee8948e12443eae7c038ba100a4f21cb7" dependencies = [ - "der 0.8.2", + "der 0.8.3", "spki 0.8.1", ] @@ -5254,7 +5254,7 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.5", + "rustix 1.1.6", "windows-sys 0.61.2", ] @@ -5944,9 +5944,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.5" +version = "1.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "891efababe418670775f199f0d233d84843c227a0949a883ce15b37c78d6629d" +checksum = "e5e76742e5294153d4dde1207dbec5bdd81eef6fabdc0d2118babadabfd858aa" dependencies = [ "bitflags 2.13.2", "errno", @@ -6107,7 +6107,7 @@ checksum = "d56d437c2f19203ce5f7122e507831de96f3d2d4d3be5af44a0b0a09d8a80e4d" dependencies = [ "base16ct", "ctutils", - "der 0.8.2", + "der 0.8.3", "hybrid-array", "subtle", "zeroize", @@ -6376,9 +6376,9 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.16.3" +version = "1.16.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b3dc8af474f516a851ff4bd12db780f948b9250ad37211e4eec0bccea54e01b" +checksum = "d0d5d4b1981b8bbbb7aed204cae5726d683d5d6ac7e74ec54122ea28f315e7c8" [[package]] name = "smithay-client-toolkit" @@ -6454,7 +6454,7 @@ dependencies = [ "objc2-quartz-core 0.3.2", "raw-window-handle", "redox_syscall 0.5.18", - "rustix 1.1.5", + "rustix 1.1.6", "tiny-xlib", "tracing", "wasm-bindgen", @@ -6492,7 +6492,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef958a98b9d5da290cfc78946e9f3e61e1e62a18db0d92cac0b83cc161491a9" dependencies = [ "base64ct", - "der 0.8.2", + "der 0.8.3", ] [[package]] @@ -6701,7 +6701,7 @@ dependencies = [ "fastrand", "getrandom 0.4.3", "once_cell", - "rustix 1.1.5", + "rustix 1.1.6", "windows-sys 0.61.2", ] @@ -7467,7 +7467,7 @@ checksum = "38a91b4eaddff87b1cd1074985e3713da4af2c49742d1b356b2c01670a67a078" dependencies = [ "cc", "downcast-rs", - "rustix 1.1.5", + "rustix 1.1.6", "scoped-tls", "smallvec", "wayland-sys", @@ -7480,7 +7480,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3c36a0f861ad76d0901f2800b46321410d9f73f2ea88aac0650d86c32688073" dependencies = [ "bitflags 2.13.2", - "rustix 1.1.5", + "rustix 1.1.6", "wayland-backend", "wayland-scanner", ] @@ -7502,7 +7502,7 @@ version = "0.31.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a52d18780be9b1314328a3de5f930b73d2200112e3849ca6cb11822793fb34d" dependencies = [ - "rustix 1.1.5", + "rustix 1.1.6", "wayland-client", "xcursor", ] @@ -8152,7 +8152,7 @@ dependencies = [ "libc", "libloading", "once_cell", - "rustix 1.1.5", + "rustix 1.1.6", "x11rb-protocol", ] @@ -8180,7 +8180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "105ef4642d9cb137ef83d623d0e4bf08b8adf69e9918ca904a174adb6d3d038b" dependencies = [ "const-oid 0.10.2", - "der 0.8.2", + "der 0.8.3", "spki 0.8.1", "tls_codec", ] diff --git a/crates/iron-remote-desktop/CHANGELOG.md b/crates/iron-remote-desktop/CHANGELOG.md index dbf35aeba0..231b7773ab 100644 --- a/crates/iron-remote-desktop/CHANGELOG.md +++ b/crates/iron-remote-desktop/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.8.1](https://github.com/Devolutions/IronRDP/compare/iron-remote-desktop-v0.8.0...iron-remote-desktop-v0.8.1)] - 2026-10-27 + +### Features + +- Add `RDCleanPathDetails::error_code` and `with_error_code`, carrying the reason code of an RDCleanPath error ([#2127](https://github.com/Devolutions/IronRDP/issues/2127)) ([0c7e3abfb3](https://github.com/Devolutions/IronRDP/commit/0c7e3abfb3fbbef0027ce74d50c6038c245978e0)) + + + ## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/iron-remote-desktop-v0.7.1...iron-remote-desktop-v0.8.0)] - 2026-10-23 ### Features diff --git a/crates/iron-remote-desktop/Cargo.toml b/crates/iron-remote-desktop/Cargo.toml index 9007c45c57..1b87446830 100644 --- a/crates/iron-remote-desktop/Cargo.toml +++ b/crates/iron-remote-desktop/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "iron-remote-desktop" -version = "0.8.0" +version = "0.8.1" readme = "README.md" description = "Helper crate for building WASM modules compatible with iron-remote-desktop WebComponent" edition.workspace = true diff --git a/crates/ironrdp-acceptor/CHANGELOG.md b/crates/ironrdp-acceptor/CHANGELOG.md index bd741fbc09..6301af8e8d 100644 --- a/crates/ironrdp-acceptor/CHANGELOG.md +++ b/crates/ironrdp-acceptor/CHANGELOG.md @@ -6,6 +6,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.12.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-acceptor-v0.11.0...ironrdp-acceptor-v0.12.0)] - 2026-10-27 + +### Bug Fixes + +- Send `RDP` as the Demand Active source descriptor instead of an empty one, which Jump Desktop rejects ([#2119](https://github.com/Devolutions/IronRDP/issues/2119)) ([d921607fc8](https://github.com/Devolutions/IronRDP/commit/d921607fc817b72298cf7434e2bba887ebaf5674)) + +- Stepping an `Acceptor`, `ChannelConnectionSequence` or `FinalizationSequence` after a failed step or after it finished returns an error instead of panicking ([#2231](https://github.com/Devolutions/IronRDP/issues/2231)) ([e51dcfee4a](https://github.com/Devolutions/IronRDP/commit/e51dcfee4a1edf7e92917c0eb5e8df6cc7a8ad64)) + +- Send a zero `pduSource` in the Monitor Layout PDU, as MS-RDPBCGR 2.2.12.1 requires ([#2230](https://github.com/Devolutions/IronRDP/issues/2230)) ([3ca12ee636](https://github.com/Devolutions/IronRDP/commit/3ca12ee63687980ace30cd6ed59c2ab4f57cf157)) + +### Build + +- [**breaking**] Update `ironrdp-async` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-connector` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.11.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-acceptor-v0.10.0...ironrdp-acceptor-v0.11.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-acceptor/Cargo.toml b/crates/ironrdp-acceptor/Cargo.toml index fa4de9c8be..54ea3b149f 100644 --- a/crates/ironrdp-acceptor/Cargo.toml +++ b/crates/ironrdp-acceptor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-acceptor" -version = "0.11.0" +version = "0.12.0" readme = "README.md" description = "State machines to drive an RDP connection acceptance sequence" edition.workspace = true @@ -18,10 +18,10 @@ test = false [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11" } # public -ironrdp-async = { path = "../ironrdp-async", version = "0.11" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12" } # public +ironrdp-async = { path = "../ironrdp-async", version = "0.12" } # public rand = "0.9" async-trait = "0.1" tracing = { version = "0.1", features = ["log"] } diff --git a/crates/ironrdp-activex/Cargo.toml b/crates/ironrdp-activex/Cargo.toml index 12095979fa..fef081b625 100644 --- a/crates/ironrdp-activex/Cargo.toml +++ b/crates/ironrdp-activex/Cargo.toml @@ -22,25 +22,25 @@ doctest = false anyhow = "1" base64 = "0.22" ironrdp-client = { path = "../ironrdp-client", version = "0.1", features = ["camera", "clipboard", "dvc-com-plugin", "gateway", "location", "rdpdr", "rustls", "smartcard", "sound", "webauthn"] } -ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.8" } +ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.9" } ironrdp-cliprdr-format = { path = "../ironrdp-cliprdr-format", version = "0.3.0" } ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.8" } -ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.2" } -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11" } +ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.3" } +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12" } ironrdp-core = { path = "../ironrdp-core", version = "0.3" } ironrdp-daemon = { path = "../ironrdp-daemon", version = "0.1" } -ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.9" } -ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.4" } -ironrdp-input = { path = "../ironrdp-input", version = "0.8" } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } -ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.2" } +ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.10" } +ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.5" } +ironrdp-input = { path = "../ironrdp-input", version = "0.9" } +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } +ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.3" } ironrdp-rdpfile = { path = "../ironrdp-rdpfile", version = "0.1.1" } ironrdp-propertyset = { path = "../ironrdp-propertyset", version = "0.1" } ironrdp-rail = { path = "../ironrdp-rail", version = "0.2" } -ironrdp-rdpdr-native = { path = "../ironrdp-rdpdr-native", version = "0.8" } -ironrdp-rpc = { path = "../ironrdp-rpc", version = "0.1" } -ironrdp-session = { path = "../ironrdp-session", version = "0.12" } -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } +ironrdp-rdpdr-native = { path = "../ironrdp-rdpdr-native", version = "0.9" } +ironrdp-rpc = { path = "../ironrdp-rpc", version = "0.2" } +ironrdp-session = { path = "../ironrdp-session", version = "0.13" } +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } ironrdp-tls = { path = "../ironrdp-tls", version = "0.3" } png = "0.18" sha2 = "0.10" diff --git a/crates/ironrdp-agent/Cargo.toml b/crates/ironrdp-agent/Cargo.toml index 9cb8c3b449..d66d7b82ae 100644 --- a/crates/ironrdp-agent/Cargo.toml +++ b/crates/ironrdp-agent/Cargo.toml @@ -22,11 +22,11 @@ test = false [dependencies] # Configuration model and codecs ironrdp-propertyset = { path = "../ironrdp-propertyset", version = "0.1" } -ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.2" } +ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.3" } ironrdp-rdpfile = { path = "../ironrdp-rdpfile", version = "0.1" } -ironrdp-input = { path = "../ironrdp-input", version = "0.8" } +ironrdp-input = { path = "../ironrdp-input", version = "0.9" } ironrdp-daemon = { path = "../ironrdp-daemon", version = "0.1" } -ironrdp-rpc = { path = "../ironrdp-rpc", version = "0.1" } +ironrdp-rpc = { path = "../ironrdp-rpc", version = "0.2" } # Async runtime tokio = { version = "1", features = ["rt-multi-thread", "macros", "time", "net", "io-util", "rt"] } @@ -38,7 +38,7 @@ clap = { version = "4.6", features = ["derive", "cargo", "env"] } anyhow = "1" serde = { version = "1", features = ["derive"] } serde_json = "1" -ironrdp-mstsgu = { path = "../ironrdp-mstsgu", version = "0.0.2", features = ["rustls"] } +ironrdp-mstsgu = { path = "../ironrdp-mstsgu", version = "0.0.3", features = ["rustls"] } # Inline terminal screenshots base64 = "0.22" diff --git a/crates/ironrdp-ainput/Cargo.toml b/crates/ironrdp-ainput/Cargo.toml index 8526c417c0..dc9be28363 100644 --- a/crates/ironrdp-ainput/Cargo.toml +++ b/crates/ironrdp-ainput/Cargo.toml @@ -18,7 +18,7 @@ test = false [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public bitflags = "2.11" num-derive.workspace = true # TODO: remove num-traits.workspace = true # TODO: remove diff --git a/crates/ironrdp-async/CHANGELOG.md b/crates/ironrdp-async/CHANGELOG.md index d670b9278c..a1eeb6c1e6 100644 --- a/crates/ironrdp-async/CHANGELOG.md +++ b/crates/ironrdp-async/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.12.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-async-v0.11.0...ironrdp-async-v0.12.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-connector` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + + + ## [[0.11.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-async-v0.10.0...ironrdp-async-v0.11.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-async/Cargo.toml b/crates/ironrdp-async/Cargo.toml index 812b68e305..94327c3575 100644 --- a/crates/ironrdp-async/Cargo.toml +++ b/crates/ironrdp-async/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-async" -version = "0.11.0" +version = "0.12.0" readme = "README.md" description = "Provides `Future`s wrapping the IronRDP state machines conveniently" edition.workspace = true @@ -17,9 +17,9 @@ doctest = false test = false [dependencies] -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11" } # public +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public tracing = { version = "0.1", features = ["log"] } bytes = "1" # public web-time = "1.1" diff --git a/crates/ironrdp-blocking/CHANGELOG.md b/crates/ironrdp-blocking/CHANGELOG.md index 9f6132ff28..cc986c09fa 100644 --- a/crates/ironrdp-blocking/CHANGELOG.md +++ b/crates/ironrdp-blocking/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.12.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.11.0...ironrdp-blocking-v0.12.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-connector` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + + + ## [[0.11.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-blocking-v0.10.0...ironrdp-blocking-v0.11.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-blocking/Cargo.toml b/crates/ironrdp-blocking/Cargo.toml index b19108df81..6caf3d3872 100644 --- a/crates/ironrdp-blocking/Cargo.toml +++ b/crates/ironrdp-blocking/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-blocking" -version = "0.11.0" +version = "0.12.0" readme = "README.md" description = "Blocking I/O abstraction wrapping the IronRDP state machines conveniently" edition.workspace = true @@ -17,9 +17,9 @@ doctest = false test = false [dependencies] -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11" } # public +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public tracing = { version = "0.1", features = ["log"] } bytes = "1" # public diff --git a/crates/ironrdp-capture-replay/Cargo.toml b/crates/ironrdp-capture-replay/Cargo.toml index fdf05cbd74..03da692d83 100644 --- a/crates/ironrdp-capture-replay/Cargo.toml +++ b/crates/ironrdp-capture-replay/Cargo.toml @@ -15,13 +15,13 @@ categories.workspace = true [dependencies] aes-gcm = "0.10" hmac = "0.12" -ironrdp-core = { version = "0.3.0", path = "../ironrdp-core" } -ironrdp-dvc = { version = "0.9.0", path = "../ironrdp-dvc" } # public -ironrdp-egfx = { version = "0.4.0", path = "../ironrdp-egfx" } -ironrdp-graphics = { version = "0.10.0", path = "../ironrdp-graphics" } -ironrdp-pdu = { version = "0.10.0", path = "../ironrdp-pdu" } # public -ironrdp-session = { version = "0.12.0", path = "../ironrdp-session" } -ironrdp-svc = { version = "0.9.0", path = "../ironrdp-svc" } +ironrdp-core = { version = "0.3.1", path = "../ironrdp-core" } +ironrdp-dvc = { version = "0.10.0", path = "../ironrdp-dvc" } # public +ironrdp-egfx = { version = "0.5.0", path = "../ironrdp-egfx" } +ironrdp-graphics = { version = "0.11.0", path = "../ironrdp-graphics" } +ironrdp-pdu = { version = "0.11.0", path = "../ironrdp-pdu" } # public +ironrdp-session = { version = "0.13.0", path = "../ironrdp-session" } +ironrdp-svc = { version = "0.10.0", path = "../ironrdp-svc" } pcap-parser = "0.17" png = "0.18" sha2 = "0.10" diff --git a/crates/ironrdp-cfg/CHANGELOG.md b/crates/ironrdp-cfg/CHANGELOG.md index a6a4037b40..7f05a1ae70 100644 --- a/crates/ironrdp-cfg/CHANGELOG.md +++ b/crates/ironrdp-cfg/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.3.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cfg-v0.2.0...ironrdp-cfg-v0.3.0)] - 2026-10-27 + +### Features + +- Add `PropertySetExt::usb_devices_to_redirect`, `set_usb_devices_to_redirect` and `clear_usb_devices_to_redirect` for the `usbdevicestoredirect` property ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + + + ## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cfg-v0.1.0...ironrdp-cfg-v0.2.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-cfg/Cargo.toml b/crates/ironrdp-cfg/Cargo.toml index 14b6d52b3b..871143e6b1 100644 --- a/crates/ironrdp-cfg/Cargo.toml +++ b/crates/ironrdp-cfg/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-cfg" -version = "0.2.0" +version = "0.3.0" readme = "README.md" description = "IronRDP utilities for ironrdp-cfgstore" edition.workspace = true diff --git a/crates/ironrdp-client/Cargo.toml b/crates/ironrdp-client/Cargo.toml index 171f5e8a94..e3fcea93ae 100644 --- a/crates/ironrdp-client/Cargo.toml +++ b/crates/ironrdp-client/Cargo.toml @@ -101,41 +101,41 @@ all = [ [dependencies] # Protocols (core features always on) ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11" } # public -ironrdp-session = { path = "../ironrdp-session", version = "0.12" } # public -ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.10" } # public -ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.9" } -ironrdp-echo = { path = "../ironrdp-echo", version = "0.5" } -ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.4" } # public -ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.2" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12" } # public +ironrdp-session = { path = "../ironrdp-session", version = "0.13" } # public +ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.11" } # public +ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.10" } +ironrdp-echo = { path = "../ironrdp-echo", version = "0.6" } +ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.5" } # public +ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.3" } # public ironrdp-rdpeudp = { path = "../ironrdp-rdpeudp", version = "0.1", optional = true } -ironrdp-rdpeudp-tokio = { path = "../ironrdp-rdpeudp-tokio", version = "0.1", optional = true } +ironrdp-rdpeudp-tokio = { path = "../ironrdp-rdpeudp-tokio", version = "0.2", optional = true } ironrdp-tls = { path = "../ironrdp-tls", version = "0.3" } # public -ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.11", features = ["reqwest"] } +ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.12", features = ["reqwest"] } ironrdp-rdcleanpath = { path = "../ironrdp-rdcleanpath", version = "0.3" } -ironrdp-vmconnect = { path = "../ironrdp-vmconnect", version = "0.1", optional = true } -ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.2" } +ironrdp-vmconnect = { path = "../ironrdp-vmconnect", version = "0.2", optional = true } +ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.3" } ironrdp-propertyset = { path = "../ironrdp-propertyset", version = "0.1" } # public ironrdp-rail = { path = "../ironrdp-rail", version = "0.2" } # Optional protocol crates (activated by features above) -ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.8", optional = true } # public -ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.8", optional = true } # public -ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.10", optional = true } -ironrdp-rdpeai = { path = "../ironrdp-rdpeai", version = "0.1", optional = true } -ironrdp-rdpel = { path = "../ironrdp-rdpel", version = "0.0.1", optional = true } -ironrdp-rdpegt = { path = "../ironrdp-rdpegt", version = "0.1", optional = true } -ironrdp-rdpevor = { path = "../ironrdp-rdpevor", version = "0.1", optional = true } -ironrdp-rdpeusb = { path = "../ironrdp-rdpeusb", version = "0.1", optional = true } +ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.9", optional = true } # public +ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.9", optional = true } # public +ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.11", optional = true } +ironrdp-rdpeai = { path = "../ironrdp-rdpeai", version = "0.2", optional = true } +ironrdp-rdpel = { path = "../ironrdp-rdpel", version = "0.0.2", optional = true } +ironrdp-rdpegt = { path = "../ironrdp-rdpegt", version = "0.2", optional = true } +ironrdp-rdpevor = { path = "../ironrdp-rdpevor", version = "0.2", optional = true } +ironrdp-rdpeusb = { path = "../ironrdp-rdpeusb", version = "0.2", optional = true } # Optional backend crates (activated by features above) -ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.7", optional = true } # public +ironrdp-rdpsnd-native = { path = "../ironrdp-rdpsnd-native", version = "0.8", optional = true } # public ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.8", optional = true } -ironrdp-mstsgu = { path = "../ironrdp-mstsgu", version = "0.0.2", optional = true } -ironrdp-dvc-pipe-proxy = { path = "../ironrdp-dvc-pipe-proxy", version = "0.6", optional = true } +ironrdp-mstsgu = { path = "../ironrdp-mstsgu", version = "0.0.3", optional = true } +ironrdp-dvc-pipe-proxy = { path = "../ironrdp-dvc-pipe-proxy", version = "0.7", optional = true } ironrdp-rdpeusb-native = { path = "../ironrdp-rdpeusb-native", version = "0.1", optional = true } # public # Logging @@ -160,12 +160,12 @@ serde_json = { version = "1", optional = true } zeroize = { version = "1", optional = true } [target.'cfg(windows)'.dependencies] -ironrdp-dvc-com-plugin = { path = "../ironrdp-dvc-com-plugin", version = "0.2", optional = true } -ironrdp-rdpewa = { path = "../ironrdp-rdpewa", version = "0.1", optional = true } +ironrdp-dvc-com-plugin = { path = "../ironrdp-dvc-com-plugin", version = "0.3", optional = true } +ironrdp-rdpewa = { path = "../ironrdp-rdpewa", version = "0.2", optional = true } ironrdp-rdpewa-native = { path = "../ironrdp-rdpewa-native", version = "0.1", optional = true } -ironrdp-rdpecam = { path = "../ironrdp-rdpecam", version = "0.1", optional = true } +ironrdp-rdpecam = { path = "../ironrdp-rdpecam", version = "0.2", optional = true } ironrdp-rdpecam-native = { path = "../ironrdp-rdpecam-native", version = "0.1", optional = true } -ironrdp-egfx-native = { path = "../ironrdp-egfx-native", version = "0.1" } +ironrdp-egfx-native = { path = "../ironrdp-egfx-native", version = "0.2" } [lints] workspace = true diff --git a/crates/ironrdp-cliprdr-native/Cargo.toml b/crates/ironrdp-cliprdr-native/Cargo.toml index 965225f237..491310ac65 100644 --- a/crates/ironrdp-cliprdr-native/Cargo.toml +++ b/crates/ironrdp-cliprdr-native/Cargo.toml @@ -22,7 +22,7 @@ doctest = false test = false [dependencies] -ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.8" } # public +ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.9" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3" } tracing = { version = "0.1", features = ["log"] } diff --git a/crates/ironrdp-cliprdr/CHANGELOG.md b/crates/ironrdp-cliprdr/CHANGELOG.md index 3b918b07ac..67b8306a2f 100644 --- a/crates/ironrdp-cliprdr/CHANGELOG.md +++ b/crates/ironrdp-cliprdr/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-v0.8.0...ironrdp-cliprdr-v0.9.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-cliprdr-v0.7.0...ironrdp-cliprdr-v0.8.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-cliprdr/Cargo.toml b/crates/ironrdp-cliprdr/Cargo.toml index 96c25203b1..7fa2779be8 100644 --- a/crates/ironrdp-cliprdr/Cargo.toml +++ b/crates/ironrdp-cliprdr/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-cliprdr" -version = "0.8.0" +version = "0.9.0" readme = "README.md" description = "CLIPRDR static channel for clipboard implemented as described in MS-RDPECLIP" edition.workspace = true @@ -23,8 +23,8 @@ __test = ["dep:visibility"] [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public tracing = { version = "0.1", features = ["log"] } bitflags = "2.11" visibility = { version = "0.1", optional = true } diff --git a/crates/ironrdp-connector/CHANGELOG.md b/crates/ironrdp-connector/CHANGELOG.md index 7258424c14..c468fb9388 100644 --- a/crates/ironrdp-connector/CHANGELOG.md +++ b/crates/ironrdp-connector/CHANGELOG.md @@ -6,6 +6,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.12.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-connector-v0.11.0...ironrdp-connector-v0.12.0)] - 2026-10-27 + +### Security + +- Negotiate Entra ID authentication (`SecurityProtocol::RDSAAD`) with `Config::with_entra_auth`, exposing the server nonce through `entra_server_nonce` and sending the signed assertion with `submit_entra_assertion` ([#2248](https://github.com/Devolutions/IronRDP/issues/2248)) ([c790e6d4f2](https://github.com/Devolutions/IronRDP/commit/c790e6d4f2f8bf15ae66b2c29bffeca14ec19ff1)) + +### Features + +- [**breaking**] Add `Config::desktop_physical_size`, `desktop_orientation` and `device_scale_factor`, sent in the Client Core Data ([#2211](https://github.com/Devolutions/IronRDP/issues/2211)) ([98413f16cc](https://github.com/Devolutions/IronRDP/commit/98413f16cc3792a3debe14ef4a2956374957a615)) + +- [**breaking**] Add `Config::monitor_extended_layout`, sent as Client Monitor Extended Data when it describes every monitor of `monitor_layout` ([#2211](https://github.com/Devolutions/IronRDP/issues/2211)) ([98413f16cc](https://github.com/Devolutions/IronRDP/commit/98413f16cc3792a3debe14ef4a2956374957a615)) + +- [**breaking**] Add `Config::relative_mouse_input`, which announces relative mouse input and RDP 10.12 ([#2211](https://github.com/Devolutions/IronRDP/issues/2211)) ([98413f16cc](https://github.com/Devolutions/IronRDP/commit/98413f16cc3792a3debe14ef4a2956374957a615)) + +### Build + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.11.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-connector-v0.10.0...ironrdp-connector-v0.11.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-connector/Cargo.toml b/crates/ironrdp-connector/Cargo.toml index 41202c9af2..a63285943a 100644 --- a/crates/ironrdp-connector/Cargo.toml +++ b/crates/ironrdp-connector/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-connector" -version = "0.11.0" +version = "0.12.0" readme = "README.md" description = "State machines to drive an RDP connection sequence" edition.workspace = true @@ -22,10 +22,10 @@ qoi = ["ironrdp-pdu/qoi"] qoiz = ["ironrdp-pdu/qoiz"] [dependencies] -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public ironrdp-error = { path = "../ironrdp-error", version = "0.2" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["std"] } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["std"] } # public sspi = { version = "0.23", features = ["scard"] } # public url = "2.5" # public rand = { version = "0.9", features = ["std"] } # TODO: dependency injection? diff --git a/crates/ironrdp-core/CHANGELOG.md b/crates/ironrdp-core/CHANGELOG.md index b5fa1a08d7..bffffd9b4d 100644 --- a/crates/ironrdp-core/CHANGELOG.md +++ b/crates/ironrdp-core/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.3.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-core-v0.3.0...ironrdp-core-v0.3.1)] - 2026-10-27 + +### Bug Fixes + +- `read_padding!` returns a "not enough bytes" error from the enclosing function instead of reading past the end of the buffer, so it must be used in a function returning `Result<_, DecodeError>` ([#2130](https://github.com/Devolutions/IronRDP/issues/2130)) ([b69cda22ec](https://github.com/Devolutions/IronRDP/commit/b69cda22ec692e212caffdbb9fe0c4e5ff1d2696)) + +- `ReadCursor::len` returns zero instead of overflowing when the cursor was advanced past the end ([#2130](https://github.com/Devolutions/IronRDP/issues/2130)) ([b69cda22ec](https://github.com/Devolutions/IronRDP/commit/b69cda22ec692e212caffdbb9fe0c4e5ff1d2696)) + + + ## [[0.3.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-core-v0.2.1...ironrdp-core-v0.3.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-core/Cargo.toml b/crates/ironrdp-core/Cargo.toml index 1a37c4c6d4..2f83d00b70 100644 --- a/crates/ironrdp-core/Cargo.toml +++ b/crates/ironrdp-core/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-core" -version = "0.3.0" +version = "0.3.1" readme = "README.md" description = "IronRDP common traits and types" edition.workspace = true diff --git a/crates/ironrdp-daemon/Cargo.toml b/crates/ironrdp-daemon/Cargo.toml index 93d37c55ef..ad4b2e48a9 100644 --- a/crates/ironrdp-daemon/Cargo.toml +++ b/crates/ironrdp-daemon/Cargo.toml @@ -14,13 +14,13 @@ categories.workspace = true [dependencies] ironrdp-client = { path = "../ironrdp-client", version = "0.1", features = ["rustls", "dvc-pipe-proxy", "rdpdr", "smartcard", "vmconnect", "gateway", "clipboard", "video"] } # public -ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.2" } -ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.8" } +ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.3" } +ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.9" } ironrdp-cliprdr-format = { path = "../ironrdp-cliprdr-format", version = "0.3" } -ironrdp-input = { path = "../ironrdp-input", version = "0.8" } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } +ironrdp-input = { path = "../ironrdp-input", version = "0.9" } +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } ironrdp-propertyset = { path = "../ironrdp-propertyset", version = "0.1" } # public -ironrdp-rpc = { path = "../ironrdp-rpc", version = "0.1" } # public +ironrdp-rpc = { path = "../ironrdp-rpc", version = "0.2" } # public ironrdp-tls = { path = "../ironrdp-tls", version = "0.3" } anyhow = "1" now-client = "0.1.0" @@ -45,7 +45,7 @@ libc = "0.2" [target.'cfg(windows)'.dependencies] # WebAuthn redirection is Windows-only (webauthn.dll / WebAuthN* APIs). ironrdp-client = { path = "../ironrdp-client", version = "0.1", features = ["camera", "webauthn"] } -ironrdp-rdpdr-native = { path = "../ironrdp-rdpdr-native", version = "0.8" } +ironrdp-rdpdr-native = { path = "../ironrdp-rdpdr-native", version = "0.9" } [lints] workspace = true diff --git a/crates/ironrdp-displaycontrol/CHANGELOG.md b/crates/ironrdp-displaycontrol/CHANGELOG.md index 592a86b80c..b2ecf25966 100644 --- a/crates/ironrdp-displaycontrol/CHANGELOG.md +++ b/crates/ironrdp-displaycontrol/CHANGELOG.md @@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.10.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-displaycontrol-v0.9.0...ironrdp-displaycontrol-v0.10.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-displaycontrol-v0.8.0...ironrdp-displaycontrol-v0.9.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-displaycontrol/Cargo.toml b/crates/ironrdp-displaycontrol/Cargo.toml index 3d90a12396..a3961148d5 100644 --- a/crates/ironrdp-displaycontrol/Cargo.toml +++ b/crates/ironrdp-displaycontrol/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-displaycontrol" -version = "0.9.0" +version = "0.10.0" readme = "README.md" description = "Display control dynamic channel extension implementation" edition.workspace = true @@ -18,9 +18,9 @@ test = false [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-dvc-com-plugin/CHANGELOG.md b/crates/ironrdp-dvc-com-plugin/CHANGELOG.md index 1f8f4602e6..0f2deda802 100644 --- a/crates/ironrdp-dvc-com-plugin/CHANGELOG.md +++ b/crates/ironrdp-dvc-com-plugin/CHANGELOG.md @@ -6,6 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.3.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-dvc-com-plugin-v0.2.0...ironrdp-dvc-com-plugin-v0.3.0)] - 2026-10-27 + +### Build + +- Declare `ironrdp-dvc`, `ironrdp-pdu` and `ironrdp-svc` as public dependencies, since `load_dvc_plugin` exposes their types ([#2213](https://github.com/Devolutions/IronRDP/issues/2213)) ([405e6576ba](https://github.com/Devolutions/IronRDP/commit/405e6576bac7c64b04efc8a0d00beeecdc648356)) + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-dvc-com-plugin-v0.1.3...ironrdp-dvc-com-plugin-v0.2.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-dvc-com-plugin/Cargo.toml b/crates/ironrdp-dvc-com-plugin/Cargo.toml index c41eb1feed..0d9957c770 100644 --- a/crates/ironrdp-dvc-com-plugin/Cargo.toml +++ b/crates/ironrdp-dvc-com-plugin/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-dvc-com-plugin" -version = "0.2.0" +version = "0.3.0" readme = "README.md" description = "DVC COM client plugin loader for IronRDP (Windows)" edition.workspace = true @@ -20,9 +20,9 @@ test = false [target.'cfg(windows)'.dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public (PduResult type) -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public (SvcMessage type) +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public (PduResult type) +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public (SvcMessage type) tracing = { version = "0.1", features = ["log"] } windows = { version = "0.62", features = [ "Win32_Foundation", diff --git a/crates/ironrdp-dvc-pipe-proxy/CHANGELOG.md b/crates/ironrdp-dvc-pipe-proxy/CHANGELOG.md index 6289691dfa..2b8ef19a03 100644 --- a/crates/ironrdp-dvc-pipe-proxy/CHANGELOG.md +++ b/crates/ironrdp-dvc-pipe-proxy/CHANGELOG.md @@ -6,6 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.7.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-dvc-pipe-proxy-v0.6.0...ironrdp-dvc-pipe-proxy-v0.7.0)] - 2026-10-27 + +### Build + +- Declare `ironrdp-dvc` as a public dependency, since `DvcNamedPipeProxy` implements its `DvcProcessor` trait ([#2213](https://github.com/Devolutions/IronRDP/issues/2213)) ([405e6576ba](https://github.com/Devolutions/IronRDP/commit/405e6576bac7c64b04efc8a0d00beeecdc648356)) + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-dvc-pipe-proxy-v0.5.0...ironrdp-dvc-pipe-proxy-v0.6.0)] - 2026-10-23 ### Bug Fixes diff --git a/crates/ironrdp-dvc-pipe-proxy/Cargo.toml b/crates/ironrdp-dvc-pipe-proxy/Cargo.toml index b9232a7bed..49e8f3d8ff 100644 --- a/crates/ironrdp-dvc-pipe-proxy/Cargo.toml +++ b/crates/ironrdp-dvc-pipe-proxy/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-dvc-pipe-proxy" -version = "0.6.0" +version = "0.7.0" readme = "README.md" description = "DVC named pipe proxy for IronRDP" edition.workspace = true @@ -18,9 +18,9 @@ test = false [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public (PduResult type) -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public (SvcMessage type) +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public (PduResult type) +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public (SvcMessage type) tracing = { version = "0.1", features = ["log"] } tokio = { version = "1", features = ["net", "rt", "sync", "macros", "io-util", "fs"]} diff --git a/crates/ironrdp-dvc/CHANGELOG.md b/crates/ironrdp-dvc/CHANGELOG.md index 04c9ce9f2a..c0721127eb 100644 --- a/crates/ironrdp-dvc/CHANGELOG.md +++ b/crates/ironrdp-dvc/CHANGELOG.md @@ -6,6 +6,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.10.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-dvc-v0.9.0...ironrdp-dvc-v0.10.0)] - 2026-10-27 + +### Features + +- Add `DrdynvcClient::close_channel_batch`, which returns the Close PDU with the Soft-Sync tunnel the channel used ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + +### Bug Fixes + +- A client-initiated `DYNVC_CLOSE` tolerates data that arrives before the server confirms it, and the channel ID can then be reused ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + +### Build + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-dvc-v0.8.0...ironrdp-dvc-v0.9.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-dvc/Cargo.toml b/crates/ironrdp-dvc/Cargo.toml index 4063f1b1ae..5686c6278b 100644 --- a/crates/ironrdp-dvc/Cargo.toml +++ b/crates/ironrdp-dvc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-dvc" -version = "0.9.0" +version = "0.10.0" readme = "README.md" description = "DRDYNVC static channel implementation and traits to implement dynamic virtual channels" edition.workspace = true @@ -23,8 +23,8 @@ std = [] [dependencies] ironrdp-bulk = { path = "../ironrdp-bulk", version = "0.2", default-features = false, features = ["alloc"] } ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["alloc"] } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["alloc"] } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-echo/CHANGELOG.md b/crates/ironrdp-echo/CHANGELOG.md index c64c4e1df4..9dec1a6437 100644 --- a/crates/ironrdp-echo/CHANGELOG.md +++ b/crates/ironrdp-echo/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.6.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-echo-v0.5.0...ironrdp-echo-v0.6.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + + + ## [[0.5.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-echo-v0.4.0...ironrdp-echo-v0.5.0)] - 2026-10-23 ### Build diff --git a/crates/ironrdp-echo/Cargo.toml b/crates/ironrdp-echo/Cargo.toml index 1f16de0b3e..235afa3b71 100644 --- a/crates/ironrdp-echo/Cargo.toml +++ b/crates/ironrdp-echo/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-echo" -version = "0.5.0" +version = "0.6.0" readme = "README.md" description = "Virtual channel echo extension implementation" edition.workspace = true @@ -18,8 +18,8 @@ test = false [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-egfx-native/CHANGELOG.md b/crates/ironrdp-egfx-native/CHANGELOG.md new file mode 100644 index 0000000000..a6cef5cb6c --- /dev/null +++ b/crates/ironrdp-egfx-native/CHANGELOG.md @@ -0,0 +1,13 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-egfx-native-v0.1.0...ironrdp-egfx-native-v0.2.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-egfx` public dependency to 0.5 diff --git a/crates/ironrdp-egfx-native/Cargo.toml b/crates/ironrdp-egfx-native/Cargo.toml index b1d2f0ce26..98894a8e63 100644 --- a/crates/ironrdp-egfx-native/Cargo.toml +++ b/crates/ironrdp-egfx-native/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-egfx-native" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "Native H.264 decoders for the IronRDP graphics and video channels" edition.workspace = true @@ -16,7 +16,7 @@ categories.workspace = true doctest = false [target.'cfg(windows)'.dependencies] -ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.4" } # public +ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.5" } # public tracing = { version = "0.1", features = ["log"] } windows = { version = "0.62", features = [ "Win32_Foundation", diff --git a/crates/ironrdp-egfx/CHANGELOG.md b/crates/ironrdp-egfx/CHANGELOG.md index a401cd1165..aba75db5e9 100644 --- a/crates/ironrdp-egfx/CHANGELOG.md +++ b/crates/ironrdp-egfx/CHANGELOG.md @@ -5,6 +5,28 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.5.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-egfx-v0.4.0...ironrdp-egfx-v0.5.0)] - 2026-10-27 + +### Features + +- [**breaking**] Composite surfaces that the server maps to RemoteApp windows, exposed as `WindowUpdate`s through `GraphicsPipelineClient::drain_window_updates` ([#2197](https://github.com/Devolutions/IronRDP/issues/2197)) ([6e54d5e9ec](https://github.com/Devolutions/IronRDP/commit/6e54d5e9ec58c69debaff96fa49bed4343348d3e)) + +- Ignore a window mapping larger than its surface, keeping the previous mapping ([#2197](https://github.com/Devolutions/IronRDP/issues/2197)) ([6e54d5e9ec](https://github.com/Devolutions/IronRDP/commit/6e54d5e9ec58c69debaff96fa49bed4343348d3e)) + +### Bug Fixes + +- Keep Progressive tile state when the server moves a surface to a new codec context, which left stale 64-pixel columns on screen ([#2117](https://github.com/Devolutions/IronRDP/issues/2117)) ([00820f6e47](https://github.com/Devolutions/IronRDP/commit/00820f6e4765b09721877264e461a2feeb32ac48)) + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-graphics` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + + + ## [[0.4.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-egfx-v0.3.0...ironrdp-egfx-v0.4.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-egfx/Cargo.toml b/crates/ironrdp-egfx/Cargo.toml index 43132f9a4b..a80afe1325 100644 --- a/crates/ironrdp-egfx/Cargo.toml +++ b/crates/ironrdp-egfx/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-egfx" -version = "0.4.0" +version = "0.5.0" readme = "README.md" description = "Graphics pipeline dynamic channel extension implementation" edition.workspace = true @@ -20,9 +20,9 @@ arbitrary = { version = "1", features = ["derive"], optional = true } bit_field = "0.10" bitflags = "2.11" ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.10" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.11" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public openh264 = { version = "0.9", optional = true, default-features = false } tracing = { version = "0.1", features = ["log"] } yuv = { version = "0.8", default-features = false, optional = true } diff --git a/crates/ironrdp-futures/Cargo.toml b/crates/ironrdp-futures/Cargo.toml index 83f958f0e7..87f992c26a 100644 --- a/crates/ironrdp-futures/Cargo.toml +++ b/crates/ironrdp-futures/Cargo.toml @@ -18,7 +18,7 @@ test = false [dependencies] futures-util = { version = "0.3", features = ["io"] } # public -ironrdp-async = { path = "../ironrdp-async", version = "0.11" } # public +ironrdp-async = { path = "../ironrdp-async", version = "0.12" } # public [lints] workspace = true diff --git a/crates/ironrdp-graphics/CHANGELOG.md b/crates/ironrdp-graphics/CHANGELOG.md index a3e5fe0ecb..137fbbb857 100644 --- a/crates/ironrdp-graphics/CHANGELOG.md +++ b/crates/ironrdp-graphics/CHANGELOG.md @@ -6,6 +6,24 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.11.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-graphics-v0.10.0...ironrdp-graphics-v0.11.0)] - 2026-10-27 + +### Bug Fixes + +- RLGR3 decoding returns an error instead of overflowing when a value exceeds its remainder ([#2132](https://github.com/Devolutions/IronRDP/issues/2132)) ([e31f2b89ad](https://github.com/Devolutions/IronRDP/commit/e31f2b89adb6bd08c3cc240f9e357601323e1976)) + +- `ProgressiveDecoder` keeps one tile grid per surface, shared by every codec context, and `delete_context` no longer releases it ([#2117](https://github.com/Devolutions/IronRDP/issues/2117)) ([00820f6e47](https://github.com/Devolutions/IronRDP/commit/00820f6e4765b09721877264e461a2feeb32ac48)) + +### Performance + +- Decode RLGR1 and RLGR3 about twice as fast with a new bit reader ([#2150](https://github.com/Devolutions/IronRDP/issues/2150)) ([9353b49810](https://github.com/Devolutions/IronRDP/commit/9353b4981066b373e56adfd0910902a8c5ea1ada)) + +### Build + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + + + ## [[0.10.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-graphics-v0.9.0...ironrdp-graphics-v0.10.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-graphics/Cargo.toml b/crates/ironrdp-graphics/Cargo.toml index 6a5fc9d14b..2755f9bb28 100644 --- a/crates/ironrdp-graphics/Cargo.toml +++ b/crates/ironrdp-graphics/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-graphics" -version = "0.10.0" +version = "0.11.0" readme = "README.md" description = "RDP image processing primitives" edition.workspace = true @@ -26,7 +26,7 @@ bit_field = "0.10" bitflags = "2.11" bitvec = "1.0" ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["std"] } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["std"] } # public byteorder = "1.5" # TODO: remove num-derive.workspace = true # TODO: remove num-traits.workspace = true # TODO: remove diff --git a/crates/ironrdp-input/CHANGELOG.md b/crates/ironrdp-input/CHANGELOG.md index c8b5e03531..e17d08aa56 100644 --- a/crates/ironrdp-input/CHANGELOG.md +++ b/crates/ironrdp-input/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-input-v0.8.0...ironrdp-input-v0.9.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + + + ## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-input-v0.7.0...ironrdp-input-v0.8.0)] - 2026-10-23 ### Bug Fixes diff --git a/crates/ironrdp-input/Cargo.toml b/crates/ironrdp-input/Cargo.toml index cf628440c3..0cf3398103 100644 --- a/crates/ironrdp-input/Cargo.toml +++ b/crates/ironrdp-input/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-input" -version = "0.8.0" +version = "0.9.0" readme = "README.md" description = "Utilities to manage and build RDP input packets" edition.workspace = true @@ -17,7 +17,7 @@ doctest = false test = false [dependencies] -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public bitvec = "1.0" smallvec = "1.15" diff --git a/crates/ironrdp-mstsgu/CHANGELOG.md b/crates/ironrdp-mstsgu/CHANGELOG.md index 8a36cd1918..baaf5114b1 100644 --- a/crates/ironrdp-mstsgu/CHANGELOG.md +++ b/crates/ironrdp-mstsgu/CHANGELOG.md @@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## Unreleased +## [[0.0.3](https://github.com/Devolutions/IronRDP/compare/ironrdp-mstsgu-v0.0.2...ironrdp-mstsgu-v0.0.3)] - 2026-10-27 + +### Build + +- Declare `ironrdp-error` as a public dependency, since the `GwClient` methods return its `Error` ([#2213](https://github.com/Devolutions/IronRDP/issues/2213)) ([405e6576ba](https://github.com/Devolutions/IronRDP/commit/405e6576bac7c64b04efc8a0d00beeecdc648356)) + + + ## [[0.0.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-mstsgu-v0.0.1...ironrdp-mstsgu-v0.0.2)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-mstsgu/Cargo.toml b/crates/ironrdp-mstsgu/Cargo.toml index b29aaf1a4f..47ab61ace1 100644 --- a/crates/ironrdp-mstsgu/Cargo.toml +++ b/crates/ironrdp-mstsgu/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-mstsgu" -version = "0.0.2" +version = "0.0.3" readme = "README.md" description = "Terminal Services Gateway Server Protocol" edition.workspace = true diff --git a/crates/ironrdp-nscodec/Cargo.toml b/crates/ironrdp-nscodec/Cargo.toml index 0f8cea90e4..185c9b3dac 100644 --- a/crates/ironrdp-nscodec/Cargo.toml +++ b/crates/ironrdp-nscodec/Cargo.toml @@ -23,7 +23,7 @@ default = [] encoder = ["dep:ironrdp-graphics"] [dependencies] -ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.10", optional = true } # public when `encoder` is on +ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.11", optional = true } # public when `encoder` is on [lints] workspace = true diff --git a/crates/ironrdp-pdu/CHANGELOG.md b/crates/ironrdp-pdu/CHANGELOG.md index 212d5479b2..6cd1973428 100644 --- a/crates/ironrdp-pdu/CHANGELOG.md +++ b/crates/ironrdp-pdu/CHANGELOG.md @@ -6,6 +6,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.11.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-pdu-v0.10.0...ironrdp-pdu-v0.11.0)] - 2026-10-27 + +### Security + +- Add `FailureCode::ENTRA_AUTH_REQUIRED_BY_SERVER` ([#2248](https://github.com/Devolutions/IronRDP/issues/2248)) ([c790e6d4f2](https://github.com/Devolutions/IronRDP/commit/c790e6d4f2f8bf15ae66b2c29bffeca14ec19ff1)) + +### Features + +- [**breaking**] `LogonErrorNotificationType` gains `NtStatus(u32)` for any other error type, so decoding no longer fails on one, and adds `from_u32`, `as_u32` and `carries_session_id` ([#2211](https://github.com/Devolutions/IronRDP/issues/2211)) ([98413f16cc](https://github.com/Devolutions/IronRDP/commit/98413f16cc3792a3debe14ef4a2956374957a615)) + +- Add `ConnectionType::from_specified` and `specified_value` ([#2211](https://github.com/Devolutions/IronRDP/issues/2211)) ([98413f16cc](https://github.com/Devolutions/IronRDP/commit/98413f16cc3792a3debe14ef4a2956374957a615)) + +- Encode `FastPathInputEvent::MouseEventRel` ([#2211](https://github.com/Devolutions/IronRDP/issues/2211)) ([98413f16cc](https://github.com/Devolutions/IronRDP/commit/98413f16cc3792a3debe14ef4a2956374957a615)) + +### Bug Fixes + +- Decoding a truncated Client Core Data, MCS Connect Initial or other PDU with padding returns an error instead of panicking ([#2130](https://github.com/Devolutions/IronRDP/issues/2130)) ([b69cda22ec](https://github.com/Devolutions/IronRDP/commit/b69cda22ec692e212caffdbb9fe0c4e5ff1d2696)) + +- Licensing returns an `InvalidData` error for an RSA modulus below 512 bits instead of panicking on a zero modulus ([#2225](https://github.com/Devolutions/IronRDP/issues/2225)) ([c33861736a](https://github.com/Devolutions/IronRDP/commit/c33861736a9bf6080ba4f840a772f4133700b1d5)) + + + ## [[0.10.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-pdu-v0.9.0...ironrdp-pdu-v0.10.0)] - 2026-10-23 ### Security diff --git a/crates/ironrdp-pdu/Cargo.toml b/crates/ironrdp-pdu/Cargo.toml index b792178088..3d009a76b2 100644 --- a/crates/ironrdp-pdu/Cargo.toml +++ b/crates/ironrdp-pdu/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-pdu" -version = "0.10.0" +version = "0.11.0" readme = "README.md" description = "RDP PDU encoding and decoding" edition.workspace = true diff --git a/crates/ironrdp-rail/Cargo.toml b/crates/ironrdp-rail/Cargo.toml index 3293705e95..ae0dfe6a63 100644 --- a/crates/ironrdp-rail/Cargo.toml +++ b/crates/ironrdp-rail/Cargo.toml @@ -19,7 +19,7 @@ alloc = ["dep:ironrdp-core", "ironrdp-core/alloc"] [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3", default-features = false, optional = true } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9", optional = true } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10", optional = true } # public [lints] workspace = true diff --git a/crates/ironrdp-rdcleanpath/CHANGELOG.md b/crates/ironrdp-rdcleanpath/CHANGELOG.md index da42de624a..8c96e5e120 100644 --- a/crates/ironrdp-rdcleanpath/CHANGELOG.md +++ b/crates/ironrdp-rdcleanpath/CHANGELOG.md @@ -6,6 +6,16 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.3.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdcleanpath-v0.3.0...ironrdp-rdcleanpath-v0.3.1)] - 2026-10-27 + +### Features + +- Add standard error reason codes `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 ([#2127](https://github.com/Devolutions/IronRDP/issues/2127)) ([0c7e3abfb3](https://github.com/Devolutions/IronRDP/commit/0c7e3abfb3fbbef0027ce74d50c6038c245978e0)) + +- Add `IMPLEMENTATION_SPECIFIC_ERROR_CODES` (16384 to 32767), the range of reason codes each proxy defines for itself ([#2127](https://github.com/Devolutions/IronRDP/issues/2127)) ([0c7e3abfb3](https://github.com/Devolutions/IronRDP/commit/0c7e3abfb3fbbef0027ce74d50c6038c245978e0)) + + + ## [[0.3.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdcleanpath-v0.2.2...ironrdp-rdcleanpath-v0.3.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-rdcleanpath/Cargo.toml b/crates/ironrdp-rdcleanpath/Cargo.toml index 9608299e7c..3b697290e7 100644 --- a/crates/ironrdp-rdcleanpath/Cargo.toml +++ b/crates/ironrdp-rdcleanpath/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdcleanpath" -version = "0.3.0" +version = "0.3.1" readme = "README.md" description = "RDCleanPath PDU structure used by IronRDP web client and Devolutions Gateway" edition.workspace = true diff --git a/crates/ironrdp-rdpdr-native/CHANGELOG.md b/crates/ironrdp-rdpdr-native/CHANGELOG.md index dbb63de362..cd79fd879c 100644 --- a/crates/ironrdp-rdpdr-native/CHANGELOG.md +++ b/crates/ironrdp-rdpdr-native/CHANGELOG.md @@ -6,6 +6,28 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-native-v0.8.0...ironrdp-rdpdr-native-v0.9.0)] - 2026-10-27 + +### Bug Fixes + +- The Unix drive backend opens server paths one component at a time inside the share and refuses `..`, symbolic links and mount points that lead outside it ([#2221](https://github.com/Devolutions/IronRDP/issues/2221)) ([bbebd384ce](https://github.com/Devolutions/IronRDP/commit/bbebd384cec912b5e77d7a64fb0fc7ed9b667014)) + +- Refuse names Windows cannot hold with `STATUS_OBJECT_NAME_INVALID`, and open without blocking, so a FIFO in the share cannot stall the client ([#2221](https://github.com/Devolutions/IronRDP/issues/2221)) ([bbebd384ce](https://github.com/Devolutions/IronRDP/commit/bbebd384cec912b5e77d7a64fb0fc7ed9b667014)) + +- Create, rename, delete and directory queries follow MS-FSA and report the NT status the Windows backend reports ([#2221](https://github.com/Devolutions/IronRDP/issues/2221)) ([bbebd384ce](https://github.com/Devolutions/IronRDP/commit/bbebd384cec912b5e77d7a64fb0fc7ed9b667014)) + +- Cap open files at a quarter of the descriptor limit, at most 1024 ([#2221](https://github.com/Devolutions/IronRDP/issues/2221)) ([bbebd384ce](https://github.com/Devolutions/IronRDP/commit/bbebd384cec912b5e77d7a64fb0fc7ed9b667014)) + +### Build + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-rdpdr` public dependency to 0.9 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-native-v0.7.0...ironrdp-rdpdr-native-v0.8.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-rdpdr-native/Cargo.toml b/crates/ironrdp-rdpdr-native/Cargo.toml index de85c3ca7a..6778445411 100644 --- a/crates/ironrdp-rdpdr-native/Cargo.toml +++ b/crates/ironrdp-rdpdr-native/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpdr-native" -version = "0.8.0" +version = "0.9.0" readme = "README.md" description = "Native RDPDR static channel backend implementations for IronRDP" edition.workspace = true @@ -17,9 +17,9 @@ doctest = false [target.'cfg(any(target_os = "macos", target_os = "linux"))'.dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public -ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.8" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public +ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.9" } # public nix = { version = "0.31", features = ["fs", "dir", "feature", "resource"] } tracing = { version = "0.1", features = ["log"] } @@ -28,9 +28,9 @@ rstest.workspace = true [target.'cfg(windows)'.dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.8" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.9" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public tracing = { version = "0.1", features = ["log"] } windows = { version = "0.62", features = ["Wdk_Foundation", "Wdk_Storage_FileSystem", "Wdk_System_SystemServices", "Win32_Devices_Communication", "Win32_Foundation", "Win32_Graphics_Gdi", "Win32_Graphics_Printing", "Win32_Security", "Win32_Security_Authorization", "Win32_Security_Credentials", "Win32_Storage_FileSystem", "Win32_System_Diagnostics_Debug", "Win32_System_IO", "Win32_System_LibraryLoader", "Win32_System_Threading", "Win32_UI_WindowsAndMessaging", "Wdk_System_IO"] } diff --git a/crates/ironrdp-rdpdr/CHANGELOG.md b/crates/ironrdp-rdpdr/CHANGELOG.md index f053303d6c..38f0fdd55a 100644 --- a/crates/ironrdp-rdpdr/CHANGELOG.md +++ b/crates/ironrdp-rdpdr/CHANGELOG.md @@ -6,6 +6,20 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.8.0...ironrdp-rdpdr-v0.9.0)] - 2026-10-27 + +### Bug Fixes + +- Accept a `DR_DRIVE_QUERY_DIRECTORY_RSP` without its optional padding byte ([#2130](https://github.com/Devolutions/IronRDP/issues/2130)) ([b69cda22ec](https://github.com/Devolutions/IronRDP/commit/b69cda22ec692e212caffdbb9fe0c4e5ff1d2696)) + +### Build + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpdr-v0.7.0...ironrdp-rdpdr-v0.8.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-rdpdr/Cargo.toml b/crates/ironrdp-rdpdr/Cargo.toml index ab832cfd91..dcadb2ca53 100644 --- a/crates/ironrdp-rdpdr/Cargo.toml +++ b/crates/ironrdp-rdpdr/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpdr" -version = "0.8.0" +version = "0.9.0" readme = "README.md" description = "RDPDR channel implementation." edition.workspace = true @@ -18,8 +18,8 @@ doctest = false [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public ironrdp-error = { path = "../ironrdp-error", version = "0.2" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public tracing = { version = "0.1", features = ["log"] } bitflags = "2.11" getrandom = { version = "0.3", features = ["std"] } diff --git a/crates/ironrdp-rdpeai/CHANGELOG.md b/crates/ironrdp-rdpeai/CHANGELOG.md index 102e46dbde..5e29fec325 100644 --- a/crates/ironrdp-rdpeai/CHANGELOG.md +++ b/crates/ironrdp-rdpeai/CHANGELOG.md @@ -7,3 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpeai-v0.1.0...ironrdp-rdpeai-v0.2.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-rdpsnd` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 diff --git a/crates/ironrdp-rdpeai/Cargo.toml b/crates/ironrdp-rdpeai/Cargo.toml index d5ab326f0e..f898940ce5 100644 --- a/crates/ironrdp-rdpeai/Cargo.toml +++ b/crates/ironrdp-rdpeai/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpeai" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "AUDIO_INPUT dynamic channel for audio capture as described in MS-RDPEAI" edition.workspace = true @@ -18,10 +18,10 @@ test = false [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["alloc"] } # public -ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.10" } # public — shared AUDIO_FORMAT -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["alloc"] } # public +ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.11" } # public — shared AUDIO_FORMAT +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-rdpecam-native/Cargo.toml b/crates/ironrdp-rdpecam-native/Cargo.toml index 879845d5c6..4add213faa 100644 --- a/crates/ironrdp-rdpecam-native/Cargo.toml +++ b/crates/ironrdp-rdpecam-native/Cargo.toml @@ -16,7 +16,7 @@ categories.workspace = true doctest = false [target.'cfg(windows)'.dependencies] -ironrdp-rdpecam = { version = "0.1", path = "../ironrdp-rdpecam" } # public +ironrdp-rdpecam = { version = "0.2", path = "../ironrdp-rdpecam" } # public tracing = { version = "0.1", features = ["log"] } windows = { version = "0.62", features = [ "Win32_Devices_DeviceAndDriverInstallation", diff --git a/crates/ironrdp-rdpecam/CHANGELOG.md b/crates/ironrdp-rdpecam/CHANGELOG.md new file mode 100644 index 0000000000..ba4f0c04dc --- /dev/null +++ b/crates/ironrdp-rdpecam/CHANGELOG.md @@ -0,0 +1,17 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpecam-v0.1.0...ironrdp-rdpecam-v0.2.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 diff --git a/crates/ironrdp-rdpecam/Cargo.toml b/crates/ironrdp-rdpecam/Cargo.toml index c26ef7d304..40a0b6b1a2 100644 --- a/crates/ironrdp-rdpecam/Cargo.toml +++ b/crates/ironrdp-rdpecam/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpecam" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "Video capture dynamic channel client as described in MS-RDPECAM" edition.workspace = true @@ -17,10 +17,10 @@ doctest = false test = false [dependencies] -ironrdp-core = { version = "0.3.0", path = "../ironrdp-core", features = ["alloc"] } # public -ironrdp-dvc = { version = "0.9.0", path = "../ironrdp-dvc" } # public -ironrdp-pdu = { version = "0.10.0", path = "../ironrdp-pdu", features = ["alloc"] } # public -ironrdp-svc = { version = "0.9.0", path = "../ironrdp-svc" } # public +ironrdp-core = { version = "0.3.1", path = "../ironrdp-core", features = ["alloc"] } # public +ironrdp-dvc = { version = "0.10.0", path = "../ironrdp-dvc" } # public +ironrdp-pdu = { version = "0.11.0", path = "../ironrdp-pdu", features = ["alloc"] } # public +ironrdp-svc = { version = "0.10.0", path = "../ironrdp-svc" } # public spin = { version = "0.9", default-features = false, features = ["spin_mutex"] } tracing = { version = "0.1", features = ["log"] } diff --git a/crates/ironrdp-rdpegt/CHANGELOG.md b/crates/ironrdp-rdpegt/CHANGELOG.md new file mode 100644 index 0000000000..5bbbbb1732 --- /dev/null +++ b/crates/ironrdp-rdpegt/CHANGELOG.md @@ -0,0 +1,15 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpegt-v0.1.0...ironrdp-rdpegt-v0.2.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 diff --git a/crates/ironrdp-rdpegt/Cargo.toml b/crates/ironrdp-rdpegt/Cargo.toml index 54e1639cc5..5693be1cbf 100644 --- a/crates/ironrdp-rdpegt/Cargo.toml +++ b/crates/ironrdp-rdpegt/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpegt" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "Geometry tracking dynamic channel client as described in MS-RDPEGT" edition.workspace = true @@ -17,9 +17,9 @@ doctest = false test = false [dependencies] -ironrdp-core = { version = "0.3.0", path = "../ironrdp-core", features = ["alloc"] } # public -ironrdp-dvc = { version = "0.9.0", path = "../ironrdp-dvc" } # public -ironrdp-pdu = { version = "0.10.0", path = "../ironrdp-pdu", features = ["alloc"] } # public +ironrdp-core = { version = "0.3.1", path = "../ironrdp-core", features = ["alloc"] } # public +ironrdp-dvc = { version = "0.10.0", path = "../ironrdp-dvc" } # public +ironrdp-pdu = { version = "0.11.0", path = "../ironrdp-pdu", features = ["alloc"] } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-rdpei/CHANGELOG.md b/crates/ironrdp-rdpei/CHANGELOG.md index 8f6e7da559..95d8ce989e 100644 --- a/crates/ironrdp-rdpei/CHANGELOG.md +++ b/crates/ironrdp-rdpei/CHANGELOG.md @@ -8,6 +8,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [[0.3.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpei-v0.2.0...ironrdp-rdpei-v0.3.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpei-v0.1.0...ironrdp-rdpei-v0.2.0)] - 2026-10-23 ### Build diff --git a/crates/ironrdp-rdpei/Cargo.toml b/crates/ironrdp-rdpei/Cargo.toml index 22d0688f59..9e518b6c1b 100644 --- a/crates/ironrdp-rdpei/Cargo.toml +++ b/crates/ironrdp-rdpei/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpei" -version = "0.2.0" +version = "0.3.0" readme = "README.md" description = "Input virtual channel extension (MS-RDPEI) implementation" edition.workspace = true @@ -18,9 +18,9 @@ doctest = false [dependencies] bitflags = "2.11" ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-rdpel/CHANGELOG.md b/crates/ironrdp-rdpel/CHANGELOG.md index dc77579485..35fbe063ed 100644 --- a/crates/ironrdp-rdpel/CHANGELOG.md +++ b/crates/ironrdp-rdpel/CHANGELOG.md @@ -8,6 +8,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [[0.0.2](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpel-v0.0.1...ironrdp-rdpel-v0.0.2)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.0.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpel-v0.0.0...ironrdp-rdpel-v0.0.1)] - 2026-10-23 ### Build diff --git a/crates/ironrdp-rdpel/Cargo.toml b/crates/ironrdp-rdpel/Cargo.toml index 32ddf051ce..99afd362d8 100644 --- a/crates/ironrdp-rdpel/Cargo.toml +++ b/crates/ironrdp-rdpel/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpel" -version = "0.0.1" +version = "0.0.2" readme = "README.md" description = "Location dynamic channel client as described in MS-RDPEL" edition.workspace = true @@ -17,10 +17,10 @@ doctest = false test = false [dependencies] -ironrdp-core = { version = "0.3.0", path = "../ironrdp-core", features = ["alloc"] } # public -ironrdp-dvc = { version = "0.9.0", path = "../ironrdp-dvc" } # public -ironrdp-pdu = { version = "0.10.0", path = "../ironrdp-pdu", features = ["alloc"] } # public -ironrdp-svc = { version = "0.9.0", path = "../ironrdp-svc" } # public +ironrdp-core = { version = "0.3.1", path = "../ironrdp-core", features = ["alloc"] } # public +ironrdp-dvc = { version = "0.10.0", path = "../ironrdp-dvc" } # public +ironrdp-pdu = { version = "0.11.0", path = "../ironrdp-pdu", features = ["alloc"] } # public +ironrdp-svc = { version = "0.10.0", path = "../ironrdp-svc" } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-rdpeudp-tokio/CHANGELOG.md b/crates/ironrdp-rdpeudp-tokio/CHANGELOG.md index 102e46dbde..2ff7d8beb5 100644 --- a/crates/ironrdp-rdpeudp-tokio/CHANGELOG.md +++ b/crates/ironrdp-rdpeudp-tokio/CHANGELOG.md @@ -7,3 +7,19 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpeudp-tokio-v0.1.0...ironrdp-rdpeudp-tokio-v0.2.0)] - 2026-10-27 + +### Features + +- Add a STUN Binding probe in the `stun` module ([#2245](https://github.com/Devolutions/IronRDP/issues/2245)) ([79343b26cb](https://github.com/Devolutions/IronRDP/commit/79343b26cb7e57984d9ddfd33f6888adb72345c2)) + +- Add the optional `ice` feature, with `gather_ice_candidates`, `connect_udp_with_ice`, `accept_udp_with_ice` and `MultitransportBootstrap::connect_with_ice`, including TURN relays ([#2245](https://github.com/Devolutions/IronRDP/issues/2245)) ([79343b26cb](https://github.com/Devolutions/IronRDP/commit/79343b26cb7e57984d9ddfd33f6888adb72345c2)) + +- Add `connect_udp_with_socket` ([#2245](https://github.com/Devolutions/IronRDP/issues/2245)) ([79343b26cb](https://github.com/Devolutions/IronRDP/commit/79343b26cb7e57984d9ddfd33f6888adb72345c2)) + +### Build + +- [**breaking**] Update `ironrdp-async` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 diff --git a/crates/ironrdp-rdpeudp-tokio/Cargo.toml b/crates/ironrdp-rdpeudp-tokio/Cargo.toml index 9f2c75e3dc..9e5add77b6 100644 --- a/crates/ironrdp-rdpeudp-tokio/Cargo.toml +++ b/crates/ironrdp-rdpeudp-tokio/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpeudp-tokio" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "Tokio driver wiring RDP-UDP, TLS and the multitransport tunnel into a usable transport" edition.workspace = true @@ -29,10 +29,10 @@ rustls-ring = ["tokio-rustls/ring"] ice = ["dep:webrtc-ice", "dep:webrtc-util"] [dependencies] -ironrdp-async = { path = "../ironrdp-async", version = "0.11" } # public +ironrdp-async = { path = "../ironrdp-async", version = "0.12" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["std"] } # public ironrdp-error = { path = "../ironrdp-error", version = "0.2" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["std"] } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["std"] } # public ironrdp-rdpemt = { path = "../ironrdp-rdpemt", version = "0.1", features = ["std"] } # public ironrdp-rdpeudp = { path = "../ironrdp-rdpeudp", version = "0.1", features = ["std"] } # public ironrdp-tls = { path = "../ironrdp-tls", version = "0.3.0", default-features = false, features = ["rustls-verifier"] } # public diff --git a/crates/ironrdp-rdpeusb-native/Cargo.toml b/crates/ironrdp-rdpeusb-native/Cargo.toml index 8480bbfa10..5791195aeb 100644 --- a/crates/ironrdp-rdpeusb-native/Cargo.toml +++ b/crates/ironrdp-rdpeusb-native/Cargo.toml @@ -17,9 +17,9 @@ doctest = false [dependencies] futures-core = "0.3" -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } -ironrdp-rdpeusb = { path = "../ironrdp-rdpeusb", version = "0.1" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } +ironrdp-rdpeusb = { path = "../ironrdp-rdpeusb", version = "0.2" } # public ironrdp-usb = { path = "../ironrdp-usb", version = "0.1" } nusb = { version = "0.2", features = ["tokio"] } tokio = { version = "1", features = ["rt", "sync", "time", "macros"] } diff --git a/crates/ironrdp-rdpeusb/CHANGELOG.md b/crates/ironrdp-rdpeusb/CHANGELOG.md index 102e46dbde..82184fe607 100644 --- a/crates/ironrdp-rdpeusb/CHANGELOG.md +++ b/crates/ironrdp-rdpeusb/CHANGELOG.md @@ -7,3 +7,29 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpeusb-v0.1.0...ironrdp-rdpeusb-v0.2.0)] - 2026-10-27 + +### Features + +- [**breaking**] Add `DeviceInfo::isochronous`; `ADD_DEVICE` advertises a no-ack isochronous jitter buffer only when it is set ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + +- Add `encode_ts_urb` and `decode_ts_urb_result` to `TsUrbInPacket` and `TsUrbOutPacket`, for backends that hand `TS_URB`s to the operating system ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + +- `CANCEL_REQUEST` keeps the request pending until the backend completes it ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + +### Bug Fixes + +- Accept `REGISTER_REQUEST_CALLBACK` interface IDs below 4, which Windows sends; the session ended right after a device was announced ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + +- Accept control requests without a data stage in `TRANSFER_IN_REQUEST` messages that keep the OUT direction, as Windows sends them ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + +- A refused device channel no longer uses up an interface ID ([#2181](https://github.com/Devolutions/IronRDP/issues/2181)) ([35247071a3](https://github.com/Devolutions/IronRDP/commit/35247071a32a718094fc4df1de60e220e3730f4b)) + +- Decoding truncated input returns an error instead of panicking ([#2130](https://github.com/Devolutions/IronRDP/issues/2130)) ([b69cda22ec](https://github.com/Devolutions/IronRDP/commit/b69cda22ec692e212caffdbb9fe0c4e5ff1d2696)) + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 diff --git a/crates/ironrdp-rdpeusb/Cargo.toml b/crates/ironrdp-rdpeusb/Cargo.toml index 4342051137..11cc7dd57b 100644 --- a/crates/ironrdp-rdpeusb/Cargo.toml +++ b/crates/ironrdp-rdpeusb/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpeusb" -version = "0.1.0" +version = "0.2.0" description = "Remote Desktop Protocol: USB Devices Virtual Channel Extension implementation" edition.workspace = true rust-version = "1.94" @@ -21,8 +21,8 @@ std = [] [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["alloc"] } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["alloc"] } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public ironrdp-usb = { path = "../ironrdp-usb", version = "0.1" } # public ironrdp-str = { path = "../ironrdp-str", version = "0.2" } diff --git a/crates/ironrdp-rdpevor/CHANGELOG.md b/crates/ironrdp-rdpevor/CHANGELOG.md new file mode 100644 index 0000000000..42e43b3ae6 --- /dev/null +++ b/crates/ironrdp-rdpevor/CHANGELOG.md @@ -0,0 +1,21 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpevor-v0.1.0...ironrdp-rdpevor-v0.2.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-egfx` public dependency to 0.5 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-rdpegt` public dependency to 0.2 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 diff --git a/crates/ironrdp-rdpevor/Cargo.toml b/crates/ironrdp-rdpevor/Cargo.toml index be5d824798..98028db86e 100644 --- a/crates/ironrdp-rdpevor/Cargo.toml +++ b/crates/ironrdp-rdpevor/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpevor" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "Video optimized remoting dynamic channel client as described in MS-RDPEVOR" edition.workspace = true @@ -17,12 +17,12 @@ doctest = false test = false [dependencies] -ironrdp-core = { version = "0.3.0", path = "../ironrdp-core", features = ["alloc"] } # public -ironrdp-dvc = { version = "0.9.0", path = "../ironrdp-dvc" } # public -ironrdp-egfx = { version = "0.4", path = "../ironrdp-egfx" } # public -ironrdp-pdu = { version = "0.10.0", path = "../ironrdp-pdu", features = ["alloc"] } # public -ironrdp-rdpegt = { version = "0.1", path = "../ironrdp-rdpegt" } # public -ironrdp-svc = { version = "0.9.0", path = "../ironrdp-svc" } # public +ironrdp-core = { version = "0.3.1", path = "../ironrdp-core", features = ["alloc"] } # public +ironrdp-dvc = { version = "0.10.0", path = "../ironrdp-dvc" } # public +ironrdp-egfx = { version = "0.5", path = "../ironrdp-egfx" } # public +ironrdp-pdu = { version = "0.11.0", path = "../ironrdp-pdu", features = ["alloc"] } # public +ironrdp-rdpegt = { version = "0.2", path = "../ironrdp-rdpegt" } # public +ironrdp-svc = { version = "0.10.0", path = "../ironrdp-svc" } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-rdpewa-native/Cargo.toml b/crates/ironrdp-rdpewa-native/Cargo.toml index 533b35f56b..1244223548 100644 --- a/crates/ironrdp-rdpewa-native/Cargo.toml +++ b/crates/ironrdp-rdpewa-native/Cargo.toml @@ -16,7 +16,7 @@ categories.workspace = true doctest = false [target.'cfg(windows)'.dependencies] -ironrdp-rdpewa = { path = "../ironrdp-rdpewa", version = "0.1" } # public +ironrdp-rdpewa = { path = "../ironrdp-rdpewa", version = "0.2" } # public tracing = { version = "0.1", features = ["log"] } windows = { version = "0.62", features = [ "Win32_Foundation", diff --git a/crates/ironrdp-rdpewa/CHANGELOG.md b/crates/ironrdp-rdpewa/CHANGELOG.md index 54e8475401..1c07fa6fbe 100644 --- a/crates/ironrdp-rdpewa/CHANGELOG.md +++ b/crates/ironrdp-rdpewa/CHANGELOG.md @@ -4,6 +4,20 @@ All notable changes to this project will be documented in this file. ## [Unreleased] +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpewa-v0.1.0...ironrdp-rdpewa-v0.2.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + +## [[0.1.0](https://github.com/Devolutions/IronRDP/releases/tag/ironrdp-rdpewa-v0.1.0)] - 2026-10-23 + ### Added - Initial MS-RDPEWA protocol crate with CBOR PDU codec, client processor, and server skeleton. diff --git a/crates/ironrdp-rdpewa/Cargo.toml b/crates/ironrdp-rdpewa/Cargo.toml index 237f7e7d8c..e073b26939 100644 --- a/crates/ironrdp-rdpewa/Cargo.toml +++ b/crates/ironrdp-rdpewa/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpewa" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "MS-RDPEWA WebAuthn dynamic virtual channel protocol" edition.workspace = true @@ -17,9 +17,9 @@ doctest = false [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public tracing = { version = "0.1", features = ["log"] } [lints] diff --git a/crates/ironrdp-rdpsnd-native/CHANGELOG.md b/crates/ironrdp-rdpsnd-native/CHANGELOG.md index 88bab83e23..430464e940 100644 --- a/crates/ironrdp-rdpsnd-native/CHANGELOG.md +++ b/crates/ironrdp-rdpsnd-native/CHANGELOG.md @@ -6,6 +6,38 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.8.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-native-v0.7.0...ironrdp-rdpsnd-native-v0.8.0)] - 2026-10-27 + +### Features + +- [**breaking**] Decode every server format the backend supports, including AAC through Media Foundation on Windows behind the default `aac` feature, and remove `DecodeStream` ([#2203](https://github.com/Devolutions/IronRDP/issues/2203)) ([45b67591e9](https://github.com/Devolutions/IronRDP/commit/45b67591e92930a8c2159c3e70a0ed228a8f7483)) + +- Play through a jitter buffer with a configurable latency target (`PlaybackConfig`, `DEFAULT_PLAYBACK_LATENCY`) and report buffered plus device latency ([#2203](https://github.com/Devolutions/IronRDP/issues/2203)) ([45b67591e9](https://github.com/Devolutions/IronRDP/commit/45b67591e92930a8c2159c3e70a0ed228a8f7483)) + +- Select playback and capture devices with `DeviceSelector`, and list them with `list_devices` ([#2203](https://github.com/Devolutions/IronRDP/issues/2203)) ([45b67591e9](https://github.com/Devolutions/IronRDP/commit/45b67591e92930a8c2159c3e70a0ed228a8f7483)) + +- Map the server volume to the Windows audio session ([#2203](https://github.com/Devolutions/IronRDP/issues/2203)) ([45b67591e9](https://github.com/Devolutions/IronRDP/commit/45b67591e92930a8c2159c3e70a0ed228a8f7483)) + +- Add MS-RDPEAI microphone capture behind the `capture` feature: `RdpeaiCaptureBackend` captures 16-bit PCM ([#1642](https://github.com/Devolutions/IronRDP/issues/1642)) ([205fe038cc](https://github.com/Devolutions/IronRDP/commit/205fe038cc693598adf803fe181526b789b2ec3d)) + +- Capture encodes to PCM, G.711 or ADPCM ([#2203](https://github.com/Devolutions/IronRDP/issues/2203)) ([45b67591e9](https://github.com/Devolutions/IronRDP/commit/45b67591e92930a8c2159c3e70a0ed228a8f7483)) + +- Keep the client's format order, play Wave PDUs from servers older than RDPSND version 8, and apply the server volume to more PCM formats ([#1648](https://github.com/Devolutions/IronRDP/issues/1648)) ([2d9a9bf114](https://github.com/Devolutions/IronRDP/commit/2d9a9bf114dcf41a1ddc7343f564bc2e8d1d06db)) + +### Bug Fixes + +- Stop blocking the real-time playback callback ([#1803](https://github.com/Devolutions/IronRDP/issues/1803)) ([850f654673](https://github.com/Devolutions/IronRDP/commit/850f6546730cff1a6b858864f6fbf9cb7d6264fd)) + +### Build + +- Raise the minimum supported Rust version to 1.94 ([#1495](https://github.com/Devolutions/IronRDP/issues/1495)) ([0aeea76e95](https://github.com/Devolutions/IronRDP/commit/0aeea76e95e6b6b590d65be353dd00596d50a895)) + +- Add the optional `ironrdp-rdpeai` 0.2 public dependency, enabled by `capture` + +- [**breaking**] Update `ironrdp-rdpsnd` public dependency to 0.11 + + + ## [[0.7.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-native-v0.6.0...ironrdp-rdpsnd-native-v0.7.0)] - 2026-07-10 ### Bug Fixes diff --git a/crates/ironrdp-rdpsnd-native/Cargo.toml b/crates/ironrdp-rdpsnd-native/Cargo.toml index 3e077132d1..28e1564213 100644 --- a/crates/ironrdp-rdpsnd-native/Cargo.toml +++ b/crates/ironrdp-rdpsnd-native/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpsnd-native" -version = "0.7.0" +version = "0.8.0" description = "Native RDPSND playback and optional MS-RDPEAI capture backends for IronRDP" edition.workspace = true rust-version = "1.94" @@ -27,8 +27,8 @@ capture = ["dep:ironrdp-rdpeai"] cpal = "0.17" ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } ironrdp-error = { path = "../ironrdp-error", version = "0.2", features = ["std"] } # public -ironrdp-rdpeai = { path = "../ironrdp-rdpeai", version = "0.1", optional = true } # public -ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.10" } # public +ironrdp-rdpeai = { path = "../ironrdp-rdpeai", version = "0.2", optional = true } # public +ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.11" } # public opus2 = { version = "0.4", optional = true, features = ["bundled"] } ringbuf = "0.5" tracing = { version = "0.1", features = ["log"] } diff --git a/crates/ironrdp-rdpsnd/CHANGELOG.md b/crates/ironrdp-rdpsnd/CHANGELOG.md index 8af42bff6d..6fa8335474 100644 --- a/crates/ironrdp-rdpsnd/CHANGELOG.md +++ b/crates/ironrdp-rdpsnd/CHANGELOG.md @@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.11.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-v0.10.0...ironrdp-rdpsnd-v0.11.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.10.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rdpsnd-v0.9.0...ironrdp-rdpsnd-v0.10.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-rdpsnd/Cargo.toml b/crates/ironrdp-rdpsnd/Cargo.toml index 568ab1942d..d6945be523 100644 --- a/crates/ironrdp-rdpsnd/Cargo.toml +++ b/crates/ironrdp-rdpsnd/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rdpsnd" -version = "0.10.0" +version = "0.11.0" readme = "README.md" description = "RDPSND and AUDIO_PLAYBACK_DVC audio output channels and wave codecs implemented as described in MS-RDPEA" edition.workspace = true @@ -29,10 +29,10 @@ __test = ["dep:visibility"] bitflags = "2.11" sha1 = "0.11" tracing = { version = "0.1", features = ["log"] } -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["alloc"] } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["alloc"] } # public visibility = { version = "0.1", optional = true } [lints] diff --git a/crates/ironrdp-rpc/CHANGELOG.md b/crates/ironrdp-rpc/CHANGELOG.md index 102e46dbde..f51f1103cb 100644 --- a/crates/ironrdp-rpc/CHANGELOG.md +++ b/crates/ironrdp-rpc/CHANGELOG.md @@ -7,3 +7,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-rpc-v0.1.0...ironrdp-rpc-v0.2.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-input` public dependency to 0.9 + +- [**breaking**] Update `ironrdp-rdpei` public dependency to 0.3 diff --git a/crates/ironrdp-rpc/Cargo.toml b/crates/ironrdp-rpc/Cargo.toml index 956ffe2833..81b892cc42 100644 --- a/crates/ironrdp-rpc/Cargo.toml +++ b/crates/ironrdp-rpc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-rpc" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "Shared local RPC protocol and transport for IronRDP clients" edition.workspace = true @@ -19,12 +19,12 @@ __test = [] [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } # public -ironrdp-input = { path = "../ironrdp-input", version = "0.8" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } +ironrdp-input = { path = "../ironrdp-input", version = "0.9" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } ironrdp-propertyset = { path = "../ironrdp-propertyset", version = "0.1" } # public tokio = { version = "1", features = ["net", "io-util"] } anyhow = "1" -ironrdp-rdpei = { version = "0.2.0", path = "../ironrdp-rdpei" } # public +ironrdp-rdpei = { version = "0.3.0", path = "../ironrdp-rdpei" } # public [target.'cfg(unix)'.dependencies] libc = "0.2" diff --git a/crates/ironrdp-server/CHANGELOG.md b/crates/ironrdp-server/CHANGELOG.md index 6bc9421f45..0a2eb46e1f 100644 --- a/crates/ironrdp-server/CHANGELOG.md +++ b/crates/ironrdp-server/CHANGELOG.md @@ -6,6 +6,152 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.14.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-server-v0.13.0...ironrdp-server-v0.14.0)] - 2026-10-27 + +### Security + +- Add `RdpServer::enable_heartbeat` and `HeartbeatConfig` to send periodic Server Heartbeat PDUs ([#1842](https://github.com/Devolutions/IronRDP/issues/1842)) ([8f57691a9a](https://github.com/Devolutions/IronRDP/commit/8f57691a9a6e497388dc2824bffe93eeed7bb698)) + +- Log the Initiate Multitransport Response at debug level instead of warning about an unhandled message channel PDU ([#1964](https://github.com/Devolutions/IronRDP/issues/1964)) ([6aebe6d0b1](https://github.com/Devolutions/IronRDP/commit/6aebe6d0b11c4aa3c99252bd986e138e43756a6d)) + +- Add `RdpServerBuilder::with_udp_transport` to offer UDP multitransport under TLS or Hybrid security and move EGFX traffic to it ([#1954](https://github.com/Devolutions/IronRDP/issues/1954)) ([73dfa30e38](https://github.com/Devolutions/IronRDP/commit/73dfa30e3831e51cf8aa58f93e27b1b00102a7ec)) + +- Add `ConnectionSource`, `IncomingConnection`, `RdpServer::serve` and `RdpServer::serve_connection`, which apply the connection policy to connections the embedder accepts ([#2116](https://github.com/Devolutions/IronRDP/issues/2116)) ([350520684c](https://github.com/Devolutions/IronRDP/commit/350520684c028f9d50343f64f6afb93475b7ac33)) + +- [**breaking**] Add `ServerRedirectionHandle` (`RdpServer::server_redirection_handle`) to send a Server Redirection PDU, and `ConnectionInfo::routing_token`, `redirected_session_id` and `password_cookie` ([#2208](https://github.com/Devolutions/IronRDP/issues/2208)) ([485657a6ec](https://github.com/Devolutions/IronRDP/commit/485657a6eca682a0356e100a9fda229342861fd7)) + +### Features + +- Add `StaticChannelFactory` and `RdpServerBuilder::with_static_channel_factory` to create static channel processors for each connection, and re-export `Acceptor` ([#1633](https://github.com/Devolutions/IronRDP/issues/1633)) ([e48b29c017](https://github.com/Devolutions/IronRDP/commit/e48b29c0173096c1718c9f657bed3a59926aa97c)) + +- Report the measured round-trip time and bandwidth to the client in Network Characteristics Results ([#1470](https://github.com/Devolutions/IronRDP/issues/1470)) ([224e8db7ce](https://github.com/Devolutions/IronRDP/commit/224e8db7cec2dad39032aac097f550a6600e742c)) + +- Add `RdpServerBuilder::with_remotefx_quant` to set the RemoteFX quantization table ([#1685](https://github.com/Devolutions/IronRDP/issues/1685)) ([925e7c0f7c](https://github.com/Devolutions/IronRDP/commit/925e7c0f7cb7ae937a92ec93d4cb758289594cc0)) + +- [**breaking**] Add `ConnectionInfo` with the client's keyboard layout, type and IME file name, passed to the new `ConnectionHandler::on_connection_info` ([#1691](https://github.com/Devolutions/IronRDP/issues/1691)) ([393869b30b](https://github.com/Devolutions/IronRDP/commit/393869b30b1078da7204c6bf20e8a5472e419070)) + +- Add `RdpServer::autodetect_baseline_rtt_handle` and `RdpServerBuilder::with_autodetect_baseline_rtt_handle` for the lowest round-trip time of the session ([#1737](https://github.com/Devolutions/IronRDP/issues/1737)) ([ac7800c989](https://github.com/Devolutions/IronRDP/commit/ac7800c989dd5926eef2a1adf983458ad0aec9ee)) + +- [**breaking**] `MouseEvent` button and scroll events carry the pointer position, and the new `MouseButton` covers X1 and X2 ([#1769](https://github.com/Devolutions/IronRDP/issues/1769)) ([e9c5b1c54a](https://github.com/Devolutions/IronRDP/commit/e9c5b1c54a1153e5d7116d7fadf636bd551020ea)) + +- Add `RdpeiServerFactory` and `RdpServerBuilder::with_rdpei_factory` for MS-RDPEI multitouch and pen input ([#1773](https://github.com/Devolutions/IronRDP/issues/1773)) ([aa260fef9e](https://github.com/Devolutions/IronRDP/commit/aa260fef9ebbc0a420b17e796616d710fb41e702)) + +- Add `RdpServerBuilder::with_usb_factory` for MS-RDPEUSB USB redirection ([#1417](https://github.com/Devolutions/IronRDP/issues/1417)) ([4755faec5e](https://github.com/Devolutions/IronRDP/commit/4755faec5efb1649e2cb839f553c8aaae7534aad)) + +- [**breaking**] Add `ServerError`, `ServerErrorKind` and `ServerResult` for the public API ([#1242](https://github.com/Devolutions/IronRDP/issues/1242)) ([b5b9558eae](https://github.com/Devolutions/IronRDP/commit/b5b9558eae164a3500ace069b4db12be25eba7bd)) + +- [**breaking**] `ConnectionHandler::on_disconnected` receives a `ServerError` instead of an `anyhow::Error` ([#1244](https://github.com/Devolutions/IronRDP/issues/1244)) ([b919a41932](https://github.com/Devolutions/IronRDP/commit/b919a419320dfabe4b932c0d3d623386883b072f)) + +- [**breaking**] The display traits return `ServerResult` instead of `anyhow::Result`, and `anyhow` is no longer a dependency ([#1245](https://github.com/Devolutions/IronRDP/issues/1245)) ([9abd6eb482](https://github.com/Devolutions/IronRDP/commit/9abd6eb482d8e7bcc64d578fc0a97bb12b6c82d9)) + +- Add `RdpServer::autodetect_bandwidth_handle` and `RdpServerBuilder::with_autodetect_bandwidth_handle` for the measured bandwidth ([#1734](https://github.com/Devolutions/IronRDP/issues/1734)) ([e01839bfd8](https://github.com/Devolutions/IronRDP/commit/e01839bfd84ff5a392ca81ae80c0350bf457f7b1)) + +- Add `RdpdrServerFactory` and `RdpServerBuilder::with_rdpdr_factory` for device redirection ([#1784](https://github.com/Devolutions/IronRDP/issues/1784)) ([695af5a6e8](https://github.com/Devolutions/IronRDP/commit/695af5a6e814badb3daa60184a8d2048d0e66716)) + +- Add `ServerEvent::Disconnect` and `ErrorInfoDisconnectHandle` (`RdpServer::error_info_disconnect_handle`) to disconnect a client with a Set Error Info PDU ([#1798](https://github.com/Devolutions/IronRDP/issues/1798)) ([f7253861fa](https://github.com/Devolutions/IronRDP/commit/f7253861faa430d28c9dbce29d3e9e930c54748f)) + +- [**breaking**] Support the Large Pointer Capability Set and add the `LargePointer` display update ([#1787](https://github.com/Devolutions/IronRDP/issues/1787)) ([bde5824213](https://github.com/Devolutions/IronRDP/commit/bde5824213bfbc59d83c8fb3d2cfbc69ad9dab77)) + +- Log EGFX flow-control changes and frame acknowledgements at debug level, and warn on an acknowledgement for an unknown frame ([#1834](https://github.com/Devolutions/IronRDP/issues/1834)) ([8d1e91eb32](https://github.com/Devolutions/IronRDP/commit/8d1e91eb3256e0ba007e909512bbaf84cb76d67b)) + +- Add `RdpServerBuilder::with_preempt_existing_session` to let an authenticated connection replace the active session ([#1476](https://github.com/Devolutions/IronRDP/issues/1476)) ([5198cde0f7](https://github.com/Devolutions/IronRDP/commit/5198cde0f73485f3fbd999ea7c49293c86b80387)) + +- Add `ConnectionPolicy` and `RdpServerBuilder::with_connection_policy` to queue or reject a connection that arrives during a session ([#1913](https://github.com/Devolutions/IronRDP/issues/1913)) ([f7732a1639](https://github.com/Devolutions/IronRDP/commit/f7732a16392b5857a698182ffd37221da1010a2a)) + +- Add `RdpeaiServerFactory` and `RdpServerBuilder::with_rdpeai_factory` for MS-RDPEAI audio input ([#1946](https://github.com/Devolutions/IronRDP/issues/1946)) ([5b139ba3df](https://github.com/Devolutions/IronRDP/commit/5b139ba3df92b05154bcedc5bc13b2c0b61866d8)) + +- Add `RdpServer::autodetect_bandwidth_generation_handle` and `RdpServerBuilder::with_autodetect_bandwidth_generation_handle`, which count completed bandwidth measurements ([#1963](https://github.com/Devolutions/IronRDP/issues/1963)) ([ded2caa118](https://github.com/Devolutions/IronRDP/commit/ded2caa1184fd3b2671b9725ff26052383a0be16)) + +- Add `RdpServerDisplay::monitor_count`, reported in the Display Control capabilities ([#1918](https://github.com/Devolutions/IronRDP/issues/1918)) ([25331598f3](https://github.com/Devolutions/IronRDP/commit/25331598f37f49573205c54ee45c878d291317f2)) + +- `ConnectionPolicy` defaults to `Preempt` under Hybrid security, where CredSSP authenticates every takeover; `ConnectionPolicy::default_for` returns the default for a security mode ([#1934](https://github.com/Devolutions/IronRDP/issues/1934)) ([9cb20336f6](https://github.com/Devolutions/IronRDP/commit/9cb20336f6f586cd5c9c06b6907d1b3f2e51b405)) + +- [**breaking**] Add `ConnectionBinder` and `RdpServerBuilder::with_connection_binder` to bind an authenticated connection to a per-user display and input handler ([#1413](https://github.com/Devolutions/IronRDP/issues/1413)) ([15bed4ee0e](https://github.com/Devolutions/IronRDP/commit/15bed4ee0ebef4b851c024edfcd4b1675d6e9ee8)) + +- Add `RdpServerBuilder::with_auto_reconnect_on_request` and `RdpServer::set_auto_reconnect_on_request` to issue auto-reconnect cookies only once the embedder authenticates the user ([#2046](https://github.com/Devolutions/IronRDP/issues/2046)) ([bf019ca502](https://github.com/Devolutions/IronRDP/commit/bf019ca502d1e52616853a5ded68c885cec1e322)) + +- Add `RdpServerDisplay::offers_display_control` to decline the Display Control channel ([#1985](https://github.com/Devolutions/IronRDP/issues/1985)) ([7b976a6965](https://github.com/Devolutions/IronRDP/commit/7b976a6965c96c76ff949313e174ea55dada8c44)) + +- Add `ConnectionInfo::client_monitors` with the client's monitors ([#2129](https://github.com/Devolutions/IronRDP/issues/2129)) ([da166aa488](https://github.com/Devolutions/IronRDP/commit/da166aa4883a4868638d3c65ecf44b8b3895acfb)) + +- Measure bandwidth on the UDP tunnel once EGFX uses it ([#2031](https://github.com/Devolutions/IronRDP/issues/2031)) ([cb7ca37680](https://github.com/Devolutions/IronRDP/commit/cb7ca3768092fcc43a09a1b401cdd8abb873db42)) + +### Bug Fixes + +- Add `RdpServerBuilder::with_remotefx_entropy_coder`, and pick the first entropy coder the client offers instead of the last one ([#1686](https://github.com/Devolutions/IronRDP/issues/1686)) ([185f312019](https://github.com/Devolutions/IronRDP/commit/185f3120199f0373a11c7e21cecfac77b7be56af)) + +- `run_connection` releases the static channels when the connection ends ([#1721](https://github.com/Devolutions/IronRDP/issues/1721)) ([8b1f0dab08](https://github.com/Devolutions/IronRDP/commit/8b1f0dab088c2205ec1d9e8cb1b49bf902971b23)) + +- [**breaking**] Remove the `tokio` and `tokio_rustls` re-exports ([#1796](https://github.com/Devolutions/IronRDP/issues/1796)) ([cac7bd6f37](https://github.com/Devolutions/IronRDP/commit/cac7bd6f37120711570b0156dd87c8ce6145fad6)) + +- Use New Pointer Updates only within the pointer cache size the client advertises ([#1786](https://github.com/Devolutions/IronRDP/issues/1786)) ([e01cc76116](https://github.com/Devolutions/IronRDP/commit/e01cc76116fc0b238bca25acccce03eadb158550)) + +- Disable Nagle's algorithm on accepted connections ([#1799](https://github.com/Devolutions/IronRDP/issues/1799)) ([915e681845](https://github.com/Devolutions/IronRDP/commit/915e681845d9c27198776d735952c272e19566b9)) + +- USB redirection requests a zero maximum packet size for each pipe instead of one derived from the device speed ([#1871](https://github.com/Devolutions/IronRDP/issues/1871)) ([6a5d7c23fe](https://github.com/Devolutions/IronRDP/commit/6a5d7c23fe312b6c7b01f25c6a8e4c436309df00)) + +- Time out connection finalization after 30 seconds, so a client that stops responding cannot hold the server ([#1890](https://github.com/Devolutions/IronRDP/issues/1890)) ([a8b4b2a7ed](https://github.com/Devolutions/IronRDP/commit/a8b4b2a7ed6f86a16a31e304538823520db0d830)) + +- A clipboard failure no longer ends the session ([#1980](https://github.com/Devolutions/IronRDP/issues/1980)) ([124406d881](https://github.com/Devolutions/IronRDP/commit/124406d881af377cb339e8c131831f69e3cf7e45)) + +- Drop RDPSND waves and volume changes that arrive before the channel negotiates, which failed the next connection ([#1990](https://github.com/Devolutions/IronRDP/issues/1990)) ([2e872b085b](https://github.com/Devolutions/IronRDP/commit/2e872b085b504cf3b9ce9994237270f71a35d13a)) + +- Keep calling `ConnectionHandler::on_connection_info` for the live connection while a `Preempt` candidate negotiates ([#2065](https://github.com/Devolutions/IronRDP/issues/2065)) ([458545e6d5](https://github.com/Devolutions/IronRDP/commit/458545e6d5c5963a3673e7f686c0bdee3848b58b)) + +- Drop the previous session's queued events before every connection ([#2034](https://github.com/Devolutions/IronRDP/issues/2034)) ([2c08bda7c5](https://github.com/Devolutions/IronRDP/commit/2c08bda7c5f9ad490e01f123b3be5521cf3c6e9d)) + +- [**breaking**] Remove `RdpServer::rtt_snapshot`, `get_svc_processor` and `get_channel_id_by_type`, as channels and auto-detect state now belong to each connection; the baseline round-trip time no longer carries over between connections ([#2059](https://github.com/Devolutions/IronRDP/issues/2059)) ([0e9dc1f712](https://github.com/Devolutions/IronRDP/commit/0e9dc1f71237c75ba1f856b1996f5994931dd31e)) + +- Respect the client's frame acknowledgement limit for EGFX frames ([#2102](https://github.com/Devolutions/IronRDP/issues/2102)) ([e4143f2630](https://github.com/Devolutions/IronRDP/commit/e4143f26306a6639a889d80c1c484ca69c365a8f)) + +- Measure bandwidth across a single large EGFX write instead of a fixed window that timed idle traffic ([#2021](https://github.com/Devolutions/IronRDP/issues/2021)) ([b5bbd8a598](https://github.com/Devolutions/IronRDP/commit/b5bbd8a59829450cb85ca834836b2e030fb53dde)) + +- Send an AND mask with 32 bpp pointers, which Windows App for macOS requires ([#2108](https://github.com/Devolutions/IronRDP/issues/2108)) ([fb25b47c0c](https://github.com/Devolutions/IronRDP/commit/fb25b47c0ce22233b4992ec0e70560fb56b8f200)) + +- Drive the clipboard channel timeouts, which released locks and failed abandoned file contents requests ([#1979](https://github.com/Devolutions/IronRDP/issues/1979)) ([3db08ba869](https://github.com/Devolutions/IronRDP/commit/3db08ba86983ce35c9d36ad33f59ceb4b607dce8)) + +- [**breaking**] `RdpServerDisplay::updates` takes a `DisplayContext` for the connection ([#2073](https://github.com/Devolutions/IronRDP/issues/2073)) ([9e85975616](https://github.com/Devolutions/IronRDP/commit/9e85975616c14fc2f4ad422d3a53255a4fbee345)) + +- [**breaking**] `GfxServerFactory` build methods take a `GfxContext`, and `DisplayContext::gfx_handle` replaces `RdpServer::gfx_handle` ([#2104](https://github.com/Devolutions/IronRDP/issues/2104)) ([7bca756755](https://github.com/Devolutions/IronRDP/commit/7bca756755ef856bd5aaaff97612bea875dbad5c)) + +- Advertise horizontal mouse wheel input, which mstsc otherwise does not send ([#2236](https://github.com/Devolutions/IronRDP/issues/2236)) ([2110ab2572](https://github.com/Devolutions/IronRDP/commit/2110ab25728ca0b2f1ad79aa90b834af2d3de5c6)) + +- Add `RdpServerBuilder::with_egfx_core_frame_ack_limit` and `RdpServer::set_egfx_core_frame_ack_limit`; the core frame acknowledgement limit no longer caps the EGFX window by default ([#2238](https://github.com/Devolutions/IronRDP/issues/2238)) ([0de133426b](https://github.com/Devolutions/IronRDP/commit/0de133426b8f7423f78dd6c63d8eba4f4d2365eb)) + +- Send RemoteFX in Stream Surface Bits when the client supports it, and prefer RemoteFX over ImageRemoteFX ([#2229](https://github.com/Devolutions/IronRDP/issues/2229)) ([e20a214703](https://github.com/Devolutions/IronRDP/commit/e20a2147038b8226701d9cf6b59d2c895fa51480)) + +### Build + +- [**breaking**] Update `ironrdp-acceptor` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-cliprdr` public dependency to 0.9 + +- [**breaking**] Update `ironrdp-connector` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-displaycontrol` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-echo` public dependency to 0.6 + +- [**breaking**] Update `ironrdp-graphics` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-rdpdr` public dependency to 0.9 + +- [**breaking**] Update `ironrdp-rdpeai` public dependency to 0.2 + +- [**breaking**] Update `ironrdp-rdpei` public dependency to 0.3 + +- [**breaking**] Update `ironrdp-rdpeudp-tokio` public dependency to 0.2 + +- [**breaking**] Update `ironrdp-rdpsnd` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.13.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-server-v0.12.0...ironrdp-server-v0.13.0)] - 2026-07-10 ### Security diff --git a/crates/ironrdp-server/Cargo.toml b/crates/ironrdp-server/Cargo.toml index 5aac835848..d11bb11296 100644 --- a/crates/ironrdp-server/Cargo.toml +++ b/crates/ironrdp-server/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-server" -version = "0.13.0" +version = "0.14.0" readme = "README.md" description = "Extendable skeleton for implementing custom RDP servers" edition.workspace = true @@ -39,31 +39,31 @@ rand = "0.9" tokio = { version = "1", features = ["net", "macros", "sync", "rt", "time"] } tokio-rustls = "0.26" # public async-trait = "0.1" -ironrdp-async = { path = "../ironrdp-async", version = "0.11" } +ironrdp-async = { path = "../ironrdp-async", version = "0.12" } ironrdp-ainput = { path = "../ironrdp-ainput", version = "0.9" } -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11" } # public +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3" } -ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.4", optional = true } +ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.5", optional = true } ironrdp-error = { path = "../ironrdp-error", version = "0.2", features = ["std"] } # public ironrdp-nscodec = { path = "../ironrdp-nscodec", version = "0.3", optional = true, features = ["encoder"] } -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public -ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.8" } # public -ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.9" } # public -ironrdp-echo = { path = "../ironrdp-echo", version = "0.5" } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public -ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.11", features = ["reqwest"] } -ironrdp-acceptor = { path = "../ironrdp-acceptor", version = "0.11" } # public -ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.10" } # public -ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.8" } # public -ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.10" } # public -ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.2" } # public -ironrdp-rdpeai = { path = "../ironrdp-rdpeai", version = "0.1" } # public -ironrdp-rdpeusb = { path = "../ironrdp-rdpeusb", version = "0.1", optional = true } +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public +ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.9" } # public +ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.10" } # public +ironrdp-echo = { path = "../ironrdp-echo", version = "0.6" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public +ironrdp-tokio = { path = "../ironrdp-tokio", version = "0.12", features = ["reqwest"] } +ironrdp-acceptor = { path = "../ironrdp-acceptor", version = "0.12" } # public +ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.11" } # public +ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.9" } # public +ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.11" } # public +ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.3" } # public +ironrdp-rdpeai = { path = "../ironrdp-rdpeai", version = "0.2" } # public +ironrdp-rdpeusb = { path = "../ironrdp-rdpeusb", version = "0.2", optional = true } ironrdp-usb = { path = "../ironrdp-usb", version = "0.1", optional = true } ironrdp-rdpemt = { path = "../ironrdp-rdpemt", version = "0.1" } # public ironrdp-rdpeudp = { path = "../ironrdp-rdpeudp", version = "0.1" } # public -ironrdp-rdpeudp-tokio = { path = "../ironrdp-rdpeudp-tokio", version = "0.1" } # public +ironrdp-rdpeudp-tokio = { path = "../ironrdp-rdpeudp-tokio", version = "0.2" } # public tracing = { version = "0.1", features = ["log"] } x509-cert = { version = "0.3", optional = true } rustls-pemfile = { version = "2.2", optional = true } diff --git a/crates/ironrdp-session/CHANGELOG.md b/crates/ironrdp-session/CHANGELOG.md index 42c7f2d83f..9678f0c090 100644 --- a/crates/ironrdp-session/CHANGELOG.md +++ b/crates/ironrdp-session/CHANGELOG.md @@ -6,6 +6,36 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.13.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-session-v0.12.0...ironrdp-session-v0.13.0)] - 2026-10-27 + +### Features + +- [**breaking**] Add `ActiveStageOutput::WindowSurfaceUpdates` for EGFX surfaces mapped to RemoteApp windows ([#2197](https://github.com/Devolutions/IronRDP/issues/2197)) ([6e54d5e9ec](https://github.com/Devolutions/IronRDP/commit/6e54d5e9ec58c69debaff96fa49bed4343348d3e)) + +- [**breaking**] Add `ActiveStageOutput::SessionId` and `ActiveStageOutput::LogonErrors`, reported from Save Session Info PDUs ([#2211](https://github.com/Devolutions/IronRDP/issues/2211)) ([98413f16cc](https://github.com/Devolutions/IronRDP/commit/98413f16cc3792a3debe14ef4a2956374957a615)) + +- Add `composite_graphics_pipeline` and `CompositedGraphics`, to composite EGFX output from a `GraphicsPipelineClient` running outside `ActiveStage` ([#2120](https://github.com/Devolutions/IronRDP/issues/2120)) ([c25dba154b](https://github.com/Devolutions/IronRDP/commit/c25dba154b39a865c2a9ebc5c9074d16227ff2dd)) + +### Bug Fixes + +- The QOIZ decompressor no longer loops forever on an empty update ([#2147](https://github.com/Devolutions/IronRDP/issues/2147)) ([b343a6f9d3](https://github.com/Devolutions/IronRDP/commit/b343a6f9d3fedd2306204f668f745bfc44411ade)) + +### Build + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-egfx` public dependency to 0.5 + +- [**breaking**] Update `ironrdp-graphics` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + +- [**breaking**] Update `ironrdp-rdpei` public dependency to 0.3 + +- [**breaking**] Update `ironrdp-svc` public dependency to 0.10 + + + ## [[0.12.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-session-v0.11.0...ironrdp-session-v0.12.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-session/Cargo.toml b/crates/ironrdp-session/Cargo.toml index fb377ee02a..04554bcb3e 100644 --- a/crates/ironrdp-session/Cargo.toml +++ b/crates/ironrdp-session/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-session" -version = "0.12.0" +version = "0.13.0" readme = "README.md" description = "State machines to drive an RDP session" edition.workspace = true @@ -25,14 +25,14 @@ __test = ["dep:visibility"] [dependencies] ironrdp-bulk = { path = "../ironrdp-bulk", version = "0.2" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9" } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9" } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10" } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10" } # public ironrdp-error = { path = "../ironrdp-error", version = "0.2" } # public -ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.10" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["std"] } # public -ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.9" } -ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.4" } # public -ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.2" } # public +ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.11" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["std"] } # public +ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.10" } +ironrdp-egfx = { path = "../ironrdp-egfx", version = "0.5" } # public +ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.3" } # public tracing = { version = "0.1", features = ["log"] } qoicoubeh = { version = "0.5", optional = true } zstd-safe = { version = "7.2", optional = true, features = ["std"] } diff --git a/crates/ironrdp-str/CHANGELOG.md b/crates/ironrdp-str/CHANGELOG.md index dd2705ca75..5a803ab124 100644 --- a/crates/ironrdp-str/CHANGELOG.md +++ b/crates/ironrdp-str/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.2.1](https://github.com/Devolutions/IronRDP/compare/ironrdp-str-v0.2.0...ironrdp-str-v0.2.1)] - 2026-10-27 + +### Build + +- Declare `ironrdp-core` as a public dependency, since the string types implement its `Encode` and `DecodeOwned` traits ([#2213](https://github.com/Devolutions/IronRDP/issues/2213)) ([405e6576ba](https://github.com/Devolutions/IronRDP/commit/405e6576bac7c64b04efc8a0d00beeecdc648356)) + + + ## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-str-v0.1.1...ironrdp-str-v0.2.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-str/Cargo.toml b/crates/ironrdp-str/Cargo.toml index 2d871fd6b0..822be91a0f 100644 --- a/crates/ironrdp-str/Cargo.toml +++ b/crates/ironrdp-str/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-str" -version = "0.2.0" +version = "0.2.1" description = "Typed wire-aware string primitives for RDP protocol fields" edition.workspace = true rust-version = "1.94" diff --git a/crates/ironrdp-svc/CHANGELOG.md b/crates/ironrdp-svc/CHANGELOG.md index bbb41f0361..aba36bf975 100644 --- a/crates/ironrdp-svc/CHANGELOG.md +++ b/crates/ironrdp-svc/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.10.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-svc-v0.9.0...ironrdp-svc-v0.10.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 + + + ## [[0.9.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-svc-v0.8.0...ironrdp-svc-v0.9.0)] - 2026-10-23 ### Features diff --git a/crates/ironrdp-svc/Cargo.toml b/crates/ironrdp-svc/Cargo.toml index 275a65d894..1eee399112 100644 --- a/crates/ironrdp-svc/Cargo.toml +++ b/crates/ironrdp-svc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-svc" -version = "0.9.0" +version = "0.10.0" readme = "README.md" description = "IronRDP traits to implement RDP static virtual channels" edition.workspace = true @@ -22,7 +22,7 @@ std = [] [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3" } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", features = ["alloc", "std"] } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", features = ["alloc", "std"] } # public bitflags = "2.11" [lints] diff --git a/crates/ironrdp-tokio/CHANGELOG.md b/crates/ironrdp-tokio/CHANGELOG.md index f1ebdb4d9d..58bd3ccf92 100644 --- a/crates/ironrdp-tokio/CHANGELOG.md +++ b/crates/ironrdp-tokio/CHANGELOG.md @@ -6,6 +6,14 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [[0.12.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-tokio-v0.11.0...ironrdp-tokio-v0.12.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-async` public dependency to 0.12 + + + ## [[0.11.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-tokio-v0.10.0...ironrdp-tokio-v0.11.0)] - 2026-10-23 ### Build diff --git a/crates/ironrdp-tokio/Cargo.toml b/crates/ironrdp-tokio/Cargo.toml index ef0dfa5382..9283e8eb64 100644 --- a/crates/ironrdp-tokio/Cargo.toml +++ b/crates/ironrdp-tokio/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-tokio" -version = "0.11.0" +version = "0.12.0" readme = "README.md" description = "`Framed*` traits implementation above Tokio’s traits" edition.workspace = true @@ -23,8 +23,8 @@ reqwest-rustls-ring = ["reqwest", "reqwest?/rustls-tls-webpki-roots"] reqwest-native-tls = ["reqwest", "reqwest?/native-tls"] [dependencies] -ironrdp-async = { path = "../ironrdp-async", version = "0.11" } # public -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11", optional = true } +ironrdp-async = { path = "../ironrdp-async", version = "0.12" } # public +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12", optional = true } tokio = { version = "1", features = ["io-util"] } reqwest = { version = "0.12", default-features = false, features = ["http2", "system-proxy"], optional = true } url = { version = "2.5", optional = true } diff --git a/crates/ironrdp-viewer/Cargo.toml b/crates/ironrdp-viewer/Cargo.toml index 3f28e594cc..73008b29bf 100644 --- a/crates/ironrdp-viewer/Cargo.toml +++ b/crates/ironrdp-viewer/Cargo.toml @@ -31,9 +31,9 @@ openh264 = ["ironrdp/client-openh264"] [dependencies] ironrdp-daemon = { path = "../ironrdp-daemon", version = "0.1" } # public -ironrdp-rpc = { path = "../ironrdp-rpc", version = "0.1" } +ironrdp-rpc = { path = "../ironrdp-rpc", version = "0.2" } ironrdp = { path = "../ironrdp", version = "0.17", features = ["connector", "cliprdr", "input", "pdu", "rdpei", "client", "client-all", "client-vmconnect"] } # public -ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.2" } +ironrdp-cfg = { path = "../ironrdp-cfg", version = "0.3" } ironrdp-propertyset = { path = "../ironrdp-propertyset", version = "0.1" } ironrdp-rdpfile = { path = "../ironrdp-rdpfile", version = "0.1" } ironrdp-rail = { path = "../ironrdp-rail", version = "0.2" } @@ -65,7 +65,7 @@ url = "2" [target.'cfg(windows)'.dependencies] ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.8" } -ironrdp-rdpdr-native = { path = "../ironrdp-rdpdr-native", version = "0.8" } +ironrdp-rdpdr-native = { path = "../ironrdp-rdpdr-native", version = "0.9" } windows = { version = "0.62", features = ["Win32_System_Ole", "Win32_UI_WindowsAndMessaging"] } [lints] diff --git a/crates/ironrdp-vmconnect/CHANGELOG.md b/crates/ironrdp-vmconnect/CHANGELOG.md index 102e46dbde..85ed9b1dd0 100644 --- a/crates/ironrdp-vmconnect/CHANGELOG.md +++ b/crates/ironrdp-vmconnect/CHANGELOG.md @@ -7,3 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] + +## [[0.2.0](https://github.com/Devolutions/IronRDP/compare/ironrdp-vmconnect-v0.1.0...ironrdp-vmconnect-v0.2.0)] - 2026-10-27 + +### Build + +- [**breaking**] Update `ironrdp-async` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-connector` public dependency to 0.12 + +- [**breaking**] Update `ironrdp-dvc` public dependency to 0.10 + +- [**breaking**] Update `ironrdp-pdu` public dependency to 0.11 diff --git a/crates/ironrdp-vmconnect/Cargo.toml b/crates/ironrdp-vmconnect/Cargo.toml index c20f3ebfcb..f24f38dc6c 100644 --- a/crates/ironrdp-vmconnect/Cargo.toml +++ b/crates/ironrdp-vmconnect/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "ironrdp-vmconnect" -version = "0.1.0" +version = "0.2.0" readme = "README.md" description = "Hyper-V VM console (vmconnect) connection ordering for IronRDP" edition.workspace = true @@ -22,14 +22,14 @@ test = false __test = [] [dependencies] -ironrdp-async = { path = "../ironrdp-async", version = "0.11" } # public -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11" } # public +ironrdp-async = { path = "../ironrdp-async", version = "0.12" } # public +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12" } # public ironrdp-core = { path = "../ironrdp-core", version = "0.3", features = ["alloc"] } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10" } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11" } # public tracing = { version = "0.1", features = ["log"] } [target.'cfg(windows)'.dependencies] -ironrdp-dvc = { version = "0.9.0", path = "../ironrdp-dvc" } # public +ironrdp-dvc = { version = "0.10.0", path = "../ironrdp-dvc" } # public sha2 = "0.10" windows = { version = "0.62", features = [ "Win32_Foundation", diff --git a/crates/ironrdp/Cargo.toml b/crates/ironrdp/Cargo.toml index 932516cf65..86d7bf45ad 100644 --- a/crates/ironrdp/Cargo.toml +++ b/crates/ironrdp/Cargo.toml @@ -65,27 +65,27 @@ __bench = ["ironrdp-server/__bench"] [dependencies] ironrdp-core = { path = "../ironrdp-core", version = "0.3", optional = true } # public -ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.10", optional = true } # public -ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.8", optional = true } # public -ironrdp-connector = { path = "../ironrdp-connector", version = "0.11", optional = true } # public -ironrdp-acceptor = { path = "../ironrdp-acceptor", version = "0.11", optional = true } # public -ironrdp-session = { path = "../ironrdp-session", version = "0.12", optional = true } # public -ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.10", optional = true } # public -ironrdp-input = { path = "../ironrdp-input", version = "0.8", optional = true } # public -ironrdp-server = { path = "../ironrdp-server", version = "0.13", optional = true, features = ["helper"] } # public -ironrdp-svc = { path = "../ironrdp-svc", version = "0.9", optional = true } # public -ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.9", optional = true } # public -ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.8", optional = true } # public -ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.10", optional = true } # public -ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.9", optional = true } # public -ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.2", optional = true } # public -ironrdp-echo = { path = "../ironrdp-echo", version = "0.5", optional = true } # public -ironrdp-mstsgu = { path = "../ironrdp-mstsgu", version = "0.0.2", optional = true } # public +ironrdp-pdu = { path = "../ironrdp-pdu", version = "0.11", optional = true } # public +ironrdp-cliprdr = { path = "../ironrdp-cliprdr", version = "0.9", optional = true } # public +ironrdp-connector = { path = "../ironrdp-connector", version = "0.12", optional = true } # public +ironrdp-acceptor = { path = "../ironrdp-acceptor", version = "0.12", optional = true } # public +ironrdp-session = { path = "../ironrdp-session", version = "0.13", optional = true } # public +ironrdp-graphics = { path = "../ironrdp-graphics", version = "0.11", optional = true } # public +ironrdp-input = { path = "../ironrdp-input", version = "0.9", optional = true } # public +ironrdp-server = { path = "../ironrdp-server", version = "0.14", optional = true, features = ["helper"] } # public +ironrdp-svc = { path = "../ironrdp-svc", version = "0.10", optional = true } # public +ironrdp-dvc = { path = "../ironrdp-dvc", version = "0.10", optional = true } # public +ironrdp-rdpdr = { path = "../ironrdp-rdpdr", version = "0.9", optional = true } # public +ironrdp-rdpsnd = { path = "../ironrdp-rdpsnd", version = "0.11", optional = true } # public +ironrdp-displaycontrol = { path = "../ironrdp-displaycontrol", version = "0.10", optional = true } # public +ironrdp-rdpei = { path = "../ironrdp-rdpei", version = "0.3", optional = true } # public +ironrdp-echo = { path = "../ironrdp-echo", version = "0.6", optional = true } # public +ironrdp-mstsgu = { path = "../ironrdp-mstsgu", version = "0.0.3", optional = true } # public ironrdp-client = { path = "../ironrdp-client", version = "0.1", optional = true } # public -ironrdp-vmconnect = { path = "../ironrdp-vmconnect", version = "0.1", optional = true } # public +ironrdp-vmconnect = { path = "../ironrdp-vmconnect", version = "0.2", optional = true } # public [dev-dependencies] -ironrdp-blocking = { path = "../ironrdp-blocking", version = "0.11" } +ironrdp-blocking = { path = "../ironrdp-blocking", version = "0.12" } ironrdp-cliprdr-native = { path = "../ironrdp-cliprdr-native", version = "0.8" } anyhow = "1" async-trait = "0.1" diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index e7e63b42ba..623ec169d3 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -203,9 +203,9 @@ dependencies = [ [[package]] name = "der" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a878c850e9e421b20262e9b41f9c860e4785fa07541c266b62ff9d1ef998a80a" +checksum = "6a996a108feb8b427a6e12fcf6af4aa83409b79d72c15337d7741368131ee004" dependencies = [ "const-oid 0.10.2", "der_derive", @@ -376,7 +376,7 @@ version = "0.2.0" [[package]] name = "ironrdp-cliprdr" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitflags", "ironrdp-core", @@ -395,14 +395,14 @@ dependencies = [ [[package]] name = "ironrdp-core" -version = "0.3.0" +version = "0.3.1" dependencies = [ "ironrdp-error", ] [[package]] name = "ironrdp-displaycontrol" -version = "0.9.0" +version = "0.10.0" dependencies = [ "ironrdp-core", "ironrdp-dvc", @@ -413,7 +413,7 @@ dependencies = [ [[package]] name = "ironrdp-dvc" -version = "0.9.0" +version = "0.10.0" dependencies = [ "ironrdp-bulk", "ironrdp-core", @@ -424,7 +424,7 @@ dependencies = [ [[package]] name = "ironrdp-egfx" -version = "0.4.0" +version = "0.5.0" dependencies = [ "arbitrary", "bit_field", @@ -473,7 +473,7 @@ dependencies = [ [[package]] name = "ironrdp-graphics" -version = "0.10.0" +version = "0.11.0" dependencies = [ "bit_field", "bitflags", @@ -489,7 +489,7 @@ dependencies = [ [[package]] name = "ironrdp-pdu" -version = "0.10.0" +version = "0.11.0" dependencies = [ "arbitrary", "bit_field", @@ -512,7 +512,7 @@ dependencies = [ [[package]] name = "ironrdp-rdpdr" -version = "0.8.0" +version = "0.9.0" dependencies = [ "bitflags", "getrandom 0.3.4", @@ -525,7 +525,7 @@ dependencies = [ [[package]] name = "ironrdp-rdpel" -version = "0.0.1" +version = "0.0.2" dependencies = [ "ironrdp-core", "ironrdp-dvc", @@ -558,7 +558,7 @@ dependencies = [ [[package]] name = "ironrdp-rdpeusb" -version = "0.1.0" +version = "0.2.0" dependencies = [ "ironrdp-core", "ironrdp-dvc", @@ -569,7 +569,7 @@ dependencies = [ [[package]] name = "ironrdp-rdpsnd" -version = "0.10.0" +version = "0.11.0" dependencies = [ "bitflags", "ironrdp-core", @@ -582,7 +582,7 @@ dependencies = [ [[package]] name = "ironrdp-str" -version = "0.2.0" +version = "0.2.1" dependencies = [ "bytemuck", "ironrdp-core", @@ -590,7 +590,7 @@ dependencies = [ [[package]] name = "ironrdp-svc" -version = "0.9.0" +version = "0.10.0" dependencies = [ "bitflags", "ironrdp-core", @@ -864,7 +864,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ef958a98b9d5da290cfc78946e9f3e61e1e62a18db0d92cac0b83cc161491a9" dependencies = [ "base64ct", - "der 0.8.2", + "der 0.8.3", ] [[package]] @@ -1044,7 +1044,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "105ef4642d9cb137ef83d623d0e4bf08b8adf69e9918ca904a174adb6d3d038b" dependencies = [ "const-oid 0.10.2", - "der 0.8.2", + "der 0.8.3", "spki 0.8.1", "tls_codec", ]