# Release notes (/en/realtime-media/whiteboard/reference/release-notes/android)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

## Understand the tech [#understand-the-tech]

    This page tracks Android release notes for the Whiteboard SDK.

    ## Reference [#reference]

    <CalloutContainer type="info">
      <CalloutTitle>
        Note
      </CalloutTitle>

      <CalloutDescription>
        To ensure a consistent user experience across different platforms while enabling native access on each platform, the Whiteboard SDK for Android is implemented by creating a wrapper for the Whiteboard SDK for Web, rather than being a completely native SDK. Therefore, each Android SDK version by default includes the updates of the Web SDK version that it is built upon. The corresponding Web SDK version is provided in each Android release note, so that you can refer to the relevant Web SDK release note for updates.
      </CalloutDescription>
    </CalloutContainer>

    ## v2.16.100 [#v216100]

    Released on July 28, 2025.

    #### New features [#new-features]

    **High-performance whiteboard drawing tools**

    This release adds the `appliance-plugin`, a plugin that provides a set of high-performance whiteboard drawing tools. To use it, install `@netless/appliance-plugin` and enable it using the `WhiteSdkConfiguration.enableAppliancePlugin` option. For more details, see the [`appliance-plugin` documentation](https://github.com/netless-io/fastboard/blob/main/docs/zh/appliance-plugin.md).

    <CalloutContainer type="info">
      <CalloutDescription>
        * `@netless/appliance-plugin` is an external dependency and must be installed separately.
        * To ensure correct rendering of strokes, enable the plugin on all platforms (Web, Android, and iOS). If a platform does not enable it, strokes drawn on other platforms will not be visible.
        * After enabling the plugin, historical content remains visible but cannot be modified or upgraded. To avoid affecting the user experience, use the plugin on a new whiteboard. Disabling the plugin removes the content drawn with it.
      </CalloutDescription>
    </CalloutContainer>

    Once enabled, you can:

    * Use the `LASER_PENCIL` laser pencil tool. [Learn more](https://github.com/netless-io/fastboard/blob/main/docs/zh/appliance-plugin.md#%E6%96%B0%E5%8A%9F%E8%83%BD)
    * Use `MemberState.strokeOpacity` to set line transparency.
    * Use `MemberState.fillOpacity` to set fill transparency.
    * Use `MemberState.fillColor` to set fill color.

    **PPT rendering error handling**

    This release adds the `SlideListener.onSlideError` method to listen for PPT rendering errors. If an error occurs, call `WhiteSdk.recoverSlide` to recover rendering.

    #### API changes [#api-changes]

    **Added**

    * `WhiteSdkConfiguration`:
      * `enableAppliancePlugin`
    * `MemberState`:
      * `strokeOpacity`
      * `fillOpacity`
      * `fillColor`
    * `onSlideError`
    * `recoverSlide`

    ## v2.16.86 [#v21686]

    Released on July 28, 2025.

    <CalloutContainer type="info">
      <CalloutTitle>
        Note
      </CalloutTitle>

      <CalloutDescription>
        The wrapped Web SDK has been upgraded to v2.16.51.
      </CalloutDescription>
    </CalloutContainer>

    #### New features [#new-features-1]

    **Domain preselection**

    This version adds the `prepareWhiteConnection` method to preselect an optimal access domain, which can improve the connection speed when users join a whiteboard room for the first time.

    #### API changes [#api-changes-1]

    **Added**

    * `prepareWhiteConnection`
    * `ConnectionPrepareParam`

    ## v2.16.81 [#v21681]

    Released on July 28, 2025.

    <CalloutContainer type="info">
      <CalloutTitle>
        Note
      </CalloutTitle>

      <CalloutDescription>
        The wrapped Web SDK has been upgraded to v2.16.48.
      </CalloutDescription>
    </CalloutContainer>

    #### New features [#new-features-2]

    **Window apps management**

    In the multi-window mode, the SDK supports inserting the PPT or whiteboard plugin as a window. These are collectively referred to as window apps. Starting from this version, the `Room` object has the following new methods for managing window apps in the multi-window mode:

    * `addApp`: Inserts a window app and returns the app ID.
    * `closeApp`: Closes the window of the specified window app.
    * `focusApp`: Switches the focused window to the window of the specified window app.
    * `queryApp`: Queries the information of the specified window app.
    * `queryAllApps`: Queries the information of all current window apps.

    **Custom whiteboard tools**

    The `MemberState` has the following new properties for customizing whiteboard tools:

    * `textColor`: The color of the text in the text tool.
    * `pencilEraserSize`: The size of the pencil eraser tool.

    **New PPT rendering configurations**

    The `WhiteSdkConfiguration.SlideAppOptions` has the following new properties for PPT rendering configurations:

    * `minFPS`: Sets the minimum frame rate for PPT animations.
    * `maxFPS`: Sets the maximum frame rate for PPT animations.
    * `resolution`: Sets the rendering resolution multiplier for PPT.
    * `maxResolutionLevel`: Sets the maximum resolution for PPT.
    * `bgColor`: Sets the background color for PPT animations.
    * `forceCanvas`: Specifies whether to force 2D rendering. It is disabled by default.
    * `enableGlobalClick`: Specifies whether to enable executing the next step function by clicking on the PPT screen. It is enabled by default.

    **Whiteboard drawing performance optimization strategy**

    The `RoomParams` has a new property `optimizeOptions` for setting the performance optimization strategy for whiteboard drawing. The performance optimization includes the following three methods:

    * Adjusting the refresh interval of whiteboard drawing: A lower refresh interval provides smoother stroke display but has a higher performance consumption, while a higher refresh interval makes the stroke appear more laggy but has a lower performance consumption.
    * Using single canvas drawing: By default, the whiteboard uses two canvases alternately to avoid flickering on some devices during drawing. Using a single canvas drawing can prevent the need for redrawing and reduce performance consumption.
    * Using floating canvas: In the writing scenario, after enabling single canvas drawing, a floating canvas of approximately 256 x 256px is generated based on the drawing position. When subsequent drawing does not exceed the range of this floating canvas, the synchronous drawing of strokes will be limited to this floating canvas instead of the entire canvas, reducing performance consumption.

    **Other additions**

    This version also includes the following features:

    * Adds the `updateText` method for updating the text inserted using `insertText`.
    * Adds the `setSyncMode` method for immediately processing whiteboard events and drawing strokes.
    * Adds the `setDisableInitialStateCallback` method for disabling the callback of the full state after joining the room.

    #### Fixed issues [#fixed-issues]

    This version fixes the following issues:

    * When `WhiteWindowParams.fullscreen` was enabled, the app did not display in full screen on the second opening.
    * When `WindowParams.fullscreen` was enabled, the status bar occasionally flickered.
    * Path animation could not return to the original position after page switching.
    * Diamond fill filled the entire shape.
    * The built-in cursor disappeared after reconnection.
    * Occasional flickering when using fade-in and fade-out animations.
    * The built-in cursor disappeared after modifying `isWritable`.

    #### API changes [#api-changes-2]

    **Added**

    * `addApp`
    * `closeApp`
    * `focusApp`
    * `queryApp`
    * `queryAllApps`
    * `WindowAppSyncAttrs`
    * The following in `MemberState`:
      * `textColor`
      * `pencilEraserSize`
    * The following in `SlideAppOptions`:
      * `minFPS`
      * `maxFPS`
      * `resolution`
      * `maxResolutionLevel`
      * `bgColor`
      * `forceCanvas`
      * `enableGlobalClick`
    * `setSyncMode`
    * `updateText`
    * `setDisableInitialStateCallback`

    **Modified**

    * `insertText`

    ## v2.16.59 [#v21659]

    v2.16.59 was released on January 19, 2024.

    <CalloutContainer type="info">
      <CalloutTitle>
        Note
      </CalloutTitle>

      <CalloutDescription>
        The wrapped Web SDK has been upgraded to v2.16.42.
      </CalloutDescription>
    </CalloutContainer>

    #### Compatibility changes [#compatibility-changes]

    This version deprecates the existing London data center (`Region.gb-lon`) in the Whiteboard Data Center and introduces a new data center in Frankfurt, Europe (`Region.eu`), whose service covers Europe. If you have set `Region.gb-lon` in the previous version, please switch to` Region.eu` after upgrading to this version and enable this data center in Agora Console.

    #### New features [#new-features-3]

    **PPT Volume Control**

    This version adds the `getSlideVolume` and `updateSlideVolume `methods to retrieve and update the volume of audio in PPT slides.

    **PPT URL Intercept and Replacement**

    `WhiteSdkConfiguration` adds a new configuration option, `enableSlideInterrupterAPI`, to enable intercepting and replacing URLs of PPT resources. This feature can be used to encrypt PPT resources uploaded by users and protect their privacy.
    Once enabled, the PPT file URL intercept and replacement feature can be implemented by calling `WhiteSdk.setSlideListener(SlideListener)`.

    **PPT Rendering Notification**

    `WhiteSdkConfiguration` adds the `whiteSlideAppParams` configuration option for displaying configurations related to [@netless/app-slide](https://github.com/netless-io/netless-app/tree/master/packages/app-slide) rendering. Currently, it supports configuring `WhiteSlideAppParams.showRenderError` to show or hide rendering error notifications.

    **Custom API Server Domain**

    `WhiteSdkConfiguration` adds the `apiHosts` configuration option to configure a list of API server domains for the whiteboard, which can be used for server proxy implementation.

    **Custom Module Source**

    `RoomParams` adds the `modulesOrigin` configuration option to configure the address for requesting whiteboard module data.

    **Document Operation Events**

    This release adds the `dispatchDocsEvent` method to send events to the inserted PDF/PPTX documents in the whiteboard, allowing control over document page flipping, page navigation, and slide animation playback.

    #### Improvements [#improvements]

    **Optimized Document Insertion**

    This version optimizes the process of converting and inserting PPT files into the whiteboard using the new document conversion service. You can use the new `createSlideApp` method to construct a `WindowAppParam` object, which includes `ProjectorAttributes` and `ProjectorOptions`, corresponding to the parameters passed when opening the document, see `addApp`.

    **Window Fullscreen**

    A new property, `WindowParams.fullscreen`, is added to control whether the window is displayed in fullscreen mode.

    #### Issues fixed [#issues-fixed]

    This version fixed the issue of layout preview not working in the latest version of Android Studio.

    #### API Changes [#api-changes-3]

    Added

    * `getSlideVolumeWithCompletionHandler`

    * `updateSlideVolume`

    * `WhiteSdkConfiguration`

      * `enableSlideInterrupterAPI`
      * `whiteSlideAppParams`
      * `apiHosts`

    * `setSlideDelegate`

    * `modulesOrigin `in` RoomParams`

    * `dispatchDocsEvent`

    * `WindowDocsEvent`

    * `createSlideApp`

      * `ProjectorAttributes`
      * `ProjectorOptions`
      * `WindowAppParam`

    * `WindowParams.fullscreen`

    ## v2.16.42 [#v21642]

    v2.16.42 was released on December 2, 2022.

    <CalloutContainer type="info">
      <CalloutTitle>
        Note
      </CalloutTitle>

      <CalloutDescription>
        The wrapped Web SDK has been upgraded to v2.16.37.
      </CalloutDescription>
    </CalloutContainer>

    #### New features [#new-features-4]

    **1. Whiteboard tool updates**

    This release adds new features for the following whiteboard tools:

    * Pencil: Adds support for drawing dotted lines by adding `dottedLine: true` in `room.memberState`.
    * Text: Adds support for directly selecting and editing whiteboard text by adding `textCanSelectText: true` in `room.memberState`.

    In addition, this release adds a pencil eraser tool to erase any part of a pencil stroke.

    **2. Floatbar**

    This release adds the floatbar feature. The floatbar pops up when selecting any whiteboard item, which enables users to
    easily edit these whiteboard items. For example, when selecting a stroke, the floatbar enables the user to remove it or
    change its color. When selecting text, the floatbar enables the user to adjust its style or change its typeface.

    Call the `setUsingFloatBar` method to enable the floatbar.

    **3. Remove whiteboard pages**

    This release adds the `removePage` method to delete a specified whiteboard page.

    **4. Request slide log**

    This release adds the `requestSlideLog` method in the `WhiteSdk` class to request the slide log on the client.
    This facilitates debugging slide-related issues.

    **5. Player callbacks**

    To facilitate listening to the state changes of `Player`, this release adds `addPlayerListener` and `removePlayerListener`
    methods to add and remove player callbacks.

    #### Improvements [#improvements-1]

    This release optimizes the audio playback control in PPT files. You can now pause or resume audio mixing or playback in
    dynamic PPT files with the `pauseAudioMixing` and `resumeAudioMixing` methods.

    #### Fixed issues [#fixed-issues-1]

    This release fixes the following issues:

    * Under multi-window mode, no callback was received when the `sceneState` changed.
    * The creation of the whiteboard app sometimes failed after reconnection.
    * When creating the whiteboard app, synchronizing the initial height and width sometimes failed.
    * Switching the readable/writable state sometimes caused the configuration to be lost in the `disableCameraTransform` of `mainView`.

    #### API changes [#api-changes-4]

    **Added**

    * New properties in the `MemberState` class: `dottedLine` and `textCanSelectText`
    * New property in the `Appliance` class: `PENCIL_ERASER`
    * `removePage`
    * `pauseAudioMixing`
    * `resumeAudioMixing`
    * `addPlayerListener`
    * `removePlayerListener`
    * `setUsingFloatBar`
    * `requestSlideLog`

    ## v2.16.21 [#v21621]

    v2.16.21 was released on September 13, 2022.

    #### Compatibility changes [#compatibility-changes-1]

    **SDK integration changes**

    As of v2.16.0, Agora only updates the `netless-io:whiteboard-android` GitHub repository; Agora no longer maintains the `duty-os:white-sdk-android` GitHub repository. When integrating the SDK v2.16.0 or later with JitPack, you need to modify the `implementation` field under `dependencies` in the `/Gradle Scripts/build.gradle(Module: <projectname>.app)` file as follows:

    ```text
    dependencies {
        implementation 'com.github.netless-io:whiteboard-android:<version>'
    }
    ```

    For details, see [Get the SDK](/en/realtime-media/whiteboard/build/set-up-and-build-your-first-app/get-started-sdk#get-the-whiteboard-sdk).

    #### New features [#new-features-5]

    **1. Inserting text**

    This release adds the `insertText` method for inserting text at a specified position.

    **2. Disabling the stroke effect**

    This release adds the `setDisableNewPencilStroke` method to `WhiteSdkConfiguration` to enable or disable the stroke effect of the pencil. The default value of the `disableNewPencilStroke` parameter in this method is `true`, and the SDK enables the stroke effect immediately when you call `setDisableNewPencil(false)` to enable the new pencil. To disable the stroke effect after setting `setDisableNewPencil(false)`, you can call `setDisableNewPencilStroke(true)`.

    This release also adds the `isDisableNewPencilStroke` method to `WhiteSdkConfiguration` to get whether the stroke effect of the new pencil is disabled.

    **3. Getting the scene information**

    adds the `getScene` method to the `Displayer` class, which supports using the scene path to get the information about a specified scene.

    #### Improvements [#improvements-2]

    This release provides the following improvements:

    * Adds tween animation for the new pencil. This allows the SDK to automatically insert frames between keyframes when a user draws or writes with the new pencil, so that remote users see a smoother drawing process. To experience this improvement, ensure that you have called `setDisableNewPencil(false)` to enable the new pencil.
    * Optimizes the writing performance on Android browsers.
    * Optimizes the reconnecting mechanism in weak network environment to reduce unnecessary reconnections.

    #### Fixed issues [#fixed-issues-2]

    This release fixed the following issues:

    * Occasionally, the contents on the whiteboard appeared shifted and overshadowed after users zoomed or moved their view.
    * Occasionally, users could not switch the pages of a dynamic PPT slide after an SDK reconnection.
    * The contents on the whiteboard occasionally were not fully displayed when users joined a whiteboard room that already had.
    * A memory leak sometimes occurred after an SDK reconnection.
    * An error sometimes occurred when calling `setWritable` repeatedly.
    * When a user switched to read-only mode, then switched back to read-write mode and wrote, remote users saw that user's cursor as fixed.

    #### API changes [#api-changes-5]

    **Added**

    * `insertText`
    * `setDisableNewPencilStroke`
    * `isDisableNewPencilStroke`
    * `getScene`

    ## v2.15.24 [#v21524]

    v2.15.24 was released on January 21, 2022.

    This release provides the following improvements:

    * Updates `white-web-sdk` to v2.15.16.
    * Optimizes `getSceneSnapshotImage` and `getScenePreviewImage` to ensure the images inserted in the scene are displayed correctly in the screenshot.

    ## v2.15.0 [#v2150]

    v2.15.0 was released on November 16, 2021.

    #### Compatibility changes [#compatibility-changes-2]

    To help you manage users in a room, this release adds the `uid` parameter in `RoomParams`, for setting the unique identifier of a user.

    If you upgrade the SDK to v2.15.0 or later, to avoid affecting your service, ensure that you pass in a string `uid` in `RoomParams` when calling `joinRoom`. The `uid` of each user cannot be longer than 1024 bytes and must be unique in the same room. For more information, see [Join a Whiteboard Room](/en/realtime-media/whiteboard/build/set-up-and-build-your-first-app/get-started-sdk#join-the-interactive-whiteboard-room-from-your-app-client).

    #### New features [#new-features-6]

    This release adds support for converting and displaying the following PowerPoint (PPT) features:

    * Action buttons
    * Slide masters added with animation effects.

    #### Improvements [#improvements-3]

    This release provides the following improvements:

    * Updates `white-web-sdk` to v2.15.1.
    * Further optimizes the writing experience.

    #### Fixed issues [#fixed-issues-3]

    This release has fixed the following issues:

    * The following issues with displaying dynamic PPT files in the whiteboard were fixed:
      * The images were displaced occasionally.
      * Failure to read certain styles caused the screen to go blank.
      * The rotation angle and color were incorrect for some text.
      * Occasionally, elements with an animation effect were not displayed
      * The animation of some text was displayed incorrectly.

    #### API changes [#api-changes-6]

    **Modified**

    * `RoomParams` \[1/3]
    * `RoomParams` \[2/3]
    * `RoomParams` \[3/3]

    ## v2.14.3 [#v2143]

    v2.14.3 was released on November 11, 2021.

    #### Compatibility changes [#compatibility-changes-3]

    As of this release, the minimum platform version supported by the Agora Interactive Whiteboard Android SDK changes as follows:

    * Android 5.0, instead of Android 4.4
    * Android SDK API level 21, instead of Android SDK API level 19

    #### Improvements [#improvements-4]

    This release provides the following improvements:

    * Updates `white-web-sdk` to v2.14.5.
    * Further optimizes the writing performance.
    * Optimizes the shape of handwriting.
    * Improves the accuracy of the `onPhaseChanged` callback.
    * Hides elements that should not be displayed in a slide master using the file-conversion function.

    #### Fixed issues [#fixed-issues-4]

    This release has fixed the following issues:

    * After switching to the hand tool, users could not switch back to the cursor.
    * Occasionally, the handwriting disappeared suddenly during writing.
    * Occasionally, the handwriting had unnatural teardrop-like strokes during writing.
    * When the user edited text after manually scaling the text box, the text box and text reverted to the original size.
    * The view became incorrect after the window size changed on some browsers and devices.
    * When the eraser was moved quickly, the eraser icon was not enlarged and the fast deleting function did not work.
    * Occasionally, multiple audio files in dynamic PPT slides played simultaneously.
    * Animations were displayed incorrectly after a dynamic PPT slide returned to the previous page.
    * Occasionally, a text box with an animation effect was flipped in mirror mode.

    ## v2.13.22 [#v21322]

    v2.13.22 was released on August 20, 2021.

    #### New features [#new-features-7]

    This release has the following new features:

    * Adds the `onLogger` callback in the `CommonCallback` interface, with which you can get the local debug log output by the SDK.
    * Adds support for converting and displaying the following PowerPoint (PPT) features:
      * Add animations to text per paragraph.
      * Animate text by word or by letter.
      * All preset table styles.
      * Fonts smaller than 12 px.

    #### Improvements [#improvements-5]

    This release updates `white-web-sdk` to 2.13.17.

    #### Fixed issues [#fixed-issues-5]

    This release fixed the following issues:

    * The `onLogger` and `onMessage` callbacks did not take effect.
    * Occasionally, the room was stuck in the connecting state when the user joined a room.
    * The cursor disappeared for some users after the SDK reconnected.
    * The status of some plugins was incorrect after the SDK reconnected.
    * The hand tool was not restricted by the set `CameraBound` .
    * On some high-resolution devices, when the user was in the `Follower` view mode, the center point of the view was slightly shifted.
    * The following issues with displaying dynamic PPT files in the whiteboard were fixed:
      * Paragraph spacing was displayed incorrectly.
      * Failed to split text into columns.
      * The slide background fill of shapes was displayed incorrectly.
      * Hanging indentation was displayed incorrectly.
      * The slide was displayed incorrectly when the user called `pptPreviousStep` to roll back a slide.
      * The numbering of text displayed incorrectly.
      * Some equations were displayed incompletely after conversion.
      * Some lines broke incorrectly.
      * Text written from right to left (such as Arabic) was displayed incorrectly.

    ## v2.13.17 [#v21317]

    v2.13.17 was released on July 23 2021.

    #### New features [#new-features-8]

    To improve the dynamic file conversion function, this release adds support for converting and displaying the following PowerPoint (PPT) features:

    * Animation effect > Reverse Path Direction
    * Vertical Text Box
    * Microsoft Equation Editor 3.0
    * Hide background graphic in a slide master
    * Change the color of pictures
    * The following picture effects are now supported:
      * Metal Frame
      * Soft Edge Rectangle
      * Double Frame, Black
      * Thick Matte, Black
      * Simple Frame, Black
      * Moderate Frame, Black
      * Center Shadow Rectangle
      * Soft Edge Oval
      * Metal Rounded Rectangle
      * Metal Oval

    #### Improvements [#improvements-6]

    This release has the following improvements:

    * Updates `white-web-sdk` to 2.13.11.
    * Updates `@netless/video-js-plugin` to 0.3.3.
    * Reduces CPU usage during the playback of animations in dynamic PPT files.
    * Improves the smoothness of writing and drawing on the whiteboard
    * To improve the accuracy of time synchronization, changes the data type of the `delaySec` parameter in `setTimeDelay` from Integer to Double.
    * Supports printing logs on scene changes.
    * Adds the `preview` parameter in `PptPage`, which supports displaying dynamic PPT previews in the whiteboard. See `API reference`.

    #### Fixed issues [#fixed-issues-6]

    This release fixed the following issues:

    * The contents on the whiteboard occasionally became unclear when the user adjusted the view.
    * Users of the Android SDK occasionally failed to draw the first line after joining the room.
    * The method call of `refreshViewSize` did not take effect occasionally.
    * The following issues with displaying dynamic PPT files in the whiteboard were fixed:
      * Animations did not play in the set order.
      * Animations did not disappear when playback finished.
      * Table height was displayed incorrectly.
      * Pictures inserted in content placeholders failed to display.
      * Some shapes were rendered incorrectly.
      * The text was incorrectly indented.
      * Animation triggers did not work.
      * Picture transparency was incorrect.

    ## v2.13.4 [#v2134]

    v2.13.4 was released on June 15, 2021.

    This release updates `white-web-sdk` to 2.13.4.

    ## v2.13.2 [#v2132]

    v2.13.2 was released on June 11, 2021.

    This release updates `white-web-sdk` to 2.13.3.

    ## v2.13.1 [#v2131]

    v2.13.1 was released on June 11, 2021.

    **Improvement**

    This release updates `white-web-sdk` to 2.13.2.

    **Issue fixed**

    This release fixed the issue that when `disableDeviceInputs` is set as `true`, the user might still be able to operate the iframe plugin.

    ## v2.12.36 [#v21236]

    v2.12.36 was released on June 8, 2021.

    This release fixed the following issue: If the user in host mode zooms in or out on the HTML5 file while using the clicker tool, users in follower mode saw incomplete display of file content.

    ## v2.12.35 [#v21235]

    v2.12.35 was released on June 7, 2021.

    This release updates [`@netless/cursor-tool`](https://github.com/netless-io/whiteboard-demo/tree/master/packages/cursor-tool) to 0.1.0 and `@netless/iframe-bridge` to 2.1.2.

    ## v2.12.34 [#v21234]

    v2.12.34 was released on June 4, 2021.

    This release updates `white-web-sdk` to 2.12.21.

    ## v2.12.33 [#v21233]

    v2.12.33 was released on June 3, 2021.

    This release updates [`@netless/video-js-plugin`](https://www.npmjs.com/package/@netless/video-js-plugin) to 0.1.5.

    ## v2.12.32 [#v21232]

    v2.12.32 was released on June 2, 2021.

    This release fixed the video display issues of `@netless/video-js-plugin`.

    ## v2.12.31 [#v21231]

    v2.12.31 was released on June 1, 2021.

    This release updates [`@netless/video-js-plugin`](https://www.npmjs.com/package/@netless/video-js-plugin) to 0.1.3 to fix the incompatibility issue between the `video-js-plugin` and earlier versions of Andrid WebView .

    ## v2.12.30 [#v21230]

    v2.12.30 was released on May 25, 2021.

    This release updates [`@netless/cursor-tool`](https://github.com/netless-io/whiteboard-demo/tree/master/packages/cursor-tool) to 0.0.9.

    ## v2.12.29 [#v21229]

    v2.12.29 was released on May 24, 2021.

    #### New features [#new-features-9]

    This release integrates [`@netless/video-js-plugin`](https://www.npmjs.com/package/@netless/video-js-plugin), which is used by an Android client to watch video played on the whiteboard on a Web client. Supported file formats include M3U8 and others.

    #### Improvement [#improvement]

    This release updates `white-web-sdk`  to 2.12.20.

    ## v2.12.28 [#v21228]

    v2.12.28 was released on May 20, 2021.

    This release updates `white-web-sdk`  to 2.12.19.

    ## v2.12.27 [#v21227]

    v2.12.27 was released on May 17, 2021.

    This release has the following improvements:

    * Updates `white-web-sdk `to 2.12.18.
    * Enables server-side typesetting (`useServerWrap`) by default. When server-side typesetting is enabled, the size of font files are automatically reduced for faster rendering.

    ## v2.12.26 [#v21226]

    v2.12.26 was released on May 13, 2021.

    This release adds the following features:

    * Adds `Clicker` to `Appliance` for interacting with HTML5 files.
    * Adds `ShapeType` to `MemberState` for setting the Shape tool. Supported shape types include triangle, rhombus, pentagram, and speech balloon.
    * Adds the `syncBlockTimestamp` method to the `Room` class. You can use this method to set the delay time for sending the whiteboard content, so that the whiteboard content and the audio and video are sent at the same time.
    * Updates `white-web-sdk` to 2.12.17.

    ## v2.12.25 [#v21225]

    v2.12.25 was released on April 28, 2021.

    This release updates [`@Netless/white-audio-plugin2`](https://github.com/netless-io/whiteboard-demo/tree/master/packages/white-audio-plugin) and [`@Netless/white-video-plugin2`](https://github.com/netless-io/react-whiteboard/tree/master/packages/white-video-plugin) to fix some display issues.

    ## v2.12.24 [#v21224]

    v2.12.24 was released on April 27, 2021.

    #### New features [#new-features-10]

    This release integrates [`@Netless/white-audio-plugin2`](https://github.com/netless-io/whiteboard-demo/tree/master/packages/white-audio-plugin) and [`@Netless/white-video-plugin2`](https://github.com/netless-io/react-whiteboard/tree/master/packages/white-video-plugin), which are used by an Android client to listen to audio and watch video played on the whiteboard on a Web client.

    #### Fixed issues [#fixed-issues-7]

    This release fixed the issue that the asynchronous `getRoomState` method had no callbacks.

    ## v2.12.22 [#v21222]

    v2.12.22 was released on April 22, 2021.

    This release updates `white-web-sdk` to 2.12.14.

    ## v2.12.21 [#v21221]

    v2.12.21 was released on April 22, 2021.

    This release has the following improvements:

    * Changes `RoomListener` and `PlayerListener` to main thread callbacks.
    * Updates `white-web-sdk` to 2.12.13.
    * Updates `@Netless/iframe-bridge` to 2.12.17.

    ## v2.12.20 [#v21220]

    v2.12.20 was released on April 17, 2021.

    This release updates `white-web-sdk` to 2.12.12.

    ## v2.12.19 [#v21219]

    v2.12.19 was released on April 14, 2021.

    This release has the following improvements:

    * Adds a new constructor of `PptParams` that does not contain the `scheme` parameter.
    * Updates `@Netless/iframe-bridge` to 2.0.14 to improve the iframe plugin.

    ## v2.12.18 [#v21218]

    v2.12.18 was released on April 12, 2021.

    This release updates `@netless/iframe-bridge` to 2.0.13 to improve message notifications.

    ## v2.12.17 [#v21217]

    v2.12.17 was released on April 12, 2021.

    This release updates `@netless/iframe-bridge` to 2.0.11 and improves the display on Android devices.

    ## v2.12.16 [#v21216]

    v2.12.16 was released on April 9, 2021.

    This release updates `@netless/iframe-bridge` to 2.0.10 and improves the display on Android devices.

    ## v2.12.15 [#v21215]

    v2.12.15 was released on April 10, 2021.

    This release updates `white-web-sdk` to 2.12.9.

    ## v2.12.14 [#v21214]

    v2.12.14 was released on April 9, 2021.

    This release updates `@netless/iframe-bridge` to 2.0.9 to fix the display of HTML5 files.

    ## v2.12.13 [#v21213]

    v2.12.13 was released on April 9, 2021.

    This release restores the `scaleIframeToFit` method of the `Displayer` class.

    ## v2.12.12 [#v21212]

    v2.12.12 was released on April 9, 2021.

    This release updates `@netless/iframe-bridge` to 2.0.8 to fix the display of HTML5 files.

    ## v2.12.11 [#v21211]

    v2.12.11 was released on April 6, 2021.

    This release updates `white-web-sdk` to 2.12.8 to fix the problem that setting Follower mode did not take effect immediately.

    ## v2.12.10 [#v21210]

    v2.12.10 was released on April 2, 2021.

    This release updates `white-web-sdk` to 2.12.7 to improve the display of dynamic PPT files.

    ## v2.12.9 [#v2129]

    v2.12.9 was released on March 30, 2021.

    This release updates `@netless/iframe-bridge` to 2.0.7.

    ## v2.12.8 [#v2128]

    v2.12.8 was released on March 30, 2021.

    This release updates `white-web-sdk` to 2.12.6.

    ## v2.12.7 [#v2127]

    v2.12.7 was released on March 25, 2021.

    This release updates `@netless/iframe-bridge` to 2.0.5.

    ## v2.12.6 [#v2126]

    v2.12.6 was released on March 25, 2021.

    This release adds the `scaleIframeToFit` method to the `Displayer` class to enable zooming in and out so that HTML5 files can be displayed completely on screen.

    ## v2.12.5 [#v2125]

    v2.12.5 was released on March 25, 2021.

    This release updates [`@netless/cursor-tool`](https://github.com/netless-io/whiteboard-demo/tree/master/packages/cursor-tool) to 0.0.7.

    ## v2.12.3 [#v2123]

    v2.12.3 was released on March 20, 2021.

    This release changes the default value of `disableNewPencil` in the `setDisableNewPencil` method from `false` to `true` so that the stroke effect is disabled by default. This addresses the issue that the stroke effect is not supported by SDKs earlier than v2.2.12.

    To enable the stroke effect properly, ensure that every user in the room is using one of the following SDKs:

    * Android SDK v2.12.3 or later
    * iOS SDK v2.12.3 or later
    * Web SDK v2.12.5 or later

    ## v2.12.2 [#v2122]

    v2.12.2 was released on March 16, 2021.

    #### New features [#new-features-11]

    This release adds the stroke effect to better display handwriting. Call `setDisableNewPencil` to enable or disable the stroke effect, and call `isDisableNewPencil` to see whether the stroke effect is enabled.

    To enable the stroke effect properly, ensure that every user in the room is using one of the following SDKs:

    * Android SDK v2.12.2 or later
    * iOS SDK v2.12.3 or later
    * Web SDK v2.12.5 or later

    #### Improvements [#improvements-7]

    This release updates `white-web-sdk` to v2.12.4 to improve the display logic of PPT files.

    #### Issues fixed [#issues-fixed-1]

    Fixed the crash problem caused by abnormal callbacks in live rooms in `debug` mode.

    
  
      
  
      
  
