Files
brenden 682afacd30 Add native self-hosted instance connection to fluxer_desktop
Trimmed monorepo checkout (fluxer_desktop + packages/voice_engine_v2 +
tools/ci) with a "Connect to a Different Server" menu item and popout
that lets the desktop app switch to any self-hosted Fluxer instance,
plus fixes for well-known discovery on single-domain self-hosted
deployments and a false-positive ERR_ABORTED on same-origin client
redirects during the switch. Defaults to chat.fluxr.chat and uses an
isolated userData directory from the official build.
2026-07-01 18:22:43 -04:00

9.5 KiB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

0.3.26 - 2026-02-16

Other

  • add is_screencast to VideoSource (#896)

0.3.25 - 2026-02-09

Fixed

  • fix the 440->441 samples issue and pass a noop callback for release (#848)

Other

  • Use workspace dependencies & settings (#856)
  • allow apm >=10ms frames (#843)

0.3.24 - 2026-01-15

Other

  • updated the following local packages: webrtc-sys

0.3.23 - 2025-12-19

Fixed

  • Exclude the desktop-capturer module link for mobile. (#817)

0.3.22 - 2025-12-17

Other

  • Expose WebRTC's audio_mixer (#806)

0.3.21 - 2025-12-04

Other

  • move starting/stopping GLib event loop into libwebrtc crate (#798)
  • Expose desktop capturer (#725)

0.3.20 - 2025-11-20

Other

  • Fix the fast path in capture_frame function, without buffering (#778)

0.3.19 - 2025-10-27

Other

  • updated the following local packages: webrtc-sys

0.3.18 - 2025-10-22

Other

  • License check (#746)

0.3.17 - 2025-10-13

Added

  • (e2ee) add data channel encryption (#708)

Other

  • Enable buffer scaling (#473)

0.3.16 - 2025-10-03

Other

  • updated the following local packages: webrtc-sys

0.3.15 - 2025-09-29

Fixed

  • fix Builds/E2E Tests CI. (#715)

0.3.14 - 2025-09-09

Other

  • updated the following local packages: webrtc-sys

0.3.13 - 2025-09-03

Other

  • updated the following local packages: webrtc-sys

Changelog

0.3.12 - 2025-06-17

Other

  • updated the following local packages: livekit-protocol, webrtc-sys

0.3.11 - 2025-06-11

Fixed

  • fix uint32 overflow (#615)

Other

  • remove (#633)
  • expose apm stream_delay (#616)
  • Add i420_to_nv12 (#605)
  • ffi-v0.13.0 (#590)
  • add AudioProcessingModule (#580)

[0.3.10] - 2025-02-05

Fixed

  • Fix build issue

[0.3.9] - 2025-01-17

Added

  • Expose DataChannel.bufferedAmount property

[0.3.8] - 2024-12-14

Added

  • bump libwebrtc to m125

0.3.35 (2026-05-29)

Fixes

  • Add native video pipeline timing instrumentation for local video measurements, exposing local publish and subscribe timing through async streams and subscriber overlay GPU upload and receive-to-GPU latency metrics through explicit timing observers.

0.3.34 (2026-05-21)

Fixes

feat: add Android application context initialization for PlatformAudio support.

Android requires ContextUtils.initialize(applicationContext) before WebRTC audio components can be created. This change:

  • Adds livekit_ffi_initialize_android_context() C FFI function for Unity and other FFI consumers
  • Uses CreateAndroidAudioDeviceModule() instead of generic CreateAudioDeviceModule() on Android
  • Handles empty device GUIDs on Android (falls back to index 0)
  • Documents Android-specific limitations: single default device, no app-level device selection

Platform notes:

  • Android device enumeration returns only one "default" device with empty name/GUID
  • Audio routing (speaker/earpiece/Bluetooth) is controlled by Android's AudioManager, not WebRTC

0.3.33 (2026-05-14)

Fixes

  • feat: add scalability mode for AV1/VP9. - #1076 (@cloudwebrtc)
  • Add LIVEKIT_PREFERRED_HW_ENCODER to prefer nvenc or vaapi hardware video encoding when both are available.
  • Relocate unrelated types out of livekit-protocol

Get WebRTC ADM into Rust - #1037 (@xianshijing-lk)

This PR introduces platform audio device management via WebRTC's Audio Device Module (ADM).

Features

  • ADM Proxy: New AdmProxy class that switches between Dummy ADM (synthetic mode) and Platform ADM (real audio I/O)
  • PlatformAudio API: High-level Rust API for microphone capture and speaker playout with AEC/AGC/NS
  • Device enumeration: List and select recording/playout devices by index or GUID
  • Mode switching: Seamlessly switch between synthetic mode (FFI callbacks) and platform mode (native speakers) while audio is active
  • FFI platform audio support: Expose platform audio device enumeration and selection through livekit-ffi
  • Audio processing: Configure echo cancellation, noise suppression, and auto gain control with platform-specific defaults (hardware on iOS, software elsewhere)

Audio Modes

Mode Recording Playout Use Case
Synthetic NativeAudioSource Dummy ADM + FFI Unity audio, agents
Platform Platform ADM mic Platform ADM speakers VoIP with AEC

API

// Create PlatformAudio for microphone/speaker access
let audio = PlatformAudio::new()?;

// Enumerate and select devices
for i in 0..audio.recording_devices() as u16 {
    println!("Mic {}: {}", i, audio.recording_device_name(i));
}
audio.set_recording_device(0)?;

// Create audio track for publishing
let track = LocalAudioTrack::create_audio_track("mic", audio.rtc_source());

0.3.32 (2026-05-11)

Fixes

  • Upgrade protocol to v1.45.8

0.3.31 (2026-05-10)

Fixes

  • Fix missing libwebrtc.jar for Android builds, harden build scripts
  • fix race in download_webrtc to reduce flaky build - #1047 (@hechen-eng)
  • Improve WebRTC build scripts and add external_audio_source patch - #1053 (@xianshijing-lk)

0.3.30 (2026-04-23)

Features

Add support for frame level packet trailer

##890 by @chenosaurus

  • Add support to attach/parse frame level timestamps & frame ID to VideoTracks as a custom payload trailer.
  • Breaking change in VideoFrame API, must include frame_metadata or use VideoFrame::new().

0.3.29 (2026-04-02)

Features

chore: upgrade libwebrtc to m144.

##965 by @cloudwebrtc

Fixes

use the bounded buffer for video stream

##956 by @xianshijing-lk

Before this PR, it uses an unbounded buffer for video stream, that will cause multiple problems: 1, video will be lagged behind if rendering is slow or just wake up from background 2, it will be out of sync with audio

This PRs provides options to set a bounded buffer for video stream, and use 1 buffer as the default option.

0.3.28 (2026-03-31)

Fixes

  • Upgrade to thiserror 2

fix: fix unavailable sem symbol for Linux aarch64.

##975 by @cloudwebrtc

0.3.27 (2026-03-22)

Features

E2EE: allow setting key_ring_size and key_derivation_algorithm, update webrtc to m144

##921 by @onestacked

This PR uses this webrtc-sdk PR to configure the KDF.

I've tested this with https://codeberg.org/esoteric_programmer/matrix-jukebox and it is compatible with Element Call.

Fixed: https://github.com/livekit/rust-sdks/issues/796

Fixes

  • Fix H.264 codec matching

add bounded buffer to audio_stream, and use 10 frames as the default

##945 by @xianshijing-lk

fix clang build issue from zed patches (#949)

##950 by @cloudwebrtc

  • webrtc-sys: Use clang instead of gcc

  • Debug CI output for aarch64-linux

  • ci: Install lld for aarch64-linux FFI builders

  • webrtc-sys: Disable CREL