Skip to main content

37 posts tagged with "releases"

View All Tags

Kyber 0.13.2

· One min read

This patch makes the server's listening port configurable via kyber_config.toml, removing the need to rely on the default port when running Kyber behind a custom network setup or alongside other services.

Changelog

  • controller: Make listening port configurable in kyber_config.toml

Kyber 0.13.1

· One min read

This patch updates TLS certificates for both the desktop and web clients, keeping secure connections valid. It also fixes a bug where TLS hostnames were not being set correctly for QUIC and WebSocket connections, which could cause certificate validation failures when connecting by hostname.

Changelog

  • libclient: Correctly set TLS hostnames for Kymux and Websocket connections
  • Update TLS certificates
  • (web) Update TLS certificates

Kyber 0.13.0

· 2 min read

⚠️ This release is not compatible with 0.12.x. Both the host and client must be updated together.

Version 0.13.0 is a major update that brings web browser support, significant under-the-hood improvements, and a range of compatibility fixes. The headline addition is the initial release of the Kyber web client: you can now connect to a Kyber host directly from a modern browser, with support for H.264 and HEVC video, audio, and the full range of input types including keyboard, mouse, and gamepad. Both WebSocket and WebTransport — with reliable, GOP-stream, and unreliable-FEC protocol modes — are supported in the browser client.

On the desktop side, the server now adds WebSocket and WebTransport as available communication backends, making it easier to bridge browser clients and desktop hosts. The streaming pipeline has been updated to FFmpeg 6.0 with refreshed dependencies. Linux support has been improved with correct handling of libinput version 1.19 and later, and Linux builds now target Debian 12 (Bookworm) as the baseline. Counter-Strike 2 can now be played through Kyber after resolving an input compatibility issue, and a visual bug showing a black cursor instead of an invisible one on certain display configurations has been fixed. The server now detects and terminates a stalled streaming process when a session ends, preventing orphaned processes from lingering in the background.

Changelog

  • Rust toolchain updated to 1.73.0
  • ci: Debian build now targets Bookworm (12.0)
  • linux: Integrate a correct support of libinput 1.19+
  • avserver: Update ffmpeg to 6.0 and update its dependencies
  • libkynput: Update to SDL 2.28.2
  • kymux: Rework the EndpointId size and generation
  • controller now kills stucked avserver when streaming session stop is requested
  • libkynput: Counter Strike 2 is now playable
  • libkynput: Fix black cursor instead of invisible cursor on VLC 3
  • controller: Add websocket and webtransport backends
  • (web) Video support (H264, HEVC)
  • (web) Audio support
  • (web) Input support: Keyboard, MouseKey, MouseWheel, MousePosition, MouseMove, Cursor, Gamepad
  • (web) Websocket backend
  • (web) Kymux backend, using Webtransport. Protocols supported: reliable, gopstream, unreliablefec

Kyber 0.12.0

· One min read

⚠️ This release is not compatible with 0.10.x or 0.11.x. Both the host and client must be updated together.

Version 0.12.0 introduces new video streaming modes that give you finer control over the trade-off between latency, reliability, and bandwidth. In addition to the standard reliable stream, you can now choose a GOP-stream mode designed for lower latency, or an unreliable FEC mode that uses forward error correction to recover lost packets without retransmission. These modes are selectable via the --protocol option on the client. A new --bitrate option has also been added, letting you set the target video bitrate directly from the command line.

On the encoding side, NVENC intra-refresh is now enabled by default for NVIDIA GPUs, which reduces periodic quality dips caused by keyframe insertion during fast motion. If you prefer the previous behaviour, it can be disabled in the configuration file.

Changelog

  • Update libvlc to kymux.15. Based on upstream 36b1865d95
  • kymux: Add new video protocols (Gopstream and UnreliableFec)
  • avserver: Enable Intra Refresh when using Nvenc. Can be disabled in kyber_config.toml
  • client: Add --bitrate option to configure the connection bitrate
  • client: Add new possible values for --protocol: kymux_reliable, kymux_gopstream, kymux_unreliable_fec

Kyber 0.11.0

· One min read

Version 0.11.0 adds one important quality-of-life feature for headless Windows host setups. When the Kidd virtual display driver is installed and the host PC has no physical monitor connected, Kyber will now automatically plug in a virtual monitor. This means the host always has an active display to stream, even in a server room or cloud environment where no screen is physically attached.

Changelog

  • Windows host: If Kidd is installed, a virtual monitor is plugged if the PC has no monitor

Kyber 0.10.1

· One min read

This patch resolves two Windows-specific input injection issues. Ctrl+Alt+Del and Win+L — both intercepted by Windows before reaching normal applications — can now be correctly sent to the host machine, restoring full remote desktop control over these system-level shortcuts.

Changelog

  • Update Rust dependencies
  • Windows host: Correctly inject Ctrl+Alt+Del
  • Windows host: Correctly inject Win+L

Kyber 0.10.0

· 2 min read

⚠️ This release contains a breaking change to the QUIC transport protocol that makes it incompatible with previous versions. Both the host and client must be updated together.

Version 0.10.0 extends the QUIC transport to support 32-bit targets, opening the door to a wider range of devices and embedded platforms. Display selection is now available from the client command line via --display_idx, so you can choose which monitor to stream when the host has multiple displays connected. The streaming pipeline now correctly handles any host display resolution rather than a fixed set, and it also adapts in real time if the host resolution changes while a session is active — useful for remote desktops where the display configuration may shift.

All Kyber components now write their logs to a dedicated log/ folder, making troubleshooting considerably easier. On Windows, the service installation has been improved: the setup script now configures autostart and firewall rules automatically, and the service no longer spawns a console window in the background during operation.

Changelog

  • kymux: The implementation is now compatible with 32 bits targets. Breaks compatibility with previous versions
  • client: Add --display_idx option to select the display to stream
  • Handle any Host display resolution
  • Handle Host dynamic resolution update
  • All components are now logging in "log/" folder
  • Windows service: No cmd.exe are spawned anymore
  • Windows service: install_service.bat now configure the service as autostart
  • Windows service: install_service.bat correctly setups firewall rules

Kyber 0.9.0

· 2 min read

Version 0.9.0 focuses on platform polish and quality-of-life improvements for both hosts and clients. On macOS, the client now handles Retina display scaling correctly, so the streamed image fills the window at the right resolution. Mouse movement on macOS has also been reworked to no longer depend on a private system framework, making it more robust and future-proof.

Cursor handling has been significantly overhauled: the log spam from repeated "SetCursor: Reject" messages is gone, and cursor shape and position tracking on Linux hosts has been updated with a newer library version. The client no longer hangs indefinitely when an error occurs during startup — it now exits cleanly with an informative message. Hostname resolution from the command line now works correctly, so you can pass a domain name instead of a raw IP address. The QUIC layer has also gained the ability to run a host and a client on the same machine, enabling local loopback streaming for testing.

Changelog

  • client: Update to winit 0.28.1
  • libkynput: Update to xcb 1.2.0. Used on Linux Host to get cursor position and shape
  • libkynput: Update to SDL 2.26.3
  • kymux: A controller and a client can now be started on the same machine
  • macOS client: Relative mouse moves can now be received without enabling IOKit
  • macOS client: Correctly scale window size on Retina displays
  • client: Hostname are now resolved when passed in the commandline
  • Client isn't stuck anymore if an error occurs at early startup
  • client: Rework cursor handling. "SetCursor: Reject" log spam should not happen anymore

Kyber 0.8.1

· One min read

This patch addresses a handful of regressions from version 0.7. Gamepad inputs are no longer forwarded when the client window loses focus, which prevents unintended input being sent to the host. Keyboard state is now properly flushed when the window loses focus or the application exits, avoiding stuck keys on the host. Two cursor-related regressions have been resolved: the cursor can once again be correctly confined within the window when it is hidden, and spurious mouse position events are no longer sent on Windows when the cursor is hidden and relative mouse movement is in use. A random crash at startup on Apple Silicon Macs caused by a parsing issue in the QUIC connection setup has also been fixed.

Changelog

  • client: Avoid to send Gamepad events when window focus is lost
  • controller: Fix keyboard flush on Window focus loss/Application exit
  • client: When the cursor is hidden, it is now impossible to go out of the window (0.7 regression)
  • Windows: If MouseMove is supported, avoid to send MousePosition when cursor is hidden (0.7.0 regression)
  • macOS M1 client: Fix a random crash at startup, during Kymux URI parsing

Kyber 0.8.0

· 2 min read

Version 0.8.0 is a significant milestone that introduces QUIC-based streaming as the default transport protocol, replacing the older RTP-based approach. The new transport layer delivers improved performance and reliability, and is now the recommended way to connect a client to a host. Alongside this, a new streaming pipeline component is now used on the host side to handle video encoding and delivery, replacing the previous implementation with one that is more flexible and maintainable.

GPU support on Windows has been extended considerably: AMD and Intel GPUs are now supported for hardware-accelerated video encoding when using the QUIC transport. A new --video_codec option lets you choose between H.264, HEVC, and AV1, giving you control over compression and compatibility depending on your hardware. For users who prefer or need RTP, it remains available via a new --protocol option, though some newer features are exclusive to the QUIC path.

The server now handles spawning and coordinating the input and streaming services directly, improving process management and stability. Communication between client and server has been moved to HTTPS for better security. A new --port option has been added so you can configure the server port from the command line.

Changelog

  • controller/libkynput: windows_sys is now used and replaces winapi
  • Rust dependencies updated
  • Rust toolchain updated to 1.65.0
  • Add avserver that now uses libtxproto
  • controller: Use libkypc to spawn and communicate inputserver and avserver
  • controller: Switch to HTTPS
  • client: Kymux (QUIC) replaces RTP as the default protocol
  • client: Add --protocol option to choose between Kymux/RTP
  • avserver: Add support of AMD and Intel GPUs on Windows. Not supported when using RTP
  • client: Add --video_codec option to choose between H264/HEVC/AV1. Not supported when using RTP
  • client: Add --port to choose the port to use to connect to a controller