Releases: livekit/client-sdk-cpp
Release list
v1.5.0-rc2
Improvements to schema metadata API to add better error typing.
What's Changed
- Use cpp-tools by @alan-george-lk in #162
- Temporarily disable platform audio integration tests in CI by @alan-george-lk in #215
Full Changelog: v1.5.0-rc...v1.5.0-rc2
v1.5.0-rc
Pre-release of schema metadata support. Upstream dependencies and SFU support not fully complete.
What's Changed
- Bugfix: AudioFrame input sanitization by @alan-george-lk in #213
Full Changelog: v1.4.0...v1.5.0-rc
v1.4.0
Overview
Minor changes
- Brings in livekit-ffi v0.12.71 release
- Added
DegradationPreferencetoTrackPublishOptions, allowing video publishers to prioritize frame rate, resolution, or a balance of both when bandwidth is constrained. - Added the
AgentErrordisconnect reason so applications can distinguish agent failures from other room disconnections. - Examples submodule now references new PlatformAudio, TokenSource, and video frame metadata examples.
Bug fixes
- Fixed server-initiated room shutdowns that could crash or report mutex errors. Disconnects now cleanly stop subscriptions, remove FFI listeners, clear room state, and invoke onDisconnected exactly once.
What's Changed
- Minor doc cleanup by @alan-george-lk in #193
- Bump actions/setup-python from 6.2.0 to 6.3.0 by @dependabot[bot] in #189
- Add degradation preference options by @alan-george-lk in #198
- Bump dtolnay/rust-toolchain from 67ef31d5b988238dd797d409d6f9574278e20537 to fa04a1451ff1842e2626ccb99004d0195b455a88 by @dependabot[bot] in #199
- Bump actions/cache/save from 5.0.5 to 6.1.0 by @dependabot[bot] in #191
- Bump actions/cache from 5.0.5 to 6.1.0 by @dependabot[bot] in #192
- Bump actions/cache/restore from 5.0.5 to 6.1.0 by @dependabot[bot] in #190
- Add AgentError disconnect reason, docs, remove unused file by @alan-george-lk in #206
- Bump CPP example collection to latest (PlatformAudio, TokenSource, FrameMetadata) by @alan-george-lk in #204
- Bump softprops/action-gh-release from 1 to 3.0.0 by @dependabot[bot] in #182
- Move RPC one minute integration into stress test by @alan-george-lk in #211
- Bugfix: Server-initiated room disconnect shutdown fix by @alan-george-lk in #205
Full Changelog: v1.3.0...v1.4.0
v1.3.0
What's Changed
- Add support for user_data via FrameMetadata by @alan-george-lk in #184
- Add token source API for fetching LiveKit tokens by @alan-george-lk in #177
- Expose data track pipeline options by @ladvoc in #186
Full Changelog: v1.2.0...v1.3.0
v1.2.0
What's Changed
- Add remaining available RoomOptions fields by @alan-george-lk in #161
- Link checks by @alan-george-lk in #172
- Bump actions/github-script from 8.0.0 to 9.0.0 by @dependabot[bot] in #174
- Enable integration tests on Windows by @alan-george-lk in #179
- update rust hash for dynacast by @stephen-derosa in #175
- Bump dtolnay/rust-toolchain from 3c5f7ea28cd621ae0bf5283f0e981fb97b8a7af9 to 67ef31d5b988238dd797d409d6f9574278e20537 by @dependabot[bot] in #183
- Bump actions/checkout from 6.0.3 to 7.0.0 by @dependabot[bot] in #181
- Minimize docker build by @alan-george-lk in #178
Full Changelog: v1.1.1...v1.2.0
v1.1.1
What's Changed
- Fix FfiClient listener use-after-free during Room teardown by @alan-george-lk in #171
Full Changelog: v1.1.0...v1.1.1
v1.1.0
What's Changed
- Unify clang-tidy args/GitHub summary output with clang-format by @alan-george-lk in #150
- RPC V2 Tests by @stephen-derosa in #151
- Unified CI workflow for smarter PR gating by @alan-george-lk in #148
- FFI panic event support by @alan-george-lk in #152
- Use LiveKit server GitHub action by @alan-george-lk in #158
- PlatformAudio by @stephen-derosa in #140
- update rust hash for newer dashmap version, GHA to validate rust hash is released by @stephen-derosa in #159
Full Changelog: v1.0.0...v1.1.0
v1.0.0
What's Changed
- Room stats API by @alan-george-lk in #138
- ISSUE_TEMPLATE by @stephen-derosa in #147
- Room disconnect issue fix by @alan-george-lk in #146
- Breaking changes: remove deprecated code, return weak_ptr instead of raw, remove unused LogSink enum. More targetted docs. by @stephen-derosa and @alan-george-lk in #143
Full Changelog: v0.4.1...v1.0.0-rc
Public Breaking Changes
-
Removed the entire
livekit_bridgelibrary/API:liblivekit_bridge/ bridge CMake targetbridge/source, headers, tests, and README
-
Removed
TrackSource-keyed frame callback APIs:Room::setOnAudioFrameCallback(participant_identity, TrackSource, ...)Room::setOnVideoFrameCallback(participant_identity, TrackSource, ...)Room::clearOnAudioFrameCallback(participant_identity, TrackSource)Room::clearOnVideoFrameCallback(participant_identity, TrackSource)- Matching
SubscriptionThreadDispatcheroverloads
-
Removed deprecated SDK functions:
Room::ConnectRoom::room_infoAudioFrame::total_samples,sample_rate,num_channels,samples_per_channel,to_stringAudioSource::sample_rate,num_channels,ffi_handle_idParticipant::set_name,set_metadata,set_attributes,set_attribute,remove_attribute,set_kind,set_disconnect_reasonTrack::stream_state,mime_type,has_handle,ffi_handle_idResult::has_errorLocalAudioTrack::to_stringLocalVideoTrack::to_stringRemoteAudioTrack::to_stringRemoteVideoTrack::to_stringRemoteParticipant::to_stringVideoSource::ffi_handle_id
-
Signature changes:
- All method/function styling is now
camelBack()case. Prior violations of this were simply renamed, e.g.Connect()->connect(), androom_info->roomInfo() Room::e2eeManager()now returns a weak_ptrRoom::localParticipant()now returns a weak_ptrRoom:remoteParticipant()now returns a weak_ptrE2EEManager::keyProvider()now returns a weak_ptrlivekit::initialize()removed second argument and theLogSinkentirely. This was done to future proof releases. This was not decided lightly and was a result of the extensive log forwarding investigation done and minimizing breaking changes beyondv1.0.0. Context:LogSinkenum was not working as expected. If set tokCallback, it would enable FFIcapture_logs, but no support existed in the FFI client to handle those events. So functionally,kCallbackwould silently disable all Rust logs (never would reach console out or callbacks of any kind). Additionally, setting this value tokCallbackwouldn't actually forward logs to the user lambda. That only works vialivekit::setLoggingCallback
- All method/function styling is now
v1.0.0-rc
What's Changed
- Room stats API by @alan-george-lk in #138
- ISSUE_TEMPLATE by @stephen-derosa in #147
- Room disconnect issue fix by @alan-george-lk in #146
- Breaking changes: remove deprecated code, return weak_ptr instead of raw, remove unused LogSink enum. More targetted docs. by @stephen-derosa and @alan-george-lk in #143
Full Changelog: v0.4.1...v1.0.0-rc
Public Breaking Changes
-
Removed the entire
livekit_bridgelibrary/API:liblivekit_bridge/ bridge CMake targetbridge/source, headers, tests, and README
-
Removed
TrackSource-keyed frame callback APIs:Room::setOnAudioFrameCallback(participant_identity, TrackSource, ...)Room::setOnVideoFrameCallback(participant_identity, TrackSource, ...)Room::clearOnAudioFrameCallback(participant_identity, TrackSource)Room::clearOnVideoFrameCallback(participant_identity, TrackSource)- Matching
SubscriptionThreadDispatcheroverloads
-
Removed deprecated SDK functions:
Room::ConnectRoom::room_infoAudioFrame::total_samples,sample_rate,num_channels,samples_per_channel,to_stringAudioSource::sample_rate,num_channels,ffi_handle_idParticipant::set_name,set_metadata,set_attributes,set_attribute,remove_attribute,set_kind,set_disconnect_reasonTrack::stream_state,mime_type,has_handle,ffi_handle_idResult::has_errorLocalAudioTrack::to_stringLocalVideoTrack::to_stringRemoteAudioTrack::to_stringRemoteVideoTrack::to_stringRemoteParticipant::to_stringVideoSource::ffi_handle_id
-
Signature changes:
Room::e2eeManager()now returns a weak_ptrRoom::localParticipant()now returns a weak_ptrRoom:remoteParticipant()now returns a weak_ptrE2EEManager::keyProvider()now returns a weak_ptrlivekit::initialize()removed second argument and theLogSinkentirely. This was done to future proof releases. This was not decided lightly and was a result of the extensive log forwarding investigation done in #133 and upcomingv1.0.0breaking changes anyways.LogSinkenum was not working as expected. If set tokCallback, it would enable FFIcapture_logs, but no support existed in the FFI client to handle those events. So functionally,kCallbackwould silently disable all Rust logs (never would reach console out or callbacks of any kind). Additionally, setting this value tokCallbackwouldn't actually forward logs to the user lambda. That only works vialivekit::setLoggingCallback
v0.4.1
What's Changed
- Latest examples that match new method signature by @alan-george-lk in #141
- Doxygen second pass: coverage, improvements, fixes, etc. by @alan-george-lk in #142
Full Changelog: v0.4.0...v0.4.1