# livekit changelog > End-to-end realtime stack for connecting humans and AI - Vendor: livekit - Category: AI - Official site: https://docs.livekit.io/ - Tracked by: What's New (https://whatsnew.fyi/product/livekit) - Harvested from: GitHub (livekit/livekit) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v1.13.5 - Date: 2026-07-31 - Version: v1.13.5 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.13.5 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.13.5 - **added** — Add mock for testing region pins with API - **added** — Add country to participant closing log - **added** — Add tests for down stream packet push - **added** — Add status code for twirp request latency prometheus metric - **added** — Support more h264 profiles - **added** — Log high stream start latency - **changed** — Use simulcast constructor for VP9 if simulcasted - **changed** — Send resolved ringing timeout - **changed** — Update go deps - **changed** — Update protocol deps for logging webhook status - **changed** — Record subscribe stream start time in prometheus - **changed** — Improve counting for track publish - **fixed** — Fix padding bit in forwarded packet - **fixed** — Fix spelling - **fixed** — Do not call telemetry listener under pending track lock - **fixed** — Fix getRefLayerRTPTimestamp off-by-one that can panic on max layer index ###### Added - add mock for testing region pins with API (#4691) - Add country to participant closing log (#4693) - Tests for down stream packet push. (#4692) - Add status code for twirp request latency prometheus metric (#4621) - Support more h264 profiles (#4708) - log high stream start latency. (#4714) ###### Changed - Use simulcast constructor for VP9 if simulcasted. (#4696) - send resolved ringing timeout (#4697) - Update go deps (#4645) - protocol deps for logging webhook status (#4699) - protocol update with webhook status logging (#4700) - Record subscribe stream start time in prometheus. (#4704) - A bit better counting for track publish. (#4707) ###### Fixed - Fix padding bit in forwarded packet. (#4690) - Spelling fixes (#4698) - Do not call telemetry listener under pending track lock. (#4706) - Fix getRefLayerRTPTimestamp off-by-one that can panic on max layer index (#4712) ### v1.13.4 - Date: 2026-07-18 - Version: v1.13.4 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.13.4 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.13.4 - **added** — Add mocking function for SIP dialing methods - **added** — Add signal tests to test-server - **added** — Add option to exclude local IPv6 candidates - **added** — Add a method to get forward stats via API method - **added** — Add drop-on-close signal test scenario - **added** — Log soft validation errors - **added** — Add redaction flag in Job - **changed** — Implement simpler mock protocol - **changed** — Make IsConnectionCanceled available at LocalParticipant interface - **changed** — Update actions/checkout action to v7 - **changed** — Update protocol - **changed** — Export migration to LocalParticipant interface - **changed** — Record final RTC state as success/failure - **changed** — Omit rtx/out-of-order packets from forwarding delay measurement - **changed** — Move ForwardStats aggregation off the packet forwarding path - **changed** — Update protocol deps to get parallel exec alloc reduction - **changed** — Update pion/ice to deal with hang on close - **changed** — Add more details to unreliable data channel drop error - **changed** — Record rtc_success prom as soon as RTC connects - **changed** — Use proto logger to get named enums in the logs - **fixed** — Bound data-track buffering under downlink congestion (targetLatency) - **fixed** — Guard against nil TC qdisc stats to prevent SIGSEGV - **fixed** — Fix goroutine leak from orphaned signal relay streams ###### Added - added mocking function for SIP dialing methods (#4642) - Add signal tests to test-server (#4653) - Add option to exclude local IPv6 candidates. (#4657) - Add a method to get forward stats via API method. (#4664) - Add drop-on-close signal test scenario (#4669) - Log soft validation errors. (#4671) - add redaction flag in Job (#4650) ###### Changed - simpler mock protocol (#4641) - Make IsConnectionCanceled available at LocalParticipant interface. (#4643) - Update actions/checkout action to v7 (#4646) - Update protocol. (#4648) - Export migration to LocalParticipant interface. (#4652) - Record final RTC state as success/failure. (#4658) - Omit rtx/out-of-order packets from forwarding delay measurement. (#4659) - Move ForwardStats aggregation off the packet forwarding path (#4660) - protocol deps to get parallel exec alloc reduction (#4662) - Update pion/ice to deal with hang on close. (#4672) - Add more details to unreliable data channel drop error. (#4673) - Record `rtc_success` prom as soon as RTC connects. (#4677) - Use proto logger to get named enums in the logs. (#4679) - Propagate spreader threshold to RED receivers. (#4683) - Prefer QDisc.Stats till go-tc addresses QDisc.Stats2 parsing (#4685) - Bump protocol version to fix call to Validate. (#4686) ###### Fixed - bound data-track buffering under downlink congestion (targetLatency) (#4667) - Guard against nil TC qdisc stats to prevent SIGSEGV (#4668) - Fix goroutine leak from orphaned signal relay streams (#4674) - don't undercount data channel bitrate over idle gaps (#4676) - Fix receiver load balance threshold initialization (#4678) - rtc: guard against nil subscriber in TransportManager.HandleAnswer (#4680) - Potential fix for code scanning alert no. 42: Incorrect conversion between integer types (#4684) ### v1.13.3 - Date: 2026-07-03 - Version: v1.13.3 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.13.3 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.13.3 - **added** — Add mock API server for testing server SDKs - **added** — Support auth checks with mock server - **added** — Add data track schema metadata - **added** — Report average bitrates for WHIP ingress - **changed** — Update webrtc to fix interop issue with bundled datachannel - **changed** — Update module github.com/urfave/cli/v3 to v3.10.0 - **changed** — Use camel case log name in DataBlobKey - **fixed** — Stop WHIP session notifier when participant leaves ###### Added - feat: mock API server for testing server SDKs (#4627) - support auth checks with mock server (#4629) - Data track schema metadata (#4622) - Report average bitrates for whip ingress (#4634) ###### Changed - Update webrtc to fix interop issue with bundled datachannel (#4631) - Update module github.com/urfave/cli/v3 to v3.10.0 (#4612) - Use camel case log name in `DataBlobKey` (#4633) ###### Fixed - Stop WHIP session notifier when participant leaves (#4637) ### v1.13.2 - Date: 2026-06-27 - Version: v1.13.2 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.13.2 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.13.2 - **added** — Add Prometheus metrics for join latency and peer connection state - **added** — Preserve original expiry when refreshing token - **added** — Add grants expiry to Auth context - **added** — Add ability to run pprof on dedicated HTTP server - **added** — Add API to get latest node stats - **added** — Enforce subscription permission to data track - **added** — Implement egress v2 api - **added** — Map thread attributes from dispatch to job in agent - **added** — Log subscription limit breaches - **added** — Acquire requested video layer directly at HIGH quality by default - **added** — Report participant capabilities in ParticipantInfo - **added** — Add option to force drain rtcService/agentService connections - **added** — Add support for data blob (async participant attributes) - **changed** — Update dependencies: pion/sctp, DTLS v3.1.4, protocol - **changed** — Add RestartSessionTimer to re-anchor participant session duration in rtc - **changed** — Record more RTC cancellation points - **changed** — Cap all metadata at 512 KiB and enforce on join, agent dispatch, and embedded agents - **changed** — Tighten up publish latency stat - **changed** — Echo offered audio payload types in single-PC subscriber answer - **fixed** — Fix skipped packets accounting - **fixed** — Do not log due to negative getting interpreted as large unsigned positive - **fixed** — Do not call nil callback ###### Added - Add Prometheus metrics for join latency and peer connection state (#4574, #4616) - Preserve original expiry when refreshing token (#4580) - Add grants expiry to Auth context (#4581) - Add ability to run pprof on dedicated HTTP server (#4584) - Add API to get latest node stats (#4589) - Enforce subscription permission to data track (#4588) - egress v2 api (#4592) - agent: thread attributes map from dispatch to job (#4598) - Log subscription limit breaches (#4603) - Acquire requested video layer directly at HIGH quality by default (#4595) - Report participant capabilities in ParticipantInfo (#4606) - Add option to force drain rtcService/agentService connections (#4618) - Add support for data blob (a. k. a. async participant attributes) (#4619) ###### Changed - Update dependencies: pion/sctp, DTLS v3.1.4, protocol (#4587, #4601, #4623) - rtc: add RestartSessionTimer to re-anchor participant session duration (#4566) - Record more RTC cancellation points (#4600) - Cap all metadata at 512 KiB; enforce on join, agent dispatch, and embedded agents (#4602) - Tighten up publish latency stat (#4615) - Echo offered audio payload types in single-PC subscriber answer (#4614) ###### Fixed - Fix skipped packets accounting (#4604) - Do not log due to negative getting interpreted as large unsigned positive (#4605) - Do not call nil callback (#4607) ### v1.13.1 - Date: 2026-06-08 - Version: v1.13.1 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.13.1 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.13.1 - **removed** — Remove backwards compatibility support for TURN authentication without TTL - **added** — Report participant kind code and details - **added** — Add IsIntentionalDisconnect flag - **added** — Emit per-data-track bytes via BytesTrackStats - **added** — Track Twirp method request latency in prometheus metrics - **added** — Add configuration documentation for advertise_internal_ip and skip_external_ip_validation - **added** — Add metrics for participant active state (fully established) - **added** — Allow providing TURN secret via file - **added** — Expose TCPFallbackRTTThreshold and AllowUDPUnstableFallback via configuration - **changed** — Always enable rtx codec - **changed** — Don't require media sections when joining - **changed** — Use NACKQueueInterface type - **changed** — Split webhook-processed hook out of NewTelemetryService - **changed** — Prevent duration reporting for inactive participants - **changed** — Report participant session end time on room move - **changed** — Update mediatransportutil to get ICE candidate timeout configuration - **fixed** — Check Less and LessEq in version compare - **fixed** — Fix SIP error categorization - **fixed** — Handle nil clientInfo - **fixed** — Prevent panic from nil or illegal syncState.Subscriptions message ##### ATTENTION: This release removes backwards compatibility for TURN authentication without TTL. Please refer to change log of [1.12.0](https://github.com/livekit/livekit/releases/tag/v1.12.0) for details on changes to TURN authentication and permissions handling. It was removed in https://github.com/livekit/livekit/pull/4539. ###### Added - rtc: report participant kind code and details (#4534) - Add IsIntentionalDisconnect (#4537) - rtc: emit per-data-track bytes via BytesTrackStats (#4540) - Start tracking Twirp method request latency in prometheus too, not just in logs (#4545) - Config documentation for advertise_internal_ip and skip_external_ip_validation (#4552, #4554, #4563) - Metrics for participant active, i. e. fully established. (#4557) - turn: allow for providing secret via file (#4564) - expose TCPFallbackRTTThreshold and AllowUDPUnstableFallback via config (#4556) ###### Changed - Always enable rtx codec (#4533) - Don't require media sections when joining (#4535) - Use NACKQuueInterface type. (#4538) - Remove backwards compatibility support for TURN auth. (#4539) - telemetry: split webhook-processed hook out of NewTelemetryService (#4548) - rtc: prevent duration reporting for inactive participants (#4550) - rtc: report participant session end time on room move (#4561) - Update mediatransportutil to get ICE candidate timeout config (#4572) ###### Fixed - Check Less and LessEq in version compare. (#4532) - fix sip error categorization (#4528) - handle nil clientInfo (#4546, #4547) - Prevent panic from nil(illegal) syncState.Subscriptions message (#4560) ### v1.12.0 - Date: 2026-05-16 - Version: v1.12.0 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.12.0 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.12.0 - **added** — Support for client capabilities - **added** — Additional data tracks logging - **added** — CloseWithReason method to agent SignalConn interface - **added** — Agent environment support - **added** — Duration seconds reporting - **added** — Helper to check for agent worker endpoint - **added** — TURN permission handler to deny traffic to private IPs by default with allow_restricted_peer_cidrs configuration option - **added** — Ability to set agent job assignment URL - **added** — Expiry (TTL) to TURN passwords - **added** — AssignmentHook to AssignJob and propagate websocket write errors - **added** — Apply room tags from JWT grant room configuration - **added** — Auto-create rooms for tokens with the RoomCreate grant - **added** — Support SIP auth realm for inbound - **added** — deny_peer_cidrs configuration option for denying access to peer CIDRs - **changed** — Replace deprecated NAT1To1 with SetAddressRewriteRules in pion/ice - **changed** — Skip logging data track stats if not started - **changed** — Turn off transceiver re-use on Safari - **changed** — Rename agent environment to deployment - **fixed** — Wrap IPv6 addresses in brackets in UDP TURN URLs per RFC 3986 - **fixed** — Fix publish-only limitations being incorrectly applied to receivers - **fixed** — Fix SIP media config upgrade #### ATTENTION: This release introduces important changes to how TURN authentication and permissions are handled. These changes make the system more secure. This release maintains backwards compatibility. However, backwards compatibility will be removed in the next release. So, please plan accordingly. ###### TURN permission handling changes By default, TURN will not relay traffic to private IPs. If you need to relay traffic to private IPs, please use `allow_restricted_peer_cidrs` which is explained in config-sample.yaml and replicated below. ``` #### # list of restricted peer CIDRs (loopback, link-local (unicast, multicast), multicast, private, unspecified) to allow access to. #### # By default (i. e. empty list), all restricted peer CIDRs are denied access. #### # When not empty, only the specified CIDRs are allowed access. #### # Note that this check is applied to restricted peer CIDRs only. #### allow_restricted_peer_cidrs: #### - 10.0.0.0/8 #### - 192.168.0.0/16 ``` That list can be paired with a deny list which takes precedence if there is an overlap. ``` #### # list of peer CIDRs to deny access to. #### # This applies to all peer CIDRs, including restricted ones. #### # Deny list takes precedence over allow list. #### deny_peer_cidrs: #### - 10.0.0.0/8 #### - 192.168.0.0/16 ``` Relevant PRs: #4505 ###### TURN authentication handling changes TURN credentials now have a TTL (Time-To-Live) beyond which they are not valid to join a room. We recommend rotating your TURN authentication secrets to ensure older credentials are rendered stale and not usable. ``` #### # TTL of the TURN credentials in seconds - defaults to 300 #### ttl_seconds: 300 ``` Please note that the TTL is always used in constructing the credentials. So, a value of 0 will create credentials that expire immediately. Relevant PRs: #4505, #4515, #4524, #4526 ###### Added - add support for client capabilities (#4461) - Additional data tracks logging (#4489) - Add CloseWithReason to agent SignalConn interface (#4492) - add agent environment (#4498) - add duration seconds reporting (#4500) - add helper to check for agent worker endpoint (#4503) - test: verify upstream and downstream connection stats end-to-end (#4508) - Add TURN permission handler. (#4505) - allow setting agent job assignment url (#4512) - Add expiry to TURN password. (#4505, #4515) - add AssignmentHook to AssignJob; propagate websocket write errors (#4516) - Apply room tags from JWT grant room configuration (#4518) - feat: auto create rooms for tokens with the RoomCreate grant (#4320) - Add integration test for TURN auth failures (#4524) - Support SIP auth realm for inbound. (#4522) - Apply ttl check only when authenticate allocation creating (#4526) ###### Changed - feat(pion/ice): replace deprecated NAT1To1 with SetAddressRewriteRules (#4466) - do not log data track stats if not started (#4468) - Consolidate RTCP packets and do RTCP callback outside lock. (#4469) - Keep a shadow copy of tracks for use by different stream allocator state (#4470) - Avoid stream allocator event data cast to interface and back. (#4471) - Convert sort.Slice -> slices.SortFunc (#4472) - Turn off transceiver re-use on Safari. (#4474) - reduce some heap use in packet path by (#4478) - Close peer connection unconditionally to unblock set local/remote (#4485) - Misc optimisations. (#4490) - report all simulcast layers (#4491) - Use mediatransportutil/codec package, no functional change (#4497) - rename agent environment to deployment (#4506) - Update protocol to support SIP media config. (#4509) - update protocol for protojson (#4510) - Populate data track loggers with context (#4514) - Log large packets receive/send. (#4521) - Log details of RTCP packets. (#4525) - Create NACK tracker only once. (#4527) ###### Fixed - fix: wrap IPv6 addresses in brackets in UDP TURN URLs (RFC 3986) _[Truncated at 4000 characters — full notes: https://github.com/livekit/livekit/releases/tag/v1.12.0]_ ### v1.11.0 - Date: 2026-04-17 - Version: v1.11.0 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.11.0 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.11.0 - **added** — Embed TURN test - **added** — Log API key during worker registration - **added** — Add simple data track stats - **added** — Add Close method for UpDataTrackManager and call it on participant - **added** — Log join duration - **added** — Add subscriber stream start event notification - **changed** — Clean up logs and standardise log frequency - **changed** — Keep subscription synchronous when publisher is expected to resume - **changed** — Do not close publisher peer connection to aid migration - **changed** — Enable data tracks by default - **changed** — Pin GH commits and switch to golangci-lint - **changed** — Switch to stdlib maps and slices - **changed** — Store concrete ICE candidate for remote candidates - **fixed** — Clear track notifier observers on subscription teardown - **fixed** — Guard against timestamp inversion in RED to Opus conversion - **fixed** — Ensure participant init is correctly serialized for logging - **fixed** — Clean up data track observers on unsubscribe - **fixed** — Compute agent dispatch affinity from target load - **fixed** — Apply IPFilter when getting local IP - **fixed** — Unsubscribe from data track on close NOTE: Minor version bump that enables data tracks (https://docs.livekit.io/transport/data/data-tracks/) by default. ###### Added - Embedded turn test (#4412) - chore: log API key during worker registration (#4428) - Add some simple data track stats (#4431) - Add `Close` method for UpDataTrackManager and call it on participant (#4432) - Log join duration. (#4433) - Add subscriber stream start event notification (#4449) ###### Changed - Cleaning up some logs and standardising log frequency. (#4420) - Keep subscription synchronous when publisher is expected to resume. (#4424, #4425) - Do not close publisher peer connection to aid migration. (#4426, #4427) - Enable data tracks by default. (#4429) - chore: pin GH commits and switch to golangci-lint (#4444) - Switch to stdlib maps, slices (#4445) - Store concrete ICE candidate for remote candidates. (#4458) ###### Fixed - clear track notifier observers on subscription teardown (#4413) - Guard against timestamp inversion in RED -> Opus conversion. (#4414, #4415, #4418) - ensure participant init is correctly serialized for logging (#4417) - Clean up data track observers on unsubscribe. (#4421) - compute agent dispatch affinity from target load (#4442) - Apply IPFilter when get local ip (#4440) - Unsubscribe from data track on close (#4443) - Use Muted in TrackInfo to propagated published track muted. (#4453) - fix: limit join request and WHIP request body to http.DefaultMaxHeaderBytes (#4450) - fix publisher frame count reporting for simulcast streams (#4457) ### v1.10.1 - Date: 2026-03-30 - Version: v1.10.1 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.10.1 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.10.1 - **added** — Add packet trailer stripping support - **added** — Add path check helpers - **added** — Add deadline to DTLS connect context - **added** — Add job restart policy to agent dispatch - **changed** — Close both peer connections to aid migration - **fixed** — Fix TURN server URL - **fixed** — Fix AV1 parser overflow - **fixed** — Address malformed H264/H265 parsing issues ###### Added - add packet trailer stripping support (#4361) - Path check helpers (#4392) - add deadline to dtls connect context (#4395) - feat(agent-dispatch): add job restart policy (#4401) ###### Changed - Close both peer connections to aid migration. (#4382) ###### Fixed - Fix TURN server URL (#4389) - AV1 parser overflow fix. (#4405) - Address malformed H264/H265 parsing issues (#4407) ### v1.10.0 - Date: 2026-03-23 - Version: v1.10.0 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.10.0 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.10.0 - **added** — Add option to require media sections when participant joining - **added** — Support originating calls from custom domains - **added** — Add StopEgress function to the EgressLauncher interface - **added** — Add option to not re-use transceiver in e2ee - **added** — Add API to restart lite stats - **added** — Handle AGENT_ERROR disconnect reason - **changed** — Mark last run of grow bucket outside goroutine - **changed** — Refine ipv6 support - **changed** — Sample data send error logging - **changed** — Switch data track extension to 1-byte ID/length - **changed** — Do not kick off migration of closed participant - **changed** — Do not block all ext ID determination on stream allocator listener - **changed** — Rename log field pID to participantID - **changed** — Replace deprecated io/ioutil with io in whipservice - **changed** — Update grpc to address CVE-2026-33186 - **fixed** — Fix repair stream ID reporting for RTX pairing ##### PLEASE NOTE: The logging key for participant session ID (a.k.a participant SID) has been changed from `pID` to `participantID` in this release for the sake of clarity. Hence the minor version bump. ###### Added - Add option to require media sections when participant joining (#4347, #4354) - Support originating calls from custom domains (#4349) - Add StopEgress function to the EgressLauncher interface (#4353) - Add option to not re-use transceiver in e2ee. (#4356) - Add API to restart lite stats. (#4366, #4368) * handle AGENT_ERROR disconnect reason (#4339) ###### Changed - Mark last run of grow bucket outside goroutine. (#4348) - Refine ipv6 support (#4352) - Sample data send error logging. (#4358) - Switch data track extension to 1-byte ID/length. (#4362) - Do not kick off migration of closed participant (#4363) - Do not block all ext ID determination on stream allocator listener (#4364) - Rename log field pID to participantID (#4365) - Replace deprecated io/ioutil with io in whipservice (#4375) - Update grpc to address CVE-2026-33186 (#4381) ###### Fixed - Fix repair stream ID reporting for RTX pairing. (#4369) ### v1.9.12 - Date: 2026-03-05 - Version: v1.9.12 - Original notes: https://github.com/livekit/livekit/releases/tag/v1.9.12 - Permalink: https://whatsnew.fyi/product/livekit/releases/v1.9.12 - **added** — Add silent frame for pcmu/a - **added** — Add test to ensure agent worker errors cause disconnection - **added** — Populate client_protocol field in ParticipantInfo - **added** — Read client protocol from query param - **added** — Generate and log egressID for start egress request - **added** — Add ESP32 Client Info - **added** — Make INSTALL_PATH overridable in install script - **changed** — Defer setting clock rate in RTPStats module till codec is bound - **changed** — Wrap SIP errors for invalid argument and not found - **changed** — Ignore parse addr error when add remote candidate - **changed** — Generate config flags - **changed** — Clear reference guard when resetting signal stats - **changed** — Refresh telemetry guard on participant move - **changed** — Use separate allocation for signal stats telemetry guard - **changed** — Set up audio config in audio level module when config is updated - **changed** — Update self-hosting deployment documentation link - **changed** — Key telemetry stats worker using combination of roomID and participantID - **changed** — Implement two phase restart when doing external restart of receiver - **changed** — Send participant left event after track unpublished for moved - **fixed** — Fix receiver restart race - **fixed** — Require participant broadcast when metadata/attributes are set in token - **fixed** — Create buffer if needed when a PLI is requested - **fixed** — Do not increase max expected layer on track info update - **fixed** — Ensure publish is always on publisher peer connection - **fixed** — Add permissions to workflow to fix code scanning alert - **fixed** — Fix CodeQL reported issues - **fixed** — Protect against incorrect temporal layer - **fixed** — Do not discount packets lost on duplicate packets - **fixed** — Use ParticipantTelemetryListener of LocalParticipant - **fixed** — Fix SIP client timeout ###### Added - Add silent frame for pcmu/a (#4258) - adds a test to ensure agent worker errors cause disconnection (#4273) - Populate client_protocol field in ParticipantInfo (#4293) - Read client protocol from query param (#4294) - generate & log egressID for start egress request (#4303) - ESP32 Client Info (#4267) - feat: make INSTALL_PATH overridable in install script (#3954) ###### Changed - Defer setting clock rate in RTPStats module till codec is bound. (#4250) - Wrapping SIP errors for invalid argument and not found (#4253) - Ignore parse addr error when add remote candidate (#4264) - Generate config flags (#4268) - clear reference guard when resetting signal stats (#4279) - refresh telemetry guard on participant move (#4280) - use separate allocation for signal stats telemetry guard (#4281) - Set up audio config in audio level module when config is updated. (#4290) - Update self-hosting deployment documentation link (#4312) - Key telemetry stats worker using combination of roomID, participantID (#4323) - Two phase restart when doing external restart of receiver. (#4329) - Send participant left event after track unpublished for moved (#4334) ###### Fixed - Fix receiver restart race (#4248) - require participant broadcast when metadata/attributes are set in token (#4266) - Create buffer if needed when a PLI is requested. (#4282) - Do not increase max expected layer on track info update. (#4285) - Publish is always on publisher peer connection.(#4307) - Potential fix for code scanning alert no. 35: Workflow does not contain permissions (#4311) - Potential fix for code scanning alert no. 36: Workflow does not contain permissions (#4310) - Fix for some CodeQL reported issues (#4314) - Protect against incorrect temporal layer. (#4327) - do not discount packets lost on duplicate packets (#4333) - Use ParticipantTelemetryListener of LocalParticipant. (#4342) - Fix SIP client timeout. (#4345)