# Changelog This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [1.5.1] - 2023-11-09 Support for the Agent framework. ### Added - PSRPC based room and participant service. disabled by default (#2171 #2205) - Add configuration to limit MaxBufferedAmount for data channel (#2170) - Agent framework worker support (#2203 #2227 #2230 #2231 #2232) ### Fixed - Fixed panic in StreamTracker when SVC is used (#2147) - fix CreateEgress not completing (#2156) - Do not update highest time on padding packet. (#2157) - Clear flags in packet metadata cache before setting them. (#2160) - Drop not relevant packet only if contiguous. (#2167) - Fixed edge cases in SVC codec support (#2176 #2185 #2191 #2196 #2197 #2214 #2215 #2216 #2218 #2219) - Do not post to closed channels. (#2179) - Only launch room egress once (#2175) - Remove un-preferred codecs for android firefox (#2183) - Fix pre-extended value on wrap back restart. (#2202) - Declare audio inactive if stale. (#2229) ### Changed - Defer close of source and sink to prevent error logs. (#2149) - Continued AV Sync improvements (#2150 #2153) - Egress store/IO cleanup (required for Egress 1.8.0) (#2152) - More fine grained filtering NACKs after a key frame. (#2159) - Don't filter out ipv6 address for client don't support prflx over relay (#2193) - Disable h264 for android firefox (#2190) - Do not block on down track close with flush. (#2201) - Separate publish and subscribe enabled codecs for finer grained control. (#2217) - improve participant hidden (#2220) - Reject migration if codec mismatch with published tracks (#2225) ## [1.5.0] - 2023-10-15 ### Added - Add option to issue full reconnect on data channel error. (#2026) - Support non-SVC AV1 track publishing (#2030) - Add batch i/o to improve throughput (#2033) - Integrate updated TWCC responder (#2038) - Allow RoomService.SendData to use participant identities (#2051 #2058) - Support for Participant Egress (#2070) - Add max playout delay config (#2089) - Enable SVC codecs by default (#2109) - Add SyncStreams flag to Room, protocol 10 (#2110) ### Fixed - Unlock pendingTracksLock when mid is empty (#1994) - Do not offer H.264 high profile in subscriber offer, fixes negotiation failures (#1997) - Prevent erroneous stream pause. (#2008) - Handle duplicate padding packet in the up stream. (#2012) - Do not process packets not processed by RTPStats. (#2015) - Adjust extended sequence number to account for dropped packets (#2017) - Do not force reconnect on resume if there is a pending track (#2081) - Fix out-of-range access. (#2082) - Start key frame requester on start. (#2111) - Handle RED extended sequence number. (#2123) - Handle playoutDelay for Firefox (#2135) - Fix ICE connection fallback (#2144) ### Changed - Drop padding only packets on publisher side. (#1990) - Do not generate a stream key for URL pull ingress (#1993) - RTPStats optimizations and improvements (#1999 #2000 #2001 #2002 #2003 #2004 #2078) - Remove sender report warp logs. (#2007) - Don't create new slice when return broadcast downtracks (#2013) - Disconnect participant when signal proxy is closed (#2024) - Use random NodeID instead of MAC based (#2029) - Split RTPStats into receiver and sender. (#2055) - Reduce packet meta data cache (#2073 #2078) - Reduce ghost participant disconnect timeout (#2077) - Per-session TURN credentials (#2080) - Use marshal + unmarshal to ensure unmarshallable fields are not copied. (#2092) - Allow playout delay even when sync stream isn't used. (#2133) - Increase accuracy of delay since last sender report. (#2136) ## [1.4.5] - 2023-08-22 ### Added - Add ability to roll back video layer selection. (#1871) - Allow listing ingress by id (#1874) - E2EE trailer for server injected packets. (#1908) - Add support for ingress URL pull (#1938 #1939) - (experimental) Add control of playout delay (#1838 #1930) - Add option to advertise external ip only (#1962) - Allow data packet to be sent to participants by identity (#1982) ### Fixed - Fix RTC IP when binding to 0.0.0.0 (#1862) - Prevent anachronous sample reading in connection stats (#1863) - Fixed resubscribe race due to desire changed before cleaning up (#1865) - Fixed numPublisher computation by marking dirty after track published changes (#1878) - Attempt to avoid out-of-order max subscribed layer notifications. (#1882) - Improved packet loss handling for SVC codecs (#1912 ) - Frame integrity check for SVC codecs (#1914) - Issue full reconnect if subscriber PC is closed on ICERestart (#1919) - Do not post max layer event for audio. (#1932) - Never use dd tracker for non-svc codec (#1952) - Fix race condition causing new participants to have stale room metadata (#1969) - Fixed VP9 handling for non-SVC content. (#1973) - Ensure older session does not clobber newer session. (#1974) - Do not start RTPStats on a padding packet. (#1984) ### Changed - Push track quality to poor on a bandwidth constrained pause (#1867) - AV sync improvements (#1875 #1892 #1944 #1951 #1955 #1956 #1968 #1971 #1986) - Do not send unnecessary room updates when content isn't changed (#1881) - start reading signal messages before session handler finishes (#1883) - changing key file permissions control to allow group readable (#1893) - close disconnected participants when signal channel fails (#1895) - Improved stream allocator handling during transitions and reallocation. (#1905 #1906) - Stream allocator tweaks to reduce re-allocation (#1936) - Reduce NACK traffic by delaying retransmission after first send. (#1918) - Temper stream allocator more to avoid false negative downgrades (#1920) ## [1.4.4] - 2023-07-08 ### Added - Add dependency descriptor stream tracker for svc codecs (#1788) - Full reconnect on publication mismatch on resume. (#1823) - Pacer interface in down stream path. (#1835) - retry egress on timeout/resource exhausted (#1852) ### Fixed - Send Room metadata updates immediately after update (#1787) - Do not send ParticipantJoined webhook if connection was resumed (#1795) - Reduce memory leaks by avoiding references in closure. (#1809) - Honor bind address passed as `--bind` also for RTC ports (#1815) - Avoid dangling downtracks by always deleting them in receiver close. (#1842) - Better cleanup of subscriptions with needsCleanup. (#1845) - Fix nack issue for svc codecs (#1856) - Fixed hidden participant update were still sent when track is published (#1857) - Fixed Redis lockup when unlocking room with canceled request context (#1859) ### Changed - Improvements to A/V sync (#1773 #1781 #1784 ) - Improved probing to be less disruptive in low bandwidth scenarios (#1782 #1834 #1839) - Do not mute forwarder when paused due to bandwidth congestion. (#1796) - Improvements to congestion controller (#1800 #1802 ) - Close participant on full reconnect. (#1818) - Do not process events after participant close. (#1824) - Improvements to dependency descriptor based selection forwarder (#1808) - Discount out-of-order packets in downstream score. (#1831) - Adaptive stream to select highest layer of equal dimensions (#1841) - Return 404 with DeleteRoom/RemoveParticipant when deleting non-existent resources (#1860) ## [1.4.3] - 2023-06-03 ### Added - Send quality stats to prometheus. (#1708) - Support for disabling publishing codec on specific devices (#1728) - Add support for bypass_transcoding field in ingress (#1741) - Include await_start_signal for Web Egress (#1759) ### Fixed - Handle time stamp increment across mute for A/V sync (#1705) - Additional A/V sync improvements (#1712 #1724 #1737 #1738 #1764) - Check egress status on UpdateStream failure (#1716) - Start signal relay sessions with the correct node (#1721) - Fix unwrap for out-of-order packet (#1729) - Fix dynacast for svc codec (#1742 #1743) - Ignore receiver reports that have a sequence number before first packet (#1745) - Fix node stats updates on Windows (#1748) - Avoid reconnect loop for unsupported downtrack (#1754) - Perform unsubscribe in parallel to avoid blocking (#1760) ### Changed - Make signal close async. (#1711 #1722) - Don't add nack if it is already present in track codec (#1714) - Tweaked connection quality algorithm to be less sensitive to jitter (#1719) - Adjust sender report time stamp for slow publishers (#1740) - Split probe controller from StreamAllocator (#1751) ## [1.4.2] - 2023-04-27 ### Added - VP9 codec with SVC support (#1586) - Support for source-specific permissions and client-initiated metadata updates (#1590) - Batch support for signal relay (#1593 #1596) - Support for simulating subscriber bandwidth (#1609) - Support for subscription limits (#1629) - Send Room updates when participant counts change (#1647) ### Fixed - Fixed process return code to 0 (#1589) - Fixed VP9 stutter when not using dependency descriptors (#1595) - Fixed stutter when using dependency descriptors (#1600) - Fixed Redis cluster support when using Egress or Ingress (#1606) - Fixed simulcast parsing error for slower clients (camera and screenshare) (#1621) - Don't close RTCP reader if Downtrack will be resumed (#1632) - Restore VP8 munger state properly. (#1634) - Fixed incorrect node routing when using signal relay (#1645) - Do not send hidden participants to others after resume (#1689) - Fix for potential webhook delivery delays (#1690) ### Changed - Refactored video layer selector (#1588 #1591 #1592) - Improved transport fallback when client is resuming (#1597) - Improved webhook reliability with delivery retries (#1607 #1615) - Congestion controller improvements (#1614 #1616 #1617 #1623 #1628 #1631 #1652) - Reduced memory usage by releasing ParticipantInfo after JoinResponse is transmitted (#1619) - Ensure safe access in sequencer (#1625) - Run quality scorer when there are no streams. (#1633) - Participant version is only incremented after updates (#1646) - Connection quality attribution improvements (#1653 #1664) - Remove disallowed subscriptions on close. (#1668) - A/V sync improvements (#1681 #1684 #1687 #1693 #1695 #1696 #1698 #1704) - RTCP sender reports every three seconds. (#1692) ### Removed - Remove deprecated (non-psrpc) egress client (#1701) ## [1.4.1] - 2023-04-05 ### Added - Added prometheus metrics for internal signaling API #1571 ### Fixed - Fix regressions in RTC when using redis with psrpc signaling #1584 #1582 #1580 #1567 - Fix required bitrate assessment under channel congestion #1577 ### Changed - Improve DTLS reliability in regions with internet filters #1568 - Reduce memory usage from logging #1576 ## [1.4.0] - 2023-03-27 ### Added - Added config to disable active RED encoding. Use NACK instead #1476 #1477 - Added option to skip TCP fallback if TCP RTT is high #1484 - psrpc based signaling between signal and RTC #1485 - Connection quality algorithm revamp #1490 #1491 #1493 #1496 #1497 #1500 #1505 #1507 #1509 #1516 #1520 #1521 #1527 #1528 #1536 - Support for topics in data channel messages #1489 - Added active filter to ListEgress #1517 - Handling for React Native and Rust SDK ClientInfo #1544 ### Fixed - Fixed unsubscribed speakers stuck as speaking to clients #1475 - Do not include packet in RED if timestamp is too far back #1478 - Prevent PLI layer lock getting stuck #1481 - Fix a case of changing video quality not succeeding #1483 - Resync on pub muted for audio to avoid jump in sequence numbers on unmute #1487 - Fixed a case of data race #1492 - Inform reconnecting participant about recently disconnected users #1495 - Send room update that may be missed by reconnected participant #1499 - Fixed regression for AV1 forwarding #1538 - Ensure sequence number continuity #1539 - Give proper grace period when recorder is still in the room #1547 - Fix sequence number offset on packet drop #1556 - Fix signal client message buffer size #1561 ### Changed - Reduce lock scope getting RTCP sender reports #1473 - Avoid duplicate queueReconcile in subscription manager #1474 - Do not log TURN errors with prefix "error when handling datagram" #1494 - Improvements to TCP fallback mode #1498 - Unify forwarder between dependency descriptor and no DD case. #1543 - Increase sequence number cache to handle high rate tracks #1560 ## [1.3.5] - 2023-02-25 ### Added - Allow for strict ACKs to be disabled or subscriber peer connections #1410 ### Fixed - Don't error when get tc stats fails #1306 - Fixed support for Redis cluster #1415 - Fixed unpublished callback being skipped in certain cases #1418 - Fixed panic when Egress request is sent with an empty output field #1420 - Do not unsubscribe from track if it's been republished #1424 #1429 #1454 #1465 - Fixed panic when closing room #1428 - Use available layers in optimal allocation #1445 #1446 #1448 #1449 - Fixed unable to notify webhook when egress ending with status EgressStatus_EGRESS_LIMIT_REACHED #1451 - Reset subscription start timer on permission grant #1457 - Avoid panic when server receives a token without a video grant #1463 ### Changed - Updated various logging #1413 #1433 #1437 #1440 #1470 - Do not force TCP when client left before DTLS handshake #1414 - Improved performance of data packet forwarding by broadcasting in parallel #1425 - Cleaning up `availableLayers` and `exemptedLayers` #1407 - Send stream start on initial start #1456 - Switch to TLS if ICE/TCP isn't working well #1458 ### Removed - Removed signal de-duper as it has not proven to be reliable #1427 - Remove deprecated ingress rpc #1439 (breaking change for Ingress, this will require Ingress v0.0.2+) ## [1.3.4] - 2023-02-09 ### Added - Memory used and total to node stats #1293 #1296 - Reconnect response to update ICE servers after resume #1300 #1367 - Additional prometheus stats #1291 - Adopt psrpc for internal communication protocol #1295 - Enable track-level audio nack config #1306 - Telemetry events for ParticipantResumed, track requested actions #1308 - Allow disabling mDNS, which degrades performance on certain networks #1311 #1393 - Publish stream stats to prometheus #1313 #1347 - Retry initial connection attempt if it fails #1335 #1409 - Add reconnect reason and signal rtt calculation #1381 - silent frame for muted audio downtrack #1389 ### Fixed - Fixed TimedVersion handling of non-monotonic timestamps #1304 - Persist participant before firing webhook #1340 - Set IsPublisher to true for data-only publishers #1348 - Ignore inactive media in SDP #1365 - Ensure older participant session update does not go out after a newer #1372 - Fix potentially nil access in buffer #1374 - Ensure onPacket is not nil in RTCPReader callback #1390 - Fix rare panic by CreateSenderReport before bind completed #1397 ### Changed - A/V synchronization improvements #1297 #1315 #1318 #1321 #1351 - IOInfo service to handle ingress/egress updates #1305 - Subscription manager to improve subscription resilience #1317 #1358 #1369 #1379 #1382 - Enable video at low res by default when adaptive stream is enabled #1341 - Enable upstream nack for opus only audio track #1343 - Allow /rtc/validate to return room not found message #1344 - Improve connectivity check to detect DTLS failure #1366 - Simplify forwarding logic #1349 #1376 #1398 - Send stream state paused only when it is paused due to bandwidth limitation. #1391 - Do not catch panics, exit instead to prevent lockup #1392 ## [1.3.3] - 2023-01-06 ### Added - Signal deduper: ignore duplicate signal messages #1243 #1247 #1257 - FPS based stream tracker #1267 #1269 #1275 #1281 - Support forwarding track encryption status #1265 - Use publisher side sender report when forwarding - improves A/V sync #1286 ### Fixed - When removing a participant, verify SID matches #1237 - Fixed rare panic when GetSelectedICECandidatePair returns nil #1253 - Prevent ParticipantUpdate to be sent before JoinResponse #1271 #1272 - Fixed Firefox connectivity issues when using UDPMux #1270 #1277 - Fixed subscribing muted track with Egress and Go SDK #1283 ### Changed - ParticipantLeft webhook would not be sent unless connected successfully #1130 - Updated to Go 1.18+ #1259 - Updated Egress RPC framework - psrpc #1252 #1256 #1266 #1273 - Track subscription operations per source track #1248 - Egress participants do not count in max_participants #1279 ## [1.3.2] - 2022-12-15 ### Added - help-verbose subcommand to print out all flags #1171 #1180 - Support for Redis cluster #1181 - Allow loopback candidates to be used via config option #1185 - Support for high bitrate audio #1188 - Ability to detect publication errors and force reconnect #1214 - API secrets are validated upon startup to ensure sufficient security #1217 ### Fixed - Correctly suppress verbose pion logs #1163 - Fixed memory leak on long running room/participants #1169 - Force full reconnect when there is no previous answer #1168 - Fixed potential SSRC collision between participants #1173 - Prevent RTX buffer and forwarding path colliding #1174 - Do not set forceRelay when unset #1184 - Prevent subscription after participant close #1182 - Fixed lost RTCP packets when incorrect buffer factory was used #1195 - Fixed handling of high bitrate while adding Opus RED #1196 - Fixes a rare timing issue leading to connection failure #1208 - Fixed incorrect handling of | in participant identity #1220 #1223 - Fixed regression causing Firefox to not connect over TURN #1226 ### Changed - CreateRoom API to allocate the room on RTC node #1155 #1157 - Check forwarder started when seeding #1191 - Do not forward media until peer connection is connected #1194 - Log sampler to reduce log spam #1222 ## [1.3.1] - 2022-11-09 ### Fixed - Fixed logging config causes server to fail to start #1154 ## [1.3.0] - 2022-11-08 ### Added - Ingress Service support #1125 - Support for web egress #1126 - Ability to set all configuration params via command line flags #1112 - Server-side RED encoding for supported clients #1137 - Opus RED active loss recovery #1139 - Experimental: fallback to TCP when UDP is unstable #1119 - Populate memory load in node stats #1121 ### Fixed - Fixed dynacast pausing a layer due to clients (FF) not publishing layer 0 #1117 - Room.activeRecording updated correctly after users rejoin #1132 - Don't collect external candidate IP when it's filtered out #1135 - Install script to use uname without assuming /usr/bin #1138 ### Changed - Allocate packetMeta up front to reduce number of allocations #1108 - Do not log duplicate packet error. #1116 - Consolidate getMemoryStats #1122 - Seed snapshots to avoid saving/restoring in downtrack #1128 - Remove Dependency Descriptor extension when AV1 is not preferred #1129 - Always send participant updates prior to negotiation #1147 - Set track level codec settings for all pending tracks #1148 - Use Redis universal client to support clustered redis #1149 ## [1.2.5] - 2022-10-19 ### Added - Ability to filter IP addresses from being used #1052 - Allow TCP fallback on multiple connection failures #1077 - Added support for track level stereo and RED setting #1086 ### Fixed - Fixed stream allocator with SVC codecs #1053 - Fixed UDPMux connectivity issues when machine has multiple interfaces #1081 - Ensure sender reports are in sync after transceiver is re-used #1080 - Fixed simulcast codec blocking track closure #1082 - Prevents multiple transport fallback in the same session #1090 ### Changed - Config validation has been enabled. Server will not start if there are invalid config values #1051 - Improves NACK stats to count as a miss only if i t's not EOF #1061 - Store track MIME type during publishing #1065 - Minor cleanup of media track & friends module #1067 - Split out shared media transport code into livekit/mediatransportutil #1071 - Cleaned up logging, improved consistency of debug vs info #1073 - Reduced memory usage with sequencer #1100 - Improved IP address mapping, handling of multiple IPs #1094 - Service API requests are logged #1091 - Default HTTP handler responds with 404 for unknown paths #1088 ## [1.2.3] - 2022-09-13 ### Added - Supervisor framework to improve edge case & error handling #1005 #1006 #1010 #1017 - Support for stereo Opus tracks #1013 - Allow CORS responses to be cached to allow faster initial connection #1027 ### Fixed - Fixed SSRC mix-up for simulcasted tracks during session resume #1014 - Fixed screen corruption for non-simulcasted tracks, caused by probing packets #1020 - Fixed Handling of Simple NALU keyframes for H.264 #1016 - Fixed TCPMux & UDPMux mixup when multiple host candidates are offered #1036 ### Changed - Webhook requests are now using Content-Type application/webhook+json to avoid eager JSON parsing #1025 - Don't automatically add STUN servers when explicit Node IP has been set #1023 - Automatic TCP and TURN/TLS fallback is now enabled by default #1033 ### Removed - Fully removed references to VP9. LiveKit is focused on AV1. #1004 ## [1.2.1] - 2022-09-13 ### Added - Accepts existing participant ID on reconnection attempts #988 ### Fixed - Fixed ICE restart during candidate gathering #963 - Ensure TrackInfoAvailable is fired after information is known to be ready #967 - Fixed layer handling when publisher pauses layer 0 (FireFox is has a tendency to pause lowest layer) #984 - Fixed inaccurate participant count due to storing stale data #992 ### Changed - Protect against looking up dimensions for invalid spatial layer #977 - Improvements around migration handling #979 #981 #982 #995 - Consistent mapping between VideoQuality, rid, and video layers #986 - Only enable TCP/TURN fallback for supported clients #997 ## [1.2.0] - 2022-08-25 ### Added - Support for NACK with audio tracks (#829) - Allow binding HTTP server to specific address, binds to localhost in dev mode(#831) - Packet stats from TC (#832) - Automatic connectivity fallback to TCP & TURN (#872 #873 #874 #901 #950) - Support for client-side ping/pong messages (#871) - Support for setCodecPreferences for clients that don't implement it (#916) - Opus/RED support: redundant audio transmission is enabled by default (#938 #940) ### Fixed - Fixed timing issue in DownTrack.Bind/Close (#833) - Fixed TCPMux potentially blocking operations (#840) - Fixed ICE restart while still in ICE gathering (#895) - Fixed Websocket connection hanging if node isn't available to accept connection (#923) - Fixed ICE restart/resume in single node mode (#930) - Fixed client disconnected in certain conditions after ICE restart (#932) ### Changed - Move to synchronously handle subscriber dynacast status (#834) - Retransmit DD extension in case packets were missed (#837) - Clean up stats workers (#836) - Use TimedVersion for subscription permission updates (#839) - Cleaned up logging (#843 #865 #910 #921) - track_published event now includes the participant's ID and identity (#846) - Improve synchronization of track publishing/unpublish path (#857) - Don't re-use transceiver when pending negotiation (#862) - Dynacast and media loss proxy refactor (#894 #902) - PCTransport refactor (#907 #944) - Improve accuracy of connection quality score (#912 #913) - Docker image now builds with Go v1.19 ## [1.1.2] - 2022-07-11 ### Added - Returns reason when server disconnects a client (#801 #806) - Allow livekit-server to start without keys configuration (#788) - Added recovery from negotiation failures (#807) ### Fixed - Fixed synchronization issues with Dynacast (#779 #802) - Fixed panic due to timing in Pion's ICE agent (#780) - ICELite is disabled by default, improving connectivity behind NAT (#784) - Fixed EgressService UpdateLayout (#782) - Fixed synchronization bugs with selective subscriptions & permissions (#796 #797 #805 #813 #814 #816) - Correctly recover from ICE Restart during an negotiation attempt (#798) ### Changed - Improved Transceiver re-use to avoid renegotiation (#785) - Close room if recorder is the only participant left (#787) - Improved connection quality score stability & computation (#793 #795) - Set layer state to stopped when paused (#818) ### Removed - Removed deprecated RecordingService - Egress should be used instead (#811) ## [1.1.0] - 2022-06-21 ### Added - Add support for Redis Sentinel (#707) - Track participant join total + rate in node stats (#741) - Protocol 8 - fast connection support (#747) - Simulate switch candidate for network connectivity with poor UDP performance (#754) - Allow server to disable codec for certain devices (#755) - Support for on-demand multi-codec publishing (#762) ### Fixed - Fixed unclean DownTrack close when removed before bound. (#736) - Do not munge VP8 header in place - fixes video corruption (#763) ### Changed - Reintroduce audio-level quantization to dampen small changes (#732) - Allow overshooting maximum when there are no bandwidth constraints. (#739) - Improvements to upcoming multi-codec simulcast (#740) - Send layer dimensions when max subscribed layers change (#746) - Use stable TrackID after unpublishing & republishing (#751) - Update egress RPC handler (#759) - Improved connection quality metrics (#766 #767 #770 #771 #773 #774 #775) ## [1.0.2] - 2022-05-27 ### Changed - Fixed edge cases where streams were not allocated (#701) - Fixed panic caused by concurrent modifications to stats worker map (#702 #704) - Batched subscriber updates to reduce noise in large rooms (#703 #729) - Fixed potential data race conditions (#706 #709 #711 #713 #715 #716 #717 #724 #727 - /debug/pprof endpoint when running in development mode (#708) - When audio tracks are muted, send blank frames to induce silence (#710) - Fixed stream allocator not upgrading streams after downgrading (#719) - Fixed repeated AddSubscriber potentially ignored (#723) - Fixed ListEgress API sometimes returning not found (#722) ## [1.0.1] - 2022-05-19 ### Changed - Update Egress details when changed, fixed Egress APIs (#694) ## [1.0.0] - 2022-05-17 ### Added - Improved stats around NACKs (#664) - Internal structures in preparation for AV1 SVC support (#669) ### Changed - Supports participant identity in permissions API (#633) - Fixed concurrent access of stats worker map (#666 #670) - Do not count padding packets in stream tracker (#667) - Fixed TWCC panic under heavy packet loss (#668) - Change state to JOINED before sending JoinResponse (#674) - Improved frequency of stats update (#673) - Send active speaker update during initial subscription (#676) - Updated DTLS library to incorporate security fixes (#678) - Improved list-nodes command (#681) - Improved screen-share handling in StreamTracker (#683) - Inject slience opus packets when muted (#682)