Kyber 0.29.0
Kyber 0.29.0 adds an agent and heartbeat mechanism to report host availability, token exchange and renewal for authenticated connections, and a kyber:// URL scheme to launch the desktop client from a link. These features prepare Kyber for compatibility with a future management portal.
Native WebSocket support is now available in the desktop client. The WebSocket implementation has also been refactored around a multi-backend architecture, sharing the transport abstraction between browser and native implementations.
The macOS server is now fully packaged, simplifying distribution and installation. This will allow us to release a fully operational, signed package soon.
x264 now supports 4:4:4 encoding, including through the avconv backend, preserving fine colour detail in text and desktop content. The previous automatic 1920-pixel downscaling has also been removed, allowing software encoding at the source resolution.
The avconv pipeline gains a GStreamer capture wrapper, alongside hardware-device selection, frame-handling and encoding-latency improvements. Together, these changes enable more targeted optimisation for Raspberry Pi and other embedded platforms.
Changelog
- kymedia: Bump opus to 1.6.1
- Integrate kywebsocket
- kyclient: Integrate WebSocket into kymux backend
- kycontroller: Integrate WebSocket into kymux backend
- kyavservice: drop x264 force-cfr=0 workaround
- libavconv-rs: fix filtergraph heartbeat marker lost when no hook is set
- kyavservice/x264: Enable 4:4:4 support
- kyavservice/x264: Drop 1920 downscale, keep pix fmt conversion only
- kycontroller/tray: Stop repeating the same tray status log
- kymedia: fix build for gcc 16
- kymedia: Configure libavconv's FFmpeg log level via log4ky
- libkypc: Improve
Workerdrop behavior - kymux: Make protocols generic
- kyctl: Complete control-plane struct share between host and client
- kyclient: Use log4ky's user scope for the Windows log directory
- kyavservice/libavconv: Forward DXGI cursor over KyberInputServer pipe
- kymedia: Integrate various libavconv fixes
- kyavservice: Treat custom video encoder config as overrides
- kyavservice/x264: Enable 4:4:4 support on avconv backend
- kyavservice/avconv: Pick the hw encode device per encoder, not grab backend
- kyavservice/avconv: Fix yuv444 & reduce amf encode latency to match txproto
- kycontroller: Release AV subscriptions synchronously on session teardown
- kyclient,kycontroller: Misc metrics fixups
- kyavservice: Add GStreamer grab backend
- kyclient: Exit cleanly when the controller has no displays
- kycontroller/auth/oidc: Add optional audience validation to OIDC config
- vlc: Make the "Video buffer" feature work with videotoolbox
- kyclient: Fix ownership of display event arrays
- kyavservice/avconv: Fall back to a nominal frame rate on the encoder
- kyavservice/avconv: Map DRM PRIME frames to VAAPI/QSV, download for x264
- kyavservice/vaapi: Fix encode crash on discrete GPU (Intel Arc) via XCB capture
- kyctl/kyclient: Rename ConnectFailedReason variants for consistency
- kyclient,kycontroller: Move to rustls-platform-verifier 0.7
- txproto: Expose filtergraph hardware-device injection
- kyutil,kynput,kyclient: Take the host log level in the log callbacks
- kyutil,kyctl: Add the kyhub heartbeat agent
- kywebsocket,kyclient: Add tungstenite driver and non-wasm websocket support
- (web) Integrate kywebsocket
- (web) kymux: Make protocols generic
- (web) kyctl: Complete control-plane struct share between host and client
- (web) jsapi: Report AudioContext state changes to the JS listener
- (web) Fix pointer lock not engaging in cursor-hidden games
- (web) kyclient,kycontroller: Misc metrics fixups