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.
This commit is contained in:
@@ -0,0 +1,293 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.3.26](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.25...rust-sdks/libwebrtc@0.3.26) - 2026-02-16
|
||||
|
||||
### Other
|
||||
|
||||
- add is_screencast to VideoSource ([#896](https://github.com/livekit/rust-sdks/pull/896))
|
||||
|
||||
## [0.3.25](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.24...rust-sdks/libwebrtc@0.3.25) - 2026-02-09
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix the 440->441 samples issue and pass a noop callback for release ([#848](https://github.com/livekit/rust-sdks/pull/848))
|
||||
|
||||
### Other
|
||||
|
||||
- Use workspace dependencies & settings ([#856](https://github.com/livekit/rust-sdks/pull/856))
|
||||
- allow apm >=10ms frames ([#843](https://github.com/livekit/rust-sdks/pull/843))
|
||||
|
||||
## [0.3.24](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.23...rust-sdks/libwebrtc@0.3.24) - 2026-01-15
|
||||
|
||||
### Other
|
||||
|
||||
- updated the following local packages: webrtc-sys
|
||||
|
||||
## [0.3.23](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.22...rust-sdks/libwebrtc@0.3.23) - 2025-12-19
|
||||
|
||||
### Fixed
|
||||
|
||||
- Exclude the desktop-capturer module link for mobile. ([#817](https://github.com/livekit/rust-sdks/pull/817))
|
||||
|
||||
## [0.3.22](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.21...rust-sdks/libwebrtc@0.3.22) - 2025-12-17
|
||||
|
||||
### Other
|
||||
|
||||
- Expose WebRTC's audio_mixer ([#806](https://github.com/livekit/rust-sdks/pull/806))
|
||||
|
||||
## [0.3.21](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.20...rust-sdks/libwebrtc@0.3.21) - 2025-12-04
|
||||
|
||||
### Other
|
||||
|
||||
- move starting/stopping GLib event loop into libwebrtc crate ([#798](https://github.com/livekit/rust-sdks/pull/798))
|
||||
- Expose desktop capturer ([#725](https://github.com/livekit/rust-sdks/pull/725))
|
||||
|
||||
## [0.3.20](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.19...rust-sdks/libwebrtc@0.3.20) - 2025-11-20
|
||||
|
||||
### Other
|
||||
|
||||
- Fix the fast path in capture_frame function, without buffering ([#778](https://github.com/livekit/rust-sdks/pull/778))
|
||||
|
||||
## [0.3.19](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.18...rust-sdks/libwebrtc@0.3.19) - 2025-10-27
|
||||
|
||||
### Other
|
||||
|
||||
- updated the following local packages: webrtc-sys
|
||||
|
||||
## [0.3.18](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.17...rust-sdks/libwebrtc@0.3.18) - 2025-10-22
|
||||
|
||||
### Other
|
||||
|
||||
- License check ([#746](https://github.com/livekit/rust-sdks/pull/746))
|
||||
|
||||
## [0.3.17](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.16...rust-sdks/libwebrtc@0.3.17) - 2025-10-13
|
||||
|
||||
### Added
|
||||
|
||||
- *(e2ee)* add data channel encryption ([#708](https://github.com/livekit/rust-sdks/pull/708))
|
||||
|
||||
### Other
|
||||
|
||||
- Enable buffer scaling ([#473](https://github.com/livekit/rust-sdks/pull/473))
|
||||
|
||||
## [0.3.16](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.15...rust-sdks/libwebrtc@0.3.16) - 2025-10-03
|
||||
|
||||
### Other
|
||||
|
||||
- updated the following local packages: webrtc-sys
|
||||
|
||||
## [0.3.15](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.14...rust-sdks/libwebrtc@0.3.15) - 2025-09-29
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix Builds/E2E Tests CI. ([#715](https://github.com/livekit/rust-sdks/pull/715))
|
||||
|
||||
## [0.3.14](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.13...rust-sdks/libwebrtc@0.3.14) - 2025-09-09
|
||||
|
||||
### Other
|
||||
|
||||
- updated the following local packages: webrtc-sys
|
||||
|
||||
## [0.3.13](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.12...rust-sdks/libwebrtc@0.3.13) - 2025-09-03
|
||||
|
||||
### Other
|
||||
|
||||
- updated the following local packages: webrtc-sys
|
||||
# Changelog
|
||||
|
||||
## [0.3.12](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.11...rust-sdks/libwebrtc@0.3.12) - 2025-06-17
|
||||
|
||||
### Other
|
||||
|
||||
- updated the following local packages: livekit-protocol, webrtc-sys
|
||||
|
||||
## [0.3.11](https://github.com/livekit/rust-sdks/compare/rust-sdks/libwebrtc@0.3.10...rust-sdks/libwebrtc@0.3.11) - 2025-06-11
|
||||
|
||||
### Fixed
|
||||
|
||||
- fix uint32 overflow ([#615](https://github.com/livekit/rust-sdks/pull/615))
|
||||
|
||||
### Other
|
||||
|
||||
- remove ([#633](https://github.com/livekit/rust-sdks/pull/633))
|
||||
- expose apm stream_delay ([#616](https://github.com/livekit/rust-sdks/pull/616))
|
||||
- Add i420_to_nv12 ([#605](https://github.com/livekit/rust-sdks/pull/605))
|
||||
- ffi-v0.13.0 ([#590](https://github.com/livekit/rust-sdks/pull/590))
|
||||
- add AudioProcessingModule ([#580](https://github.com/livekit/rust-sdks/pull/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
|
||||
```rust
|
||||
// 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](https://github.com/webrtc-sdk/webrtc/pull/224) 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
|
||||
Reference in New Issue
Block a user