Skip to content

v0.2.0

Choose a tag to compare

@MarcSchlichting MarcSchlichting released this 06 Mar 05:42
· 5 commits to master since this release

v0.2.0

New Features

  • Shared stream architecture — New start_stream() / stop_stream() lifecycle replaces per-call streaming. Once a stream is started, frames(), latest_frame(), record(), and capture() all tap into the shared connection instead of creating their own.
  • stream() context manager — Convenience wrapper around start_stream() / stop_stream() for scoped usage.
  • capture() method — Single-screenshot helper that grabs the latest frame and saves it as an image.
  • start_recording() / stop_recording() — Background recording to video or image directory, running in a separate thread until explicitly stopped.
  • frames() iterator — Dedicated method for iterating decoded frames from the shared stream.
  • Auto-pairing in connect() — connect() now automatically pairs with the server if needed, removing the need to call pair() separately.
  • Windows and macOS wheel builds — CI workflows for building and publishing wheels on all three platforms.

Bug Fixes

  • Fixed auto-pair detection — Pairing status is now checked via an authenticated HTTPS request (mutual TLS) instead of the HTTP /serverinfo endpoint, which couldn't identify the client. Previously, connect() would trigger pairing on every call even for already-paired clients.
  • Fixed IDR frame requests — Resolved issues with IDR frame delivery when multiple clients connect, using a mouse-movement workaround.
  • Fixed video aspect ratio — Corrected aspect ratio distortion in recorded video output.
  • Fixed custom port handling — Non-default server ports now work correctly throughout the connection and streaming flow.
  • Fixed black-start recording — Recordings now capture the latest available frame first to avoid starting with black frames.
  • Fixed VFR recording — Video recording uses wall-clock PTS timestamps, producing correct playback timing for variable-framerate streams instead of assuming constant framerate.

Improvements

  • StreamNotActiveError exception — New exception raised when calling stream-dependent methods without an active stream, with a clear message to call start_stream() first.