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

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

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

    This page tracks Web release notes for the Whiteboard SDK.

    ## Reference [#reference-2]

    ## v2.16.53 [#v21653]

    Released May 10, 2025

    #### Improvements [#improvements-15]

    This release includes the following changes:

    * For security and compliance, the `regions` parameter used when joining a whiteboard room now distinguishes between domestic and international data centers.
    * To prevent memory overflows caused by image uploads in formats such as `base64`, the `src` path for inserted images must now be a URL that starts with `http` or `https`.

    ## v2.16.51 [#v21651]

    Released on July 28, 2025.

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

    **Alternative API domains**

    To ensure the connectivity of API calls, this version adds the following alternative API domains, which will be automatically selected during SDK initialization:

    | Domain                       | Covered region       |
    | ---------------------------- | -------------------- |
    | `api.whiteboard.sd-rtn.com`  | CN, India, Singapore |
    | `api.baiban.shengwang.cn`    | CN                   |
    | `api.whiteboard.rtelink.com` | US,  EU              |
    | `api.netless.link`           | CN, India, Singapore |
    | `api.whiteboard.agora.io`    | US,  EU              |

    #### Improvements [#improvements-16]

    This version includes the following improvements:

    **Optimized WebSocket transmission experience**

    To address the issue of slow whiteboard room joining, this version includes the following improvements:

    * Optimized WebSocket reconnection algorithm to improve reconnection speed.
    * Added `onConnection` event to report that WebSocket is connected and is downloading the whiteboard snapshot data of the current room to restore the room state. You can use this callback event to prompt users that the whiteboard room is loading.

    **Other improvements**

    This version also includes the following improvements:

    * Improved the algorithm for determining whether the cursor hits a graphic when the graphic has a fill color, optimizing the graphic selection experience.
    * Added a `timeout` parameter to the `screenshotToCanvasAsync` method to set the image loading timeout. If the image loading exceeds this time, the SDK will directly proceed to the next drawing operation without waiting for the image to load completely.
    * Added a `commandWheelToZoom` property to `ConstructRoomParams` to implement zooming the whiteboard by holding down the `command` key and scrolling the mouse wheel on macOS devices.
    * Optimized the button style of the "Transparent" fill color in the floating bar.

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

    This version fixes the following issue:

    * The error message `AkkoSocket can't emit when phase is connecting` that appears in the console when connecting to WebSocket for more than 2 seconds.

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

    **Added**

    * `onConnection`
    * The `timeout` parameter in the `screenshotToCanvasAsync`
    * The `commandWheelToZoom` parameter in `ConstructRoomParams`

    ## v2.16.49 [#v21649]

    Released on July 28, 2025.

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

    **Fill closed shape elements**

    `MemberState` adds the `fillColor` property, which is used to set the fill color of closed shape elements such as circles and rectangles.

    **Automatic switch to select tool**

    `MemberState` adds the following properties to automatically switch to the select tool after using the corresponding whiteboard tool:

    * `textCompleteToSelector`: Automatically switch to the select tool after typing with the text tool.
    * `rectangleCompleteToSelector`: Automatically switch to the select tool after drawing a rectangle.
    * `ellipseCompleteToSelector`: Automatically switch to the select tool after drawing a circle.
    * `straightCompleteToSelector`: Automatically switch to the select tool after drawing a straight line.
    * `arrowCompleteToSelector`: Automatically switch to the select tool after drawing an arrow.
    * `shapeCompleteToSelector`: Automatically switch to the select tool after drawing a triangle, bubble, or other shapes.

    **Whiteboard drawing performance optimization strategy**

    The `joinRoom` method adds the `optimizeOptions` parameter to set the performance optimization strategy for whiteboard drawing. The performance optimization options include:

    * Adjusting the refresh interval of whiteboard drawing: A lower refresh interval provides smoother stroke display but has a higher resource consumption, while a higher refresh interval may result in laggy strokes but has a lower resource 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 eliminate redraws and reduce performance consumption.
    * Using floating canvas: When writing on the whiteboard, after enabling single canvas drawing, a floating canvas of approximately 256 x 256px is generated based on the drawing position. When subsequent drawings are within the range of this floating canvas, the synchronization of strokes is limited to this floating canvas, reducing performance consumption.

    #### Improvements [#improvements-17]

    This version includes the following improvements:

    * `MemberState` adds the `textSizeOverride` property, which is used to set the default font size of the text tool. If not set, the default font size used will be the same as the last created text element.
    * The `room.useNativeClipboard` property is added to set whether to use the native clipboard. When enabled, the whiteboard shortcuts for copy and paste in `HotKeys` will be disabled and replaced with the native `copy` and `paste` events.
    * `DisplayerCallbacks` adds the `onBackgroundError` callback to report background image loading failure.
    * `RoomCallbacks` adds the `onObjectsLimit` callback to report when the number of elements in the whiteboard exceeds the limit. When the limit is reached, the frontend will throw warnings and events.
    * `ImageInformation` adds the `crossOrigin` property to set whether to load images in a cross-origin manner. It is enabled by default.
    * The `room` class adds the `syncMode` property. When set to `true`, synchronization will be more frequent but may slightly affect animation smoothness.
    * A floating toolbar is displayed when selecting graphic elements, such as rectangles and circles, drawn on the whiteboard.
    * The `clearUndoHistory` method is added to clear the undo history.
    * Setting `cursorAdapter: false` can hide the built-in cursors, such as the laser pen, eraser, and so on.
    * Text elements now have a fixed line height to avoid display differences across platforms.

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

    This version fixes the following issues:

    * Memory leaks caused by not destroying certain listeners when exiting the room.
    * Exception errors when read-only users pressed the Esc key.
    * Occasional display errors when drawing dashed lines.
    * An issue where erasing text with the eraser tool on touch devices did not work properly.
    * Occasional white screen when entering the room without any error messages.
    * Copied and pasted text elements could not be selected.
    * The persistent highlight of the text box content after deselecting the text box.

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

    **Added**

    * `MemberState` adds the following properties:
      * `fillColor`
      * `textSizeOverride`
      * `textCompleteToSelector`
      * `rectangleCompleteToSelector`
      * `ellipseCompleteToSelector`
      * `straightCompleteToSelector`
      * `arrowCompleteToSelector`
      * `shapeCompleteToSelector`
    * `DisplayerCallbacks` adds `onBackgroundError`
    * `screenshotToCanvasAsync`
    * `Room` adds the `useNativeClipboard` property
    * `RoomCallbacks` adds `onObjectsLimit`
    * `clearUndoHistory`
    * `joinRoom` adds the `optimizeOptions` parameter
    * `OptimizeOptions`
    * `LowTaskAnimationInterval`
    * `OriginCoordType`
    * `ImageInformation` adds the `crossOrigin` property
    * `room` adds the `syncMode` property

    ## v2.16.43 [#v21643]

    v2.16.43 was released on January 19, 2024.

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

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

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

    This version fixed the issue on the Windows platform when using the Whiteboard Web App where the `shift` key was incorrectly detected, causing the pencil tool to switch to drawing straight lines and unable to revert back.

    ## v2.16.37 [#v21637]

    v2.16.37 was released on December 2, 2022.

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

    **1. Whiteboard tool updates**

    This release adds new features for the following whiteboard tools:

    * Ellipse: Press the `Alt` or `option` button to draw a circle with the cursor as the center.
    * Pencil:
      * Draw straight lines: The user can press `shift` to draw a straight line.
      * Draw dotted lines: Add `dottedLine: true` in `room.memberState` to enable this feature.
      * Writing performance: Adds support for adjusting the balance between the performance and the quality of the pencil
        tool by modifying the `NewPencilWritingQuality` enum.
    * 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. Screenshot to canvas**

    This release adds the `screenshotToCanvas` method to take a screenshot and write it to canvas.

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

    This release fixes the following issues:

    * The recall and redo function sometimes got reset after the user switched pages or reconnected.
    * Some fields in `room.setMemberState()` could not be saved locally.
    * The `floatBar` did not work properly on some touch devices.

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

    **Added**

    * New properties in the `MemberState` class: `dottedLine` and `textCanSelectText`
    * `NewPencilWritingQuality`
    * `screenshotToCanvas`
    * New value in the `ApplianceNames` enum: `pencilEraser`

    ## v2.16.24 [#v21624-1]

    v2.16.24 was released on September 13, 2022.

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

    **1. Text editing**

    To support custom text editing options, this release adds the following APIs.

    * `insertText`: Inserts text at a specified position.
    * `updateText`: Modifies the specified text.
    * `updateSelectedText`: Modifies the font style of the currently selected text, including font size, color, bold style, and italic style.

    You can use these APIs to customize the text input box and editing toolbar.

    This release also adds the `textColor`, `bold`, `italic`, `underline`, and `lineThrough` properties to `MemberState` to provide richer text editing options. When you use the `text` tool provided by the Whiteboard SDK but want to customize the text editing toolbar, you can set the `floatBar` property in `JoinRoomParams` as `false` and edit the text using the new properties in `MemberState`.

    <CalloutContainer type="info">
      <CalloutDescription>
        This release deletes the `updateTextFontSize` method. Instead, you can use `updateSelectedText` or `textSize` in `MemberState`.
      </CalloutDescription>
    </CalloutContainer>

    **2. Image rotation**

    This release adds the `disableRotation` property to `WhiteWebSdkConfiguration` to enable or disable image rotation. The SDK enables image rotation by default, which allows users to rotate the selected image by any angle. If you want to disable the rotation, you can set `disableRotation(true)`.

    **3. Tween animation**

    This release adds the tween animation feature for the `pencil` tool. When a user draws or writes with the pencil, the SDK automatically inserts frames between keyframes so that to remote users see a smoother drawing process, but this feature increases latency.

    This release also adds the `disableCurveAnimes` property to `WhiteWebSdkConfiguration` for enabling or disabling the tween animation feature. The tween animation feature is enabled in the SDK by default. To disable it, you can set `disableCurveAnimes(true)`.

    <CalloutContainer type="info">
      <CalloutDescription>
        Tween animations take effect only when `disableNewPencil` is set as `false`.
      </CalloutDescription>
    </CalloutContainer>

    **4. Disabling the stroke effect**

    This release adds the `disableNewPencilStroke` property to `WhiteWebSdkConfiguration` to enable or disable the stroke effect of the pencil. The default value of `disableNewPencilStroke` is `true`, and the SDK enables the stroke effect immediately when you set `disableNewPencil(false)` to enable the new pencil. To disable the stroke effect after setting `disableNewPencil(false)`, you can call `disableNewPencilStroke(true)`.

    <CalloutContainer type="info">
      <CalloutDescription>
        The stroke effect takes effect only when `disableNewPencil` is set as `false`.
      </CalloutDescription>
    </CalloutContainer>

    **5. Getting the scene information**

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

    **6. Scene callbacks**

    This release adds the `createScenesCallback` method for creating a listener object for a scene directory. After the listener object is successfully created, when the scenes and subdirectories in the specified scene directory change, the SDK triggers the callbacks you have registered in `ScenesCallbacks` to report the scene events.

    **7. Reporting exceptions that occur when playing the media file in a dynamic PPT slide**

    This release adds the `onPPTMediaPlayError` callback to report exceptions that occur during the playing of the media file in a dynamic PPT slide.

    #### Improvements [#improvements-18]

    This release provides the following improvements:

    * Optimizes the writing performance on Android browsers.
    * Optimizes the reconnecting mechanism in weak network environment to reduce unnecessary reconnections.

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

    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.
    * Rendering exceptions and errors occurred when using the SDK on an early version of React.
    * The virtual keyboard did not pop up when clicking `text` on iOS browsers.
    * 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-17]

    **Added**

    * `insertText`
    * `updateText`
    * `updateSelectedText`
    * `getScene`
    * `createScenesCallback`
    * `onPPTMediaPlayError`
    * The following properties in `MemberState`:
      * `textColor`
      * `bold`
      * `italic`
      * `underline`
      * `lineThrough `
    * The following properties in `WhiteWebSdkConfiguration`:
      * `disableRotation`
      * `disableCurveAnimes`
      * `disableNewPencilStroke`

    **Deleted**

    * `updateTextFontSize`
    * `CustomInput`

    ## v2.15.16 [#v21516]

    v2.15.16 was released on January 21, 2022.

    #### Improvements [#improvements-19]

    This release provides the following improvements:

    * Optimizes the logic of `disconnect` and `setWritable` to ensure that the SDK returns a `Promise` object only when all requests sent before the `disconnect()` or `setWritable(false)` method call are executed.
    * Optimizes the UI of the text editing floating bar (`floatBar`), and saves the text format set by users on the floating bar.

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

    This release fixed the following issues:

    * The error code returned when joining a room failed was inaccurate.
    * After rejoining a room, `room.state.memberState` returned the initial state of the room, rather than the current state.
    * The console reported an error after a successful reconnection.
    * `room.state.memberState` occasionally returned `undefined`.
    * The button on the text editing floating bar (`floatBar`) sometimes did not work or disappeared.
    * The whiteboard room went blank and tried a reconnection.
    * The user received the event notification multiple times after calling `dispatchMagixEvent` to send an event.
    * File conversion failed because the background fill property was not set in the source PPT file.
    * The `canvas` rendering engine occasionally crashed.
    * The CPU usage of the `canvas` rendering was occasionally high.
    * On some iOS or Android devices, grids occasionally appeared on the whiteboard.

    ## v2.15.1 [#v2151]

    v2.15.1 was released on November 16, 2021, which fixed the following issues with displaying dynamic PPT files in the whiteboard:

    * When there are bugs with the animation effects in a slide master, slides based on that slide master could not be switched.
    * Some clickable elements did not take effect when clicked.

    ## v2.15.2 [#v2152]

    v2.15.2 was released on November 19, 2021.

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

    **1. Disables/Enables the frequency limit for writing synchronization**

    This release adds the `disablePencilWrittingLimitFrequency` property in `JoinRoomParams`, for disabling or enabling the frequency limit for synchronizing the writing input while using the `pencil` tool.

    **2.** **Options for setting a custom event listener**

    This release adds the `options` parameter in `addMagixEventListener` as well as the `MagixEventListenerOptions` type, for setting the following options for a custom event listener:

    * `fireInterval`: The interval (ms) of the SDK triggering custom event callbacks.
    * `fireSelfEventAfterCommit`: Whether to send event callbacks after the Agora server acknowledges the `dispatchMagixEvent` method call is successful.

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

    This release fixed the rendering crashes after initializing the room or adjusting the order of components in the scene under certain circumstances.

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

    **Added**

    * The `disablePencilWrittingLimitFrequency` property in `JoinRoomParams`
    * The `options` parameter in `addMagixEventListener`
    * `MagixEventListenerOptions`

    ## v2.15.0 [#v2150-2]

    v2.15.0 was released on November 16, 2021.

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

    To help you manage users in a room, this release adds the `uid` property in `JoinRoomParams`, 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 `JoinRoomParams` 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-29]

    **1. Disables/Enables the frequency limit for sending custom events**

    This release adds the `disableMagixEventDispatchLimit` property in `JoinRoomParams`, for disabling or enabling the frequency limit for sending custom events.

    **2. File conversion optimizations**

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

    * Action buttons
    * Slide masters added with animation effects.

    #### Improvements [#improvements-20]

    This release provides the following improvements:

    * The writing experience is optimized further.
    * To improve the user experience, the SDK sets `uniformScale` in `ImageInformation` as `true` by default when the `insertImage` method is called. This ensures the image is scaled based on its original aspect ratio when a user adjusts its size. If you do not want the image to be scaled proportionately, you can set `uniformScale` as `false`.

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

    This release has fixed the following issues:

    * The room state became incorrect when you called `setWritable(false)` at the time of joining the room.
    * Multiple copies could appear when you pasted copied content.
    * Each property sometimes appeared twice when you read `room.state.roomMembers`.
    * The following issues with displaying dynamic PPT files in the whiteboard were fixed:
      * The images were occasionally displaced.
      * 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-19]

    **Added**

    * The following properties in `JoinRoomParams`:

      * `uid`
      * `disableMagixEventDispatchLimit`

    **Modified**

    * `seekToProgressTime`

    **Deleted**

    * The `pencilOptions` property in `MemberState`
    * The `broadcasterInformation` property in `BroadcastState`
    * The `zoomScale` property in `RoomState`
    * The `scheduleTime` property in `Player`
    * The `seekToScheduleTime` method in `Player`

    ## v2.14.5 [#v2145]

    v2.14.5 was released on November 10, 2021.

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

    As of this release, `white-web-sdk` no longer supports the following versions of mobile browsers:

    * Browsers for Android 4.4 and earlier.
    * Browsers for iOS 9 and earlier.

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

    **1. Importing and exporting scenes**

    This release adds the following methods for importing and exporting scenes:

    * `exportScene`: Exports all the contents of a specified scene, including the image or web page displayed on the scene, and saves them as a binary file (Blob object).
    * `importScene`: Imports the contents of a scene exported by using `exportScene` into a specified scene directory.

    **2. Scene path type**

    This release adds the `conflict` enumerator in `ScenePathType`, which indicates that a path cannot exist because it contains the path of an existing scene.

    **3. Locking images**

    To support locking or unlocking selected images, this release adds the `lockImages` method. When an image is locked, the user cannot move, zoom, or delete the image.

    **4. Adjusting font size**

    This release adds the `updateTextFontSize` method for adjusting the size of the text entered with the `text` tool.

    **5. Adjusting component layers**

    To support adjusting the layers of components, this release adds the following methods:

    * `moveSelectedComponentsToTop`: Moves the selected components to the top layer.
    * `moveSelectedComponentsToBottom`: Moves the selected components to the bottom layer.

    #### Improvements [#improvements-21]

    This release provides the following improvements:

    * Adds support for sending and receiving custom events with the `ArrayBuffer` payload between users with the Web SDK.
    * Further optimizes the writing performance.
    * Optimizes the shape of handwriting.
    * Improves the accuracy of the `onPhaseChanged` callback.
    * On the PC side, enables the eraser to delete only the topmost of multiple selected components.
    * Hides elements that should not be displayed in a slide master using the file-conversion function.

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

    This release has fixed the following issues:

    * The `customInput` method call did not take effect.
    * 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.
    * When modifying `InvisiblePlugin`, the new `attributes` could not be the same as the original `attributes`.
    * 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.

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

    **Added**

    * `exportScene`
    * `importScene`
    * `conflict` in  `ScenePathType`
    * `lockImages`
    * `updateTextFontSize`
    * `moveSelectedComponentsToTop`
    * `moveSelectedComponentsToBottom`

    ## v2.13.17 [#v21317-1]

    v2.13.17 was released on August 20, 2021.

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

    To improve the dynamic file conversion function, this release 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 9 pt (12 px).

    #### Improvements [#improvements-22]

    This release has the following improvements:

    * Disables the delete button on the floating bar when the user is editing text on the whiteboard.
    * Disables the floating bar from moving when the user clicks the button on it.

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

    This release fixed the following issues:

    * 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.11 [#v21311]

    v2.13.11 was released on July 23 2021.

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

    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-23]

    This release has the following improvements:

    * Reduces CPU usage during the playback of animations in dynamic PPT files.
    * Improves the smoothness of writing and drawing on the whiteboard.
    * Optimizes the timestamp synchronization algorithm to reduce time differences.
    * Supports printing logs on scene changes.
    * Adds the `previewURL` parameter in `PptDescription`, which supports displaying dynamic PPT previews in the whiteboard.

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

    This release fixed the following issues:

    * The contents on the whiteboard occasionally became unclear when the user adjusted the view.
    * Problems occurred with the SDK code after it was mangled by using uglify-js.
    * Users of the Android or iOS SDK occasionally failed to draw the first line after joining the room.
    * 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-2]

    v2.13.4 was released on June 15, 2021.

    This release fixed the issue that calling the `moveCamera` method did not take effect.

    ## v2.13.2 [#v2132-2]

    v2.13.2 was released on June 10, 2021.

    This release fixed the following issues:

    * Occasional abnormal behaviors of the `redo` and `undo` methods.
    * Occasional abnormality with the text box.

    ## v2.12.21 [#v21221-2]

    v2.12.21 was released on June 4, 2021.

    This release fixed the following issues:

    * Error messages printed in the browser console.
    * Arrowheads were displayed disproportionately large in dynamic PPT files.
    * Frequently switching slides in a dynamic PPT file might cause fonts to display abnormally.
    * Dynamic PPT files that do not contain a `tablestyle.xml` file could not be parsed.

    ## v2.12.20 [#v21220-2]

    v2.12.20 was released on May 24, 2021.

    This release optimizes the log levels for dynamic PPT files.

    ## v2.12.19 [#v21219-2]

    v2.12.19 was released on May 20, 2021.

    This release fixed the issue that in certain circumstances, the SDK failed to connect to the server and returned the error message `magix connect failed`.

    ## v2.12.18 [#v21218-2]

    v2.12.18 was released on May 17, 2021.

    This release enables server-side typesetting (`useServerWrap`) by default and supports reducing the size of font files for fasterer rendering.

    ## v2.12.17 [#v21217-2]

    v2.12.17 was released on May 13, 2021.

    This release fixed the issue that inaccurate system time on the user's device caused an abnormal delay in a live Interactive Whiteboard room.

    ## v2.12.16 [#v21216-2]

    v2.12.16 was released on May 11, 2021.

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

    This release adds the following features:

    * Setting transparency for images in dynamic PPT files.
    * Displaying SmartArt as images in dynamic PPT files (SmartArt animation is not supported).
    * Displaying charts and tables in dynamic PPT files.

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

    This release fixed the following issues:

    * The `selectable` field did not take effect when calling `room.insertPlugin`.
    * The rendering process might fail if certain elements on dynamic PPT slides have no content.
    * The Drawing tool might fail to work on dynamic PPT slides.

    ## v2.12.15 [#v21215-2]

    v2.12.15 was released on April 28, 2021.

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

    This release adds `changeToClick` and `changeToText`, which set the shortcut to quickly switch to the clicker tool (`clicker`) and text tool (`text`), respectively.

    #### Improvements [#improvements-24]

    This release improves the loading speed of dynamic PPT files.

    ## v2.12.14 [#v21214-2]

    v2.12.14 was released on April 22, 2021.

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

    This release adds audio and video trimming.

    #### Improvements [#improvements-25]

    This release improves the logic of preloading dynamic PPT files.

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

    This release fixed the following issues:

    * The audio or video progress bar on the PPT slide was not displayed in the preview.
    * `room.state.cameraState` was not updated in a timely manner in some cases.

    ## v2.12.13 [#v21213-2]

    v2.12.13 was released on April 21, 2021.

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

    This release fixed the issue that a delay might occur when the text box entered or exited editing mode in some cases.

    ## v2.12.12 [#v21212-2]

    v2.12.12 was released on April 16, 2021.

    #### Improvements [#improvements-26]

    This release has the following improvements:

    * Improves the compatibility of colors in dynamic PPT files.
    * Improves justified alignment and left-and-right alignment in dynamic PPT files.
    * Improves the display of indentation in dynamic PPT files.

    ## v2.12.11 [#v21211-2]

    v2.12.11 was released on April 15, 2021.

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

    This release adds the following features:

    * Adds the `syncBlockTimstamp` method to set the delay time for sending the whiteboard contents. This method is used to ensure that the whiteboard content and the audio and video are sent to the remote users at the same time.
    * Adds the `customInput` interface for setting custom inputs.

    #### Improvements [#improvements-27]

    This release improves the display performance of `canvas` mode.

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

    This release fixed the following issues:

    * `InvisiblePlugin` had abnormal behavior in some cases.
    * The text could be misaligned after scaling the view up or down.

    ## v2.12.9 [#v2129-2]

    v2.12.9 was released on April 9, 2021.

    This release fixed the following issues:

    * A cursor that had disappeared from the whiteboard appeared again in some cases.
    * The `canvas` rendering engine rendered images inaccurately in certain older versions of browsers.

    ## v2.12.8 [#v2128-2]

    v2.12.8 was released on March 30, 2021.

    #### Improvements [#improvements-28]

    This version improves the logic of reporting logs.

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

    This release fixed the problem that setting follower mode did not take effect immediately.

    ## v2.12.6 [#v2126-2]

    v2.12.6 was released on March 29, 2021. This release fixed the issue that some components could disappear unexpectedly.

    ## v2.12.5 [#v2125-2]

    v2.12.5 was released on March 20, 2021.

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

    This release adds the stroke effect to better display handwriting. When constructing `joinRoomParams`, you can set `disableNewPencil` to `false`/`true` to enable/disable the stroke effect.

    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

    #### Improvements [#improvements-29]

    This release improves the Text tool.

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

    This release fixed the following issues:

    * When presenting dynamic PPT files in certain situations, the screen turned completely white.
    * `Symbol` objects displayed abnormal actions when using the whiteboard on browsers that support ES6.
    * Pen tool marks displayed abnormally.

    ## v2.12.2 [#v2122-2]

    v2.12.2 was released on March 4, 2021. This release improves network connection.

    ## v2.12.1 [#v2121]

    v2.12.1 was released on March 4, 2021. This release fixed the issue that `onPPTLoadProgress` reported inaccurate progress of file-conversion tasks.

    ## v2.12.0 [#v2120]

    v2.12.0 was released on February 26, 2021.

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

    This release adds the following features:

    * To provide more drawing options, `ShapeType` adds the following enumeration values:
      * `triangle`: Inserts a triangle
      * `rhombus`: Inserts a diamond shape
      * `pentagram`: Inserts a pentagram
      * `speechBalloon`: Inserts a speech balloon

    * The floating bar adds a **Layer** button to send an image to the front or back of the layer stack.

    * The floating bar adds a **Replicate** button.

    * `disableOthersSelectingBox` is added to `Displayer` and `JoinRoomParams` to set whether to hide or show other users' selection fields.

    * `uniformScale` is added to `ImageInformation` to resize images proportionately.

    * The server-side engine can be used for typesetting.

    #### Improvements [#improvements-30]

    * Improves the loading speed of icons on the floating bar.
    * Addresses the issue that after using the Text tool to enter text, it automatically switches to the Selection tool.

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

    This release fixed the following issues:

    * Occasionally, the generated dynamic web pages could not be previewed.
    * The rendering sequence was incorrect for some highlight selectors.
    * The selectable area around an object could be displayed inaccurately.
    * When rendering a rectangle, the four corners sometimes switched between being rounded and right-angled.
    * PPT files could not be displayed because of rendering errors in internal components.

    
  
