All notable changes to this project will be documented in this file.
- Fixed a bug where multi-room voice packets could be rejected
- Enhanced error messages for invalid or excessive media ID inputs to provide clearer feedback for debugging
- Improved audio transmission by implementing backpressure handling to allow dropping stale voice packets during network delays
- Introduced a timeout mechanism to discard voice packets delayed by more than 100ms to optimize real-time audio performance for web clients
- Added a new metric to monitor contention scenarios where sending voice packets requires deferred execution
- Fixed a potential issue that could cause web clients to stop receiving voice packets under certain conditions
- Added a convenience feature to automatically determine WebRTC candidates using
public_address
when none are configured
- Changed default WebRTC binding port from
5000
to8844
- Fixed a bug where WebRTC candidate settings were not applied correctly
- Updated media packet routing to support clients with E2E encryption enabled
- Updated WebTransport settings to allow PlayStation 5 clients to connect
- Fixed a bug where servers in stand-alone mode were unable to start
- Fixed a bug where the server provided invalid WebRTC candidates to browser clients using IPv6
- Fixed server not shutting down after 300 seconds of failed supervisor reports
- Added database health check to supervisor reports
- Removed Redis client-side caching for
server_link_room
to prevent possible ownership fights - Fixed
room is temporarily not available
errors
- Refactored peer position system to no longer use a k-d-tree to improve performance
- Fixed clients not being reaped after disconnecting
- Added missing functionality to update existing ban list entries
- Improved logging and error handing when clients try to authenticate with invalid tokens
- Fixed a bug where invalid peer coordinates were written to the server logs
- Added support for ODIN server extenders
- Added support for Apple Silicon Macs
- Removed
colors
setting from log config in favor ofNO_COLOR
environment variable - Reorganized log config for enhanced convenience
- Added new
command_timeout
setting to database config to prevent commands from waiting for Redis connection being re-established
- Temporarily expanded the QUIC server send window to conduct scalability testing
- Fixed a bug where distances for peers that remained in range were not updated when limiting concurrent streams
- Fixed a potential crash when updating peer positions by adding a random factor to the coordinates on all axis with epsilon magnitude
- Added new
concurrent_streams
setting to peer limit config that allows specifying the maximum number of audio streams each individual peer can receive at the same time
- Added code that lowers the amount of allocations when broadcasting packets
- Fixed broken
system_network_tx_bytes
metric - Ignore
SetPosition
RPC calls if peer is already at target coordinates
- Use random instance id when initializing the server to avoid duplicate keys in Redis
- Updated k-d-tree bucket size from 32 to 128
- Reject
SetPosition
RPC calls with positions where too many neighbors exist
- Updated timeouts for all keys in optional Redis database backend to 7 days
- Fixed a bug where 3D ccordinates were not stored as peer properties in database
- Fixed a bug where instance properties were not deleted from Redis database backend on room close
- Enhanced
telemetry
config with optional fields for server usage reporting - Refined position-based packet culling for 3D coordinate support
- Updated Redis database structure
- Restored legacy 1.x client compatibility for
MediaStarted
events
- Introduced
use_tls
,username
, andpassword
settings todatabase
config - Resolved duplicate HTTP basic auth headers in supervisor URLs
- Introduced terminal-specific
colors
setting inlog
config - Added
http_client
config for proxy server setup in outbound HTTP requests - Included debug option for logging rejected RPC calls
- Renamed
allow_unknown_server_certificates
toaccept_invalid_certificates
, relocated to newhttp_client
config - Refined logging to maintain external log aggregation integrity regardless of verbosity filters
- Enhanced logging and error handling for outbound telemetry requests on on-premise servers
- Fixed client re-entry issue on the same QUIC connection to a second room
- Fixed incorrect per customer RPC usage counting
- Added per customer RPC usage information to metrics
- Added optional
allow_unknown_server_certificates
setting totelemetry
configs - Improved logging for scenarios when incoming QUIC connections fail
- Adjusted the maximum datagram size for QUIC connections
- Added support for WebRTC video streams
- Added new
PauseMedia
andResumeMedia
RPC calls to pause/resume receiving of data for a specific media stream - Added optional Redis database backend to store room/peer state information
- Added
no_peers_timeout
setting forhttp
configs to set maximum time a client can stay connected, after leaving all rooms - Added optional
filters
setting forlog
configs to prevent unnecessary noise - Added new options specific to terminal logging
- Added new options to allow using external Grafana Loki log aggregation systems
- Updated
Authenticate
RPC calls to be deprecated - Updated Dockerfiles to support the new config format
- Removed unused
version
setting fromsupervisor
configs - Replaced libdatachannel with webrtc-rs
- Refactored and reorganized codebase for improved reliability and performance
- Added per customer
billing_voice_incoming_bytes
andbilling_voice_outgoing_bytes
to metrics - Added log message when server is starting with no client listener configured
- Fixed a bug where subsequent
Authenticate
RPC calls would fail
- Added forward compatibility to support new client versions
- Added
public_address_override
setting forquic
andhttp
configs to allow specifying individual public endpoints per protocol if needed
- Added server version to supervisor
sfu.Report
requests
- Added support for multiplexed connections on the same UDP port for web clients
- Removed
max_parallel_connects
setting for QUIC connections
- Added support for HTTP authentication (RFC 7235) in supervisor
url
option - Changed deployment target for macOS to 10.13
- Initial public release