Fixed
- swap pub/sub track metrics (#3717)
- Fix bug with SDP rid, clear only overflow. (#3723)
- Don't check bindState on downtrack.Bind (#3726)
- Return highest available layer if requested quality is higher than max (#3729)
- Fix data packet ParticipantIdentity override logic in participant.go (#3735)
- Fix svc encoding for chrome mobile on iOS (#3751)
- offer could be nil when migrating. (#3752)
- fix(deps): update module github.com/livekit/protocol to v1.39.3 (#3733)
- bounds check layer index (#3768)
- Do not send leave if nil (to older clients) (#3817)
- Fix: RingingTimeout was being skipped for transferParticipant (#3831)
- Handle no codecs in track info (#3859)
- Fix missed unlock (#3861)
- Fix timeout handing in StopEgress (#3876)
- fix: ensure the participant kind is set on refresh tokens (#3881)
- Do not advertise NACK for RED. (#3889)
- Do not send both asb-send-time and twcc. (#3890)
- Prevent race in determining BWE type. (#3891)
Added
- Adds Devin to readme so it auto updates DeepWiki weekly (#3699)
- Allow passing extra attributes to RTC endpoint. (#3693)
- warn about credentials when used in tokens (#3705)
- protocol dep for webhook stats buckets (#3706)
- for real, pick up protocol change for webhooks queue length buckets (#3707)
- implement observability for room metrics (#3712)
- e2e reliability for data channel (#3716)
- Add simulcast support for WHIP. (#3719)
- Add Id to SDP signalling messages. (#3722)
- Set and use rid/spatial layer in TrackInfo. (#3724)
- Add log for dropping out of order reliable message (#3728)
- chore: set workerid on job creation (#3737)
- return error when moving egress/agent participant (#3741)
- SVC with RID -> spatial layer mapping (#3754)
- feat(cli-flags): add option for cpu profiling (#3765)
- Enable H265 by default (#3773)
- Signalling V2 protocol implementation start (#3794)
- Signal v2: envelope and fragments as wire message format. (#3800)
- Grouping all signal messages into participant_signal. (#3801)
- starting signaller interface (#3802)
- Signal handling interfaces and participant specific HTTP PATCH. (#3804)
- Split signal segmenter and reassembler. (#3805)
- Filling out messages unlikely to change in v2. (#3806)
- Use signalling utils from protocol (#3807)
- Validation end point for v2 signalling. (#3811)
- More v2 signalling changes (#3814)
- Minor tweak to keep RPC type at service level. (#3815)
- Add country label to edge prom stats. (#3816)
- HTTP DELETE of participant session (#3819)
- Get to the point of establishing subscriber peer connection. (#3821)
- Get to the point of connecting publisher PC and using it for async signalling (#3822)
- Support join request as proto + base64 encoded query param (#3836)
- Use wrapped join request to be able to support compressed and uncompressed. (#3838)
- handle SyncState in join request (#3839)
- Support per simulcast codec layers. (#3840)
- Support video layer mode from client and make most of the code mime aware (#3843)
- Send participant_connection_aborted when participant session is closed (#3848)
- Support G.711 A-law and U-law (#3849)
- Extract video size from media stream (#3856)
- update mediatransport util for ice port 3478 (#3877)
- Single peer connection mode (#3873)
- handle frame number wrap back in svc (#3885)
- Use departure timeout from room preset. (#3888)
- Use RequestResponse to report protocol handling errors (#3895)
Changed
- Add a trend check before declaring joint queuing region. (#3701)
- Small changes to add/use helper functions for length checks. (#3704)
- remove unused ws signal read loop (#3709)
- Flush stats on close (#3713)
- Do not require create permission for WHIP participant. (#3715)
- Create client config manager in room manager constructor. (#3718)
- Clear rids from default for layers not published. (#3721)
- Clear rids if not present in SDP. (#3731)
- Revert clearing RIDs. (#3732)
- Take ClientInfo from request. (#3738)
- remove unused code (#3740)
- reuse compiled client config scripts (#3743)
- feat(cli): update to urfave/cli/v3 (#3745)
- move egress roomID load to launcher (#3748)
- Log previous allocation to see changes. (#3759)
- Do not need to just clean up receivers. Remove that interface. (#3760)
- ClearAllReceivers interface is used to pause relay tracks. (#3761)
- Temporary change: use pre-defined rids (#3767)
- Revert "Temporary change: use pre-defined rids" (#3769)
- Log SDP rids to understand the mapping better. (#3770)
- Limit taking rids from SDP only in WHIP path. (#3771)
- Set rids for all codecs. (#3772)
- Return default layer for invalid rid + track info combination. (#3778)
- Normalize known rids. (#3779)
- forward agent id to job state (3786)
- Map ErrNoResponse to ErrRequestTimedOut in StopEgress to avoid returning 503 (#3788)
- Set participant active when peerconnection connected (#3790)
- Handle Metadata field from RoomConfig (#3798)
- [🤖 readme-manager] Update README (#3808)
- [🤖 readme-manager] Update README (#3809)
- Rename RTCRest -> WHIP (#3829)
- Delete v2 signalling (#3835)
- Clean up missed v2 pieces (#3837)
- Update go deps (#3849)
- Populate SDP cid in track info when available. (#3845)
- Log signal messages as debug. (#3851)
- Log signal messages on media node. (#3852)
- Log track settings more. (#3853)
- Update pion deps (#3863)
- Update golang Docker tag to v1.25 (#3864)
- Update module github.com/livekit/protocol to v1.40.0 (#3865)
- Remove unnecessary check (#3870)
- chunk room updates (#3880)
- Switch known rids from 012 -> 210, used by OBS. (#3882)
- init ua parser once (#3883)
- Revert to using answer for migration case. (#3884)
- Handle migration better in single peer connection case. (#3886)