diff --git a/CHANGELOG.md b/CHANGELOG.md index 91eb8b4895..b14b376073 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,16 +29,16 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/ - `styleOptions.bubbleImageHeight` is being deprecated in favor of `styleOptions.bubbleImageMaxHeight` and `styleOptions.bubbleImageMinHeight`. The option will be removed on or after 2026-07-05 - `styleOptions.bubbleMaxWidth`/`bubbleMinWidth` is being deprecated in favor of `styleOptions.bubbleAttachmentMaxWidth`/`bubbleAttachmentMinWidth` and `styleOptions.bubbleMessageMaxWidth`/`bubbleMessageMinWidth`. The option will be removed on or after 2026-10-08 - Moved to `micromark` for rendering Markdown, instead of `markdown-it` - - Please refer to PR [#5330](https://github.com/microsoft/BotFramework-WebChat/pull/5330) for details + - Please refer to PR [#5330](https://github.com/microsoft/BotFramework-WebChat/pull/5330) for details - HTML sanitizer is moved from `renderMarkdown` to HTML content transformer middleware, please refer to PR [#5338](https://github.com/microsoft/BotFramework-WebChat/pull/5338) - - If you customized `renderMarkdown` with a custom HTML sanitizer, please move the HTML sanitizer to the new HTML content transformer middleware + - If you customized `renderMarkdown` with a custom HTML sanitizer, please move the HTML sanitizer to the new HTML content transformer middleware - `useGroupActivities` hook is being deprecated in favor of the `useGroupActivitiesByName` hook. The hook will be removed on or after 2027-05-04 - `useSuggestedActions()` hook is being deprecated in favor of the `useSuggestedActionsHooks().useSuggestedActions()` hook. The hook will be removed on or after 2027-05-30 - The following middleware should be created using their respective factory function: - - `activityBorderDecoratorMiddleware`, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504), [#5510](https://github.com/microsoft/BotFramework-WebChat/pull/5510) - - `activityGroupingDecoratorMiddleware`, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504) - - `sendBoxMiddleware`, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504) - - `sendBoxToolbarMiddleware`, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504) + - `activityBorderDecoratorMiddleware`, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504), [#5510](https://github.com/microsoft/BotFramework-WebChat/pull/5510) + - `activityGroupingDecoratorMiddleware`, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504) + - `sendBoxMiddleware`, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504) + - `sendBoxToolbarMiddleware`, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504) ### Added @@ -59,14 +59,14 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/ - Added support for liner message activities in the Fluent theme, in PR [#5272](https://github.com/microsoft/BotFramework-WebChat/pull/5272), by [@OEvgeny](https://github.com/OEvgeny) - Added new `uiState` props and `useUIState` hook, in PR [#5276](https://github.com/microsoft/BotFramework-WebChat/pull/5276), by [@compulim](https://github.com/compulim) - (Experimental) Added support for using Web Chat inside a shadow DOM, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) - - Added `styleOptions.stylesRoot` property allowing users to specify the root node where Web Chat styles should be placed, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) - - Added the `ThemeProvider.styles` property, allowing theme packages to place styles into the same root node as Web Chat, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) - - Added `nonce` for Fluent and `react-scroll-to-bottom` injected styles, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) - - Updated `react-scroll-to-bottom` to version `4.2.1-main.53844f5`, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) - - Updated `react-film` to version `3.1.1-main.f623bf6`, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) + - Added `styleOptions.stylesRoot` property allowing users to specify the root node where Web Chat styles should be placed, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) + - Added the `ThemeProvider.styles` property, allowing theme packages to place styles into the same root node as Web Chat, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) + - Added `nonce` for Fluent and `react-scroll-to-bottom` injected styles, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) + - Updated `react-scroll-to-bottom` to version `4.2.1-main.53844f5`, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) + - Updated `react-film` to version `3.1.1-main.f623bf6`, in PR [#5196](https://github.com/microsoft/BotFramework-WebChat/pull/5196), by [@OEvgeny](https://github.com/OEvgeny) - (Experimental) Added CSS decorator support into Web Chat white-label experience, in PR [#5312](https://github.com/microsoft/BotFramework-WebChat/pull/5312), by [@OEvgeny](https://github.com/OEvgeny) - - Introduced `WebChatDecorator` component for adding animated borders to activities, in PR [#5312](https://github.com/microsoft/BotFramework-WebChat/pull/5312) - - Added new style options `borderAnimationColor1`, `borderAnimationColor2`, and `borderAnimationColor3` for customizing decorator colors, in PR [#5312](https://github.com/microsoft/BotFramework-WebChat/pull/5312) + - Introduced `WebChatDecorator` component for adding animated borders to activities, in PR [#5312](https://github.com/microsoft/BotFramework-WebChat/pull/5312) + - Added new style options `borderAnimationColor1`, `borderAnimationColor2`, and `borderAnimationColor3` for customizing decorator colors, in PR [#5312](https://github.com/microsoft/BotFramework-WebChat/pull/5312) - Added `styleOptions.bubbleAttachmentMaxWidth`/`bubbleAttachmentMinWidth` and `styleOptions.bubbleMessageMaxWidth`/`bubbleMessageMinWidth`, in PR [#5321](https://github.com/microsoft/BotFramework-WebChat/pull/5321), by [@compulim](https://github.com/compulim) - (Experimental) Added more CSS variables support, in PR [#5321](https://github.com/microsoft/BotFramework-WebChat/pull/5321), by [@compulim](https://github.com/compulim) - Added MathML/TeX block support in Markdown via [`micromark-extension-math`](https://npmjs.com/package/micromark-extension-math) and [`katex`](https://katex.org/), in PR [#5332](https://github.com/microsoft/BotFramework-WebChat/pull/5332), by [@compulim](https://github.com/compulim) @@ -74,34 +74,35 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/ - Added copy button to code blocks, in PR [#5334](https://github.com/microsoft/BotFramework-WebChat/pull/5334), by [@compulim](https://github.com/compulim) - Added copy button to view code dialog, in PR [#5336](https://github.com/microsoft/BotFramework-WebChat/pull/5336), by [@compulim](https://github.com/compulim) - Added HTML content transformer middleware, in PR [#5338](https://github.com/microsoft/BotFramework-WebChat/pull/5338) and [#5347](https://github.com/microsoft/BotFramework-WebChat/pull/5347), by [@compulim](https://github.com/compulim) - - HTML content transformer is used by `useRenderMarkdown` to transform the result from `renderMarkdown` - - HTML sanitizer is moved from `renderMarkdown` into HTML content transformer for better coverage - - Copy button is added to fenced code blocks (`
`)
-   - Configure HTML sanitizer via `request.allowedTags`
+  - HTML content transformer is used by `useRenderMarkdown` to transform the result from `renderMarkdown`
+  - HTML sanitizer is moved from `renderMarkdown` into HTML content transformer for better coverage
+  - Copy button is added to fenced code blocks (`
`)
+  - Configure HTML sanitizer via `request.allowedTags`
 - Added support for math blocks using `$$` delimiter alongside existing `\[...\]` and `\(...\)` notations, in PR [#5381](https://github.com/microsoft/BotFramework-WebChat/pull/5381), by [@OEvgeny](https://github.com/OEvgeny)
 - Added support for speech recognition initial silence timeout when using Azure Speech, in PR [#5400](https://github.com/microsoft/BotFramework/WebChat/pull/5400), by [@compulim](https://github.com/compulim)
 - Introduced syntax highlighting for markdown code blocks, in PR [#5389](https://github.com/microsoft/BotFramework-WebChat/pull/5389), by [@OEvgeny](https://github.com/OEvgeny)
 - (Experimental) Added `feedbackActionsPlacement` style option to control feedback button placement, in PR [#5407](https://github.com/microsoft/BotFramework-WebChat/pull/5407), by [@OEvgeny](https://github.com/OEvgeny)
-   - New style option supports two values: `'activity-actions'` and `'activity-status'` (default)
-   - When set to `'activity-actions'`, feedback buttons are displayed in the activity actions toolbar
-   - When set to `'activity-status'`, feedback buttons appear in the activity status area (default behavior)
+  - New style option supports two values: `'activity-actions'` and `'activity-status'` (default)
+  - When set to `'activity-actions'`, feedback buttons are displayed in the activity actions toolbar
+  - When set to `'activity-status'`, feedback buttons appear in the activity status area (default behavior)
 - Added support for including activity ID and key into form data indicated by `data-webchat-include-activity-id` and `data-webchat-include-activity-key` attributes, in PR [#5418](https://github.com/microsoft/BotFramework-WebChat/pull/5418), by [@OEvgeny](https://github.com/OEvgeny)
 - Added dedicated loading animation for messages in preparing state for Fluent theme, in PR [#5423](https://github.com/microsoft/BotFramework-WebChat/pull/5423), by [@OEvgeny](https://github.com/OEvgeny)
 - Resolved [#2661](https://github.com/microsoft/BotFramework-WebChat/issues/2661) and [#5352](https://github.com/microsoft/BotFramework-WebChat/issues/5352). Added speech recognition continuous mode with barge-in support, in PR [#5426](https://github.com/microsoft/BotFramework-WebChat/pull/5426), by [@RushikeshGavali](https://github.com/RushikeshGavali) and [@compulim](https://github.com/compulim)
-   - Set `styleOptions.speechRecognitionContinuous` to `true` with a Web Speech API provider with continuous mode support
+  - Set `styleOptions.speechRecognitionContinuous` to `true` with a Web Speech API provider with continuous mode support
 - Added support of [contentless activity in livestream](https://github.com/microsoft/BotFramework-WebChat/blob/main/docs/LIVESTREAMING.md#scenario-3-interim-activities-with-no-content), in PR [#5430](https://github.com/microsoft/BotFramework-WebChat/pull/5430), by [@compulim](https://github.com/compulim)
 - Added sliding dots typing indicator in Fluent theme, in PR [#5447](https://github.com/microsoft/BotFramework-WebChat/pull/5447) and PR [#5448](https://github.com/microsoft/BotFramework-WebChat/pull/5448), by [@compulim](https://github.com/compulim)
 - (Experimental) Add an ability to pass `completion` prop into Fluent send box and expose the component, in PR [#5466](https://github.com/microsoft/BotFramework-WebChat/pull/5466), by [@OEvgeny](https://github.com/OEvgeny)
 - Added feedback form for like/dislike button when `feedbackActionsPlacement` is `"activity-actions"`, in PR [#5460](https://github.com/microsoft/BotFramework-WebChat/pull/5460), PR [#5469](https://github.com/microsoft/BotFramework-WebChat/pull/5469), PR [5470](https://github.com/microsoft/BotFramework-WebChat/pull/5470) and PR [#5501](https://github.com/microsoft/BotFramework-WebChat/pull/5501) by [@lexi-taylor](https://github.com/lexi-taylor) and [@OEvgeny](https://github.com/OEvgeny)
-   - ESCAPE key should reset the feedback form, in PR [#5480](https://github.com/microsoft/BotFramework-WebChat/pull/5480), by [@compulim](https://github.com/compulim), in PR [#5493](https://github.com/microsoft/BotFramework-WebChat/pull/5493) by [@lexi-taylor](https://github.com/lexi-taylor)
+  - ESCAPE key should reset the feedback form, in PR [#5480](https://github.com/microsoft/BotFramework-WebChat/pull/5480), by [@compulim](https://github.com/compulim), in PR [#5493](https://github.com/microsoft/BotFramework-WebChat/pull/5493) by [@lexi-taylor](https://github.com/lexi-taylor)
 - Added multi-dimensional grouping, `styleOptions.groupActivitiesBy`, and `useGroupActivitiesByName` hook, in PR [#5471](https://github.com/microsoft/BotFramework-WebChat/pull/5471), by [@compulim](https://github.com/compulim)
-   - Existing behavior will be kept and activities will be grouped by `sender` followed by `status`
-   - `useGroupActivitiesByName` is favored over the existing `useGroupActivities` hook for performance reason
-   - Middleware which support the new grouping name init argument should only compute the grouping if they match the grouping name, or the grouping name is not specified, otherwise, should do nothing and call the downstream middleware
+  - Existing behavior will be kept and activities will be grouped by `sender` followed by `status`
+  - `useGroupActivitiesByName` is favored over the existing `useGroupActivities` hook for performance reason
+  - Middleware which support the new grouping name init argument should only compute the grouping if they match the grouping name, or the grouping name is not specified, otherwise, should do nothing and call the downstream middleware
 - Resolved [#5463](https://github.com/microsoft/BotFramework-WebChat/issues/5463). Added attachment preview for `sendAttachmentOn: "send"`, in PR [#5464](https://github.com/microsoft/BotFramework-WebChat/pull/5464), by [@compulim](https://github.com/compulim), in PR [#5492](https://github.com/microsoft/BotFramework-WebChat/pull/5492), by [@OEvgeny](https://github.com/OEvgeny)
-   - Attaching files will no longer remove previously attached files
-   - Updated Fluent theme to use the new attachment preview feature
+  - Attaching files will no longer remove previously attached files
+  - Updated Fluent theme to use the new attachment preview feature
 - Added collapsible activity and activity with abstract handling, in PR [#5506](https://github.com/microsoft/BotFramework-WebChat/pull/5506), in PR [#5513](https://github.com/microsoft/BotFramework-WebChat/pull/5513), by [@OEvgeny](https://github.com/OEvgeny)
+- Added `ComposerRef` type and ref-based focus control to `Composer` component, enabling programmatic focus of the send box input via `focusSendBoxInput()` method, by [@marclundgren](https://github.com/marclundgren), in PR [#5512](https://github.com/microsoft/BotFramework-WebChat/pull/5512)
 
 ### Changed
 
@@ -124,84 +125,84 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
 - Improved avatar display and grouping behavior by fixing rendering issues and activity sender identification, in PR [#5346](https://github.com/microsoft/BotFramework-WebChat/pull/5346), by [@OEvgeny](https://github.com/OEvgeny)
 - Activity "copy" button will use `outerHTML` and `textContent` for clipboard content, in PR [#5378](https://github.com/microsoft/BotFramework-WebChat/pull/5378), by [@compulim](https://github.com/compulim)
 - Bumped dependencies to the latest versions, by [@compulim](https://github.com/compulim) in PR [#5385](https://github.com/microsoft/BotFramework-WebChat/pull/5385), [#5400](https://github.com/microsoft/BotFramework-WebChat/pull/5400), [#5426](https://github.com/microsoft/BotFramework-WebChat/pull/5426), [#5476](https://github.com/microsoft/BotFramework-WebChat/pull/5476), and [#5516](https://github.com/microsoft/BotFramework-WebChat/pull/5516)
-   - Production dependencies
-      - [`web-speech-cognitive-services@8.1.3`](https://npmjs.com/package/web-speech-cognitive-services)
-      - [`react-dictate-button@4.0.0`](https://npmjs.com/package/react-dictate-button)
+  - Production dependencies
+    - [`web-speech-cognitive-services@8.1.3`](https://npmjs.com/package/web-speech-cognitive-services)
+    - [`react-dictate-button@4.0.0`](https://npmjs.com/package/react-dictate-button)
 - Enabled icon customization in Fluent theme through CSS variables, in PR [#5413](https://github.com/microsoft/BotFramework-WebChat/pull/5413), by [@OEvgeny](https://github.com/OEvgeny)
-   - Reworked, enabled in Web Chat, in PR [#5502](https://github.com/microsoft/BotFramework-WebChat/pull/5502), by [@OEvgeny](https://github.com/OEvgeny)
+  - Reworked, enabled in Web Chat, in PR [#5502](https://github.com/microsoft/BotFramework-WebChat/pull/5502), by [@OEvgeny](https://github.com/OEvgeny)
 - Bumped all dependencies to the latest versions, by [@compulim](https://github.com/compulim) in PR [#5427](https://github.com/microsoft/BotFramework-WebChat/pull/5427)
-   - Production dependencies
-      - [`core-js-pure@3.40.0`](https://npmjs.com/package/core-js-pure/)
-      - [`core-js@3.40.0`](https://npmjs.com/package/core-js/)
-      - [`event-as-promise@2.0.0`](https://npmjs.com/package/event-as-promise/)
-      - [`katex@0.16.21`](https://npmjs.com/package/katex/)
-      - [`mdast-util-from-markdown@2.0.2`](https://npmjs.com/package/mdast-util-from-markdown/)
-      - [`micromark-extension-gfm@3.0.0`](https://npmjs.com/package/micromark-extension-gfm/)
-      - [`micromark-util-character@2.1.1`](https://npmjs.com/package/micromark-util-character/)
-      - [`micromark@4.0.1`](https://npmjs.com/package/micromark/)
-      - [`microsoft-cognitiveservices-speech-sdk@1.42.0`](https://npmjs.com/package/microsoft-cognitiveservices-speech-sdk/)
-      - [`mime@4.0.6`](https://npmjs.com/package/mime/)
-      - [`react-chain-of-responsibility@0.2.0`](https://npmjs.com/package/react-chain-of-responsibility/)
-      - [`react-scroll-to-bottom@4.2.0`](https://npmjs.com/package/react-scroll-to-bottom/)
-      - [`sanitize-html@2.14.0`](https://npmjs.com/package/sanitize-html/)
-      - [`shiki@2.3.2`](https://npmjs.com/package/shiki/)
-      - [`use-propagate@0.2.1`](https://npmjs.com/package/use-propagate/)
-      - [`use-state-with-ref@0.1.0`](https://npmjs.com/package/use-state-with-ref/)
-      - [`valibot@1.1.0`](https://npmjs.com/package/valibot/)
-      - [`web-speech-cognitive-services@8.1.1`](https://npmjs.com/package/web-speech-cognitive-services/)
-   - Development dependencies
-      - [`@biomejs/biome@1.9.4`](https://npmjs.com/package/@biomejs/biome/)
-      - [`@emotion/css@11.13.5`](https://npmjs.com/package/@emotion/css/)
-      - [`@happy-dom/jest-environment@17.1.0`](https://npmjs.com/package/@happy-dom/jest-environment/)
-      - [`@jridgewell/sourcemap-codec@1.5.0`](https://npmjs.com/package/@jridgewell/sourcemap-codec/)
-      - [`@types/mdast@4.0.4`](https://npmjs.com/package/@types/mdast/)
-      - [`@types/node@22.13.4`](https://npmjs.com/package/@types/node/)
-      - [`@types/react-dom@16.9.25`](https://npmjs.com/package/@types/react-dom/)
-      - [`@types/react@16.14.62`](https://npmjs.com/package/@types/react/)
-      - [`@types/react@16.14.62`](https://npmjs.com/package/@types/react/)
-      - [`@typescript-eslint/eslint-plugin@8.24.0`](https://npmjs.com/package/@typescript-eslint/eslint-plugin/)
-      - [`@typescript-eslint/parser@8.24.0`](https://npmjs.com/package/@typescript-eslint/parser/)
-      - [`adm-zip@0.5.16`](https://npmjs.com/package/adm-zip/)
-      - [`axe-core@4.10.2`](https://npmjs.com/package/axe-core/)
-      - [`babel-plugin-istanbul@7.0.0`](https://npmjs.com/package/babel-plugin-istanbul/)
-      - [`bent@7.3.12`](https://npmjs.com/package/bent/)
-      - [`compression@1.8.0`](https://npmjs.com/package/compression/)
-      - [`concurrently@9.1.2`](https://npmjs.com/package/concurrently/)
-      - [`core-js@3.40.0`](https://npmjs.com/package/core-js/)
-      - [`dotenv@16.4.7`](https://npmjs.com/package/dotenv/)
-      - [`esbuild@0.25.0`](https://npmjs.com/package/esbuild/)
-      - [`eslint-config-prettier@10.0.1`](https://npmjs.com/package/eslint-config-prettier/)
-      - [`eslint-plugin-import@2.31.0`](https://npmjs.com/package/eslint-plugin-import/)
-      - [`eslint-plugin-prettier@5.2.3`](https://npmjs.com/package/eslint-plugin-prettier/)
-      - [`eslint-plugin-react-hooks@5.1.0`](https://npmjs.com/package/eslint-plugin-react-hooks/)
-      - [`eslint-plugin-react@7.37.4`](https://npmjs.com/package/eslint-plugin-react/)
-      - [`eslint-plugin-security@3.0.1`](https://npmjs.com/package/eslint-plugin-security/)
-      - [`eslint@8.57.1`](https://npmjs.com/package/eslint/)
-      - [`express@4.21.2`](https://npmjs.com/package/express/)
-      - [`glob@8.1.0`](https://npmjs.com/package/glob/)
-      - [`http-proxy-middleware@2.0.7`](https://npmjs.com/package/http-proxy-middleware/)
-      - [`husky@9.1.7`](https://npmjs.com/package/husky/)
-      - [`lint-staged@15.4.3`](https://npmjs.com/package/lint-staged/)
-      - [`micromark-util-types@2.0.1`](https://npmjs.com/package/micromark-util-types/)
-      - [`nodemon@3.1.9`](https://npmjs.com/package/nodemon/)
-      - [`nopt@8.1.0`](https://npmjs.com/package/nopt/)
-      - [`prettier@3.5.1`](https://npmjs.com/package/prettier/)
-      - [`progress@2.0.3`](https://npmjs.com/package/progress/)
-      - [`q@1.5.1`](https://npmjs.com/package/q/)
-      - [`read-pkg-up@11.0.0`](https://npmjs.com/package/read-pkg-up/)
-      - [`read-pkg@9.0.1`](https://npmjs.com/package/read-pkg/)
-      - [`request-progress@3.0.0`](https://npmjs.com/package/request-progress/)
-      - [`request@2.88.2`](https://npmjs.com/package/request/)
-      - [`selenium-webdriver@4.28.1`](https://npmjs.com/package/selenium-webdriver/)
-      - [`selfsigned@2.4.1`](https://npmjs.com/package/selfsigned/)
-      - [`serve-handler@6.1.6`](https://npmjs.com/package/serve-handler/)
-      - [`serve@14.2.4`](https://npmjs.com/package/serve/)
-      - [`tsd@0.31.2`](https://npmjs.com/package/tsd/)
-      - [`tsup@8.3.6`](https://npmjs.com/package/tsup/)
-      - [`type-fest@4.34.1`](https://npmjs.com/package/type-fest/)
-      - [`typescript@5.7.3`](https://npmjs.com/package/typescript/)
-      - [`webpack-cli@6.0.1`](https://npmjs.com/package/webpack-cli/)
-      - [`webpack@5.98.0`](https://npmjs.com/package/webpack/)
+  - Production dependencies
+    - [`core-js-pure@3.40.0`](https://npmjs.com/package/core-js-pure/)
+    - [`core-js@3.40.0`](https://npmjs.com/package/core-js/)
+    - [`event-as-promise@2.0.0`](https://npmjs.com/package/event-as-promise/)
+    - [`katex@0.16.21`](https://npmjs.com/package/katex/)
+    - [`mdast-util-from-markdown@2.0.2`](https://npmjs.com/package/mdast-util-from-markdown/)
+    - [`micromark-extension-gfm@3.0.0`](https://npmjs.com/package/micromark-extension-gfm/)
+    - [`micromark-util-character@2.1.1`](https://npmjs.com/package/micromark-util-character/)
+    - [`micromark@4.0.1`](https://npmjs.com/package/micromark/)
+    - [`microsoft-cognitiveservices-speech-sdk@1.42.0`](https://npmjs.com/package/microsoft-cognitiveservices-speech-sdk/)
+    - [`mime@4.0.6`](https://npmjs.com/package/mime/)
+    - [`react-chain-of-responsibility@0.2.0`](https://npmjs.com/package/react-chain-of-responsibility/)
+    - [`react-scroll-to-bottom@4.2.0`](https://npmjs.com/package/react-scroll-to-bottom/)
+    - [`sanitize-html@2.14.0`](https://npmjs.com/package/sanitize-html/)
+    - [`shiki@2.3.2`](https://npmjs.com/package/shiki/)
+    - [`use-propagate@0.2.1`](https://npmjs.com/package/use-propagate/)
+    - [`use-state-with-ref@0.1.0`](https://npmjs.com/package/use-state-with-ref/)
+    - [`valibot@1.1.0`](https://npmjs.com/package/valibot/)
+    - [`web-speech-cognitive-services@8.1.1`](https://npmjs.com/package/web-speech-cognitive-services/)
+  - Development dependencies
+    - [`@biomejs/biome@1.9.4`](https://npmjs.com/package/@biomejs/biome/)
+    - [`@emotion/css@11.13.5`](https://npmjs.com/package/@emotion/css/)
+    - [`@happy-dom/jest-environment@17.1.0`](https://npmjs.com/package/@happy-dom/jest-environment/)
+    - [`@jridgewell/sourcemap-codec@1.5.0`](https://npmjs.com/package/@jridgewell/sourcemap-codec/)
+    - [`@types/mdast@4.0.4`](https://npmjs.com/package/@types/mdast/)
+    - [`@types/node@22.13.4`](https://npmjs.com/package/@types/node/)
+    - [`@types/react-dom@16.9.25`](https://npmjs.com/package/@types/react-dom/)
+    - [`@types/react@16.14.62`](https://npmjs.com/package/@types/react/)
+    - [`@types/react@16.14.62`](https://npmjs.com/package/@types/react/)
+    - [`@typescript-eslint/eslint-plugin@8.24.0`](https://npmjs.com/package/@typescript-eslint/eslint-plugin/)
+    - [`@typescript-eslint/parser@8.24.0`](https://npmjs.com/package/@typescript-eslint/parser/)
+    - [`adm-zip@0.5.16`](https://npmjs.com/package/adm-zip/)
+    - [`axe-core@4.10.2`](https://npmjs.com/package/axe-core/)
+    - [`babel-plugin-istanbul@7.0.0`](https://npmjs.com/package/babel-plugin-istanbul/)
+    - [`bent@7.3.12`](https://npmjs.com/package/bent/)
+    - [`compression@1.8.0`](https://npmjs.com/package/compression/)
+    - [`concurrently@9.1.2`](https://npmjs.com/package/concurrently/)
+    - [`core-js@3.40.0`](https://npmjs.com/package/core-js/)
+    - [`dotenv@16.4.7`](https://npmjs.com/package/dotenv/)
+    - [`esbuild@0.25.0`](https://npmjs.com/package/esbuild/)
+    - [`eslint-config-prettier@10.0.1`](https://npmjs.com/package/eslint-config-prettier/)
+    - [`eslint-plugin-import@2.31.0`](https://npmjs.com/package/eslint-plugin-import/)
+    - [`eslint-plugin-prettier@5.2.3`](https://npmjs.com/package/eslint-plugin-prettier/)
+    - [`eslint-plugin-react-hooks@5.1.0`](https://npmjs.com/package/eslint-plugin-react-hooks/)
+    - [`eslint-plugin-react@7.37.4`](https://npmjs.com/package/eslint-plugin-react/)
+    - [`eslint-plugin-security@3.0.1`](https://npmjs.com/package/eslint-plugin-security/)
+    - [`eslint@8.57.1`](https://npmjs.com/package/eslint/)
+    - [`express@4.21.2`](https://npmjs.com/package/express/)
+    - [`glob@8.1.0`](https://npmjs.com/package/glob/)
+    - [`http-proxy-middleware@2.0.7`](https://npmjs.com/package/http-proxy-middleware/)
+    - [`husky@9.1.7`](https://npmjs.com/package/husky/)
+    - [`lint-staged@15.4.3`](https://npmjs.com/package/lint-staged/)
+    - [`micromark-util-types@2.0.1`](https://npmjs.com/package/micromark-util-types/)
+    - [`nodemon@3.1.9`](https://npmjs.com/package/nodemon/)
+    - [`nopt@8.1.0`](https://npmjs.com/package/nopt/)
+    - [`prettier@3.5.1`](https://npmjs.com/package/prettier/)
+    - [`progress@2.0.3`](https://npmjs.com/package/progress/)
+    - [`q@1.5.1`](https://npmjs.com/package/q/)
+    - [`read-pkg-up@11.0.0`](https://npmjs.com/package/read-pkg-up/)
+    - [`read-pkg@9.0.1`](https://npmjs.com/package/read-pkg/)
+    - [`request-progress@3.0.0`](https://npmjs.com/package/request-progress/)
+    - [`request@2.88.2`](https://npmjs.com/package/request/)
+    - [`selenium-webdriver@4.28.1`](https://npmjs.com/package/selenium-webdriver/)
+    - [`selfsigned@2.4.1`](https://npmjs.com/package/selfsigned/)
+    - [`serve-handler@6.1.6`](https://npmjs.com/package/serve-handler/)
+    - [`serve@14.2.4`](https://npmjs.com/package/serve/)
+    - [`tsd@0.31.2`](https://npmjs.com/package/tsd/)
+    - [`tsup@8.3.6`](https://npmjs.com/package/tsup/)
+    - [`type-fest@4.34.1`](https://npmjs.com/package/type-fest/)
+    - [`typescript@5.7.3`](https://npmjs.com/package/typescript/)
+    - [`webpack-cli@6.0.1`](https://npmjs.com/package/webpack-cli/)
+    - [`webpack@5.98.0`](https://npmjs.com/package/webpack/)
 - Fixed [#5446](https://github.com/microsoft/BotFramework-WebChat/issues/5446). Embedded `uuid` so `microsoft-cognitiveservices-speech-sdk` do not need to use dynamic loading, as this could fail in Webpack 4 environment, in PR [#5445](https://github.com/microsoft/BotFramework-WebChat/pull/5445), by [@compulim](https://github.com/compulim)
 - Fixed [#5476](https://github.com/microsoft/BotFramework-WebChat/issues/5476). Modernizing components through memoization and use [`valibot`](https://npmjs.com/package/valibot) for props validation, by [@compulim](https://github.com/compulim)
 - Ported `useSuggestedActions` to use React hooks as backend instead of Redux store, in PR [#5489](https://github.com/microsoft/BotFramework-WebChat/pull/5489), by [@compulim](https://github.com/compulim)
@@ -226,17 +227,17 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
 - Fixed [#4948](https://github.com/microsoft/BotFramework-WebChat/issues/4948). Microphone should stop after initial silence, in PR [#5385](https://github.com/microsoft/BotFramework-WebChat/pull/5385)
 - Fixed [#5390](https://github.com/microsoft/BotFramework-WebChat/issues/5390). Fixed drop zone remaining visible when file is dropped outside of the zone, in PR [#5394](https://github.com/microsoft/BotFramework-WebChat/pull/5394), in PR [#5415](https://github.com/microsoft/BotFramework-WebChat/pull/5415), by [@OEvgeny](https://github.com/OEvgeny)
 - Improved accessibility across multiple components, in PR [#5428](https://github.com/microsoft/BotFramework-WebChat/pull/5428), by [@OEvgeny](https://github.com/OEvgeny)
-   - Fixed copy button screen reader announcement
-   - Added proper ARIA attributes to link definitions component
-   - Improved focus management for scroll to end button
+  - Fixed copy button screen reader announcement
+  - Added proper ARIA attributes to link definitions component
+  - Improved focus management for scroll to end button
 - Fixed [#5439](https://github.com/microsoft/BotFramework-WebChat/issues/5439). Fixed batched livestream activities are not recognized in the same session, in PR [#5440](https://github.com/microsoft/BotFramework-WebChat/pull/5440), by [@compulim](https://github.com/compulim)
 - Fixed [#5452](https://github.com/microsoft/BotFramework-WebChat/issues/5452). With Fluent/Copilot theme, the typing indicator padding should not be squashed and bottom margin should not grow, in PR [#5453](https://github.com/microsoft/BotFramework-WebChat/pull/5453), by [@compulim](https://github.com/compulim) and in PR [#5495](https://github.com/microsoft/BotFramework-WebChat/pull/5495), by [@OEvgeny](https://github.com/OEvgeny)
 - Fixed [#5461](https://github.com/microsoft/BotFramework-WebChat/issues/5461). On macOS and Fluent skinpack applied, using Japanese IME to input some Japanese text should not send them immediately, in PR [#5462](https://github.com/microsoft/BotFramework-WebChat/pull/5462), by [@compulim](https://github.com/compulim)
 - Fixed [#5472](https://github.com/microsoft/BotFramework-WebChat/issues/5472), ensure proper inheritance from the outside of Web Chat for visibility CSS property when hidden, in PR [#5473](https://github.com/microsoft/BotFramework-WebChat/pull/5473), by [@OEvgeny](https://github.com/OEvgeny)
 - Fixed [#5474](https://github.com/microsoft/BotFramework-WebChat/issues/5474). Disable AMD glue code in bundle, in PR [#5478](https://github.com/microsoft/BotFramework-WebChat/pull/5478), by [@compulim](https://github.com/compulim)
-   - Downstreamers who use our CommonJS and ES Modules output with esbuild will need to disable AMD themselves to prevent conflict with RequireJS
+  - Downstreamers who use our CommonJS and ES Modules output with esbuild will need to disable AMD themselves to prevent conflict with RequireJS
 - Fixed [#5479](https://github.com/microsoft/BotFramework-WebChat/issues/5479). Fixed feedback form buttons should not squash other buttons, in PR [#5480](https://github.com/microsoft/BotFramework-WebChat/pull/5480), by [@compulim](https://github.com/compulim)
-   - Migrated to radio button for like/dislike where form submission is required
+  - Migrated to radio button for like/dislike where form submission is required
 - Fixed long citation identifiers break activity layout, in PR [#5507](https://github.com/microsoft/BotFramework-WebChat/pull/5507), by [@OEvgeny](https://github.com/OEvgeny)
 - Updated file-based import with `.js` extension and removed the file extension from build config, by [@compulim](https://github.com/compulim), in PR [#5516](https://github.com/microsoft/BotFramework-WebChat/pull/5516)
 - Fixed [#5518](https://github.com/microsoft/BotFramework-WebChat/issues/5518). Minimal bundled build should work properly, in PR [#5507](https://github.com/microsoft/BotFramework-WebChat/pull/5507), by [@compulim](https://github.com/compulim)
@@ -252,8 +253,8 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
 ### Added
 
 - (Experimental) Added initial decorators support, in PR [#5205](https://github.com/microsoft/BotFramework-WebChat/pull/5205), by [@OEvgeny](https://github.com/OEvgeny)
-   - Introduced internal `botframework-webchat-api/decorator` import, in PR [#5205](https://github.com/microsoft/BotFramework-WebChat/pull/5205), by [@OEvgeny](https://github.com/OEvgeny)
-   - Added `DecoratorComposer` and `ActivityDecorator` to be used for decorating activity border, in PR [#5205](https://github.com/microsoft/BotFramework-WebChat/pull/5205), by [@OEvgeny](https://github.com/OEvgeny)
+  - Introduced internal `botframework-webchat-api/decorator` import, in PR [#5205](https://github.com/microsoft/BotFramework-WebChat/pull/5205), by [@OEvgeny](https://github.com/OEvgeny)
+  - Added `DecoratorComposer` and `ActivityDecorator` to be used for decorating activity border, in PR [#5205](https://github.com/microsoft/BotFramework-WebChat/pull/5205), by [@OEvgeny](https://github.com/OEvgeny)
 - Added `styleOptions.bubbleImageMaxHeight` and `styleOptions.bubbleImageMinHeight` for variable image height, in PR [#5236](https://github.com/microsoft/BotFramework-WebChat/pull/5236), by [@compulim](https://github.com/compulim)
 
 ### Fixed
@@ -274,55 +275,55 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
 ### Changed
 
 - Bumped all dependencies to the latest versions, by [@compulim](https://github.com/compulim) in PR [#5174](https://github.com/microsoft/BotFramework-WebChat/pull/5174) and PR [#5181](https://github.com/microsoft/BotFramework-WebChat/pull/5181)
-   - Production dependencies
-      - [`classnames@2.5.1`](https://npmjs.com/package/classnames)
-      - [`core-js@3.37.0`](https://npmjs.com/package/core-js)
-      - [`deep-freeze-strict@1.1.1`](https://npmjs.com/package/deep-freeze-strict)
-      - [`merge-refs@1.3.0`](https://npmjs.com/package/merge-refs)
-      - [`mime@4.0.3`](https://npmjs.com/package/mime)
-      - [`p-defer@4.0.1`](https://npmjs.com/package/p-defer)
-      - [`redux-saga@1.3.0`](https://npmjs.com/package/redux-saga)
-      - [`redux@5.0.1`](https://npmjs.com/package/redux)
-      - [`sanitize-html@2.13.0`](https://npmjs.com/package/sanitize-html)
-      - [`swiper@8.4.7`](https://npmjs.com/package/swiper)
-      - [`whatwg-fetch@3.6.20`](https://npmjs.com/package/whatwg-fetch)
-   - Development dependencies
-      - [`@fluentui/react-components@9.49.2`](https://npmjs.com/package/@fluentui/react-components)
-      - [`@types/node@20.12.11`](https://npmjs.com/package/@types/node)
-      - [`@typescript-eslint/eslint-plugin@7.8.0`](https://npmjs.com/package/@typescript-eslint/eslint-plugin)
-      - [`@typescript-eslint/parser@7.8.0`](https://npmjs.com/package/@typescript-eslint/parser)
-      - [`adm-zip@0.5.12`](https://npmjs.com/package/adm-zip)
-      - [`dotenv@16.4.5`](https://npmjs.com/package/dotenv)
-      - [`esbuild@0.21.1`](https://npmjs.com/package/esbuild)
-      - [`eslint-plugin-import@2.29.1`](https://npmjs.com/package/eslint-plugin-import)
-      - [`eslint-plugin-prettier@5.1.3`](https://npmjs.com/package/eslint-plugin-prettier)
-      - [`eslint-plugin-react-hooks@4.6.2`](https://npmjs.com/package/eslint-plugin-react-hooks)
-      - [`eslint-plugin-react@7.34.1`](https://npmjs.com/package/eslint-plugin-react)
-      - [`eslint-plugin-security@3.0.0`](https://npmjs.com/package/eslint-plugin-security)
-      - [`eslint@8.57.0`](https://npmjs.com/package/eslint)
-      - [`html-webpack-plugin@5.6.0`](https://npmjs.com/package/html-webpack-plugin)
-      - [`husky@9.0.11`](https://npmjs.com/package/husky)
-      - [`jest-image-snapshot@6.4.0`](https://npmjs.com/package/jest-image-snapshot)
-      - [`lint-staged@15.2.2`](https://npmjs.com/package/lint-staged)
-      - [`nodemon@3.1.0`](https://npmjs.com/package/nodemon)
-      - [`nopt@7.2.1`](https://npmjs.com/package/nopt)
-      - [`p-defer@4.0.1`](https://npmjs.com/package/p-defer)
-      - [`prettier@3.2.5`](https://npmjs.com/package/prettier)
-      - [`selenium-webdriver@4.20.0`](https://npmjs.com/package/selenium-webdriver)
-      - [`serve@14.2.3`](https://npmjs.com/package/serve)
-      - [`source-map-loader@5.0.0`](https://npmjs.com/package/source-map-loader)
-      - [`terser-webpack-plugin@5.3.10`](https://npmjs.com/package/terser-webpack-plugin)
-      - [`tsd@0.31.0`](https://npmjs.com/package/tsd)
-      - [`type-fest@4.18.2`](https://npmjs.com/package/type-fest)
-      - [`typescript@5.4.5`](https://npmjs.com/package/typescript)
-      - [`webpack@5.91.0`](https://npmjs.com/package/webpack)
+  - Production dependencies
+    - [`classnames@2.5.1`](https://npmjs.com/package/classnames)
+    - [`core-js@3.37.0`](https://npmjs.com/package/core-js)
+    - [`deep-freeze-strict@1.1.1`](https://npmjs.com/package/deep-freeze-strict)
+    - [`merge-refs@1.3.0`](https://npmjs.com/package/merge-refs)
+    - [`mime@4.0.3`](https://npmjs.com/package/mime)
+    - [`p-defer@4.0.1`](https://npmjs.com/package/p-defer)
+    - [`redux-saga@1.3.0`](https://npmjs.com/package/redux-saga)
+    - [`redux@5.0.1`](https://npmjs.com/package/redux)
+    - [`sanitize-html@2.13.0`](https://npmjs.com/package/sanitize-html)
+    - [`swiper@8.4.7`](https://npmjs.com/package/swiper)
+    - [`whatwg-fetch@3.6.20`](https://npmjs.com/package/whatwg-fetch)
+  - Development dependencies
+    - [`@fluentui/react-components@9.49.2`](https://npmjs.com/package/@fluentui/react-components)
+    - [`@types/node@20.12.11`](https://npmjs.com/package/@types/node)
+    - [`@typescript-eslint/eslint-plugin@7.8.0`](https://npmjs.com/package/@typescript-eslint/eslint-plugin)
+    - [`@typescript-eslint/parser@7.8.0`](https://npmjs.com/package/@typescript-eslint/parser)
+    - [`adm-zip@0.5.12`](https://npmjs.com/package/adm-zip)
+    - [`dotenv@16.4.5`](https://npmjs.com/package/dotenv)
+    - [`esbuild@0.21.1`](https://npmjs.com/package/esbuild)
+    - [`eslint-plugin-import@2.29.1`](https://npmjs.com/package/eslint-plugin-import)
+    - [`eslint-plugin-prettier@5.1.3`](https://npmjs.com/package/eslint-plugin-prettier)
+    - [`eslint-plugin-react-hooks@4.6.2`](https://npmjs.com/package/eslint-plugin-react-hooks)
+    - [`eslint-plugin-react@7.34.1`](https://npmjs.com/package/eslint-plugin-react)
+    - [`eslint-plugin-security@3.0.0`](https://npmjs.com/package/eslint-plugin-security)
+    - [`eslint@8.57.0`](https://npmjs.com/package/eslint)
+    - [`html-webpack-plugin@5.6.0`](https://npmjs.com/package/html-webpack-plugin)
+    - [`husky@9.0.11`](https://npmjs.com/package/husky)
+    - [`jest-image-snapshot@6.4.0`](https://npmjs.com/package/jest-image-snapshot)
+    - [`lint-staged@15.2.2`](https://npmjs.com/package/lint-staged)
+    - [`nodemon@3.1.0`](https://npmjs.com/package/nodemon)
+    - [`nopt@7.2.1`](https://npmjs.com/package/nopt)
+    - [`p-defer@4.0.1`](https://npmjs.com/package/p-defer)
+    - [`prettier@3.2.5`](https://npmjs.com/package/prettier)
+    - [`selenium-webdriver@4.20.0`](https://npmjs.com/package/selenium-webdriver)
+    - [`serve@14.2.3`](https://npmjs.com/package/serve)
+    - [`source-map-loader@5.0.0`](https://npmjs.com/package/source-map-loader)
+    - [`terser-webpack-plugin@5.3.10`](https://npmjs.com/package/terser-webpack-plugin)
+    - [`tsd@0.31.0`](https://npmjs.com/package/tsd)
+    - [`type-fest@4.18.2`](https://npmjs.com/package/type-fest)
+    - [`typescript@5.4.5`](https://npmjs.com/package/typescript)
+    - [`webpack@5.91.0`](https://npmjs.com/package/webpack)
 
 ## [4.17.0] - 2024-05-06
 
 ### Known issues
 
 - Web Chat is not loading with error `Uncaught TypeError: Super constructor null of anonymous class is not a constructor`
-   - A [bug in webpack@>=5.84.1](https://github.com/webpack/webpack/issues/17711) is causing the issue. Please update to [`webpack@>=5.90.0`](https://npmjs.com/package/webpack/v/5.90.0)
+  - A [bug in webpack@>=5.84.1](https://github.com/webpack/webpack/issues/17711) is causing the issue. Please update to [`webpack@>=5.90.0`](https://npmjs.com/package/webpack/v/5.90.0)
 
 ### Breaking changes
 
@@ -337,30 +338,30 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
 ### Added
 
 - Resolves [#5083](https://github.com/microsoft/BotFramework-WebChat/issues/5083). Added `sendAttachmentOn` style option to send attachments and text in a single activity, by [@ms-jb](https://github.com/ms-jb) and [@compulim](https://github.com/compulim), in PR [#5123](https://github.com/microsoft/BotFramework-WebChat/pull/5123)
-   - `useSendMessage` hook is updated to support sending attachments with a message
-   - `useSendBoxAttachments` hook is added to get/set attachments in the send box
+  - `useSendMessage` hook is updated to support sending attachments with a message
+  - `useSendBoxAttachments` hook is added to get/set attachments in the send box
 - Resolves [#5081](https://github.com/microsoft/BotFramework-WebChat/issues/5081). Added `uploadAccept` and `uploadMultiple` style options, by [@ms-jb](https://github.com/ms-jb), in PR [#5048](https://github.com/microsoft/BotFramework-WebChat/pull/5048)
 - Added `sendBoxMiddleware` and `sendBoxToolbarMiddleware`, by [@compulim](https://github.com/compulim), in PR [#5120](https://github.com/microsoft/BotFramework-WebChat/pull/5120) and [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504)
-   - Instead of passing barebone middleware, use the `createSendBoxMiddleware()` and `createSendBoxToolbarMiddleware()` factory function correspondingly, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504)
+  - Instead of passing barebone middleware, use the `createSendBoxMiddleware()` and `createSendBoxToolbarMiddleware()` factory function correspondingly, related to PR [#5504](https://github.com/microsoft/BotFramework-WebChat/pull/5504)
 - (Experimental) Added `botframework-webchat-fluent-theme` package for applying Fluent UI theme to Web Chat, by [@compulim](https://github.com/compulim) and [@OEvgeny](https://github.com/OEvgeny)
-   - Initial commit, in PR [#5120](https://github.com/microsoft/BotFramework-WebChat/pull/5120)
-   - Inherits Fluent CSS palette if available, in PR [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
-   - New send box with Fluent look-and-feel, in PR [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
-      - `styleOptions.maxMessageLength` to specify maximum length of the outgoing message
-   - Drag-and-drop file support, in PR [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
-   - Added telephone keypad (DTMF keypad), in PR [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
-   - Fixed `botframework-webchat-fluent-theme/package.json` to export `*.d.[m]ts` and default exports, in PR [#5131](https://github.com/microsoft/BotFramework-WebChat/pull/5131)
-   - Added support of `styleOptions.hideUploadButton`, in PR [#5132](https://github.com/microsoft/BotFramework-WebChat/pull/5132)
-   - Added `styleOptions.hideTelephoneKeypadButton` and default to `true`, in PR [#5132](https://github.com/microsoft/BotFramework-WebChat/pull/5132)
-   - Fit-and-finish on suggested actions and telephone keypad, in PR [#5132](https://github.com/microsoft/BotFramework-WebChat/pull/5132)
-   - Fixed to keep telephone keypad on-screen on click, in PR [#5132](https://github.com/microsoft/BotFramework-WebChat/pull/5132)
-   - Disabled send button and hid message length when telephone keypad is shown, in PR [#5136](https://github.com/microsoft/BotFramework-WebChat/pull/5136)
-   - Added dark theme support, in PR [#5138](https://github.com/microsoft/BotFramework-WebChat/pull/5138)
-   - Added an information message to the telephone keypad, in PR [#5140](https://github.com/microsoft/BotFramework-WebChat/pull/5140)
-   - Added animation to focus indicator and pixel-perfected, in PR [#5143](https://github.com/microsoft/BotFramework-WebChat/pull/5143)
-   - Integrated focus management for send box, in PR [#5150](https://github.com/microsoft/BotFramework-WebChat/pull/5150), by [@OEvgeny](https://github.com/OEvgeny)
-   - Added keyboard navigation support into suggested actions, in PR [#5154](https://github.com/microsoft/BotFramework-WebChat/pull/5154), by [@OEvgeny](https://github.com/OEvgeny)
-   - Fixes [#5166](https://github.com/microsoft/BotFramework-WebChat/issues/5166). Fixed "attach file" button in iOS Safari should looks the same as on other platforms, in PR [#5167](https://github.com/microsoft/BotFramework-WebChat/pull/5167), by [@compulim](https://github.com/compulim)
+  - Initial commit, in PR [#5120](https://github.com/microsoft/BotFramework-WebChat/pull/5120)
+  - Inherits Fluent CSS palette if available, in PR [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
+  - New send box with Fluent look-and-feel, in PR [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
+    - `styleOptions.maxMessageLength` to specify maximum length of the outgoing message
+  - Drag-and-drop file support, in PR [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
+  - Added telephone keypad (DTMF keypad), in PR [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
+  - Fixed `botframework-webchat-fluent-theme/package.json` to export `*.d.[m]ts` and default exports, in PR [#5131](https://github.com/microsoft/BotFramework-WebChat/pull/5131)
+  - Added support of `styleOptions.hideUploadButton`, in PR [#5132](https://github.com/microsoft/BotFramework-WebChat/pull/5132)
+  - Added `styleOptions.hideTelephoneKeypadButton` and default to `true`, in PR [#5132](https://github.com/microsoft/BotFramework-WebChat/pull/5132)
+  - Fit-and-finish on suggested actions and telephone keypad, in PR [#5132](https://github.com/microsoft/BotFramework-WebChat/pull/5132)
+  - Fixed to keep telephone keypad on-screen on click, in PR [#5132](https://github.com/microsoft/BotFramework-WebChat/pull/5132)
+  - Disabled send button and hid message length when telephone keypad is shown, in PR [#5136](https://github.com/microsoft/BotFramework-WebChat/pull/5136)
+  - Added dark theme support, in PR [#5138](https://github.com/microsoft/BotFramework-WebChat/pull/5138)
+  - Added an information message to the telephone keypad, in PR [#5140](https://github.com/microsoft/BotFramework-WebChat/pull/5140)
+  - Added animation to focus indicator and pixel-perfected, in PR [#5143](https://github.com/microsoft/BotFramework-WebChat/pull/5143)
+  - Integrated focus management for send box, in PR [#5150](https://github.com/microsoft/BotFramework-WebChat/pull/5150), by [@OEvgeny](https://github.com/OEvgeny)
+  - Added keyboard navigation support into suggested actions, in PR [#5154](https://github.com/microsoft/BotFramework-WebChat/pull/5154), by [@OEvgeny](https://github.com/OEvgeny)
+  - Fixes [#5166](https://github.com/microsoft/BotFramework-WebChat/issues/5166). Fixed "attach file" button in iOS Safari should looks the same as on other platforms, in PR [#5167](https://github.com/microsoft/BotFramework-WebChat/pull/5167), by [@compulim](https://github.com/compulim)
 - (Experimental) Added `` component which can be used to localize strings, by [@OEvgeny](https://github.com/OEvgeny) in PR [#5140](https://github.com/microsoft/BotFramework-WebChat/pull/5140)
 - Added `` component to apply theme pack to Web Chat, by [@compulim](https://github.com/compulim), in PR [#5120](https://github.com/microsoft/BotFramework-WebChat/pull/5120)
 - Added `useMakeThumbnail` hook option to create a thumbnail from the file given, by [@compulim](https://github.com/compulim), in PR [#5123](https://github.com/microsoft/BotFramework-WebChat/pull/5123) and [#5122](https://github.com/microsoft/BotFramework-WebChat/pull/5122)
@@ -384,52 +385,52 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
 
 - Moved pull request validation pipeline to GitHub Actions, by [@compulim](https://github.com/compulim), in PR [#4976](https://github.com/microsoft/BotFramework-WebChat/pull/4976)
 - Bumped all dependencies to the latest versions, by [@compulim](https://github.com/compulim) in PR [#4973](https://github.com/microsoft/BotFramework-WebChat/pull/4973), PR [#5115](https://github.com/microsoft/BotFramework-WebChat/pull/5115), PR [#5148](https://github.com/microsoft/BotFramework-WebChat/pull/5148), and PR [#5156](https://github.com/microsoft/BotFramework-WebChat/pull/5156)
-   - Notes: Some components/features in Adaptive Cards are in preview and not ready for production use. Web Chat does not support these components and features
-   - Production dependencies
-      - [`adaptivecards@3.0.2`](https://npmjs.com/package/adaptivecards)
-      - [`core-js@3.33.3`](https://npmjs.com/package/core-js)
-      - [`jwt-decode@4.0.0`](https://npmjs.com/package/jwt-decode)
-      - [`markdown-it@13.0.2`](https://npmjs.com/package/markdown-it)
-      - [`markdown-it-for-inline@2.0.1`](https://npmjs.com/package/markdown-it-for-inline)
-      - [`merge-refs@1.2.2`](https://npmjs.com/package/merge-refs)
-      - [`mime@4.0.0`](https://npmjs.com/package/mime)
-      - [`redux@5.0.0`](https://npmjs.com/package/redux)
-      - [`url-search-params-polyfill@8.2.5`](https://npmjs.com/package/url-search-params-polyfill)
-      - [`use-ref-from@0.0.3`](https://npmjs.com/package/use-ref-from)
-      - [`whatwg-fetch@3.6.19`](https://npmjs.com/package/whatwg-fetch)
-   - Development dependencies
-      - [`@types/dom-speech-recognition@0.0.4`](https://npmjs.com/package/@types/dom-speech-recognition)
-      - [`@types/node@20.10.3`](https://npmjs.com/package/@types/node)
-      - [`@types/react@16.14.60`](https://npmjs.com/package/@types/react)
-      - [`@typescript-eslint/eslint-plugin@6.13.2`](https://npmjs.com/package/@typescript-eslint/eslint-plugin)
-      - [`@typescript-eslint/parser@6.13.2`](https://npmjs.com/package/@typescript-eslint/parser)
-      - [`axe-core@4.8.2`](https://npmjs.com/package/axe-core)
-      - [`babel-jest@29.7.0`](https://npmjs.com/package/babel-jest)
-      - [`concurrently@8.2.2`](https://npmjs.com/package/concurrently)
-      - [`esbuild@0.19.8`](https://npmjs.com/package/esbuild)
-      - [`eslint-config-prettier@9.1.0`](https://npmjs.com/package/eslint-config-prettier)
-      - [`eslint-plugin-import@2.29.0`](https://npmjs.com/package/eslint-plugin-import)
-      - [`eslint-plugin-prettier@5.0.1`](https://npmjs.com/package/eslint-plugin-prettier)
-      - [`eslint@8.55.0`](https://npmjs.com/package/eslint)
-      - [`istanbul-lib-coverage@3.2.2`](https://npmjs.com/package/istanbul-lib-coverage)
-      - [`jest-image-snapshot@6.3.0`](https://npmjs.com/package/jest-image-snapshot)
-      - [`jest@29.7.0`](https://npmjs.com/package/jest)
-      - [`lint-staged@15.2.0`](https://npmjs.com/package/lint-staged)
-      - [`nodemon@3.0.2`](https://npmjs.com/package/nodemon)
-      - [`prettier@3.1.0`](https://npmjs.com/package/prettier)
-      - [`read-pkg-up@11.0.0`](https://npmjs.com/package/read-pkg-up)
-      - [`read-pkg@9.0.1`](https://npmjs.com/package/read-pkg)
-      - [`selenium-webdriver@4.15.0`](https://npmjs.com/package/selenium-webdriver)
-      - [`typescript@5.3.2`](https://npmjs.com/package/typescript)
-      - [`webpack@5.91.0`](https://npmjs.com/package/webpack)
+  - Notes: Some components/features in Adaptive Cards are in preview and not ready for production use. Web Chat does not support these components and features
+  - Production dependencies
+    - [`adaptivecards@3.0.2`](https://npmjs.com/package/adaptivecards)
+    - [`core-js@3.33.3`](https://npmjs.com/package/core-js)
+    - [`jwt-decode@4.0.0`](https://npmjs.com/package/jwt-decode)
+    - [`markdown-it@13.0.2`](https://npmjs.com/package/markdown-it)
+    - [`markdown-it-for-inline@2.0.1`](https://npmjs.com/package/markdown-it-for-inline)
+    - [`merge-refs@1.2.2`](https://npmjs.com/package/merge-refs)
+    - [`mime@4.0.0`](https://npmjs.com/package/mime)
+    - [`redux@5.0.0`](https://npmjs.com/package/redux)
+    - [`url-search-params-polyfill@8.2.5`](https://npmjs.com/package/url-search-params-polyfill)
+    - [`use-ref-from@0.0.3`](https://npmjs.com/package/use-ref-from)
+    - [`whatwg-fetch@3.6.19`](https://npmjs.com/package/whatwg-fetch)
+  - Development dependencies
+    - [`@types/dom-speech-recognition@0.0.4`](https://npmjs.com/package/@types/dom-speech-recognition)
+    - [`@types/node@20.10.3`](https://npmjs.com/package/@types/node)
+    - [`@types/react@16.14.60`](https://npmjs.com/package/@types/react)
+    - [`@typescript-eslint/eslint-plugin@6.13.2`](https://npmjs.com/package/@typescript-eslint/eslint-plugin)
+    - [`@typescript-eslint/parser@6.13.2`](https://npmjs.com/package/@typescript-eslint/parser)
+    - [`axe-core@4.8.2`](https://npmjs.com/package/axe-core)
+    - [`babel-jest@29.7.0`](https://npmjs.com/package/babel-jest)
+    - [`concurrently@8.2.2`](https://npmjs.com/package/concurrently)
+    - [`esbuild@0.19.8`](https://npmjs.com/package/esbuild)
+    - [`eslint-config-prettier@9.1.0`](https://npmjs.com/package/eslint-config-prettier)
+    - [`eslint-plugin-import@2.29.0`](https://npmjs.com/package/eslint-plugin-import)
+    - [`eslint-plugin-prettier@5.0.1`](https://npmjs.com/package/eslint-plugin-prettier)
+    - [`eslint@8.55.0`](https://npmjs.com/package/eslint)
+    - [`istanbul-lib-coverage@3.2.2`](https://npmjs.com/package/istanbul-lib-coverage)
+    - [`jest-image-snapshot@6.3.0`](https://npmjs.com/package/jest-image-snapshot)
+    - [`jest@29.7.0`](https://npmjs.com/package/jest)
+    - [`lint-staged@15.2.0`](https://npmjs.com/package/lint-staged)
+    - [`nodemon@3.0.2`](https://npmjs.com/package/nodemon)
+    - [`prettier@3.1.0`](https://npmjs.com/package/prettier)
+    - [`read-pkg-up@11.0.0`](https://npmjs.com/package/read-pkg-up)
+    - [`read-pkg@9.0.1`](https://npmjs.com/package/read-pkg)
+    - [`selenium-webdriver@4.15.0`](https://npmjs.com/package/selenium-webdriver)
+    - [`typescript@5.3.2`](https://npmjs.com/package/typescript)
+    - [`webpack@5.91.0`](https://npmjs.com/package/webpack)
 
 ## [4.16.0] - 2023-11-16
 
 ### Breaking changes
 
 - Starting from 4.16.0, Internet Explorer is no longer supported
-   - After more than a year of the Internet Explorer 11 officially retirement, we decided to stop supporting Internet Explorer. This will help us to bring new features to Web Chat
-   - 4.15.9 is the last version which supports Internet Explorer in limited fashion
+  - After more than a year of the Internet Explorer 11 officially retirement, we decided to stop supporting Internet Explorer. This will help us to bring new features to Web Chat
+  - 4.15.9 is the last version which supports Internet Explorer in limited fashion
 - `useTextBoxValue` setter will no longer replace emoticon with emoji, in PR [#4861](https://github.com/microsoft/BotFramework-WebChat/issues/pull/4861)
 
 ### Fixed
@@ -465,72 +466,72 @@ Notes: web developers are advised to use [`~` (tilde range)](https://github.com/
 ### Changed
 
 - Bumped all dependencies to the latest versions, by [@compulim](https://github.com/compulim) in PR [#4843](https://github.com/microsoft/BotFramework-WebChat/pull/4843)
-   - Production dependencies
-      - [`@emotion/css@11.11.2`](https://npmjs.com/package/@emotion/css)
-      - [`classnames@2.3.2`](https://npmjs.com/package/classnames)
-      - [`core-js@3.32.1`](https://npmjs.com/package/core-js)
-      - [`redux-saga@1.2.3`](https://npmjs.com/package/redux-saga)
-      - [`sanitize-html@2.11.0`](https://npmjs.com/package/sanitize-html)
-      - [`use-ref-from@0.0.2`](https://npmjs.com/package/use-ref-from)
-      - [`whatwg-fetch@3.6.18`](https://npmjs.com/package/whatwg-fetch)
-   - Development dependencies
-      - [`@types/node@20.5.8`](https://npmjs.com/package/@types/node)
-      - [`@types/react@18.2.21`](https://npmjs.com/package/@types/react)
-      - [`@typescript-eslint/eslint-plugin@6.5.0`](https://npmjs.com/package/@typescript-eslint/eslint-plugin)
-      - [`@typescript-eslint/parser@6.5.0`](https://npmjs.com/package/@typescript-eslint/parser)
-      - [`axe-core@4.7.2`](https://npmjs.com/package/axe-core)
-      - [`babel-jest@29.6.4`](https://npmjs.com/package/babel-jest)
-      - [`babel-loader@9.1.3`](https://npmjs.com/package/babel-loader)
-      - [`chalk@5.3.0`](https://npmjs.com/package/chalk)
-      - [`concurrently@8.2.1`](https://npmjs.com/package/concurrently)
-      - [`dotenv@16.3.1`](https://npmjs.com/package/dotenv)
-      - [`esbuild@0.19.2`](https://npmjs.com/package/esbuild)
-      - [`eslint-plugin-prettier@5.0.0`](https://npmjs.com/package/eslint-plugin-prettier)
-      - [`eslint-plugin-react@7.33.2`](https://npmjs.com/package/eslint-plugin-react)
-      - [`eslint@8.48.0`](https://npmjs.com/package/eslint)
-      - [`jest-image-snapshot@6.2.0`](https://npmjs.com/package/jest-image-snapshot)
-      - [`jest-junit@16.0.0`](https://npmjs.com/package/jest-junit)
-      - [`jest-trx-results-processor@3.0.2`](https://npmjs.com/package/jest-trx-results-processor)
-      - [`lerna@6.6.2`](https://npmjs.com/package/lerna)
-      - [`lint-staged@14.0.1`](https://npmjs.com/package/lint-staged)
-      - [`node-fetch@2.7.0`](https://npmjs.com/package/node-fetch)
-      - [`nodemon@3.0.1`](https://npmjs.com/package/nodemon)
-      - [`nopt@7.2.0`](https://npmjs.com/package/nopt)
-      - [`prettier@3.0.3`](https://npmjs.com/package/prettier)
-      - [`read-pkg-up@10.1.0`](https://npmjs.com/package/read-pkg-up)
-      - [`read-pkg@8.1.0`](https://npmjs.com/package/read-pkg)
-      - [`selenium-webdriver@4.12.0`](https://npmjs.com/package/selenium-webdriver)
-      - [`serve@14.2.1`](https://npmjs.com/package/serve)
-      - [`terser-webpack-plugin@5.3.9`](https://npmjs.com/package/terser-webpack-plugin)
-      - [`typescript@5.2.2`](https://npmjs.com/package/typescript)
-      - [`url-search-params-polyfill@8.2.4`](https://npmjs.com/package/url-search-params-polyfill)
-      - [`webpack-cli@5.1.4`](https://npmjs.com/package/webpack-cli)
-      - [`webpack-stats-plugin@1.1.3`](https://npmjs.com/package/webpack-stats-plugin)
-      - [`webpack@5.88.2`](https://npmjs.com/package/webpack)
+  - Production dependencies
+    - [`@emotion/css@11.11.2`](https://npmjs.com/package/@emotion/css)
+    - [`classnames@2.3.2`](https://npmjs.com/package/classnames)
+    - [`core-js@3.32.1`](https://npmjs.com/package/core-js)
+    - [`redux-saga@1.2.3`](https://npmjs.com/package/redux-saga)
+    - [`sanitize-html@2.11.0`](https://npmjs.com/package/sanitize-html)
+    - [`use-ref-from@0.0.2`](https://npmjs.com/package/use-ref-from)
+    - [`whatwg-fetch@3.6.18`](https://npmjs.com/package/whatwg-fetch)
+  - Development dependencies
+    - [`@types/node@20.5.8`](https://npmjs.com/package/@types/node)
+    - [`@types/react@18.2.21`](https://npmjs.com/package/@types/react)
+    - [`@typescript-eslint/eslint-plugin@6.5.0`](https://npmjs.com/package/@typescript-eslint/eslint-plugin)
+    - [`@typescript-eslint/parser@6.5.0`](https://npmjs.com/package/@typescript-eslint/parser)
+    - [`axe-core@4.7.2`](https://npmjs.com/package/axe-core)
+    - [`babel-jest@29.6.4`](https://npmjs.com/package/babel-jest)
+    - [`babel-loader@9.1.3`](https://npmjs.com/package/babel-loader)
+    - [`chalk@5.3.0`](https://npmjs.com/package/chalk)
+    - [`concurrently@8.2.1`](https://npmjs.com/package/concurrently)
+    - [`dotenv@16.3.1`](https://npmjs.com/package/dotenv)
+    - [`esbuild@0.19.2`](https://npmjs.com/package/esbuild)
+    - [`eslint-plugin-prettier@5.0.0`](https://npmjs.com/package/eslint-plugin-prettier)
+    - [`eslint-plugin-react@7.33.2`](https://npmjs.com/package/eslint-plugin-react)
+    - [`eslint@8.48.0`](https://npmjs.com/package/eslint)
+    - [`jest-image-snapshot@6.2.0`](https://npmjs.com/package/jest-image-snapshot)
+    - [`jest-junit@16.0.0`](https://npmjs.com/package/jest-junit)
+    - [`jest-trx-results-processor@3.0.2`](https://npmjs.com/package/jest-trx-results-processor)
+    - [`lerna@6.6.2`](https://npmjs.com/package/lerna)
+    - [`lint-staged@14.0.1`](https://npmjs.com/package/lint-staged)
+    - [`node-fetch@2.7.0`](https://npmjs.com/package/node-fetch)
+    - [`nodemon@3.0.1`](https://npmjs.com/package/nodemon)
+    - [`nopt@7.2.0`](https://npmjs.com/package/nopt)
+    - [`prettier@3.0.3`](https://npmjs.com/package/prettier)
+    - [`read-pkg-up@10.1.0`](https://npmjs.com/package/read-pkg-up)
+    - [`read-pkg@8.1.0`](https://npmjs.com/package/read-pkg)
+    - [`selenium-webdriver@4.12.0`](https://npmjs.com/package/selenium-webdriver)
+    - [`serve@14.2.1`](https://npmjs.com/package/serve)
+    - [`terser-webpack-plugin@5.3.9`](https://npmjs.com/package/terser-webpack-plugin)
+    - [`typescript@5.2.2`](https://npmjs.com/package/typescript)
+    - [`url-search-params-polyfill@8.2.4`](https://npmjs.com/package/url-search-params-polyfill)
+    - [`webpack-cli@5.1.4`](https://npmjs.com/package/webpack-cli)
+    - [`webpack-stats-plugin@1.1.3`](https://npmjs.com/package/webpack-stats-plugin)
+    - [`webpack@5.88.2`](https://npmjs.com/package/webpack)
 
 ## [4.15.8] - 2023-06-06
 
 ### Breaking changes
 
 - When `activity.channelData['webchat:fallback-text']` is present but empty, it will no longer applies `aria-hidden` to the activity
-   - The activity will not be narrated through live region. However, when navigating the transcript, it will be narrated as empty
-   - To make an activity presentational or hide from screen reader, please use `activityMiddleware` to customize the rendering
+  - The activity will not be narrated through live region. However, when navigating the transcript, it will be narrated as empty
+  - To make an activity presentational or hide from screen reader, please use `activityMiddleware` to customize the rendering
 
 ### Added
 
 - Resolved [#4643](https://github.com/microsoft/BotFramework-WebChat/issues/4643). Decoupling `botframework-directlinejs` from business logic of Web Chat for better tree-shaking, by [@compulim](https://github.com/compulim), in PR [#4645](https://github.com/microsoft/BotFramework-WebChat/pull/4645) and PR [#4648](https://github.com/microsoft/BotFramework-WebChat/pull/4648)
 - Resolved [#4650](https://github.com/microsoft/BotFramework-WebChat/issues/4650). Added automated accessibility check using [`axe-core`](https://npmjs.com/package/axe-core)
-   - Add `axe-core` in end-to-end tests, by [@compulim](https://github.com/compulim), in PR [#4704](https://github.com/microsoft/BotFramework-WebChat/pull/4704)
-   - HTML test: using `
` for the root container, by [@compulim](https://github.com/compulim), in PR [#4684](https://github.com/microsoft/BotFramework-WebChat/pull/4684) and PR [#4704](https://github.com/microsoft/BotFramework-WebChat/pull/4704) - - HTML test: changed contrast ratio in tests that use different background colors, by [@compulim](https://github.com/compulim), in PR [#4686](https://github.com/microsoft/BotFramework-WebChat/pull/4686) and PR [#4704](https://github.com/microsoft/BotFramework-WebChat/pull/4704) - - Added `ponyfill` prop to ``/`` and `createStoreWithOptions`, by [@compulim](https://github.com/compulim), in PR [#4662](https://github.com/microsoft/BotFramework-WebChat/pull/4662) - - This is for development scenarios where fake timer is needed and will only applies to Web Chat only - - HTML test: fix accessibility issues on HTML file, by [@compulim](https://github.com/compulim), in PR [#4685](https://github.com/microsoft/BotFramework-WebChat/pull/4685) - - HTML test: ensure all images has alternate text, by [@compulim](https://github.com/compulim), in PR [#4704](https://github.com/microsoft/BotFramework-WebChat/pull/4704) - - Adaptive Cards: always set `role` attribute, by [@compulim](https://github.com/compulim), in PR [#4704](https://github.com/microsoft/BotFramework-WebChat/pull/4704) - - Adaptive Cards: update host config to use lighter color for disabled inputs, by [@compulim](https://github.com/compulim), in PR [#4704](https://github.com/microsoft/BotFramework-WebChat/pull/4704) - - Keyboard help screen: remove `
` container, by [@compulim](https://github.com/compulim), in PR [#4704](https://github.com/microsoft/BotFramework-WebChat/pull/4704) - - Live region: added `