Skip to main content

Kyber 0.29.0

· 3 min read

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 Worker drop 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