Releases: daily-co/daily-js
Releases · daily-co/daily-js
0.43.0
Features
- Daily JS now allows HIPAA organizations to use raw tracks recordings.
Bugfixes
- Fixed a bug where, in P2P mode, toggling the camera off and back on would disable background effects.
- Fixed an occasional WASM memory access error by adding an additional safety check around video not existing when trying to process it.
- Fixed a bug where
getInputSettings()
could erroneously report afterload()
(orstartCamera()
, orjoin()
) that you had no processors specified, until the firstinput-settings-updated
event fired. This could occur even if you specified one in the preload cache via a constructor argument, or a previous call toupdateInputSettings()
. - Fixed an issue where a non-default device could be selected automatically as though it were the default.
- Fixed an issue where the unprocessed track could occasionally be sent when background processing is enabled.
- Fixed an issue where leaving soon after joining could result in
attempt to send to closed socket
orerror connecting to the sfu
errors to be logged. - Fixed a longstanding issue where back-to-back
available-devices-updated
events (with identical payloads) would fire in the case of a combination input/output device (i.e. a headset) being plugged in or unplugged. - Fixed some out of date type definitions for
DailyInputVideoSettings
. - Fixed
DailyEventObjectFatalError
types to resolve correctly in typescript codebases.
Other improvements
- Improved handling of failure to switch from P2P to SFU topology when a recording is initiated. A recording error is now emitted, rather than failing silently.
- Updated several libraries with security issues reported by npm audit to versions without reported vulnerabilities.
- Deprecate
experimentalChromeVideoMuteLightOff
in favour ofkeepCamIndicatorLightOn
, and flip the default. If not specified otherwise, turning off the camera now turns the camera indicator light off. - Improved device detection code to use
devicechange
event wherever available rather than polling. - Adjusted the cpu load trigger for disabling background processing to be a little more optimistic and less likely to disable processing.
0.42.2
Features
- The event
cpu-load-change
has a new propertycpuLoadStateReason
, with possible valuesENCODE, DECODE, SCHEDULE_DURATION, NONE
, to describe why the event has been triggered. The methodgetCpuLoadStats()
also has multiple new properties. - The
updateInputSettings()
method now supports audio processing for microphone tracks. The first feature released is noise cancellation built on top of Krisp's SDKs.
Bugfixes
- Fixed an issue with default audio output change detection, as well as an issue where the device returned by
call.getInputDevices().speaker
would often be a microphone. - Fixed an issue where a non-default audio output device specified via
setOutputDeviceAsync()
, wouldn't properly apply to audio elements in the DOM if they were added after the call tosetOutputDeviceAsync()
. For example, if a new participant joined afterward, or ifsetOutputDeviceAsync()
were invoked beforejoin()
. - Fixed a problem where setInterval() intervals that the call object starts are never cleaned up if the user doesn't end up
join()
ing a call first. Intervals should be cleaned up when the user invokesdestroy()
, whether or not they everjoin()
ed.
There is one side effect of this change: now, afterdestroy()
is run, the call object will always be left withmeetingState()
as either'left-meeting'
or'error'
, whereas previously the call object could also be left in a number of other states. - Fixed an issue where if you join a meeting in P2P mode with mic on, your audio sometimes doesn't play for the other person.
- Fixed the
DailyEventObjectCameraError
andDailyCameraErrorObject
type definitions to resolve to their defined camera error types, allowing developers to handle the different types of camera errors ergonomically in a TypeScript codebase. - Fixed an issue in our TypeScript definitions of custom layout properties passed to
startRecording()
/startLiveStreaming()
, to markcomposition_id
as optional. - Fixed an issue where, in P2P mode, toggling the camera off and back on would disable background effects.
Other improvements
- Increased the number of internal call quality statistics we record, for example the number of pauses and freezes in a video track or audio track.
- Made some meeting errors in connection failure cases more informative.
- Made a change to ensure that
instanceid
should always be included inlive-streaming-started
events.
0.41.0
Features
- Made
inputSettings
specifiable in thejoin()
,createCallObject()
, andcreateFrame()
methods, so that developers no longer need tojoin()
first, and then callupdateInputSettings()
. See theinputSettings
object's documentation for more info.
Bugfixes
- Fixed an issue where processed video tracks could fall back to a default aspect ratio when muted and unmuted, introducing unwanted cropping or letterboxing.
- Fixed a memory leak which could occur when processed video tracks are muted and unmuted.
- Fixed TypeScript definitions for streaming layouts to remove
composition_id
from the object passed to theupdateRecording()
function (where it is not allowed), while keeping it instartRecording()
, wherecomposition_id
is required. - Fixed an issue where
iframeEventInputSettingsUpdateError()
was being sent an error object and not the error message string it expected.
Other improvements
- Improved handling of custom backgrounds in the case where the background's aspect ratio doesn't match the video's aspect ratio, by fitting the custom background within the video frame.
- Updated mediasoup-client to version 3.6.80, which among other things, adds unified plan support for React Native.
0.40.0
Features
- Added a
keepCamIndicatorLightOn
flag, which currently causes no change to daily-js behavior, but which will eventually become an opt-in flag when the default behavior changes. See the notice in the README as of this release for more details. - Added support for third party AV processors.
- Added a
strictMode
flag to cause daily-js to throw anError
if more than one call-object is detected in use, before this behavior becomes the default beginning in daily-js 0.43.0. See the notice in the README as of this release for more details. - Added a
getCallInstance()
method, which can get a handle to your call instance from anywhere in case you lost track of it. - Added a new
type
field to track events, which can be any of'video'
,'audio'
,'screenVideo'
,'screenAudio'
,'rmpVideo'
,'rmpAudio'
, or other values of typestring
for custom tracks - Livestreams can now emit update events, including for errors and interruptions.
Bugfixes
- Fixed an issue where fullscreen mode wouldn't trigger on iframed calls.
- Fix a Safari < 16 issue where, when
experimentalChromeVideoMuteLightOff
is set, turning the camera off and then on would result in your local camera track having a 4:3 aspect ratio. - Fixed an issue where background setting and camera stream changes at the same time could conflict, and cause errors
- Fixed an issue where background settings could not be applied if the camera had never been enabled
- Fixed an issue where
403 Forbidden
could be hit while downloading daily-js components if accessed during new code deployments
0.38.0
Bugfixes
- Fixed a bug where an error could be thrown accessing an undefined object when unmuting while a device is not found.
- Fixed an issue where one blocked device being blocked could cause both devices to appear as blocked.
- Fixed an issue where a blocked device could appear to have a (blank) track, and be unmuted.
- Fixed some
customTrack
TypeScript definitions. - Updated TypeScript definitions for
DailyTrackSubscriptionOptions
Other improvements
- Reduced the memory footprint of video processor
URL
object once they’re no longer needed. - Improved prevention of
MUTE_REMOTE_AUDIO
andMUTE_REMOVE_VIDEO
from non-owner participants. - Removed a long deprecated path to set the local
owner
flag.
0.37.0
Improvements
- Added new error types for issues while knocking for entry to a room.
Bugfixes
- Fixed an issue where an error could be thrown while formatting a number used in a telemetry calculation.
0.36.1
Features
- Improved logging to include pre-join logs and added new logs for identifying cases when we detect multiple daily instances are connected simultaneously (multiple daily instances is unsupported and leads to unexpected issues).
- Added server-side support for properly detecting and warning clients when they are using a version that is nearing end of support, unsupported or nearing end of life as well as a means to reject a client from joining if using a version that is end of life’d.
- Improve screen share error handling. Screen share errors now include more detailed information about how and why the error occurred. See the docs for more information.
Bugfixes
- Fix background-blur bug where a failure caused the processor to get stuck in a busy state.
- Fix for slower background-blur frame rate.
Other improvements
- Added better logging around fatal errors and ejections.
- Improved the error messaging in streaming/recording API to clarify the UUID requirement when an invalid id is provided.
- Turn off debug level logging in large calls.
- Added back the logging for
Highest-videoFrameSize
. - Logging improvements for debugging ejection.
0.35.1
Bugfixes
- Fix a case where a warning log may throw an exception.
0.35.0
Features
- Added detection of playback interruptions in remote media.
Other Improvements
- Cleaned up debug logging to reduce log noise.
0.34.1
Bugfixes
- Fixed an issue where custom tracks would not start as expected and would throw an error.
- Fixed an issue where the call state would not be correctly set to upon leaving the call.