From a3d760c0b3b0b0278609b84990caaf67d194bec5 Mon Sep 17 00:00:00 2001 From: "knope-bot[bot]" <152252888+knope-bot[bot]@users.noreply.github.com> Date: Tue, 20 Oct 2026 07:30:45 +0000 Subject: [PATCH] Release packages --- .changeset/data_stream_chunk_destinations.md | 10 --- .changeset/merge_uniffi_into_ffi.md | 43 --------- .../node_ffi_handle_finalize_after_dispose.md | 6 -- .changeset/platform_audio_empty_guid.md | 9 -- .changeset/prefix_bundled_ffmpeg_symbols.md | 9 -- .changeset/protocol_thread_schema.md | 17 ---- .changeset/rename_uniffi_packages_to_ffi.md | 26 ------ .changeset/rpc_disconnect_grace_period.md | 21 ----- .changeset/uniffi_swift_dsyms.md | 5 -- .changeset/update_zip_to_9.md | 10 --- Cargo.lock | 32 +++---- Cargo.toml | 32 +++---- libwebrtc/CHANGELOG.md | 8 ++ libwebrtc/Cargo.toml | 2 +- livekit-api/CHANGELOG.md | 39 ++++++++ livekit-api/Cargo.toml | 2 +- livekit-capture/CHANGELOG.md | 59 +++++++++++++ livekit-capture/Cargo.toml | 2 +- livekit-common/CHANGELOG.md | 39 ++++++++ livekit-common/Cargo.toml | 2 +- livekit-data-stream/CHANGELOG.md | 41 +++++++++ livekit-data-stream/Cargo.toml | 2 +- livekit-datatrack/CHANGELOG.md | 39 ++++++++ livekit-datatrack/Cargo.toml | 2 +- .../npm/darwin-arm64/package.json | 2 +- .../npm/darwin-x64/package.json | 2 +- .../npm/linux-arm64-gnu/package.json | 2 +- .../npm/linux-x64-gnu/package.json | 2 +- .../npm/win32-x64-msvc/package.json | 2 +- livekit-ffi-node-bindings/package.json | 2 +- livekit-ffi/CHANGELOG.md | 88 +++++++++++++++++++ livekit-ffi/Cargo.toml | 2 +- livekit-net/CHANGELOG.md | 34 +++++++ livekit-net/Cargo.toml | 2 +- livekit-protocol/CHANGELOG.md | 9 ++ livekit-protocol/Cargo.toml | 2 +- livekit-rpc/CHANGELOG.md | 56 ++++++++++++ livekit-rpc/Cargo.toml | 2 +- livekit-signaling/CHANGELOG.md | 39 ++++++++ livekit-signaling/Cargo.toml | 2 +- livekit-token-source/CHANGELOG.md | 34 +++++++ livekit-token-source/Cargo.toml | 2 +- livekit-token/CHANGELOG.md | 9 ++ livekit-token/Cargo.toml | 2 +- livekit/CHANGELOG.md | 59 +++++++++++++ livekit/Cargo.toml | 2 +- webrtc-sys/CHANGELOG.md | 8 ++ webrtc-sys/Cargo.toml | 2 +- webrtc-sys/build/CHANGELOG.md | 6 ++ webrtc-sys/build/Cargo.toml | 2 +- 50 files changed, 621 insertions(+), 210 deletions(-) delete mode 100644 .changeset/data_stream_chunk_destinations.md delete mode 100644 .changeset/merge_uniffi_into_ffi.md delete mode 100644 .changeset/node_ffi_handle_finalize_after_dispose.md delete mode 100644 .changeset/platform_audio_empty_guid.md delete mode 100644 .changeset/prefix_bundled_ffmpeg_symbols.md delete mode 100644 .changeset/protocol_thread_schema.md delete mode 100644 .changeset/rename_uniffi_packages_to_ffi.md delete mode 100644 .changeset/rpc_disconnect_grace_period.md delete mode 100644 .changeset/uniffi_swift_dsyms.md delete mode 100644 .changeset/update_zip_to_9.md diff --git a/.changeset/data_stream_chunk_destinations.md b/.changeset/data_stream_chunk_destinations.md deleted file mode 100644 index a87b18628..000000000 --- a/.changeset/data_stream_chunk_destinations.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -livekit-data-stream: patch -livekit: patch -livekit-capture: patch -livekit-ffi: patch -livekit-rpc: patch -livekit-uniffi: patch ---- - -Outgoing data stream chunk and trailer packets now carry the stream's destination identities. Before, only the header was targeted, so the content of a stream sent to specific participants was delivered to everyone in the room. diff --git a/.changeset/merge_uniffi_into_ffi.md b/.changeset/merge_uniffi_into_ffi.md deleted file mode 100644 index 5b60cbbf0..000000000 --- a/.changeset/merge_uniffi_into_ffi.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -livekit-ffi: major -livekit: patch -livekit-api: patch -livekit-capture: patch -livekit-common: patch -livekit-data-stream: patch -livekit-datatrack: patch -livekit-net: patch -livekit-rpc: patch -livekit-signaling: patch -livekit-token-source: patch ---- - -Merge `livekit-uniffi` into `livekit-ffi`. - -There is now one crate, one version and one release tag. The `livekit-uniffi` -crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is -preserved in git. - -The crate carries two mutually exclusive surfaces, selected by feature: - -- `room-apis` (default) is the existing protobuf / C-ABI surface, with - `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it - unchanged. -- `core-modules` is the former `livekit-uniffi` surface — access tokens, log - forwarding, data tracks, data streams v2 — and depends on none of `livekit`, - `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` - now builds `-p livekit-ffi --no-default-features --features core-modules`. - -`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records -which surface each downstream package build gets, and CI resolves its build -flags from it. - -The merge itself requires no downstream SDK changes: the UniFFI namespace is -pinned per surface and every published package name is preserved. The one -difference is the native library the crate builds, `liblivekit_uniffi` → -`liblivekit_ffi`, which is loaded by name from the generated bindings and the -Dart build hook and needs no consumer change. The package renames are a -separate change, released alongside this one. - -The UniFFI node package (`@livekit/uniffi`) is not built for now and will be -reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. diff --git a/.changeset/node_ffi_handle_finalize_after_dispose.md b/.changeset/node_ffi_handle_finalize_after_dispose.md deleted file mode 100644 index 499396eff..000000000 --- a/.changeset/node_ffi_handle_finalize_after_dispose.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -livekit-ffi: patch ---- - -Stop the Node bindings' `FfiHandle` finalizer from throwing when garbage collection runs after `livekitDispose()`, and treat handles already released by shutdown as disposed. - diff --git a/.changeset/platform_audio_empty_guid.md b/.changeset/platform_audio_empty_guid.md deleted file mode 100644 index 569ccc430..000000000 --- a/.changeset/platform_audio_empty_guid.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -libwebrtc: patch -livekit: patch -livekit-capture: patch -livekit-ffi: patch -webrtc-sys: patch ---- - -Synthesize index-based identifiers on platforms without hardware audio GUIDs and add index-based selection to PlatformAudio. diff --git a/.changeset/prefix_bundled_ffmpeg_symbols.md b/.changeset/prefix_bundled_ffmpeg_symbols.md deleted file mode 100644 index 36742a912..000000000 --- a/.changeset/prefix_bundled_ffmpeg_symbols.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -libwebrtc: patch -livekit: patch -livekit-capture: patch -livekit-ffi: patch -webrtc-sys: patch ---- - -Prefix every ffmpeg symbol bundled in the linux `libwebrtc.a` with `LK_`, so an application that also links its own FFmpeg, shared or static, no longer calls libwebrtc's copy or fails to link. diff --git a/.changeset/protocol_thread_schema.md b/.changeset/protocol_thread_schema.md deleted file mode 100644 index 60fa1c080..000000000 --- a/.changeset/protocol_thread_schema.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -livekit-protocol: patch -livekit: patch -livekit-api: patch -livekit-capture: patch -livekit-common: patch -livekit-data-stream: patch -livekit-datatrack: patch -livekit-ffi: patch -livekit-rpc: patch -livekit-signaling: patch -livekit-token: patch ---- - -`livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package -does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that -depend on it follow its bump. diff --git a/.changeset/rename_uniffi_packages_to_ffi.md b/.changeset/rename_uniffi_packages_to_ffi.md deleted file mode 100644 index 8ea3c118f..000000000 --- a/.changeset/rename_uniffi_packages_to_ffi.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -livekit-ffi: minor ---- - -Rename the published UniFFI packages to an FFI identity. - -Following the `livekit-uniffi` merge, the packages built from -`livekit-ffi/core-modules` are named after the crate that now produces them. No -compatibility aliases are published. - -| | was | now | -|---|---|---| -| Swift package / product | `LiveKitUniFFI` | `LiveKitFFI` | -| Swift FFI module | `RustLiveKitUniFFI` | `RustLiveKitFFI` | -| Maven artifact | `io.livekit:livekit-uniffi-android` | `io.livekit:livekit-ffi-android` | -| Kotlin package | `io.livekit.uniffi` | `io.livekit.ffi` | -| pub.dev package | `livekit_uniffi` | `livekit_ffi` | -| UniFFI namespace | `livekit_uniffi` | `livekit_ffi` | - -**Breaking for the Swift, Android and Flutter SDKs.** Imports, dependency -coordinates and the generated module names all change together. - -The Swift xcframework continues to be hosted at -`livekit/livekit-uniffi-xcframework`; only the package and product names inside -it change. Versions continue from the merged crate, so no published version -goes backwards within a name. diff --git a/.changeset/rpc_disconnect_grace_period.md b/.changeset/rpc_disconnect_grace_period.md deleted file mode 100644 index e8fd5200c..000000000 --- a/.changeset/rpc_disconnect_grace_period.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -livekit-rpc: patch -livekit: patch -livekit-ffi: patch -livekit-capture: patch ---- - -Stop failing an RPC call whose reply arrives just after its recipient leaves the room. - -Purging a call's pending ack and response the instant its recipient disconnects assumed that -"participant left" implies "no reply is coming". It does not: the disconnect is announced on the -signalling connection while the ack and response travel on the data channel, and nothing orders -the two. A recipient that leaves *because of* the RPC it just answered — `lk.sip.EndCall`, where -the SIP participant drops out of the room as soon as it has ended the call — produces that order -routinely, so the reply was discarded ("Response received for unexpected RPC request") and the -caller was handed `RecipientDisconnected` for a call that in fact succeeded. - -A disconnect now shortens the wait instead of ending it: the pending entries stay registered for -up to 2 more seconds, so a reply already in flight still resolves the caller, and a recipient that -really did leave without replying still fails fast rather than running out the 15s response -timeout. diff --git a/.changeset/uniffi_swift_dsyms.md b/.changeset/uniffi_swift_dsyms.md deleted file mode 100644 index d1d6afddd..000000000 --- a/.changeset/uniffi_swift_dsyms.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -livekit-ffi: patch ---- - -Embed per-slice `.dSYM` bundles in the Swift `RustLiveKitFFI.xcframework` again so Xcode archives and crash symbolication can resolve Rust frames (livekit/client-sdk-swift#1149). diff --git a/.changeset/update_zip_to_9.md b/.changeset/update_zip_to_9.md deleted file mode 100644 index 689bba7b5..000000000 --- a/.changeset/update_zip_to_9.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -webrtc-sys-build: patch -webrtc-sys: patch -libwebrtc: patch -livekit: patch -livekit-capture: patch -livekit-ffi: patch ---- - -Update `zip` to 9.0.4, as older releases have security issues and were temporarily yanked ([zip-rs/zip2#1075](https://github.com/zip-rs/zip2/issues/1075)). diff --git a/Cargo.lock b/Cargo.lock index 202b71d08..bb16ac84b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3645,7 +3645,7 @@ dependencies = [ [[package]] name = "libwebrtc" -version = "0.3.52" +version = "0.3.53" dependencies = [ "cxx", "env_logger 0.11.11", @@ -3762,7 +3762,7 @@ checksum = "11d3d7f243d5c5a8b9bb5d6dd2b1602c0cb0b9db1621bafc7ed66e35ff9fe092" [[package]] name = "livekit" -version = "0.9.5" +version = "0.9.6" dependencies = [ "anyhow", "bmrng", @@ -3797,7 +3797,7 @@ dependencies = [ [[package]] name = "livekit-api" -version = "0.9.0" +version = "0.9.1" dependencies = [ "base64 0.21.7", "chrono", @@ -3825,7 +3825,7 @@ dependencies = [ [[package]] name = "livekit-capture" -version = "0.1.5" +version = "0.1.6" dependencies = [ "bytes", "chrono", @@ -3844,7 +3844,7 @@ dependencies = [ [[package]] name = "livekit-common" -version = "0.1.5" +version = "0.1.6" dependencies = [ "bytes", "livekit-protocol", @@ -3853,7 +3853,7 @@ dependencies = [ [[package]] name = "livekit-data-stream" -version = "0.1.8" +version = "0.1.9" dependencies = [ "async-compression", "bmrng", @@ -3875,7 +3875,7 @@ dependencies = [ [[package]] name = "livekit-datatrack" -version = "0.2.3" +version = "0.2.4" dependencies = [ "anyhow", "bytes", @@ -3897,7 +3897,7 @@ dependencies = [ [[package]] name = "livekit-ffi" -version = "0.12.83" +version = "0.13.0" dependencies = [ "async-trait", "bytes", @@ -3937,7 +3937,7 @@ dependencies = [ [[package]] name = "livekit-net" -version = "0.1.3" +version = "0.1.4" dependencies = [ "async-trait", "base64 0.21.7", @@ -3956,7 +3956,7 @@ dependencies = [ [[package]] name = "livekit-protocol" -version = "0.8.1" +version = "0.8.2" dependencies = [ "pbjson", "pbjson-types", @@ -3973,7 +3973,7 @@ dependencies = [ [[package]] name = "livekit-rpc" -version = "0.1.4" +version = "0.1.5" dependencies = [ "bytes", "chrono", @@ -3990,7 +3990,7 @@ dependencies = [ [[package]] name = "livekit-signaling" -version = "0.1.6" +version = "0.1.7" dependencies = [ "async-trait", "base64 0.21.7", @@ -4014,7 +4014,7 @@ dependencies = [ [[package]] name = "livekit-token" -version = "0.3.0" +version = "0.3.1" dependencies = [ "hmac", "jsonwebtoken", @@ -4028,7 +4028,7 @@ dependencies = [ [[package]] name = "livekit-token-source" -version = "0.1.3" +version = "0.1.4" dependencies = [ "async-trait", "base64 0.21.7", @@ -8633,7 +8633,7 @@ dependencies = [ [[package]] name = "webrtc-sys" -version = "0.3.49" +version = "0.3.50" dependencies = [ "cc", "cxx", @@ -8646,7 +8646,7 @@ dependencies = [ [[package]] name = "webrtc-sys-build" -version = "0.3.19" +version = "0.3.20" dependencies = [ "anyhow", "fs2", diff --git a/Cargo.toml b/Cargo.toml index c3fad36ac..c1fd2796f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,24 +53,24 @@ license = "Apache-2.0" [workspace.dependencies] device-info = { version = "0.1.1", path = "device-info" } imgproc = { version = "0.3.20", path = "imgproc" } -libwebrtc = { version = "0.3.52", path = "libwebrtc" } -livekit = { version = "0.9.5", path = "livekit" } -livekit-api = { version = "0.9.0", path = "livekit-api" } -livekit-capture = { version = "0.1.5", path = "livekit-capture" } -livekit-ffi = { version = "0.12.83", path = "livekit-ffi" } -livekit-datatrack = { version = "0.2.3", path = "livekit-datatrack" } -livekit-signaling = { version = "0.1.6", path = "livekit-signaling" } -livekit-token = { version = "0.3.0", path = "livekit-token" } -livekit-token-source = { version = "0.1.3", path = "livekit-token-source" } -livekit-common = { version = "0.1.5", path = "livekit-common" } -livekit-data-stream = { version = "0.1.8", path = "livekit-data-stream" } -livekit-net = { version = "0.1.3", path = "livekit-net" } -livekit-protocol = { version = "0.8.1", path = "livekit-protocol" } +libwebrtc = { version = "0.3.53", path = "libwebrtc" } +livekit = { version = "0.9.6", path = "livekit" } +livekit-api = { version = "0.9.1", path = "livekit-api" } +livekit-capture = { version = "0.1.6", path = "livekit-capture" } +livekit-ffi = { version = "0.13.0", path = "livekit-ffi" } +livekit-datatrack = { version = "0.2.4", path = "livekit-datatrack" } +livekit-signaling = { version = "0.1.7", path = "livekit-signaling" } +livekit-token = { version = "0.3.1", path = "livekit-token" } +livekit-token-source = { version = "0.1.4", path = "livekit-token-source" } +livekit-common = { version = "0.1.6", path = "livekit-common" } +livekit-data-stream = { version = "0.1.9", path = "livekit-data-stream" } +livekit-net = { version = "0.1.4", path = "livekit-net" } +livekit-protocol = { version = "0.8.2", path = "livekit-protocol" } livekit-region = { version = "0.1.1", path = "livekit-region" } -livekit-rpc = { version = "0.1.4", path = "livekit-rpc" } +livekit-rpc = { version = "0.1.5", path = "livekit-rpc" } soxr-sys = { version = "0.1.3", path = "soxr-sys" } -webrtc-sys = { version = "0.3.49", path = "webrtc-sys" } -webrtc-sys-build = { version = "0.3.19", path = "webrtc-sys/build" } +webrtc-sys = { version = "0.3.50", path = "webrtc-sys" } +webrtc-sys-build = { version = "0.3.20", path = "webrtc-sys/build" } yuv-sys = { version = "0.3.15", path = "yuv-sys" } anyhow = "1.0" diff --git a/libwebrtc/CHANGELOG.md b/libwebrtc/CHANGELOG.md index 6a6225cbc..af572bc9e 100644 --- a/libwebrtc/CHANGELOG.md +++ b/libwebrtc/CHANGELOG.md @@ -139,6 +139,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - bump libwebrtc to m125 +## 0.3.53 (2026-10-20) + +### Fixes + +- Synthesize index-based identifiers on platforms without hardware audio GUIDs and add index-based selection to PlatformAudio. +- Prefix every ffmpeg symbol bundled in the linux `libwebrtc.a` with `LK_`, so an application that also links its own FFmpeg, shared or static, no longer calls libwebrtc's copy or fails to link. +- Update `zip` to 9.0.4, as older releases have security issues and were temporarily yanked ([zip-rs/zip2#1075](https://github.com/zip-rs/zip2/issues/1075)). + ## 0.3.52 (2026-10-12) ### Features diff --git a/libwebrtc/Cargo.toml b/libwebrtc/Cargo.toml index f4919e163..f67d355cc 100644 --- a/libwebrtc/Cargo.toml +++ b/libwebrtc/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "libwebrtc" -version = "0.3.52" +version = "0.3.53" edition.workspace = true homepage = "https://livekit.io" license.workspace = true diff --git a/livekit-api/CHANGELOG.md b/livekit-api/CHANGELOG.md index 49506b8c3..6b9dac519 100644 --- a/livekit-api/CHANGELOG.md +++ b/livekit-api/CHANGELOG.md @@ -7,6 +7,45 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## 0.9.1 (2026-10-20) + +### Fixes + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + ## 0.9.0 (2026-10-12) ### Breaking Changes diff --git a/livekit-api/Cargo.toml b/livekit-api/Cargo.toml index f42fafc3b..3e71f0752 100644 --- a/livekit-api/Cargo.toml +++ b/livekit-api/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "livekit-api" -version = "0.9.0" +version = "0.9.1" license.workspace = true description = "Rust Server SDK for LiveKit" edition.workspace = true diff --git a/livekit-capture/CHANGELOG.md b/livekit-capture/CHANGELOG.md index c921cabfb..ee5c5ad9b 100644 --- a/livekit-capture/CHANGELOG.md +++ b/livekit-capture/CHANGELOG.md @@ -1,3 +1,62 @@ +## 0.1.6 (2026-10-20) + +### Fixes + +- Outgoing data stream chunk and trailer packets now carry the stream's destination identities. Before, only the header was targeted, so the content of a stream sent to specific participants was delivered to everyone in the room. +- Synthesize index-based identifiers on platforms without hardware audio GUIDs and add index-based selection to PlatformAudio. +- Prefix every ffmpeg symbol bundled in the linux `libwebrtc.a` with `LK_`, so an application that also links its own FFmpeg, shared or static, no longer calls libwebrtc's copy or fails to link. +- Update `zip` to 9.0.4, as older releases have security issues and were temporarily yanked ([zip-rs/zip2#1075](https://github.com/zip-rs/zip2/issues/1075)). + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + +#### Stop failing an RPC call whose reply arrives just after its recipient leaves the room. + +Purging a call's pending ack and response the instant its recipient disconnects assumed that +"participant left" implies "no reply is coming". It does not: the disconnect is announced on the +signalling connection while the ack and response travel on the data channel, and nothing orders +the two. A recipient that leaves *because of* the RPC it just answered — `lk.sip.EndCall`, where +the SIP participant drops out of the room as soon as it has ended the call — produces that order +routinely, so the reply was discarded ("Response received for unexpected RPC request") and the +caller was handed `RecipientDisconnected` for a call that in fact succeeded. + +A disconnect now shortens the wait instead of ending it: the pending entries stay registered for +up to 2 more seconds, so a reply already in flight still resolves the caller, and a recipient that +really did leave without replying still fails fast rather than running out the 15s response +timeout. + ## 0.1.5 (2026-10-12) ### Features diff --git a/livekit-capture/Cargo.toml b/livekit-capture/Cargo.toml index 6b64e9b8d..708f1bcbb 100644 --- a/livekit-capture/Cargo.toml +++ b/livekit-capture/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "livekit-capture" description = "Ingest pixel frames or pre-encoded access units into LiveKit from any source" -version = "0.1.5" +version = "0.1.6" readme = "README.md" categories = ["multimedia::video"] license.workspace = true diff --git a/livekit-common/CHANGELOG.md b/livekit-common/CHANGELOG.md index 2f12e90a3..82a8cf50e 100644 --- a/livekit-common/CHANGELOG.md +++ b/livekit-common/CHANGELOG.md @@ -1,3 +1,42 @@ +## 0.1.6 (2026-10-20) + +### Fixes + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + ## 0.1.5 (2026-10-12) ### Fixes diff --git a/livekit-common/Cargo.toml b/livekit-common/Cargo.toml index 9716b722d..bc7679a9d 100644 --- a/livekit-common/Cargo.toml +++ b/livekit-common/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "livekit-common" description = "Common foundational types shared across LiveKit crates" -version = "0.1.5" +version = "0.1.6" readme = "README.md" license.workspace = true edition.workspace = true diff --git a/livekit-data-stream/CHANGELOG.md b/livekit-data-stream/CHANGELOG.md index 6e90275da..32128910a 100644 --- a/livekit-data-stream/CHANGELOG.md +++ b/livekit-data-stream/CHANGELOG.md @@ -1,3 +1,44 @@ +## 0.1.9 (2026-10-20) + +### Fixes + +- Outgoing data stream chunk and trailer packets now carry the stream's destination identities. Before, only the header was targeted, so the content of a stream sent to specific participants was delivered to everyone in the room. + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + ## 0.1.8 (2026-10-12) ### Fixes diff --git a/livekit-data-stream/Cargo.toml b/livekit-data-stream/Cargo.toml index 3e8eb9c14..aeb49ab33 100644 --- a/livekit-data-stream/Cargo.toml +++ b/livekit-data-stream/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "livekit-data-stream" description = "Data stream core logic for LiveKit" -version = "0.1.8" +version = "0.1.9" readme = "README.md" license.workspace = true edition.workspace = true diff --git a/livekit-datatrack/CHANGELOG.md b/livekit-datatrack/CHANGELOG.md index bbfa95c17..a62856753 100644 --- a/livekit-datatrack/CHANGELOG.md +++ b/livekit-datatrack/CHANGELOG.md @@ -1,4 +1,43 @@ # Changelog +## 0.2.4 (2026-10-20) + +### Fixes + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + ## 0.2.3 (2026-10-12) ### Fixes diff --git a/livekit-datatrack/Cargo.toml b/livekit-datatrack/Cargo.toml index bb2656741..86da16480 100644 --- a/livekit-datatrack/Cargo.toml +++ b/livekit-datatrack/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "livekit-datatrack" description = "Data track core for LiveKit" -version = "0.2.3" +version = "0.2.4" readme = "README.md" license.workspace = true edition.workspace = true diff --git a/livekit-ffi-node-bindings/npm/darwin-arm64/package.json b/livekit-ffi-node-bindings/npm/darwin-arm64/package.json index bb8d1e264..0cca38e7d 100644 --- a/livekit-ffi-node-bindings/npm/darwin-arm64/package.json +++ b/livekit-ffi-node-bindings/npm/darwin-arm64/package.json @@ -1,6 +1,6 @@ { "name": "@livekit/rtc-ffi-bindings-darwin-arm64", - "version": "0.12.83", + "version": "0.13.0", "cpu": [ "arm64" ], diff --git a/livekit-ffi-node-bindings/npm/darwin-x64/package.json b/livekit-ffi-node-bindings/npm/darwin-x64/package.json index e5192bdb4..e151a4c51 100644 --- a/livekit-ffi-node-bindings/npm/darwin-x64/package.json +++ b/livekit-ffi-node-bindings/npm/darwin-x64/package.json @@ -1,6 +1,6 @@ { "name": "@livekit/rtc-ffi-bindings-darwin-x64", - "version": "0.12.83", + "version": "0.13.0", "cpu": [ "x64" ], diff --git a/livekit-ffi-node-bindings/npm/linux-arm64-gnu/package.json b/livekit-ffi-node-bindings/npm/linux-arm64-gnu/package.json index 81dc3cd72..ad1630d5b 100644 --- a/livekit-ffi-node-bindings/npm/linux-arm64-gnu/package.json +++ b/livekit-ffi-node-bindings/npm/linux-arm64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@livekit/rtc-ffi-bindings-linux-arm64-gnu", - "version": "0.12.83", + "version": "0.13.0", "cpu": [ "arm64" ], diff --git a/livekit-ffi-node-bindings/npm/linux-x64-gnu/package.json b/livekit-ffi-node-bindings/npm/linux-x64-gnu/package.json index 17b5b583a..e8b37b873 100644 --- a/livekit-ffi-node-bindings/npm/linux-x64-gnu/package.json +++ b/livekit-ffi-node-bindings/npm/linux-x64-gnu/package.json @@ -1,6 +1,6 @@ { "name": "@livekit/rtc-ffi-bindings-linux-x64-gnu", - "version": "0.12.83", + "version": "0.13.0", "cpu": [ "x64" ], diff --git a/livekit-ffi-node-bindings/npm/win32-x64-msvc/package.json b/livekit-ffi-node-bindings/npm/win32-x64-msvc/package.json index bf80e8879..802df674d 100644 --- a/livekit-ffi-node-bindings/npm/win32-x64-msvc/package.json +++ b/livekit-ffi-node-bindings/npm/win32-x64-msvc/package.json @@ -1,6 +1,6 @@ { "name": "@livekit/rtc-ffi-bindings-win32-x64-msvc", - "version": "0.12.83", + "version": "0.13.0", "cpu": [ "x64" ], diff --git a/livekit-ffi-node-bindings/package.json b/livekit-ffi-node-bindings/package.json index 21b9cedd0..a15e8d14c 100644 --- a/livekit-ffi-node-bindings/package.json +++ b/livekit-ffi-node-bindings/package.json @@ -3,7 +3,7 @@ "description": "LiveKit RTC Node FFI bindings for internal use only", "license": "Apache-2.0", "author": "LiveKit", - "version": "0.12.83", + "version": "0.13.0", "main": "index.js", "types": "index.d.ts", "type": "commonjs", diff --git a/livekit-ffi/CHANGELOG.md b/livekit-ffi/CHANGELOG.md index 57f23afdb..c4fcf90a5 100644 --- a/livekit-ffi/CHANGELOG.md +++ b/livekit-ffi/CHANGELOG.md @@ -316,6 +316,94 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - bump libwebrtc to m125 +## 0.13.0 (2026-10-20) + +### Breaking Changes + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +### Features + +#### Rename the published UniFFI packages to an FFI identity. + +Following the `livekit-uniffi` merge, the packages built from +`livekit-ffi/core-modules` are named after the crate that now produces them. No +compatibility aliases are published. + +| | was | now | +|---|---|---| +| Swift package / product | `LiveKitUniFFI` | `LiveKitFFI` | +| Swift FFI module | `RustLiveKitUniFFI` | `RustLiveKitFFI` | +| Maven artifact | `io.livekit:livekit-uniffi-android` | `io.livekit:livekit-ffi-android` | +| Kotlin package | `io.livekit.uniffi` | `io.livekit.ffi` | +| pub.dev package | `livekit_uniffi` | `livekit_ffi` | +| UniFFI namespace | `livekit_uniffi` | `livekit_ffi` | + +**Breaking for the Swift, Android and Flutter SDKs.** Imports, dependency +coordinates and the generated module names all change together. + +The Swift xcframework continues to be hosted at +`livekit/livekit-uniffi-xcframework`; only the package and product names inside +it change. Versions continue from the merged crate, so no published version +goes backwards within a name. + +### Fixes + +- Outgoing data stream chunk and trailer packets now carry the stream's destination identities. Before, only the header was targeted, so the content of a stream sent to specific participants was delivered to everyone in the room. +- Stop the Node bindings' `FfiHandle` finalizer from throwing when garbage collection runs after `livekitDispose()`, and treat handles already released by shutdown as disposed. +- Synthesize index-based identifiers on platforms without hardware audio GUIDs and add index-based selection to PlatformAudio. +- Prefix every ffmpeg symbol bundled in the linux `libwebrtc.a` with `LK_`, so an application that also links its own FFmpeg, shared or static, no longer calls libwebrtc's copy or fails to link. +- Embed per-slice `.dSYM` bundles in the Swift `RustLiveKitFFI.xcframework` again so Xcode archives and crash symbolication can resolve Rust frames (livekit/client-sdk-swift#1149). +- Update `zip` to 9.0.4, as older releases have security issues and were temporarily yanked ([zip-rs/zip2#1075](https://github.com/zip-rs/zip2/issues/1075)). + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + +#### Stop failing an RPC call whose reply arrives just after its recipient leaves the room. + +Purging a call's pending ack and response the instant its recipient disconnects assumed that +"participant left" implies "no reply is coming". It does not: the disconnect is announced on the +signalling connection while the ack and response travel on the data channel, and nothing orders +the two. A recipient that leaves *because of* the RPC it just answered — `lk.sip.EndCall`, where +the SIP participant drops out of the room as soon as it has ended the call — produces that order +routinely, so the reply was discarded ("Response received for unexpected RPC request") and the +caller was handed `RecipientDisconnected` for a call that in fact succeeded. + +A disconnect now shortens the wait instead of ending it: the pending entries stay registered for +up to 2 more seconds, so a reply already in flight still resolves the caller, and a recipient that +really did leave without replying still fails fast rather than running out the 15s response +timeout. + ## 0.12.83 (2026-10-12) ### Features diff --git a/livekit-ffi/Cargo.toml b/livekit-ffi/Cargo.toml index 04dfe6457..deb3d4a68 100644 --- a/livekit-ffi/Cargo.toml +++ b/livekit-ffi/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "livekit-ffi" -version = "0.12.83" +version = "0.13.0" edition.workspace = true license.workspace = true description = "FFI interface for bindings in other languages" diff --git a/livekit-net/CHANGELOG.md b/livekit-net/CHANGELOG.md index feffd3c76..9c57aed4a 100644 --- a/livekit-net/CHANGELOG.md +++ b/livekit-net/CHANGELOG.md @@ -1,3 +1,37 @@ +## 0.1.4 (2026-10-20) + +### Fixes + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + ## 0.1.3 (2026-09-08) ### Features diff --git a/livekit-net/Cargo.toml b/livekit-net/Cargo.toml index 1ceaae5fe..87a82d236 100644 --- a/livekit-net/Cargo.toml +++ b/livekit-net/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "livekit-net" -version = "0.1.3" +version = "0.1.4" license.workspace = true description = "Pluggable, host-providable network transport for LiveKit signalling" edition.workspace = true diff --git a/livekit-protocol/CHANGELOG.md b/livekit-protocol/CHANGELOG.md index a35df0f18..477625393 100644 --- a/livekit-protocol/CHANGELOG.md +++ b/livekit-protocol/CHANGELOG.md @@ -62,6 +62,15 @@ ### Changed - Update protocol version to v1.31.0 +## 0.8.2 (2026-10-20) + +### Fixes + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + ## 0.8.1 (2026-10-12) ### Fixes diff --git a/livekit-protocol/Cargo.toml b/livekit-protocol/Cargo.toml index 7308308fe..e7e811030 100644 --- a/livekit-protocol/Cargo.toml +++ b/livekit-protocol/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "livekit-protocol" -version = "0.8.1" +version = "0.8.2" edition.workspace = true license.workspace = true description = "Livekit protocol and utilities for the Rust SDK" diff --git a/livekit-rpc/CHANGELOG.md b/livekit-rpc/CHANGELOG.md index e6b899302..a337af6fe 100644 --- a/livekit-rpc/CHANGELOG.md +++ b/livekit-rpc/CHANGELOG.md @@ -5,6 +5,62 @@ 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). +## 0.1.5 (2026-10-20) + +### Fixes + +- Outgoing data stream chunk and trailer packets now carry the stream's destination identities. Before, only the header was targeted, so the content of a stream sent to specific participants was delivered to everyone in the room. + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + +#### Stop failing an RPC call whose reply arrives just after its recipient leaves the room. + +Purging a call's pending ack and response the instant its recipient disconnects assumed that +"participant left" implies "no reply is coming". It does not: the disconnect is announced on the +signalling connection while the ack and response travel on the data channel, and nothing orders +the two. A recipient that leaves *because of* the RPC it just answered — `lk.sip.EndCall`, where +the SIP participant drops out of the room as soon as it has ended the call — produces that order +routinely, so the reply was discarded ("Response received for unexpected RPC request") and the +caller was handed `RecipientDisconnected` for a call that in fact succeeded. + +A disconnect now shortens the wait instead of ending it: the pending entries stay registered for +up to 2 more seconds, so a reply already in flight still resolves the caller, and a recipient that +really did leave without replying still fails fast rather than running out the 15s response +timeout. + ## 0.1.4 (2026-10-12) ### Fixes diff --git a/livekit-rpc/Cargo.toml b/livekit-rpc/Cargo.toml index 487571479..779ba8148 100644 --- a/livekit-rpc/Cargo.toml +++ b/livekit-rpc/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "livekit-rpc" description = "RPC core logic for LiveKit" -version = "0.1.4" +version = "0.1.5" readme = "README.md" license.workspace = true edition.workspace = true diff --git a/livekit-signaling/CHANGELOG.md b/livekit-signaling/CHANGELOG.md index 02404bbd7..28a57b77e 100644 --- a/livekit-signaling/CHANGELOG.md +++ b/livekit-signaling/CHANGELOG.md @@ -5,6 +5,45 @@ 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). +## 0.1.7 (2026-10-20) + +### Fixes + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + ## 0.1.6 (2026-10-12) ### Fixes diff --git a/livekit-signaling/Cargo.toml b/livekit-signaling/Cargo.toml index 88db19bd4..91d013482 100644 --- a/livekit-signaling/Cargo.toml +++ b/livekit-signaling/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "livekit-signaling" -version = "0.1.6" +version = "0.1.7" license.workspace = true description = "Internal LiveKit signalling client, blind to the transport backend" edition.workspace = true diff --git a/livekit-token-source/CHANGELOG.md b/livekit-token-source/CHANGELOG.md index 82f41c07f..ea4a2937b 100644 --- a/livekit-token-source/CHANGELOG.md +++ b/livekit-token-source/CHANGELOG.md @@ -1,3 +1,37 @@ +## 0.1.4 (2026-10-20) + +### Fixes + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + ## 0.1.3 (2026-09-08) ### Features diff --git a/livekit-token-source/Cargo.toml b/livekit-token-source/Cargo.toml index 96b2fb478..e28144e56 100644 --- a/livekit-token-source/Cargo.toml +++ b/livekit-token-source/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "livekit-token-source" description = "Token sources for the LiveKit Rust SDK" -version = "0.1.3" +version = "0.1.4" license.workspace = true edition.workspace = true repository.workspace = true diff --git a/livekit-token/CHANGELOG.md b/livekit-token/CHANGELOG.md index 57e135fdc..67b2b2057 100644 --- a/livekit-token/CHANGELOG.md +++ b/livekit-token/CHANGELOG.md @@ -5,6 +5,15 @@ 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). +## 0.3.1 (2026-10-20) + +### Fixes + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + ## 0.3.0 (2026-10-12) ### Breaking Changes diff --git a/livekit-token/Cargo.toml b/livekit-token/Cargo.toml index fa408b28b..8f51423b7 100644 --- a/livekit-token/Cargo.toml +++ b/livekit-token/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "livekit-token" -version = "0.3.0" +version = "0.3.1" license.workspace = true description = "Core logic for generating LiveKit tokens" edition.workspace = true diff --git a/livekit/CHANGELOG.md b/livekit/CHANGELOG.md index be5addc17..d8d381e2a 100644 --- a/livekit/CHANGELOG.md +++ b/livekit/CHANGELOG.md @@ -257,6 +257,65 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - bump libwebrtc to m125 +## 0.9.6 (2026-10-20) + +### Fixes + +- Outgoing data stream chunk and trailer packets now carry the stream's destination identities. Before, only the header was targeted, so the content of a stream sent to specific participants was delivered to everyone in the room. +- Synthesize index-based identifiers on platforms without hardware audio GUIDs and add index-based selection to PlatformAudio. +- Prefix every ffmpeg symbol bundled in the linux `libwebrtc.a` with `LK_`, so an application that also links its own FFmpeg, shared or static, no longer calls libwebrtc's copy or fails to link. +- Update `zip` to 9.0.4, as older releases have security issues and were temporarily yanked ([zip-rs/zip2#1075](https://github.com/zip-rs/zip2/issues/1075)). + +#### Merge `livekit-uniffi` into `livekit-ffi`. + +There is now one crate, one version and one release tag. The `livekit-uniffi` +crate, its changelog and its `livekit-uniffi/v*` tags are gone; its history is +preserved in git. + +The crate carries two mutually exclusive surfaces, selected by feature: + +- `room-apis` (default) is the existing protobuf / C-ABI surface, with + `livekit` and libwebrtc. Everything that built `livekit-ffi` before builds it + unchanged. +- `core-modules` is the former `livekit-uniffi` surface — access tokens, log + forwarding, data tracks, data streams v2 — and depends on none of `livekit`, + `libwebrtc`, `soxr-sys` or `imgproc`. What previously built `livekit-uniffi` + now builds `-p livekit-ffi --no-default-features --features core-modules`. + +`[package.metadata.platform-features]` in `livekit-ffi/Cargo.toml` records +which surface each downstream package build gets, and CI resolves its build +flags from it. + +The merge itself requires no downstream SDK changes: the UniFFI namespace is +pinned per surface and every published package name is preserved. The one +difference is the native library the crate builds, `liblivekit_uniffi` → +`liblivekit_ffi`, which is loaded by name from the generated bindings and the +Dart build hook and needs no consumer change. The package renames are a +separate change, released alongside this one. + +The UniFFI node package (`@livekit/uniffi`) is not built for now and will be +reintroduced separately; node bindings ship from `livekit-ffi-node-bindings`. + +#### `livekit-protocol` exposes the conversation schema of a thread's database, as protocol's Go package + +does: `agent::THREAD_SCHEMA_VERSION` and `agent::THREAD_SCHEMA_V1` (the SQL); the crates that +depend on it follow its bump. + +#### Stop failing an RPC call whose reply arrives just after its recipient leaves the room. + +Purging a call's pending ack and response the instant its recipient disconnects assumed that +"participant left" implies "no reply is coming". It does not: the disconnect is announced on the +signalling connection while the ack and response travel on the data channel, and nothing orders +the two. A recipient that leaves *because of* the RPC it just answered — `lk.sip.EndCall`, where +the SIP participant drops out of the room as soon as it has ended the call — produces that order +routinely, so the reply was discarded ("Response received for unexpected RPC request") and the +caller was handed `RecipientDisconnected` for a call that in fact succeeded. + +A disconnect now shortens the wait instead of ending it: the pending entries stay registered for +up to 2 more seconds, so a reply already in flight still resolves the caller, and a recipient that +really did leave without replying still fails fast rather than running out the 15s response +timeout. + ## 0.9.5 (2026-10-12) ### Fixes diff --git a/livekit/Cargo.toml b/livekit/Cargo.toml index 8aab2b884..152bed6f3 100644 --- a/livekit/Cargo.toml +++ b/livekit/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "livekit" -version = "0.9.5" +version = "0.9.6" edition.workspace = true license.workspace = true description = "Rust Client SDK for LiveKit" diff --git a/webrtc-sys/CHANGELOG.md b/webrtc-sys/CHANGELOG.md index 1f56378a8..7b20de230 100644 --- a/webrtc-sys/CHANGELOG.md +++ b/webrtc-sys/CHANGELOG.md @@ -165,6 +165,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - bump libwebrtc to m125 +## 0.3.50 (2026-10-20) + +### Fixes + +- Synthesize index-based identifiers on platforms without hardware audio GUIDs and add index-based selection to PlatformAudio. +- Prefix every ffmpeg symbol bundled in the linux `libwebrtc.a` with `LK_`, so an application that also links its own FFmpeg, shared or static, no longer calls libwebrtc's copy or fails to link. +- Update `zip` to 9.0.4, as older releases have security issues and were temporarily yanked ([zip-rs/zip2#1075](https://github.com/zip-rs/zip2/issues/1075)). + ## 0.3.49 (2026-10-12) ### Features diff --git a/webrtc-sys/Cargo.toml b/webrtc-sys/Cargo.toml index f74e359ab..63ca1fe4b 100644 --- a/webrtc-sys/Cargo.toml +++ b/webrtc-sys/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "webrtc-sys" -version = "0.3.49" +version = "0.3.50" edition.workspace = true homepage = "https://livekit.io" license.workspace = true diff --git a/webrtc-sys/build/CHANGELOG.md b/webrtc-sys/build/CHANGELOG.md index 011c48cf7..b17e69cd7 100644 --- a/webrtc-sys/build/CHANGELOG.md +++ b/webrtc-sys/build/CHANGELOG.md @@ -57,6 +57,12 @@ ### Added - bump libwebrtc to m125 +## 0.3.20 (2026-10-20) + +### Fixes + +- Update `zip` to 9.0.4, as older releases have security issues and were temporarily yanked ([zip-rs/zip2#1075](https://github.com/zip-rs/zip2/issues/1075)). + ## 0.3.19 (2026-08-25) ### Fixes diff --git a/webrtc-sys/build/Cargo.toml b/webrtc-sys/build/Cargo.toml index a54519273..f219ae4a1 100644 --- a/webrtc-sys/build/Cargo.toml +++ b/webrtc-sys/build/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "webrtc-sys-build" -version = "0.3.19" +version = "0.3.20" edition.workspace = true license.workspace = true description = "Build utilities when working with libwebrtc"