Skip to content

Releases: steelbrain/RDPKit

0.3.1 - Minimum SDK bump

Choose a tag to compare

@steelbrain steelbrain released this 15 Jul 23:36
  • 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

Choose a tag to compare

@steelbrain steelbrain released this 15 Jul 20:42
  • Add server-redirection compatibility by following redirection PDUs, reconnecting with server-provided routing tokens, handling connect-time bandwidth detection, and using the required drdynvc ShowProtocol 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 RDPWireTranscript capture 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

Choose a tag to compare

@steelbrain steelbrain released this 15 Jun 22:18
  • 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 RDPFrameBenchmark tool for measuring live frame capture and decode paths.
  • Expand RDPPreflight and RDPFirstFrameCapture with 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

Choose a tag to compare

@steelbrain steelbrain released this 11 Jun 18:38

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