Repository navigation
Release packages - #1362
Merged
Merged
Release packages#1362
Conversation
knope-bot
Bot
force-pushed
the
knope/release
branch
2 times, most recently
from
August 27, 2026 19:36
3840927 to
f03216d
Compare
knope-bot
Bot
force-pushed
the
knope/release
branch
2 times, most recently
from
August 28, 2026 22:44
72c4137 to
065c3d5
Compare
knope-bot
Bot
force-pushed
the
knope/release
branch
from
August 31, 2026 16:01
065c3d5 to
592ca1f
Compare
knope-bot
Bot
force-pushed
the
knope/release
branch
3 times, most recently
from
September 1, 2026 02:38
a96ef5b to
abe5c97
Compare
Contributor
There was a problem hiding this comment.
Note
This report is out of date. Scroll down for Devin Review's latest report on this PR.
Devin Review found 1 new potential issue.
⚠️ 1 issue in files not directly in the diff
⚠️ FFI clients lose network type
When Chromium reports networkType, network_type captures it only in Rust. FFI conversions discard it, so foreign clients never receive the released field.
1 flag not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)
knope-bot
Bot
force-pushed
the
knope/release
branch
2 times, most recently
from
September 1, 2026 19:33
b6b391c to
c5bcc04
Compare
knope-bot
Bot
force-pushed
the
knope/release
branch
8 times, most recently
from
September 8, 2026 15:56
cfc0f95 to
c3c1047
Compare
alan-george-lk
approved these changes
Sep 8, 2026
knope-bot
Bot
force-pushed
the
knope/release
branch
from
September 8, 2026 17:01
c3c1047 to
5191131
Compare
pblazej
added a commit
to livekit/client-sdk-swift
that referenced
this pull request
Oct 23, 2026
`livekit-net` does not include its own WebSocket and HTTP clients. The host app must supply them. This PR gives `livekit-net` the existing `WebSocket` and `HTTP` stack of the SDK, through an adapter of about 180 lines. The SDK does not get a second `URLSession` implementation. The Rust side uses the same session as the Swift side, so it gets the same behavior. That includes the `.callSignaling` QoS, multipath handover, and the TLS workaround for the iOS 26 simulator. Changes: - Add `Sources/LiveKit/Support/Network/RustTransport.swift`. It calls `setWsClient(c:)` and `setHttpClient(c:)` from LiveKitFFI one time, on first access. `ConnectionDependencies.init` triggers it, before any signaling starts. - Send every header that `livekit-net` gives for a WebSocket upgrade. If a header name repeats, the request keeps all of its values. - Keep the HTTP status when the server rejects a WebSocket upgrade. `livekit-net` returns this status as `TransportError::Http`, and `livekit-signaling` maps it to `SignalError::Handshake`. A 404 status starts the fallback from the v1 path to the v0 path. - Reject an `HttpMethod` case that this SDK does not know with `TransportError.Other`. Before this change, the adapter sent such a request as GET. The `RustTransportTests` suite goes from Rust back through the FFI. It uses the `self_test_*` exports of `livekit-net` against a live `livekit-server`. No test uses a mock. Local results on macOS, with `livekit-server` 1.13.7 started as `livekit-server --dev` and `enable_participant_data_blob: true`: - `swift test --no-parallel --filter RustTransportTests`: all 14 tests (24 test cases) passed. - `swift test --no-parallel --filter LiveKitCoreTests`: 580 of 588 tests passed, 0 failed, and 8 skipped. The skipped tests are in `CooperativePoolBlockingTests`, which skips them by design. - `swiftlint` and `swiftformat --lint` found no issues in the changed files. This PR uses the LiveKitFFI 0.13.1 pin from main and does not change a package file. LiveKitFFI 0.13.1 contains the `livekit-net` bindings in `livekit_net.swift`. The earlier blocker, livekit/rust-sdks#1362, merged on 2026-09-08. --------- Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: omnigent <noreply@omnigent.ai>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Important
Merging this pull request will create these releases
livekit-datatrack 0.1.15 (2026-09-08)
Features
Fixes
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocollivekit-uniffi 0.1.10 (2026-09-08)
Features
Fixes
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocolself_test_http_get/self_test_ws_echo/has_http_client/has_ws_clientUniFFI exports so foreign hosts can exercise the transport seam end-to-end.livekit-token-source 0.1.3 (2026-09-08)
Features
Fixes
livekit-protocol 0.7.13 (2026-09-08)
Features
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocollivekit-common 0.1.3 (2026-09-08)
Fixes
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocollivekit-signaling 0.1.1 (2026-09-08)
Features
Fixes
Moves the signalling client into a new
livekit-signalingcrate. livekit-apire-exports it under the historical
livekit_api::signal_clientpath, now markeddeprecated: it is internal SDK API, and dependents should use livekit-signaling
directly. livekit-api no longer depends on livekit-net.
Also drops two dependencies that were declared but never used:
scopeguardandbytes.livekit 0.9.0 (2026-09-08)
Breaking Changes
Fixes
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocolself_test_http_get/self_test_ws_echo/has_http_client/has_ws_clientUniFFI exports so foreign hosts can exercise the transport seam end-to-end.Make AdmProxy worker-thread-affine: all platform ADM access now happens on the WebRTC worker thread, matching the ADM threading contract.
platform_audioexample exercising the PlatformAudio API and the worker-thread marshaling.Add agent guidance for detecting and preventing memory-lifecycle regressions in
Rust, FFI, and native WebRTC code.
Close peer connections before awaiting signal teardown
SessionInner::closereleased the peer connections only after two awaits that can blockindefinitely, so cancelling
close()— for example by wrapping it in a timeout — left thetransports open and their ICE UDP sockets bound for the lifetime of the process. Long-lived
clients eventually exhausted their file descriptors. The transports are now closed before
the first await, which makes the teardown safe to cancel.
Moves the internal region-discovery cache into a new
livekit-regioncrate. Nopublic API or behaviour change.
Moves the signalling client into a new
livekit-signalingcrate. livekit-apire-exports it under the historical
livekit_api::signal_clientpath, now markeddeprecated: it is internal SDK API, and dependents should use livekit-signaling
directly. livekit-api no longer depends on livekit-net.
Also drops two dependencies that were declared but never used:
scopeguardandbytes.Fix CUDA and FFI resource cleanup during SDK shutdown.
NVIDIA encoder and decoder factories now share a reference-counted CUDA context
and destroy it when the final factory is dropped. FFI shutdown now releases
leftover handles one at a time so nested
drop_handlecalls do not re-enterDashMap::clear(). Adds regression coverage for FFI-handle, watcher, andconfiguration cleanup during disposal.
Expose network_type on IceCandidateStats
Chromium's local
RTCIceCandidateStatscarries a non-standardnetworkTypefield (WiFi,cellular, ethernet, etc.), but
IceCandidateStatshad no place to put it, so it was silentlydropped during
get_stats()deserialization. Addsnetwork_type: Option<String>to the struct;non-breaking since it already derives
#[serde(default)].Fix room-session and data-channel leaks across connect/disconnect cycles.
The E2EE manager callback now captures
RoomSessionweakly so the session candrop after disconnect. Data-channel observer callbacks are cleared during RTC
teardown so the observer/callback cycle cannot keep peer connections alive.
Adds regression coverage for room-session destruction and data-channel callback
cleanup.
Fix native video-source lifecycle and NVENC initialization failure handling.
The raw-video keepalive task now uses a weak liveness check and defers its
black I420 buffer allocation until source liveness is confirmed, so dropping
an unused source releases its resources.
nvEncInitializeEncoderfailures nowpropagate instead of leaving the encoder half-initialized.
livekit-ffi 0.12.77 (2026-09-08)
Features
Fixes
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocolself_test_http_get/self_test_ws_echo/has_http_client/has_ws_clientUniFFI exports so foreign hosts can exercise the transport seam end-to-end.Make AdmProxy worker-thread-affine: all platform ADM access now happens on the WebRTC worker thread, matching the ADM threading contract.
platform_audioexample exercising the PlatformAudio API and the worker-thread marshaling.Add agent guidance for detecting and preventing memory-lifecycle regressions in
Rust, FFI, and native WebRTC code.
Close peer connections before awaiting signal teardown
SessionInner::closereleased the peer connections only after two awaits that can blockindefinitely, so cancelling
close()— for example by wrapping it in a timeout — left thetransports open and their ICE UDP sockets bound for the lifetime of the process. Long-lived
clients eventually exhausted their file descriptors. The transports are now closed before
the first await, which makes the teardown safe to cancel.
Moves the internal region-discovery cache into a new
livekit-regioncrate. Nopublic API or behaviour change.
Moves the signalling client into a new
livekit-signalingcrate. livekit-apire-exports it under the historical
livekit_api::signal_clientpath, now markeddeprecated: it is internal SDK API, and dependents should use livekit-signaling
directly. livekit-api no longer depends on livekit-net.
Also drops two dependencies that were declared but never used:
scopeguardandbytes.Fix CUDA and FFI resource cleanup during SDK shutdown.
NVIDIA encoder and decoder factories now share a reference-counted CUDA context
and destroy it when the final factory is dropped. FFI shutdown now releases
leftover handles one at a time so nested
drop_handlecalls do not re-enterDashMap::clear(). Adds regression coverage for FFI-handle, watcher, andconfiguration cleanup during disposal.
Expose network_type on IceCandidateStats
Chromium's local
RTCIceCandidateStatscarries a non-standardnetworkTypefield (WiFi,cellular, ethernet, etc.), but
IceCandidateStatshad no place to put it, so it was silentlydropped during
get_stats()deserialization. Addsnetwork_type: Option<String>to the struct;non-breaking since it already derives
#[serde(default)].Fix room-session and data-channel leaks across connect/disconnect cycles.
The E2EE manager callback now captures
RoomSessionweakly so the session candrop after disconnect. Data-channel observer callbacks are cleared during RTC
teardown so the observer/callback cycle cannot keep peer connections alive.
Adds regression coverage for room-session destruction and data-channel callback
cleanup.
Fix native video-source lifecycle and NVENC initialization failure handling.
The raw-video keepalive task now uses a weak liveness check and defers its
black I420 buffer allocation until source liveness is confirmed, so dropping
an unused source releases its resources.
nvEncInitializeEncoderfailures nowpropagate instead of leaving the encoder half-initialized.
livekit-net 0.1.3 (2026-09-08)
Features
Fixes
self_test_http_get/self_test_ws_echo/has_http_client/has_ws_clientUniFFI exports so foreign hosts can exercise the transport seam end-to-end.livekit-data-stream 0.1.4 (2026-09-08)
Fixes
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocollibwebrtc 0.3.47 (2026-09-08)
Features
Expose network_type on IceCandidateStats
Chromium's local
RTCIceCandidateStatscarries a non-standardnetworkTypefield (WiFi,cellular, ethernet, etc.), but
IceCandidateStatshad no place to put it, so it was silentlydropped during
get_stats()deserialization. Addsnetwork_type: Option<String>to the struct;non-breaking since it already derives
#[serde(default)].Fixes
Make AdmProxy worker-thread-affine: all platform ADM access now happens on the WebRTC worker thread, matching the ADM threading contract.
platform_audioexample exercising the PlatformAudio API and the worker-thread marshaling.Add agent guidance for detecting and preventing memory-lifecycle regressions in
Rust, FFI, and native WebRTC code.
Fix CUDA and FFI resource cleanup during SDK shutdown.
NVIDIA encoder and decoder factories now share a reference-counted CUDA context
and destroy it when the final factory is dropped. FFI shutdown now releases
leftover handles one at a time so nested
drop_handlecalls do not re-enterDashMap::clear(). Adds regression coverage for FFI-handle, watcher, andconfiguration cleanup during disposal.
Fix room-session and data-channel leaks across connect/disconnect cycles.
The E2EE manager callback now captures
RoomSessionweakly so the session candrop after disconnect. Data-channel observer callbacks are cleared during RTC
teardown so the observer/callback cycle cannot keep peer connections alive.
Adds regression coverage for room-session destruction and data-channel callback
cleanup.
Fix native video-source lifecycle and NVENC initialization failure handling.
The raw-video keepalive task now uses a weak liveness check and defers its
black I420 buffer allocation until source liveness is confirmed, so dropping
an unused source releases its resources.
nvEncInitializeEncoderfailures nowpropagate instead of leaving the encoder half-initialized.
webrtc-sys 0.3.44 (2026-09-08)
Features
Fixes
Make AdmProxy worker-thread-affine: all platform ADM access now happens on the WebRTC worker thread, matching the ADM threading contract.
platform_audioexample exercising the PlatformAudio API and the worker-thread marshaling.Add agent guidance for detecting and preventing memory-lifecycle regressions in
Rust, FFI, and native WebRTC code.
Fix CUDA and FFI resource cleanup during SDK shutdown.
NVIDIA encoder and decoder factories now share a reference-counted CUDA context
and destroy it when the final factory is dropped. FFI shutdown now releases
leftover handles one at a time so nested
drop_handlecalls do not re-enterDashMap::clear(). Adds regression coverage for FFI-handle, watcher, andconfiguration cleanup during disposal.
Fix native video-source lifecycle and NVENC initialization failure handling.
The raw-video keepalive task now uses a weak liveness check and defers its
black I420 buffer allocation until source liveness is confirmed, so dropping
an unused source releases its resources.
nvEncInitializeEncoderfailures nowpropagate instead of leaving the encoder half-initialized.
livekit-region 0.1.1 (2026-09-08)
Fixes
Moves the internal region-discovery cache into a new
livekit-regioncrate. Nopublic API or behaviour change.
livekit-api 0.7.0 (2026-09-08)
Breaking Changes
Fixes
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocolself_test_http_get/self_test_ws_echo/has_http_client/has_ws_clientUniFFI exports so foreign hosts can exercise the transport seam end-to-end.Moves the internal region-discovery cache into a new
livekit-regioncrate. Nopublic API or behaviour change.
Moves the signalling client into a new
livekit-signalingcrate. livekit-apire-exports it under the historical
livekit_api::signal_clientpath, now markeddeprecated: it is internal SDK API, and dependents should use livekit-signaling
directly. livekit-api no longer depends on livekit-net.
Also drops two dependencies that were declared but never used:
scopeguardandbytes.livekit-token 0.1.2 (2026-09-08)
Fixes
PASSTHROUGHencoding preset and remove the unusedUpdateEgressRequestfrom the generated protocol