1593 Commits
Author SHA1 Message Date
Viktor Liu 2b9cff51dd Merge pull request #2 from netbirdio/ship/upstream-sync-bitmap-fix
Sync with upstream and fix slow-path bitmap stride for xrdp
v0.0.2
2026-07-15 19:17:13 +09:00
Viktor Liu c27fce2ce4 Merge remote-tracking branch 'upstream/master' into ship/upstream-sync-bitmap-fix
# Conflicts:
#	.github/workflows/npm-publish.yml
#	.github/workflows/nuget-publish.yml
#	.github/workflows/release-crates.yml
#	Cargo.lock
#	crates/ironrdp-client/Cargo.toml
2026-07-13 20:05:43 +02:00
Marc-André Moreau 079b48422b fix(dvc-pipe-proxy): handle pre-connected Windows clients (#1447) 2026-07-13 23:51:48 +09:00
uchouT 76ad1459bf test(rdpeusb): add client/server I/O sequence coverage (#1406) 2026-07-13 17:30:54 +09:00
Benoît Cortier bdcc0ceec3 feat(core): add NonEmpty<T> (#1444)
Add a `NonEmpty<T>` collection guaranteeing at least one element. The
first element (head) is stored inline, so a single-element `NonEmpty`
performs no heap allocation, and `first()` is infallible while `len()`
returns a `NonZeroUsize`, and callers never branch on an "is it empty?"
case.
2026-07-13 10:47:12 +03:00
devolutionsbot c0a29813bf chore(release): clean up (#1440) 2026-07-10 16:59:01 +00:00
devolutionsbotandBenoît Cortier 11a0810cfb chore(release): prepare for publishing (#1364)
Co-authored-by: Benoît Cortier <3809077+CBenoit@users.noreply.github.com>
2026-07-10 15:38:47 +00:00
Benoît Cortier 85443601fb ci: friendly release asset names and drift-free install docs (#1439)
Rename prebuilt binary assets to friendly os-arch names (e.g.
ironrdp-agent-<version>-linux-x64.tar.gz), dropping the Rust target
triple from the filename, and make the triple authoritative by passing
--target to cargo so a runner/target mismatch fails loudly instead of
silently mislabeling an asset.

Move the detailed download/verify instructions out of the READMEs and
into the GitHub Release body, generated by the workflow so they can
never drift from the actual assets. The block is injected idempotently
between sentinel markers, so re-running the workflow (the recovery path
for a failed matrix leg) replaces it in place rather than appending. The
READMEs are demoted to short evergreen pointers to the Releases page.

Extract the duplicated native-dependency install steps (Linux ALSA
headers, Windows NASM) into a shared .github/actions/install-build-deps
composite action reused by ci.yml and release-binaries.yml.
2026-07-10 13:35:19 +00:00
Benoît Cortier 131d7d3dc5 ci(xtask): add dependency-invariant guard for ironrdp-session (#1438) 2026-07-10 09:08:11 -04:00
Greg Lamberson 8a1fd0118e fix(pdu)!: send NetworkAutoDetect over the MCS message channel (#1348)
Corrects Network Auto-Detect framing and routing to match MS-RDPBCGR by
moving it off the I/O channel slow-path Share Data PDUs and onto the MCS
message channel with the required Basic Security Header
(SEC_AUTODETECT_REQ / SEC_AUTODETECT_RSP). This aligns IronRDP with
mstsc/xfreerdp behavior and enables both connect-time and continuous
auto-detection to actually function.
2026-07-10 21:55:47 +09:00
Marc-André Moreau 437660fc59 ci: publish CLI binary release assets (#1437) 2026-07-10 18:06:37 +09:00
Benoît Cortier c6a0286dcb fix(session)!: remove ironrdp-connector dependency (#1435)
Removes the last ironrdp-connector coupling from ironrdp-session by
turning Deactivate-All handling into a bare signal and shifting ownership
of the Deactivation-Reactivation activation sequence back to each consumer.
It introduces a ConnectionActivationFactory (fresh sequence per reactivation)
and an ActiveStageBuilder so session construction no longer depends on
ConnectionResult.
2026-07-09 21:42:15 +02:00
Anton Mostovoy 9b4d01b403 fix(pdu): decode MousePdu wheel rotation as two's complement, matching encode (#1415) 2026-07-08 23:45:18 +00:00
Zac Bergquist 5c22f86a71 fix(session): reduce dependency on ironrdp-connector (#1419)
Removes the leftover legacy modules and moves actually useful utilities to ironrdp-pdu crate.
2026-07-08 13:30:06 +00:00
uchouT 32a8736d44 refactor(rdpeusb): eliminate repetition (#1407) 2026-07-08 01:56:17 +09:00
uchouT 069786c96f refactor(rdpeusb): seperate raw and validated InternalIoControl (#1403)
Signed-off-by: uchouT <i@uchout.moe>
2026-07-02 23:27:04 +09:00
Benoît Cortier 1cc7570ecb feat(agent): add generic --prop KEY:TYPE:VALUE property overrides (#1402) 2026-07-02 06:19:49 -04:00
Benoît Cortier a5522467ab feat(agent): add resize operation (#1401) 2026-07-02 06:19:29 -04:00
Greg Lamberson 18bf75c7b3 feat(server): accept connections with TLS terminated at a lower layer (#1281)
Adds a way to run a single RDP connection over a byte stream whose
confidentiality is already provided by the embedder's transport, rather
than having ironrdp-server perform the inner TLS handshake itself when
X.224 selects PROTOCOL_SSL.
2026-07-02 04:59:45 +00:00
clintcanandClint Christopher Canada d471bd066f feat(acceptor): honor the client-requested desktop size (#1373)
Adds an opt-in server/acceptor knob to negotiate the RDP session desktop size using the client’s originally requested resolution (from GCC Client Core Data) so the server can start at the client’s native size without a Deactivation–Reactivation resize round trip.

Co-authored-by: Clint Christopher Canada <clint.canada@clubitech.com>
2026-07-02 13:08:21 +09:00
clintcan 5ca84a5724 feat(acceptor): expose the client's keyboard layout on AcceptorResult (#1397) 2026-07-01 23:58:25 +09:00
Greg Lamberson d767d99032 feat(tls): make the rustls crypto provider selectable (#1387)
Makes the ironrdp-tls rustls backend’s crypto provider selectable at compile time by restructuring Cargo features, avoiding forcing a single provider onto downstreams via tokio-rustls default features.
2026-07-01 23:19:35 +09:00
uchouT 38980fc0eb feat(rdpeusb): implement urbdrc server processors (#1394)
Adds the server-side RDPEUSB (URBDRC) protocol processors to ironrdp-rdpeusb, introduces a backend-facing rdpeusb::io data model shared by client/server, and refactors TS_URB representations to better separate headers from payload variants.
2026-07-01 13:36:26 +00:00
Rocco De Angelis 368fe8e68b fix(graphics): don't require CONTEXT block on every progressive frame (#1395)
Fixes progressive RemoteFX (MS-RDPEGFX) decoding by no longer requiring a CONTEXT block on every WireToSurface2 progressive frame once a codec context has already been established (keyed by codec_context_id). This aligns the decoder with real-world server behavior and the spec’s “establish once, then reference” model for progressive contexts.
2026-07-01 18:33:39 +09:00
clintcanandClint Christopher Canada 2d3bdef1a7 feat(rdpsnd)!: misuse-resistant format negotiation for RdpsndServerHandler (#1359)
Move the negotiation into the crate and split selection from lifecycle:

```rust
fn choose_format<'a>(&mut self, common: &'a [NegotiatedFormat]) -> Option<&'a NegotiatedFormat>;
fn start(&mut self, format: &NegotiatedFormat);
```

Co-authored-by: Clint Christopher Canada <clint.canada@clubitech.com>
2026-07-01 13:44:43 +09:00