> ## Documentation Index
> Fetch the complete documentation index at: https://plivo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelogs

> Track Browser SDK releases — version history, fixes, and new features

We document all notable release changes to the Browser SDK on this page. We base the format on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## Release Process

We release all changes to beta first before updating to a stable release at least two weeks later, and we update all changes on this page. All past releases are URI accessible from links below and immutable, unless explicitly stated.

You can [subscribe](/sdk/client/browser/changelog/#subscription-section) to get notified of all changelog updates via `email` or `RSS feeds`.

## Browser SDK V2.2

### Version [v2.2.19-rc.1](https://cdn.plivo.com/sdk/browser/v2.2.19-rc.1/plivo.min.js) Mar 28, 2025

#### Feature:

* **Added**: Added a mechanism to check if the input and output devices are same/different based on the device group id and device label name for better debugging.

#### Bug Fixes:

* **Fixed**:  Incorrect I/O device data sent to call-insights when input device is changed during idle state.
* **Fixed**:  Output Audio playing through the built-in speakers even when the default output device is changed.

### Version [v2.2.18](https://cdn.plivo.com/sdk/browser/v2.2.18/plivo.min.js) Mar 12, 2025

#### Feature:

* **Added**: Introduced a mechanism to fetch the noise reduction model (script) from the local file system instead of Plivo CDN:
  * The file path can be provided using the **noiseReductionFilePath** flag during initialization
  * If no file path is provided, the SDK will fetch the model from Plivo CDN by default

#### Bug Fixes:

* **Fixed**:  Added logging to verify whether the device change event is trusted.
* **Fixed**:  Updated the URL for fetching the RNNoise processor.js file.
* **Fixed**:  Create and send a copy of the connectionInfo object in the onConnectionChange event.

### Version [v2.2.18-rc.3](https://cdn.plivo.com/sdk/browser/v2.2.18-rc.3/plivo.min.js) Feb 26, 2025

#### Feature:

* **Added**: Introduced mechanism to fetch the noise reduction model (script) from the local file system instead of Plivo CDN:
  * The file path can be provided using the **noiseReductionFilePath** flag during initialization
  * If no file path is provided, the SDK will fetch the model from Plivo CDN by default

### Version [v2.2.18-rc.2](https://cdn.plivo.com/sdk/browser/v2.2.18-rc.2/plivo.min.js) Feb 20, 2025

#### Bug Fixes:

* **Fixed**:  Added logging to verify whether the device change event is trusted.
* **Fixed**:  Updated the URL for fetching the RNNoise processor.js file.

### Version [v2.2.18-rc.1](https://cdn.plivo.com/sdk/browser/v2.2.18-rc.1/plivo.min.js) Feb 12, 2025

#### Bug Fixes:

* **Fixed**:  Create and send a copy of the connectionInfo object in the onConnectionChange event.

### Version [v2.2.17](https://cdn.plivo.com/sdk/browser/v2.2.17/plivo.min.js) Jan 23, 2025

#### Bug Fixes:

* **Fixed**:  Remote Audio Fails to Play Through the Default Device After Bluetooth Disconnection.

### Version [v2.2.16](https://cdn.plivo.com/sdk/browser/v2.2.16/plivo.min.js) Jan 16, 2025

#### Feature:

* **Added**: Added support for JSON Web Token (JWT) login with new methods: **loginWithAccessToken** and **loginWithAccessTokenGenerator**.<br />

### Version [v2.2.15](https://cdn.plivo.com/sdk/browser/v2.2.15/plivo.min.js) Oct 03, 2024

#### Feature:

* **Added**: A new event named **CALL\_STATS\_DUMP** has been introduced, which sends complete dump of getStats() API to call insights.<br />

#### Bug Fixes:

* **Fixed**:  Invalid state error: 8 on calling the logout directly after call is ended.

### Version [v2.2.14](https://cdn.plivo.com/sdk/browser/v2.2.14/plivo.min.js) Sep 19, 2024

#### Feature:

* **Added**: A new event named **onCallConnected** has been introduced, which is triggered when the PSTN callee starts ringing.<br />
  **Note:** The event is not applicable for MPC and Conference based calls.

### Version [v2.2.13](https://cdn.plivo.com/sdk/browser/v2.2.13/plivo.min.js) Aug 22, 2024

#### Bug Fixes:

* **Fixed**: Removed unnecessary dependency.

### Version [v2.2.12](https://cdn.plivo.com/sdk/browser/v2.2.12/plivo.min.js) Jul 24, 2024

#### Bug Fixes:

* **Fixed**: Renamed **DOMError** to **DOMException** in the underlying JsSIP library to support latest Typescript versions.

### Version [v2.2.12-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.12-beta.0/plivo.min.js) Jul 08, 2024

#### Bug Fixes:

* **Fixed**: Fixed the issue causing a mismatch between local machine time and actual time.
* **Fixed**: Fixed issues where the speech recognition engine would enter an endless loop when mute is performed on two tabs using the same engine

#### Features:

* **Added**: Added support for connecting and registering the SDK independently: If the **stopAutoRegisterOnConnect** flag is set to true, the **login()** method will only connect the SDK to Plivo servers. Default is set to false.
* **Added**: Introduced a new register() method, which registers the SDK when called.
* **Added**: Introduced the captureSDKCrashOnly flag, which, when set to true, captures and syncs only SDK-related crash logs. Default is false.
* **Added**: Introduced the redirect(uri) method, which redirects the call to other SDK clients when invoked.
* **Added**: Added helper methods such as:
  * disconnect(): Disconnects the SDK.
  * unregister(): Unregisters the SDK.
  * getCurrentSession(): Returns the current active session, if any.
* **Added**: Added support to send more call-related information and statistics to the call-insights service

### Version [v2.2.11](https://cdn.plivo.com/sdk/browser/v2.2.11/plivo.min.js) Jun 07, 2024

#### Bug Fixes:

* **Fixed**: Enhanced call handling functionality to support multiple executions of the **call()** method.

### Version [v2.2.10](https://cdn.plivo.com/sdk/browser/v2.2.10/plivo.min.js) May 22, 2024

#### Bug Fixes:

* **Fixed**: Improved error handling by emitting "LoginFailed" event upon unsuccessful creation of User Agent (UA).
* **Fixed**: Added a check to prevent sending DTMF signals when there is no internet connection, which was causing call disconnections.
* **Fixed**: Enhanced WebSocket connection optimization and improved fallback mechanisms to reduce delays in establishing a connection.
* **Fixed**: Streamlined the process for reconnecting active calls during network changes for improved stability and reliability.
* **Fixed**: Improved SDK reconnection logic to prevent redundant WebSocket connections and optimize login scenarios during active sessions.
* **Fixed**: Implemented a fix for the graceful disconnection of calls when a network switch occurs while the call is in the ring state, addressing call quality issues.
* **Fixed**: Implemented an internet access check prior to registration.
* **Fixed**: Limited the Logout() function to execute only during active sessions.
* **Fixed**: Other minor bug fixes and improvements.

#### Features:

* **Added**: Enhanced the callinfo object by introducing new attributes: Reason, Protocol, ErrorCode, and Originator, providing more detailed statistics.
* **Added**: Implemented Plivo STUN Servers to enhance reliability. This modification is now customizable through the 'usePlivoStunServer' flag which defaults to false.
* **Added**: The reason for disconnection/connection is now published with the onConnectionChange event.
* **Added**: Introduced helper methods (isRegistered, isConnecting, and isConnected) for checking the client connection status.
* **Added**: Introduced a new event 'remoteAudioStatus' that signifies the reception status of audio packets from the remote caller.<br />
  **Note:** This feature works only in case of conference and MPC
* **Added**: Introduced a noise suppression feature to enhance audio quality by eliminating unwanted background noise during active calls. This feature can be enabled or disabled using the enableNoiseReduction flag, which is set to false by default. Additionally, a new event, onNoiseReductionReady, is triggered when the noise reduction is ready to commence.<br />
  **Note:** This functionality is not compatible with Safari.
* **Added**: onMediaPermission event will be triggered when media permission is revoked.
* **Added**: Users will receive a mediaMetric event when speaking while the SDK is muted.<br />
  **Note:** This functionality is not compatible with Firefox.

### Version [v2.2.10-beta.11 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.11/plivo.min.js) Apr 29, 2024

#### Bug Fixes:

* **Fixed**:Improved error handling by emitting "LoginFailed" event upon unsuccessful creation of User Agent (UA).
* **Fixed**:Implemented a check to prevent sending DTMF signals when there is no internet connection.

### Version [v2.2.10-beta.10 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.10/plivo.min.js) Apr 19, 2024

#### Bug Fixes:

* **Fixed**:Enhanced WebSocket connection optimization and refined fallback mechanisms to minimize delays in establishing a connection.
* **Fixed**:Streamlined the process for reconnecting active calls during network changes for improved stability and reliability.

### Version [v2.2.10-beta.9 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.9/plivo.min.js) Mar 28, 2024

#### Features:

* **Added**:Implemented webRTC logging service for monitoring calls.

### Version [v2.2.10-beta.8 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.8/plivo.min.js) Mar 20, 2024

#### Features:

* **Added**:A new event named 'onNoiseReductionReady' has been introduced, which is triggered when the noise reduction is prepared to commence.

#### Bug Fixes:

* **Fixed**:Resolved an issue where noise reduction failed to initiate as anticipated due to necessitating a user gesture.

### Version [v2.2.10-beta.7 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.7/plivo.min.js) Mar 13, 2024

#### Features:

* **Added**:Implemented new local hangup reasons to provide additional insights into the cause of call hangups.

#### Bug Fixes:

* **Fixed**:Resolved a race condition that led to unexpected results when emitting the 'onLoginFailed' event.
* **Fixed**:Graceful disconnection of the websocket before emitting "onLoginFailed".
* **Fixed**:Resolved a type error issue resulting in: "Cannot assign to read-only property 'uri' of object".
* **Fixed**:Preventing the establishment of a new websocket connection if there is an ongoing connection.<br />
  **Note:** The "errorCode" in the callinfo object has been renamed to "code".

### Version [v2.2.10-beta.5 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.5/plivo.min.js) Feb 23, 2024

#### Features:

* **Added**:Enhanced the callinfo object by introducing new attributes: Reason, Protocol, ErrorCode, and Originator, providing more detailed statistics.<br />
  **Note:** The previous attribute remoteCancelReason has been removed.

* **Added**:Implemented Plivo STUN Servers to enhance reliability. This modification is now customizable through the 'usePlivoStunServer' flag which defaults to false.<br />
  **Note:** The Google STUN server has been eliminated.

#### Bug Fixes:

* **Fixed**:Fixed a type error that previously resulted in "getheader is not a function" when attempting to access a non-existent call.
* **Fixed**:Implemented a fix for the graceful disconnection of calls when a network switch occurs while the call is in the ring state, addressing call quality issues

### Version [v2.2.10-beta.4 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.4/plivo.min.js) Feb 16, 2024

#### Features:

* **Added**: Enhanced Heartbeat timer for improved network monitoring.
* **Added**: The reason for disconnection/connection is published with the onConnectionChange event.
* **Added**: Streamlined the gathering of local media stream during the ringing state for incoming calls.
* **Added**: Introduced helper methods (isRegistered, isConnecting, and isConnected) for checking the client connection status.

#### Bug Fixes:

* **Fixed**: Implemented automatic restart of heartbeat service when the browser fails to reconnect the socket.

### Version [v2.2.10-beta.3 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.3/plivo.min.js) Jan 12, 2024

#### Features:

* **Added**: Introduced a new event 'remoteAudioStatus' that signifies the reception status of audio packets from the remote caller.

<br />

**Note:** This feature works only in case of conference and MPC

### Version [v2.2.10-beta.2 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.2/plivo.min.js) Jan 09, 2024

#### Bug Fixes:

* **Fixed**: Enhanced SDK reconnection logic to optimize scenarios where users attempt to log in while already logged in.
* **Fixed**: Added internet access check before registration.

### Version [v2.2.10-beta.1 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.10-beta.1/plivo.min.js) Dec 14, 2023

#### Features:

* **Added**: A new property **remoteCancelReason** under the **CallInfo** object, which indicates the reason for call termination for both incoming and outgoing calls.<br />
  **Note:** **remoteCancelReason** will be none during call state: ringing, answered.
* **Added**: Included noise suppression feature to enhance audio quality, which effectively eliminates unwanted background noise during active calls. You can enable or disable this feature using the **enableNoiseReduction** flag. <br />
  **Note:** This functionality is not compatible with Safari.
* **Added**:Trigger an event when media permission is revoked.
* **Added**: Notify users when they speak while muted.<br />
  **Note:** This functionality is not compatible with Firefox.

#### Bug Fixes:

* **Fixed**: Call mutes when input/output devices change.
* **Fixed**: An "Invalid State" error that occurred during call hang-up.
* **Fixed**: Addressed a Type error encountered when configuring output media devices.
* **Fixed**: Limited the Logout() function to execute only during active sessions.

### Version [v2.2.9](https://cdn.plivo.com/sdk/browser/v2.2.9/plivo.min.js) Sep 29, 2023

#### Features:

* **Added**: A new **useDefaultAudioDevice** flag, which allows the SDK to use either the system's default audio device or the recently added device for both input and output on Windows platform.

#### Bug Fixes:

* **Fixed**: Removed support for the getStats API, as it is no longer available in Chrome versions 117 and beyond.
* **Fixed**: Removed the predetectOWA functionality.
* **Fixed**: Issue on audio input/output device mismatch on windows platform.

### Version [v2.2.8](https://cdn.plivo.com/sdk/browser/v2.2.8/plivo.min.js) Sep 12, 2023

#### Features:

* **Added**: A **refreshRegistrationTimer** flag for user-configurable periodic re-registration by the SDK.
* **Added**: An **onDtmfReceived** event triggered when the SDK receives DTMF tones.
* **Added**: Enhanced remote debugging with the collection and transmission of logs to Plivo servers.
* **Added**: Plivo STUN servers to ensure stable connections.
* **Added**: A **CALL\_RINGING** event signaling the initiation of incoming/outgoing call ringing to Plivo.

#### Bug Fixes:

* **Fixed**: Corrected the handling of stir-verification in incoming call headers.
* **Fixed**: Fixed audio level discrepancies that occurred when changing input/output devices, ensuring accurate device settings.
* **Fixed**: Removed DOMError to support latest Typescript versions.
* **Fixed**: Restored functionality for incoming calls with PCMU codec.
* **Fixed**: Prevented SDK from logging out when re-registration timed out.
* **Fixed**: Reduced the time for firing the onConnectionChange event with a disconnected state to within 10 seconds when the SDK disconnects from Plivo servers, previously occurring within a 2-minute interval.

### Version [v2.2.7-beta.1 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.7-beta.1/plivo.min.js) Mar 24, 2022

#### Features:

* **Added**: New Client Region **South-Asia** to the existing Client Region list.

### Version [v2.2.7-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.7-beta.0/plivo.min.js) Mar 17, 2022

#### Bug Fixes:

* **Fixed**: The call summary stats are not pushed to Plivo when the call is answered and hung up before the stats socket is open.

### Version [v2.2.6](https://cdn.plivo.com/sdk/browser/v2.2.6/plivo.min.js) Sep 14, 2021

#### Features:

* **Added**: JavaScript framework detection for enhanced debugging.

### Version [v2.2.6-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.6-beta.0/plivo.min.js) Aug 27, 2021

#### Features:

* **Added**: JavaScript framework detection for enhanced debugging.

### Version [v2.2.5](https://cdn.plivo.com/sdk/browser/v2.2.5/plivo.min.js) Aug 09, 2021

#### Features:

* **Added**: New call quality metrics added in Browser SDK:
  * googEchoCancellationReturnLoss
  * googEchoCancellationReturnLossEnhancement
  * googJitterBufferMs.

* **Added**: On network change, a new event, 'CALL\_NETWORK', will now be
  sent to Call Insights

### Version [v2.2.5-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.5-beta.0/plivo.min.js) Jul 26, 2021

#### Features:

* **Added**: New call quality metrics added in Browser SDK:
  * googEchoCancellationReturnLoss
  * googEchoCancellationReturnLossEnhancement
  * googJitterBufferMs.

* **Added**: On network change, a new event, 'CALL\_NETWORK', will now be
  sent to Call Insights

### Version [v2.2.4](https://cdn.plivo.com/sdk/browser/v2.2.4/plivo.min.js) Jul 05, 2021

#### Bug Fixes:

* **Fixed**: Issue with audio input/output device toggle on Windows platform.
* **Fixed**: Issue where non-default behavior was not maintained when Bluetooth was added over Headphones in Electron.

#### Features:

* **Added**: Attribute called 'callerName' to the onIncoming call event. This attribute contains the name of the caller (if set by the initiator of the call) and can be displayed on the user interface.
* **Added**: Ability to identify custom modifications to the officially released SDK versions.
* **Added**: Capture audio input/output device toggle events during an active call.
* **Added**: Ability to select between Inband and Outband DTMF during initialization. For more information, refer to the Configuration Parameters section in the detailed reference.

### Version [v2.2.4-beta.2 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.4-beta.2/plivo.min.js) Jun 16, 2021

#### Features:

* **Added**: Attribute called 'callerName' to the onIncoming call event. This attribute contains the name of the caller (if set by the initiator of the call) and can be displayed on the user interface.

### Version [v2.2.4-beta.1 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.4-beta.1/plivo.min.js) May 25, 2021

#### Bug Fixes:

* **Fixed**: Issue with audio input/output device toggle on Windows platform.

#### Features:

* **Added**: Ability to identify custom modifications to the officially released SDK versions.
* **Added**: Capture audio input/output device toggle events during an active call
* **Added**: Ability to select between Inband and Outband DTMF during initialization. For more information, refer to the [Configuration Parameters section](/sdk/client/browser/reference/#configuration-parameters) in the detailed reference.

### Version [v2.2.3](https://cdn.plivo.com/sdk/browser/v2.2.3/plivo.min.js) Apr 05, 2021

#### Bug Fixes:

* **Fixed**: Issue, where one-way audio was observed for the next call after a custom device for input and output, was removed.
* **Fixed**: Issue where the call-summary event was not getting sent reliably under unstable network connections.
* **Fixed**: Issue where an error message was being published (setremotedescriptionfailed) when an outgoing PSTN call is rejected by the destination.
* **Fixed**: Issue where one-way audio was observed if an external Bluetooth device was first connected and then disconnected whilst the Browser SDK was on an active call.
* **Fixed**: An issue where under unstable network conditions, Browser SDK keeps sending media metrics events even after a call has been hung up from the other end.
* **Fixed**: Issue where audio was getting picked up from both the external and internal microphones when the Bluetooth device was disconnected during a call and then added back during the next call.
* **Fixed**: Issue where audio output did not flow through an external Bluetooth device if one was added to a Windows machine.

### Version [v2.2.3-beta.3 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.3-beta.3/plivo.min.js) Mar 21, 2021

#### Bug Fixes:

* **Fixed**: Issue where audio output did not flow through an external Bluetooth device if one was added to a Windows machine.

### Version [v2.2.3-beta.2 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.3-beta.2/plivo.min.js) Mar 18, 2021

#### Bug Fixes:

* **Fixed**: Issue where audio was getting picked up from both the external and internal microphones when the Bluetooth device was disconnected during a call and then added back during the next call.

### Version [v2.2.3-beta.1 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.3-beta.1/plivo.min.js) Mar 12, 2021

#### Bug Fixes:

* **Fixed**: Issue where one-way audio was observed if an external Bluetooth device was first connected and then disconnected while the Browser SDK was on an active call.
* **Fixed**: An issue where under unstable network conditions, Browser SDK keeps sending MediaMetrics events even after a call has been hung up from the other end.

### Version [v2.2.3-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.3-beta.0/plivo.min.js) Mar 08, 2021

#### Bug Fixes:

* **Fixed**: Issue where one-way audio was observed for the next call after a custom device for input and output was removed.
* **Fixed**: Issue where the call-summary event was not getting sent reliably under unstable network connections.
* **Fixed**: Issue where an error message was being published (setremotedescriptionfailed) when an outgoing PSTN call was rejected by the destination.

### Version [v2.2.2](https://cdn.plivo.com/sdk/browser/v2.2.2/plivo.min.js) Feb 18, 2021

#### Bug Fixes:

* **Fixed**: Missing information in call summary event when the browser is closed during an ongoing call.
* **Fixed**: Issue where, for the first call post initialization of the SDK, input audio was getting picked from the device microphone even if an external Bluetooth device was added before calling.

### Version [v2.2.2-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.2-beta.0/plivo.min.js) Feb 05, 2021

#### Bug Fixes:

* **Fixed**: Missing Information in call summary event when the browser is closed during an ongoing call.
* **Fixed**: Issue where, for the first call post initialization of the SDK, input audio was getting picked from the device microphone even if an external Bluetooth device was added before calling.

### Version [v2.2.1](https://cdn.plivo.com/sdk/browser/v2.2.1/plivo.min.js) Feb 01, 2021

Browser SDK codebase is now [publicly available on GitHub](https://github.com/plivo/Plivo-Browser-SDK-v2).

#### Features:

* **Added**: TypeScript support for Plivo Browser SDK (version 4.0.3 and higher).
* **Added**: Network change improvements for Plivo Browser SDK.
* **Added**: Improvements in events that were getting emitted during mute and unmute.

### Version [v2.2.1-beta.1 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.1-beta.1/plivo.min.js) Dec 30, 2020

#### Bug Fixes:

* **Fixed**: NPM install for beta releases.
* **Fixed**: Improvements in the integration testing.

### Version [v2.2.1-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.2.1-beta.0/plivo.min.js) Dec 21, 2020

#### Features:

* **Added**: TypeScript support for Plivo Browser SDK.
* **Added**: Network change improvements for Plivo Browser SDK.
* **Added**: Improvements in events that were getting emitted during mute and unmute.

## Browser SDK V2.1

### Version [v2.1.36](https://cdn.plivo.com/sdk/browser/v2.1.36/plivo.min.js) Dec 10, 2020

#### Bug Fixes:

* **Fixed**: Incoming calls were not ringing in desktop browsers or when the tab with the call was in the background. While this is the expected behavior in mobile browsers, it should not occur on the desktop.
* **Fixed**: Ongoing browser calls faced a one-way audio issue (remote user unable to hear the browser app user) if the Bluetooth audio device being used by the browser app user got disconnected and switched to another audio input device.

### Version [v2.1.36-beta.1 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.36-beta.1/plivo.min.js) Nov 25, 2020

#### Bug Fixes:

* Fixed: Issue where incoming calls were not ringing in desktop browsers as well when the tab with the call was in the background. This is the expected behavior in mobile browsers but not desktop ones.

### Version [v2.1.36-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.36-beta.0/plivo.min.js) Nov 20, 2020

#### Bug Fixes:

* **Fixed**: Issue where an ongoing browser call would face a one-way audio issue (remote user won’t be able to hear the browser app user) if the Bluetooth audio device being used by the browser app user got disconnected and switched to another audio input device.

### Version [v2.1.35](https://cdn.plivo.com/sdk/browser/v2.1.35/plivo.min.js) Nov 19, 2020

#### Bug Fixes:

* **Fixed**: Issue where client name was being sent as "Chrome" as part of Call, Answered, and Call Summary events even for calls made from Microsoft Edge browser. Now the value sent will be "Edge."
* **Fixed**: Issue where setting the configuration parameter "dscp" as true was not behaving as intended and all UDP packets were still being set with DSCP Class CS0 (default class) instead of DSCP class EF (Expedited Forwarding), which is the expected behavior. Being set with EF ensures packets being tagged as high priority by network routers, leading to lower chances of these packets being dropped and minimum per-hop delays.
* **Fixed**: Issue where on receiving an incoming mobile browser call with the browser in the background, the phone would start ringing despite a visual notification not possible (due to limitations imposed from browsers) and the customer having no way to find out which app is making the phone ring. Now the phone won’t ring either.
* **Fixed**: Issue where a "TypeError" was being emitted if audio devices were toggled during an ongoing call. While this error did not affect any functionality, it was unnecessary and hence will not be emitted anymore.

### Version [v2.1.35-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.35-beta.0/plivo.min.js) Nov 06, 2020

#### Bug Fixes:

* **Fixed**: Issue where client name was being sent as "Chrome" as part of Call, Answered, and Call Summary events even for calls made from Microsoft Edge browser. Now the value sent will be "Edge."
* **Fixed**: Issue where setting the configuration parameter "dscp" as true was not behaving as intended and all UDP packets were still being set with DSCP Class CS0 (default class) instead of DSCP class EF (Expedited Forwarding), which is the expected behavior. Being set with EF ensures packets being tagged as high priority by network routers leading to lower chances of these packets being dropped and minimum per-hop delays.
* **Fixed**: Issue where on receiving an incoming mobile browser call with the browser in the background, the phone would start ringing despite a visual notification not possible (due to limitations imposed from browsers) and the customer having no way to find out which app is making the phone ring. Now the phone won’t ring either.
* **Fixed**: Issue where a "TypeError" was being emitted if audio devices were toggled during an ongoing call. While this error did not affect any functionality, it was unnecessary and hence will not be emitted anymore.

### Version [v2.1.34](https://cdn.plivo.com/sdk/browser/v2.1.34/plivo.min.js) Oct 19, 2020

#### Bug Fixes:

* **Fixed**: Issue where onConnectionChange event was not getting triggered in the following scenarios:
  * normal endpoint logout
  * abrupt socket disconnection due to changed network conditions

#### Features:

* **Added**: New flag to selectively enable local or remote call quality tracking for Browser SDK. The old flag, which could only toggle both of these together, is to be deprecated in the next major release.

### Version [v2.1.34-beta.1 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.34-beta.1/plivo.min.js) Oct 07, 2020

#### Bug Fixes:

* **Fixed**: Issue where onConnectionChange event was not getting triggered in the following scenarios:
  * normal endpoint logout
  * abrupt socket disconnection due to changed network conditions

### Version [v2.1.34-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.34-beta.0/plivo.min.js) Sep 23, 2020

#### Features:

* **Added**: New flag to selectively enable local or remote call quality tracking for Browser SDK. The old flag, which could only toggle both of these together, is to be deprecated in the next major release.

### Version [v2.1.33](https://cdn.plivo.com/sdk/browser/v2.1.33/plivo.min.js) Sep 17, 2020

#### Bug Fixes:

1. **Fixed**: Issue where the incorrect audio level was getting printed if the audio input device (mic) is switched from one input source to another (Eg: from Bluetooth mic to internal mic) during an ongoing call.
2. **Fixed**: Issue where one-way audio was being observed on calls made from the Safari browser if the audio input device (mic) is switched from one input source to another (Eg: from Bluetooth mic to internal mic) during an ongoing call.
3. **Fixed**: Issue where playback tone (incoming call ringtone) was getting played on device speakers if the keyboard/headphones 'play' button is pressed with the device in idle state.

#### Features:

1. Added: Buffer mechanism for temporarily storing Call Insights stats in the Browser before being sent to the Plivo server in case of unstable network conditions.

### Version [v2.1.33-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.33-beta.0/plivo.min.js) Sep 04, 2020

#### Bug Fixes:

* **Fixed**: Issue where the incorrect audio level was getting printed if the audio input device (mic) is switched from one input source to another (Eg: from Bluetooth mic to internal mic) during an ongoing call.
* **Fixed**: Issue where one-way audio was being observed on calls made from the Safari browser if the audio input device (mic) is switched from one input source to another (Eg: from Bluetooth mic to internal mic) during an ongoing call.
* **Fixed**: Issue where playback tone (incoming call ringtone) was getting played on device speakers if the keyboard/headphones 'play' button is pressed with the device in idle state.

#### Features:

* **Added**: Buffer mechanism for temporarily storing Call Insights stats in the Browser before being sent to the Plivo server in case of unstable network conditions.

### Version [2.1.32](https://cdn.plivo.com/sdk/browser/v2.1.32/plivo.min.js) Aug 27, 2020

#### Bug Fixes:

* **Fixed**: Issue where Call Summary and Call Answered events were not getting sent if the user adds "sip:" in their username.
* **Fixed**: Issue related to device "set()" API not working as expected when called during idle state (no active calls).

#### Features:

* **Added**: Basic Call-insights RTP stats support for Safari.
* **Added**: Active Input Device Info as part of Call Answered and Call Summary events for Safari.

### Version [2.1.32-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.32-beta.0/plivo.min.js) Aug 13, 2020

#### Bug Fixes:

* **Fixed**: Issue where Call Summary and Call Answered events were not sent if the user adds "sip:" in their username
* **Fixed**: Device-related issue "set()" API not working as expected when called during idle state(no active calls).

#### Features:

* Added: Basic Call-insights RTP stats support for Safari
* Added: Active Input Device Info as part of Call Answered and Call Summary events for Safari

### Version [2.1.31](https://cdn.plivo.com/sdk/browser/v2.1.31/plivo.min.js) Jul 24, 2020

#### Bug Fixes:

* **Fixed**: Issue where the event "onMediaConnected" was not emitted

### Version [2.1.30](https://cdn.plivo.com/sdk/browser/v2.1.30/plivo.min.js) Jul 21, 2020

#### Bug Fixes:

* **Fixed**: Unwanted warnings that were printed while loading the Browser SDK.
* **Fixed**: 'Mute' state was retained from a call to the next call.
* **Fixed**: Error that was generated while trying to play a ringtone in Safari.

#### Features:

* Added: Improvements in the calculation of the audio level for Call-Insights.

### Version [2.1.29](https://cdn.plivo.com/sdk/browser/v2.1.29/plivo.min.js) May 21, 2020

#### Bug Fixes:

* Fix for fractional loss calculation stats for CallInsights.
* Handling call cleanup and call summary for CallInsights, for an ongoing active call, in the event of abrupt closure of the browser.

### Version [2.1.28](https://cdn.plivo.com/sdk/browser/v2.1.28/plivo.min.js) May 14, 2020

#### Bug Fixes:

* Fix for handling only anonymize local IPs(mDNS) during media negotiation.

### Version [2.1.27](https://cdn.plivo.com/sdk/browser/v2.1.27/plivo.min.js) Apr 28, 2020

#### Bug Fixes:

* RTPStats fix for Firefox. The response structure of RTP Stream Stats has changed in the latest version of Firefox(v75). This change was breaking RTPStats parsing and propagation to Plivo Call Insights back-end. We applied this fix to adapt to the changed response from the Firefox browser.

### Version [2.1.26](https://cdn.plivo.com/sdk/browser/v2.1.26/plivo.min.js) Apr 23, 2020

#### Bug Fixes:

* Stopped propagation of call insights to deprecated stats service back-end.

### Version [2.1.25](https://cdn.plivo.com/sdk/browser/v2.1.25/plivo.min.js) Mar 31, 2020

#### Bug Fixes:

* Fixed mute/unmute behavior during audio device toggling for the ongoing calls.
* Fixed bug with MediaStream management in the post-call idle state.
* onVolume sampling data fixed for external audio devices that get connected during the call.

### Version [2.1.24](https://cdn.plivo.com/sdk/browser/v2.1.24/plivo.min.js) Mar 04, 2020

#### Features:

* Configurable [maxAverageBitrate](/sdk/client/browser/reference/#maxaveragebitrate) for Opus Codec.

### Version [2.1.23](https://cdn.plivo.com/sdk/browser/v2.1.23/plivo.min.js) Feb 18, 2020

#### Bug Fixes:

* Fixed bug to ensure Call Summary event is always generated and pushed to Plivo Call Insights backend at the end of the call.

### Version [2.1.22](https://cdn.plivo.com/sdk/browser/v2.1.22/plivo.min.js) Feb 10, 2020

#### Features:

* Added Close protection flag for Browser.
* Active device info to CallInsights.
* Added [Volume Indicator](/sdk/client/browser/reference/#volumeAudiostats) for Local and Remote audio.

### Version [2.1.21](https://cdn.plivo.com/sdk/browser/v2.1.21/plivo.min.js) Jan 30, 2020

#### Bug Fixes:

* Ability to change input devices while on call.
* Updated extra header handling.
* Added SDK version in feedback stats.

#### Features:

* Automatic input device (mic) fallback to a working input device while on call.

Note: This is not supported in Firefox(as recent as 72) due to its lack of support for multiple input devices.

### Version [2.1.21-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.21-beta.0/plivo.min.js) Jan 21, 2020

#### Bug Fixes:

* Ability to change input devices while on call.
* Updated extra header handling.
* Added SDK version in feedback stats.

#### Features:

* Automatic input device (mic) fallback to a working input device while on call.

### Version [2.1.20](https://cdn.plivo.com/sdk/browser/v2.1.20/plivo.min.js) Oct 10, 2019

* Support for Chrome’s Unified Plan.
* Improvements in MOS value calculations.
* Added stream key in mediaMetrics to differentiate between local or remote stream stats.
* Fixed hangup issues in firefox and safari.

### Version [2.1.19](https://cdn.plivo.com/sdk/browser/v2.1.19/plivo.min.js) Aug 29, 2019

* Calculate fraction loss for 0-5 seconds.
* Send setup options in call answered and summary stats.
* Reconnect media when there is a network change.

### Version [2.1.18](https://cdn.plivo.com/sdk/browser/v2.1.18/plivo.min.js) Aug 07, 2019

* Disable RTP connection timeout fix.

### Version [2.1.17](https://cdn.plivo.com/sdk/browser/v2.1.17/plivo.min.js) Jul 16, 2019

* Chromium os is identified and sent to call insights.
* Showing an appropriate error message for https only support.

### Version [2.1.16](https://cdn.plivo.com/sdk/browser/v2.1.16/plivo.min.js) May 13, 2019

* Added audio device info and media connection info to call insights.

### Version [2.1.15](https://cdn.plivo.com/sdk/browser/v2.1.15/plivo.min.js) Mar 29, 2019

* Changed the error message from “PlivoSDK:: Did not get token from callstats” to an information message “Call insights is not enabled”.

### Version [2.1.14](https://cdn.plivo.com/sdk/browser/v2.1.14/plivo.min.js) Mar 07, 2019

* Implemented onMediaConnected event when media connection established

### Version [2.1.13](https://cdn.plivo.com/sdk/browser/v2.1.13/plivo.min.js) Feb 28, 2019

* Handled get stats in latest Firefox version

### Version [2.1.12](https://cdn.plivo.com/sdk/browser/v2.1.12/plivo.min.js) Feb 19, 2019

* Handled null values in stats calculation
* Added logs for callstats.io

### Version [2.1.8](https://cdn.plivo.com/sdk/browser/v2.1.8/plivo.min.js) Jan 16, 2019

* Made sendConsoleLogs parameter as optional in submitCallQualityFeedback API

### Version [2.1.7](https://cdn.plivo.com/sdk/browser/v2.1.7/plivo.min.js) Jan 16, 2019

* Added callinsights support for Firefox version 60 and above and Chrome version 64 and above.
* New Feedback API for customers to report an issue and choose to allow us to collect call-related logs.
* Fixed fraction loss calculation for local stream
* Updated mos score by taking the minimum value of local and remote mos.

### Version [2.1.7-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.7-beta.0/plivo.min.js) Jan 07, 2019

* Updated mos score by taking the minimum value of local and remote mos.

### Version [2.1.6](https://cdn.plivo.com/sdk/browser/v2.1.6/plivo.min.js) Jan 02, 2019

#### Bug Fix:

* Chrome 72 WebRTC changes will break our SDK so fixed that by making plan-b default.

### Version [2.1.6-beta.1 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.6-beta.1/plivo.min.js) Dec 19, 2018

* New Feedback API for customers to report an issue and allow us to collect call-related SDK logs.

### Version [2.1.6-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.6-beta.0/plivo.min.js) Dec 18, 2018

* Call insights data will be collected in Firefox version 60 and above and Chrome version 64 and above.

### Version [2.1.5](https://cdn.plivo.com/sdk/browser/v2.1.5/plivo.min.js) Dec 05, 2018

#### Bug Fix:

* Fixed key names camel case for call insights

### Version [2.1.4](https://cdn.plivo.com/sdk/browser/v2.1.4/plivo.min.js) Dec 04, 2018

#### Features:

* Extra metadata like the browser's version and network information is sent to the backend for call insights.

### Version [2.1.3](https://cdn.plivo.com/sdk/browser/v2.1.3/plivo.min.js) Nov 29, 2018

#### Bug Fix:

* Fixed a scenario where ongoing call audio getting paused when the incoming call is rejected in multiple incoming call scenarios.
* Added validation for reject and ignore functions in multiple incoming calls.

### Version [2.1.2](https://cdn.plivo.com/sdk/browser/v2.1.2/plivo.min.js) Jan 14, 2018

#### Bug Fix:

* Fixed a scenario where the calls were disconnecting in chrome 54(2 years old version) due to the use of a new WebRTC API

### Version [2.1.1](https://cdn.plivo.com/sdk/browser/v2.1.1/plivo.min.js) Nov 14, 2018

#### Features:

* An extra option "actionOnOtherIncomingCalls" is added for answer(callUUID, actionOnOtherIncomingCalls) function. During a multiple incoming call scenario, if "letring" is passed for actionOnOtherIncomingCalls, the call with callUUID passed to answer function will be answered and other calls will ring silently. If no values are passed for actionOnOtherIncomingCalls, the other incoming calls will be rejected.

### Version [2.1.1-beta.0 (Beta)](https://cdn.plivo.com/sdk/browser/v2.1.1-beta.0/plivo.min.js) Nov 13, 2018

#### Features:

* An extra option "actionOnOtherIncomingCalls" is added for answer(callUUID, actionOnOtherIncomingCalls) function. During a multiple incoming call scenario, if "letring" is passed for actionOnOtherIncomingCalls, the call with callUUID passed to answer function will be answered and other calls will be ringing silently. If no values are passed for actionOnOtherIncomingCalls, the other incoming calls will be rejected.

### Version [2.1.0](https://cdn.plivo.com/sdk/browser/v2.1.0/plivo.min.js) Nov 12, 2018

#### Bug Fix:

* set was setting deviceIds without removing the old deviceId, which is fixed.
* Added extra header to the call info object which is sent to some event callbacks
* Log in with the endpoint which is currently logged in will not be allowed.
* Login with a different endpoint during an ongoing call will throw an error saying "Cannot log in when there is an ongoing call". \[CSDK-87]
* Workaround for Chrome [bug](https://bugs.chromium.org/p/chromium/issues/detail?id=770694) where incoming call ringtone file was not loading properly sometimes which leads to incoming calls without ringtone \[SUP-272].
* Removed media metrics' dependency on callstats.io and used our call insights data \[CSDK-109].
* If the call UUID passed in the answer function does not match any of the incoming calls, an error message will be logged and false will be returned.
* Workaround for Firefox [bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1495569) where 180's SDP during the outbound call should have a=mid line.

#### Features:

* New option to allow multiple incoming calls.
* The new method ignore() to take action on the incoming call.
* Call insights data are collected for the insights enabled accounts.
* Made project publishable to npmjs -> npm install plivo-browser-SDK –save
* getPeerConnection() will return the RTCPeerConnection object even when the outbound call is in the ringing state.
* Added support for '-' in extra headers’ keys.
* An extra option "actionOnOtherIncomingCalls" is added for answer(callUUID, actionOnOtherIncomingCalls) function. During a multiple incoming call scenario, if "ignore" is passed for actionOnOtherIncomingCalls, the call with callUUID passed to answer function will be answered and other calls will be ignored. If no values are passed for actionOnOtherIncomingCalls, the other incoming calls will be rejected.

### Version 2.1.0-beta.12 Nov 09, 2018

* Workaround for firefox [bug](https://bugzilla.mozilla.org/show_bug.cgi?id=1495569) where 180's SDP during the outbound call should have a=mid line.

### Version 2.1.0-beta.11 Nov 02, 2018

* If the call UUID passed in the answer function does not match any of the incoming calls, an error message will be logged and false will be returned.

### Version 2.1.0-beta.10 Oct 26, 2018

* An extra option "actionOnOtherIncomingCalls" is added for answer(callUUID, actionOnOtherIncomingCalls) function. During a multiple incoming call scenario, if "ignore" is passed for actionOnOtherIncomingCalls, the call with callUUID passed to answer function will be answered and other calls will be ignored. If no values are passed for actionOnOtherIncomingCalls, the other incoming calls will be rejected.

### Version 2.1.0-beta.9 Oct 23, 2018

#### Bug Fix:

* set was setting deviceIds without removing the old deviceId, which is fixed.

### Version 2.1.0-beta.8 Oct 17, 2018

#### Bug Fix:

* Added extra header to the call info object which is sent to some event callbacks

### Version 2.1.0-beta.6 Sep 24, 09-2018

* Made project publishable to npmjs -> npm install plivo-browser-SDK –save
* getPeerConnection() will return the RTCPeerConnection object even when the outbound call is in the ringing state.
* Added support for '-' in extra headers’ keys.

### Version 2.1.0-beta.2 Sep 24, 2018

#### Bug Fix:

* Log in with the endpoint which is currently logged in will not be allowed.
* Login with a different endpoint during an ongoing call will throw an error saying "Cannot log in when there is an ongoing call". \[CSDK-87]
* Workaround for Chrome [bug](https://bugs.chromium.org/p/chromium/issues/detail?id=770694) where incoming call ringtone file was not loading properly sometimes which leads to incoming call without ringtone \[SUP-272].
* Removed media metrics' dependency on callstats.io and used our call insights data \[CSDK-109].

### Version 2.1.0-beta.1 Sep 06, 2018

#### Features:

* New option to allow multiple incoming calls.
* The new method ignore() to take action on the incoming call.

### Version 2.1.0-beta.0 Aug 27, 2018

#### Features:

* Call insights data are collected for the insights enabled accounts.

## Browser SDK V2.0

You can check the documentation for Browser SDK v2.0 [here](/sdk/client/browser2-0/reference/)

### Version 2.0.21 Aug 23, 2018

* JsSIP v3.2.11 Upgrade Bug Fixes
  1. reduced ice gathering timeout to 2 secs
  2. removed dependency with '\_is\_confirmed' variable
* io version upgraded to v3.53.1
* Switched off pre-call-test of callstats.io
* endpoint registration status fix

### Version 2.0.21-beta.0

#### Bug Fix:

* is\_confirmed is changed to \_is\_confirmed in JsSIP so using isEstablished function which is documented instead of using the \_is\_confirmed private variable (Bug introduced when JsSIP version is upgraded )
* ice gathering timeout patch was not ported to when JsSIP version is upgraded, added the patch functionality back using the JsSIP's icecandidate version instead of patching JsSIP itself.

### Version 2.0.20 Jul 07, 2018 \[YANKED]

#### Bug Fix:

**Fixed**: Early Media playback on Firefox

#### Added:

* Features: WebSocket Connection change event listener . Detects abrupt websocket disconnection / connection / reconnection and notifies once per change.
* Upgrade Better logging for exception and unexpected behavior
* Optimize and upgrade npm dependencies such as Gulp and associated modules
* Upgrade underlying JSSIP library for ES6, NOTIFY, REFER, INFO, RTCSessionDescription, Registrar
* Don't use pre-answer for early media. Instead, create an answer and do a workaround when the 200 arrives.
* Fix UA's disconnect event by properly providing an object with all the document fields
* Add registrationExpiring event
* Don't send a Register request if another is on progress.
* RTCSession: process INFO in the early state.
* Dialog: ACK to initial INVITE could have lower CSeq than current remote\_cseq.
* WebSocketInterface: Add 'via\_transport' setter.
* Use promise chaining to prevent PeerConnection state race conditions.
* New UA configuration parameter 'session\_timers\_refresh\_method'.
* DigestAuthentication: fix 'auth-int' qop authentication
* RTCSession: emit 'SDP' event before creating offer/answer etc
* Unit test cases with linphonec

### Version 2.0.19

#### Bug Fix:

Optimize local storage values

#### Added:

Features: WebSocket Connection change event listener. Detects abrupt WebSocket disconnection and notifies one time per 30 seconds.

* GDPR upgrade in Callstats

### Version 2.0.18

#### Bug Fix:

* Extra header length increased to 120, earlier it was 48

#### Added:

* Add extra custom header

### Version 2.0.9 Oct 05, 2017

#### Bug Fix:

* **Fixed**: Twilio webRTC API gets overridden by Plivo SDK, Don't alter URL.createObjectURL native code.

#### Added:

Features: a config param preDetectOwa with true/false, Detect one-way audio before answering/sending the call. Default value false

* Features: audioDeviceChange event to listen for USB audio device changes. This event will emit an object with two properties change and device. change - "added" or "removed" device - device-specific properties
* Collect Application logs in the callstats dashboard under the “logs" menu. A call summary log will get added to each callUUID.
* Callstats lib updated to 3.19.12, which gives callback-based getStats once again in chrome 58

### Version 2.0.8 Apr 13, 2017

#### deprecated

* Removed: predetect OWA is taking 15sec in case of double Natted system Refer: 894bcac0-1fc4-11e7-8451-8dbf96fbabce

### Version 2.0.7 Apr 12, 2017

#### Bug Fix:

* Packet loss was not emitted properly. values will be in decimals. Multiply by 100 to convert to %, Eg: packet loss of 2% will be emitted in value as 0.02

#### Added:

* Feature added: clientRegion property in initialization options to set and route calls to specific MediaServer POPs. Allowed regions are \["usa\_west","usa\_east","australia","europe","asia","south\_america"].
* Feature added: Pre-detect One-way audio. Before accepting Inbound call and before making an Outbound call. Make local peerConnection in the loop and check for mic issues. This happens every first call on browser reload and then in 1 hr interval.
* Feature added: Call Terminated by caller, Callee details. nCallTerminated event will have an object \{'originator':'local'} if caller ends or \{'originator':'remote'} if receiver ends
* Feature added: sendQualityFeedback() will now allow custom comments with a cap of 200 characters max.
* Feature added: debug:"ALL-PLAIN" in Options to turn off colour mode debug: "DEBUG" will show all logs except SIP trace debug: "ALL" will show all logs including SIP trace , Colour mode ON debug: "ALL-PLAIN" will show all logs including SIP trace, Colour mode OFF

### Version 2.0.6 Apr 04, 2017

#### Bug Fix:

* n logout() - use stop() instead of unregister('all');
* createObjectURL(stream) is deprecated! Use elem.srcObject = stream instead!
* reject () - only if call is not answered.

Patch in JsSIP

* @line:1538 patch included, The moment we get one Public IP from ICE just send out INVITE. File path sipLib/RTCSession.js

#### Added:

* Feature added: Even if users don't set enableTracking in options, we should set enableTracking=true
* Feature added: mediaMetrics Alert if ICE gathering takes more than 2 sec either for outgoing call invite or incoming call answer. Event name ice\_timeout
* Feature added: setConnectTone(true), Dial beep will play till we get an 18X response from the server. setting false will not play a beep tone.

### Version 2.0.5 Feb 27, 2017

#### Bug Fix:

* Terminate ICE gathering in 2 sec. After upgrading to JsSIP 3.0.0 this gatheringTimeout was removed.

Patch in JsSIP

* @line:1552 patch included to handle gatheringTimeout in sipLib/RTCSession.js; report to JsSIP [https://github.com/versatica/JsSIP/issues/432](https://github.com/versatica/JsSIP/issues/432)

#### Added:

* Included JsSIP lib as sipLib inside plivo-websdk-2.0 to handle customization in Jssip library

### Version 2.0.4

#### Bug Fix:

* Initialize JsSIP only after checking for DEBUG in log level to show proper SIP trace

#### Added:

* Play remoteStream if Incoming 183 has SDP
* Added callUUID to both incoming and outgoing calls in logs. It makes it easy to get callUUID directly from logs.
* Better clarity logs to both Incoming and Outgoing calls at each level
* Added log to show if Plivo SDK is initialized twice.
* Moved onIncomingCall event to emit on Incoming call progress. Previously its was emitted immediately after newRtcSession
* Now CallStats dashboard should Plivo web SDK version in context, Under 'General' menu
* Microseconds are added to logger date

### Version 2.0.3

#### Bug Fix:

* Emit webrtcNotSupported only on document ready.
* handle when callstats lib is not loaded

#### Added:

* moved all s3 links like audio and callstats lib to CDN links. CloudFront as Primary and CDN77 as secondary
* Don't initialize plivowebSDK when callstats lib is not loaded

### Version 2.0.2

#### Bug Fix:

#### Added:

* Audio API to control Input and Output devices
* availableDevices to show all available audio devices
* revealAudioDevices to force allow permission and list available devices
* microphoneDevices to set and use a particular microphone device as input
* speakerDevices to set and use a particular speaker device for DTMF, remote audio
* ringtoneDevices to set and use a particular speaker device for incoming ringtone

### Version 2.0.1

#### Bug Fix:

#### Added:

* we used webRTC adapter, a shim to insulate apps from spec changes and prefix differences which can work across most browsers
* supports Firefox, but mediaMetrics is not available since firefox doesn't support it
* supports Opera ( not fully tested)
* added 2 new methods getLastCallUUID, webRTC and a variable version
* dscp param in options to support QoS
* WebSocket min try to 2 and max retry to 20 in case client disconnects from socket server
* reduced stun servers to 2 to reduce the size of SDP and to reduce stun gathering time
* mediaMetrics supported in chrome and opera a major feature to trigger warning events during bad network and audio conditions
* upgraded Plivo web SDK to latest jsSIP 3.0.0
