Repository navigation
Releases: steelbrain/RDPKit
Releases · steelbrain/RDPKit
Release list
0.3.1 - Minimum SDK bump
- Raise the minimum deployment targets from 16.0 to 17.0 for iOS, tvOS, and
Mac Catalyst. The macOS 13.0 and visionOS 1.0 minimums are unchanged.
0.3.0 - Conformance Improvements
- Add server-redirection compatibility by following redirection PDUs, reconnecting with server-provided routing tokens, handling connect-time bandwidth detection, and using the required
drdynvcShowProtocol framing. - Improve Windows and KDE KRdp activation compatibility across licensing, auto-detect, Confirm Active, finalization, auxiliary dynamic channels, remote termination, and reconnect flows.
- Add a persistent RDPGFX compositor for mapped and scaled surfaces, partial and multi-surface updates, surface caches, solid fills, alpha bitmaps, graphics resets, and output composition.
- Add full RemoteFX Progressive decoding, including Reduce-Extrapolate transforms, refinement and sub-band difference passes, shared tile state, change regions, and compatible region envelopes.
- Add decoded rendering for classic RemoteFX, ClearCodec, NSCodec, RDP 6.0 bitmap compression, and Interleaved RLE surface and bitmap updates.
- Add AVC444 and AVC444v2 chroma reconstruction with persistent luma and chroma state, reverse filtering, per-surface decoder isolation, and a Metal reconstruction path.
- Improve H.264 presentation with zero-copy CoreVideo frames, per-surface resynchronization, dependent-frame preservation, bounded decode backlog handling, and acknowledgements sent only after successful decode and presentation.
- Advertise every supported RDPGFX capability version from 8.0 through 10.7, validate the server-selected version, enforce negotiated cache and fragment limits, and preserve compatibility with server-selected capability flags.
- Add remote pointer shape and cache handling plus fast-path keyboard, Unicode, pointer, extended-button, and wheel input support.
- Add RDP client licensing for new, upgraded, and stored licenses, including platform-challenge handling and Keychain-backed license persistence in the macOS example.
- Expand clipboard, audio input and output, device redirection, display control, CredSSP, NTLM, MCS, fast-path, ZGFX, and graphics PDU validation and interoperability.
- Add
RDPWireTranscriptcapture and offline replay, explicit capture geometry, timed Windows-key probes, richer graphics diagnostics, and latest-frame capture after a configurable settle window. - Add captured negotiation fixtures, transcript replay coverage, and expanded mock-server regression tests for Windows and KRdp connection and graphics paths.
0.2.0 - Windows Compatibility
- Add a TLS certificate callback so live clients can show certificate trust state before the session ends.
- Add a timeout while live viewer sessions wait for the first graphics frame after RDPGFX setup, preventing stalled sessions from blocking forever.
- Add CredSSP with NTLM authentication for Windows hosts that require Network Level Authentication.
- Add selectable RDPGFX capability profiles for automatic, AVC thin-client, AVC420, and legacy negotiation paths.
- Add Windows graphics compatibility for bitmap codec capability advertisement, frame acknowledgements, thin-client fallbacks, ClearCodec and NSCodec bitmap streams, ZGFX compression, RemoteFX CAVIDEO updates, and uncompressed BGRA surface composition.
- Add parsing and diagnostics for more RDPGFX update paths, including CAPROGRESSIVE summaries, solid fill, surface cache, and cache-to-surface commands.
- Add bitmap frame decoding through CoreVideo and bounded in-order video decode buffering that can drop forward at resync frames instead of falling far behind the live session.
- Add device-redirection protocol handling for server announce, capability, and user-logon PDUs during preflight sessions.
- Add clipboard temporary-directory support plus sent-message and probe diagnostics for CLIPRDR validation.
- Improve RDPSND compatibility with dynamic audio channel handling and compatible PCM format selection.
- Move the example apps from XcodeGen to SwiftPM and add the
RDPFrameBenchmarktool for measuring live frame capture and decode paths. - Expand
RDPPreflightandRDPFirstFrameCapturewith graphics profile selection, Windows clipboard/input/audio probes, display resize support, richer graphics path reporting, and failure-update diagnostics. - Improve the macOS example viewer with graphics profile controls, early certificate warning updates, Stats for Nerds graphics path reporting, and more reliable window activation.
- Expand mock-server and unit coverage for Windows CredSSP, graphics, codecs, clipboard diagnostics, device redirection, audio, display resize, and input paths.
0.1.0 - Initial Release
Initial release of RDPKit: a Pure Swift RDP library for Apple platforms, built around Apple media, security, and networking primitives instead of FreeRDP.
Highlights
- Pure Swift RDP protocol implementation for macOS, iOS, tvOS, Mac Catalyst, and visionOS
- RDPGFX graphics pipeline with AVC420/H.264, AVC444/H.264, AVC444v2, and HEVC/H.265 support
- VideoToolbox-backed decode helpers with CoreVideo frame output
- SwiftNIO and SwiftNIO SSL transport, including TLS upgrade on an existing RDP socket
- Credential-aware session setup, certificate reporting, input, display control, clipboard, file transfer, audio, and render metrics
- No FreeRDP, no native RDP core, and no non-Apple package dependencies
Installation
dependencies: [
.package(url: "https://github.com/steelbrain/RDPKit.git", from: "0.1.0"),
]Then add RDPKit to your target:
.target(
name: "YourTarget",
dependencies: ["RDPKit"]
)Platform Requirements
- macOS 13.0+
- iOS 16.0+
- tvOS 16.0+
- Mac Catalyst 16.0+
- visionOS 1.0+
- Swift 6.0+
Included In This Release
Graphics
- RDP Graphics Pipeline capability negotiation and frame parsing
- AVC420/H.264 and AVC444/H.264 bitmap stream support
- AVC444v2 layout handling
- HEVC/H.265 Annex B sample preparation
- H.264/H.265 NAL unit metadata extraction
- VideoToolbox decode helpers with hardware acceleration reporting
- Latest-frame decode queue for dropping stale frames when decoding falls behind
- Frame metadata, frame acknowledgements, render metrics, and wire bandwidth samples
Session And Transport
- TPKT and X.224 connection negotiation
- TLS upgrade via SwiftNIO SSL
- CredSSP negotiation reporting and credential-aware Client Info PDUs
- MCS connect, channel join, static virtual channels, and dynamic virtual channels
- Certificate SHA-256 reporting and configurable certificate warning visibility
Input And Display
- Keyboard scancode and Unicode input
- Pointer motion, buttons, extended buttons, vertical wheel, and horizontal wheel
- Display control channel support for resize and monitor layout updates
- HiDPI-aware display scale models for Apple clients
Clipboard, Files, And Audio
- Unicode text clipboard support
- File Group Descriptor W parsing and encoding
- Remote file contents requests and responses
- Local-to-remote and remote-to-local clipboard file transfer plumbing
- RDPSND static channel support
- PCM format negotiation
- Wave info, wave data, Wave2, training, quality mode, and wave confirm PDUs
Example App And Tools
- Native macOS RDPClient example app
- Certificate warning review and trust handling
- Keychain-backed saved connections
- Clipboard and audio toggles
- Stats for Nerds diagnostics window
- RDPPreflight protocol inspection tool
- RDPFirstFrameCapture live graphics capture tool
- Mock KRdp server tests for CI-friendly validation