- Fixed a potential issue where generating random positions when joining rooms could lead to neighbor peers not being visible.
- Removed
OdinRoom.flushDataUpdate
and setter forOdinRoom.data
(useRoomUpdate
RPC on an ODIN gateway instead).
- Update
OdinRoom.join
andOdinRoom.setPosition
to support 3D coordinates (requires server version 1.3.0 or later).
- Fixed a bug when using
OdinClient.initRoom()
with the default gateway.
- Now using
ReturnType<typeof setTimeout>
instead ofNodeJS.Timeout
types.
- Updated TypeScript example to show popups on connection errors.
- Fixed a bug where calling
OdinRoom.startVADMeter
had no effect beforeOdinMedia.start
was called on an input stream. - Improved error handling when establishing connection to server.
- Added
OdinRoom.startVADMeter
andOdinRoom.stopVADMeter
. - Added
VoiceProcessingStats
event onOdinRoom
.
- Added
OdinRoom.pauseMedia
andOdinRoom.resumeMedia
. - Added
OdinMedia.pause
andOdinMedia.resume
. - Added
OdinMedia.paused
flag to determine wether or not a remote media is accepting data (e.g. server-side muted/unmuted). - Updated connection code to allow direct connections to on-premise servers without a gateway.
- Fixed a bug where peer user data in JSON format was not shown correctly in TypeScript example.
- Fixed a bug where audio was not accessible when supplying a custom
AudioContext
toOdinClient.initRoom
.
- Replaced
OdinRoom.getPosition
function withOdinRoom.position
getter. - Updated Opus codec to version 1.4 and changed encoder settings to utilize new FEC options.
- Updated Opus encoder bitrate to use 32000 kbps for voice signals and 96000 kbps for music signals.
- Updated room to change state to use
incomplete
if RTC peer connection can't be established. - Fixed a bug where packet loss was always 0 in jitter stats.
- Fixed error
TS2354
(This syntax requires an imported helper but module 'tslib' cannot be found). - Added a warning when trying to connect to incompatible server versions.
- Added an input resampler for audio nodes, supporting sample rates beyond 48 kHz.
- Updated WebAssembly to support legacy browsers.
- Fixed a bug where
AudioContext
API was not found on some iOS devices.
- Fixed a bug where speech detection settings were not applied in VAD processor.
- Updated QoS metrics for compatibility with native clients using version 1.4.0 or later.
- Added CommonJS builds for Node.js environments.
- Updated client to automatically disable audio functionality when neither
AudioContext
norWorker
are available.
- Removed a debug log.
- Refactored internal jitter buffer for better handling of high latency scenarios.
- Added QoS metrics to voice packets to allow debugging of performance issues.
- Reduced overall latency.
- Added RTT hints to voice packets for compatibility with native clients using version 1.3.1 or later.
- Fixed a bug where
MediaStarted
events weren't emitted, when usingOdinRoom.setPosition()
. - Added
MediaStopped
events for convenience when usingOdinRoom.setPosition()
.
- Added
OdinRoom.disableVolumeGate
. - Added
OdinRoom.enableVolumeGate
. - Added
OdinRoom.updateVolumeGateThresholds
to allow configuring root mean square power (dBFS) when the volume gate should engage. - Added
OdinRoom.updateVADThresholds
to allow configuring voice probability value when the VAD should engage. - Renamed
OdinRoom.enablesVAD
toOdinRoom.enableVAD
.
- Fixed a bug where the client could become unresponsive on failed connection attempts.
- Added optional arguments to
OdinClient.initRoom
andOdinClient.initRooms
to allow passing a custom AudioContext, which might be necessary on Apple platforms.
- Fixed broken audio in Safari 15.4 or later.
- Added a new prop
OdinPeer.remote
to differentiate between your own peer and others.
- Renamed
OdinMedia.registered
toOdinMedia.started
for convenience. - Fixed an error when trying to decode an empty byte array.
- Removed debug logs.
- Changed the
OdinConnectionState
enum to a string union'disconnected' | 'connecting' | 'connected' | 'error'
. - Improved connection error handling.
- Renamed
OdinRoom.reset
toOdinRoom.disconnect
. Note, thatOdinRoom.disconnect
also disconnects the activeOdinClient
. - Added some helper functions for easy type conversion when working with
OdinPeer.userData
orOdinRoom.userData
.
- Removed debug logs.
- Updated dependencies to fix a security vulnerability in minimist.
- Fixed a bug where audio playback nodes were not connected unless capture nodes were connected.
- Improved internal schema validation.
- Added
OdinClient.initRoom
andOdinClient.initRooms
, which will authenticate using a specified room token and returnOdinRoom
instance(s). This allows registering event handlers before joining for more convenient room handling. - Made
OdinRoom.join
a public function and added optionaluserData
andposition
arguments to set initial values. - Removed
OdinClient.joinRoom
in favor of the new init and join functions. - Fixed a bug where the decoder of an
OdinMedia
wasn't stopped when the audio stream was removed from the room. - Changed the behavior of
OdinRoom.addEventListener
for the following event types:OdinPeerJoinedLeftEvent
will now be emitted for all peers that join/leave the room, including those already in the room during join as well as your own peer.OdinMediaStartedStoppedEvent
will now be emitted for all medias that are added or removed, including those already in the room during join as well as your own medias.
- Updated example to reflect the latest API changes.
- Changed the behavior of remote medias to automatically stop them when the peer disconnects.
- Improved the calculation for the default room position.
- Fixed a bug where
active
state of a media was not set tofalse
on stop.
- Changed npm
bundle
script to use rollup and terser instead of browserify. - Fixed a bug where
OdinPeerDataChangedEvent
was not fired. - Added
OdinPeer.userId
which stores the peers individual identifier string using during authentication. - Updated example with options to set user data and user ID.
- Renamed
OdinRoom.me
toOdinRoom.ownPeer
. - Renamed
OdinRoom.peers
toOdinRoom.remotePeers
. - Changed return type of
OdinRoom.connectionState
toOdinConnectionState
. - Changed internal event structure and added relevant interfaces to API exports.
- Fixed a bug where own peer user data was not up-to-date right after joining a room.
- Added
OdinRoom.flushDataUpdate
method to send room user data updates to the server. - Added
OdinRoom.flushOwnPeerDataUpdate
method to send own peer user data updates to the server. - Added npm
typedoc
script to create API documentation.
- Added npm
bundle
script to create standalone browser bundles.
- Added
OdinRoom.changeMediaStream
to allow replacing the microphone capture stream (e.g. when you want to change your input device). - Fixed a bug where the internal connection state of
OdinClient
was set after theConnectionStateChanged
event was emitted.
- Initial public release