Skip to content

Latest commit

 

History

History
1335 lines (1150 loc) · 151 KB

CHANGELOG.md

File metadata and controls

1335 lines (1150 loc) · 151 KB

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[Unreleased]

Changed

Fixed

Samples

  • Fixes #3473. Fix samples using activityMiddleware (from 4.10.0 breaking changes), by @corinagum in PR #3601

[4.11.0] - 2020-11-04

Added

  • Resolves #3281. Added documentation on speech permissions for Cordova apps on Android, by @corinagum, in PR #3508
  • Resolves #3316. Refactored platform-neutral APIs into the new api package, to be reused on React Native component, in PR #3543 by @compulim
    • The new layering is core -> api -> component (HTML-only) -> bundle
    • Includes composition mode, platform-neutral React hooks, and localization resources
    • Most hooks are available in the new api package. Some hooks are only available on the existing component package, due to their platform dependency or coupling with visual components. For example, Web Worker, 2D canvas, useMicrophoneButton* are not available on the api package
    • Most implementations of middleware are only available in component package due to their coupling with visual components or platform features. Some implementations, (e.g. card action middleware and activity grouping middleware) are available on api package. For example:
      • Carousel layout and stacked layout is only available on component package due to their coupling with their respective visual components
      • For card action middleware, imBack, messageBack and postBack actions are available on api package, but call, openUrl and other platform-dependent actions are only available on component package
    • activityMiddleware, attachmentMiddleware, etc, now support arrays for multiple middleware

Fixed

Changed

Samples

[4.10.1] - 2020-09-09

Breaking changes

  • To support Content Security Policy, glamor is being replaced by create-emotion. The CSS hash and rule name is being prefixed with webchat--css with a random value.

Fixed

  • Fixes #3431. Removed delay of first activity with replyToId pointing to a missing activity, by @compulim in PR #3450
  • Fixes #3439. Use consistent return type in default CardActionContext.getSignInUrl(), by @stevengum in PR #3459
  • Fixes #3444. Make suggested actions container height styleOption flexible, by @corinagum in PR #3456

Changed

Samples

[4.10.0] - 2020-08-18

Breaking changes

  • Due to the complexity, we are no longer exposing <CarouselLayout> and <StackedLayout>. Please use <BasicTranscript> to render the transcript instead.
  • With the new activity grouping feature:
    • Customized avatar cannot be wider than styleOptions.avatarSize. If you want to show a wider avatar, please increase styleOptions.avatarSize.
    • If customized avatar is rendering false, bubble will still be padded to leave a gutter for the empty customized avatar. To hide gutter, please set styleOptions.botAvatarInitials and styleOptions.userAvatarInitials to falsy.
  • Default bubble nub offset is set to 0, previously "bottom" (or -0)
    • Previously, we put the bubble nub at the bottom while keeping the avatar on top. This is not consistent in the new layout.
  • By default, we will group avatar per status group.
    • If you want to switch back to previous behaviors, please set styleOptions.showAvatarInGroup to true.
  • Default botAvatarInitials and userAvatarInitials is changed to undefined, from "" (empty string)
    • When the initials is undefined, no gutter space will be reserved for the avatar.
    • When the initials is "" (empty string), gutter space will be reserved, but not avatar will be shown.
  • useRenderActivity hook is being deprecated, in favor of the new useCreateActivityRenderer hook.
  • useRenderActivityStatus hook is being deprecated, in favor of the new useCreateActivityStatusRenderer hook.
  • useRenderAvatar hook is being deprecated, in favor of the new useCreateAvatarRenderer hook.

Change in general middleware design

This change will impact middleware which use downstream result.

Previously, when a middleware is called, they are passed with a single argument.

Starting from 4.10.0, multiple arguments could be passed to the middleware. All middleware should pass all arguments to the downstream middleware. This change enables future extension to the middleware pattern.

For example, a passthrough middleware was:

() => next => card => next(card)

It should become:

() => next => (...args) => next(...args)

This also applies to the render function returned by activity middleware. The previous signature was:

() => next => card => children => next(card)(children)

It should become:

() => next => (...setupArgs) => (...renderArgs) => next(...setupArgs)(...renderArgs)

Note: Please read the following section for another change in the activity middleware signature for decorators.

Change in activity middleware

This change will impact activity middleware used for decoration.

Previously, when an activity middleware hid a specific activity from view, it returned a function, () => false.

Starting in 4.10.0, if an activity needs to be hidden from the view, the middleware should return false instead of () => false. This change allows transcript to correctly group activities and ignore activities that are not in view.

To avoid the TypeError: x is not a function error, all middleware should be aware that downstream middleware may return false instead of a function.

For example, when an event activity is hidden from the view, the terminator middleware will now return false. All decoration middleware should check if the downstream result is false (or falsy value), and return the value as-is to upstream middleware.

Previously, a simple decorator was:

() => next => (...setupArgs) => (...renderArgs) => {
  const render = next(...setupArgs);
  const element = render(...renderArgs);

  return element && <div>{element}</div>;
}

It should check the result from downstream middleware. If it is falsy, it should return as-is to the upstream middleware:

() => next => (...setupArgs) => {
  const render = next(...setupArgs);

  return render && (...renderArgs) => {
    const element = render(...renderArgs);

    return element && <div>{element}</div>;
  };
}

Changed

Added

Fixed

  • Fixes #2675. Added alt text to images in suggested actions, by @compulim in PR #3375
  • Fixes #3383. Fixed notification toast should not break when most fields are undefined, by @compulim in PR #3384

Samples

[4.9.2] - 2020-07-14

Added

Fixed

  • Fixes #3265. Fix styling specificity regression on microphone button, by @corinagum in PR #3276
  • Fixes #3279. Fix relative timestamp errored out when showing a time before yesterday, by @compulim in PR #3282
  • Fixes #3236, by @compulim in PR #3287
    • Isolated screen reader only live region for incoming activities and added a new <ScreenReaderActivity> component
    • Removed screen reader text for activities outside of live region, including <CarouselFilmstrip>, <StackedLayout>, <TextContent>, and <Timestamp>
    • Updated some accessibility texts
    • Rectified activities render order by delaying activities with replyToId that reference an activity which is not ACK-ed, for up to 5 seconds
    • Disabled widgets will have tabindex="-1" set, instead of disabled attribute
    • Remove tabindex="-1" from Adaptive Cards container
    • Hide activities of type invoke
  • Fixes #3294. Fix blank screen on missing middlewares, by @compulim in PR #3295
  • Fixes #3297. Fix className prop is not honored in <ReactWebChat>, by @compulim in PR #3300

Samples

[4.9.1] - 2020-06-09

Breaking changes

  • Affecting Adaptive Cards, legacy cards and suggested actions
    • For openUrl card action, we are now allow-listing the URL scheme using the same allow list from the default Markdown + sanitize engine, which includes data, http, https, ftp, mailto, sip, and tel
    • To allow-list a different set of URL schemes, please implement the card action middleware to override this behavior

Added

  • Resolves #3205. Added Direct Line App Service Extension protocol, by @compulim in PR #3206
  • Resolves #3225. Support allowed scheme with openUrl card action, by @compulim in PR #3226
  • Resolves #3252. Added useObserveScrollPosition and useScrollTo hooks, by @compulim in PR #3268
  • Resolves #3271. Added composition mode, which splits up <ReactWebChat> into <Composer> and <BasicWebChat>, by @compulim in PR #3268

Fixed

  • Fixes #1340. Card container should not be focusable if they do not have tapAction, by @compulim in PR #3193
  • Fixed #3196. Cards with tapAction should be executable by ENTER or SPACEBAR key, by @compulim in PR #3197
  • Fixed #3203. "New messages" button should be narrated by assistive technology, by @compulim in PR #3204
  • Fixed #3217. Make sure rel="noopener noreferrer is not sanitized, by @compulim in PR #3220
  • Fixed #3223. Tap an openUrl card action should open URL in a new tab with noopener noreferrer set, by @compulim in PR #3224

Changed

Samples

[4.9.0] - 2020-05-11

Added

  • Resolves #2897. Moved from JUnit to VSTest reporter with file attachments, by @compulim in PR #2990
  • Added aria-label attribute support for default Markdown engine, by @patniko in PR #3022
  • Resolves #2969. Support sovereign cloud for Cognitive Services Speech Services, by @compulim in PR #3040
  • Resolves #2481. Support selecting different audio input devices for Cognitive Services Speech Services, by @compulim in PR #3079
  • Resolves #2850. Added new useFocus hook and deprecating useFocusSendBox hook, by @compulim in PR #3123
    • Modify setFocus argument of useTextBoxSubmit to support main and sendBoxWithoutKeyboard
  • Fixes #1427. Support disabled prop and added actionPerformedClassName in Adaptive Card and other legacy cards, by @compulim in PR #3150

Fixed

  • Fixes #2989. Fix observeOnce to use ES Observable call pattern, by @compulim in PR #2993
  • Fixes #3024. Using bridge package markdown-it-attrs-es5 for consuming markdown-it-attrs for IE11, by @compulim in PR #3025
  • Fixes #2818. Fix user ID is not set when passing to embed as query parameter, by @p-nagpal in PR #3031
  • Fixes #3026. Fix link rel attribute in the renderMarkdown function, by @tdurnford in PR #3033
  • Fixes #2933. Fix text should not be ignored in messageBack action in hero card, by @geea-develop and @compulim in PR #3003
  • Fixes #2562. Fix timestamps should not stop updating, by @compulim in PR #3066
  • Fixes #2953. Direct Line Speech should not synthesize when the speak property is falsy, by @compulim in PR #3059
  • Fixes #2876. messageBack and postBack should send even if both text and value is falsy or undefined, by @compulim in PR #3120
  • Fixes #2668. Disable Web Audio on insecure connections, by @compulim in PR #3079
  • Fixes #2850. After click suggested action, should focus to send box without keyboard, by @compulim in PR #3123
  • Fixes #3133. Associate ARIA labels with buttons in hero card and Adaptive Cards, by @compulim in PR #3146.
    • Remove browser-based detection from <ScreenReaderText> because it is no longer needed.
    • After stripping Markdown syntax for accessibility labels, cache the result to improve rendering performance.
    • Skip stripping Markdown for non-Markdown text content.
  • Fixes #3155. Patch incoming activities with null fields, by @compulim in PR #3154
  • Fixes #2669 and #3136. The "New messages" button will be accessible through TAB key, inbetween the last read and first unread activity, by @compulim in PR #3150.
    • After the "New message" button is clicked, focus will be moved to the first interactive UI of unread activity or the send box.
  • Fixes #3135. If the current widget is disabled, it will keep focus until the next TAB key is pressed, by @compulim in PR #3150

Changed

Samples

[4.8.1] - 2020-04-15

Fixed

  • Fixes #3075. Fix usability issues around accessibility, by @compulim in PR #3076
    • Fix timestamp should not be narrated more than once.
    • Associate the activity text with its attachments, by adding a role="region" to the activity DOM element.
  • Fixes #3074. Keep props.locale when sending to the bot, by @compulim in PR #3095
  • Fixes #3096. Use <ScreenReaderText> instead of aria-label for message bubbles, by @compulim in PR #3097

[4.8.0] - 2020-03-05

Breaking changes

  • Localization
    • locale prop: zh-YUE has been renamed to yue to conform with Unicode standard. zh-YUE will continue to work with warnings
    • Most strings have been validated and retranslated by the Microsoft localization team, with the exception of English (US), Egyptian Arabic, Jordan Arabic, and Chinese Yue
      • If the new strings are undesirable, please use the overideLocalizedStrings prop for customization
      • String IDs have been refreshed and now use a standard format
    • useLocalize and useLocalizeDate is deprecated. Please use useLocalizer and useDateFormatter instead
  • Customizable typing indicator: data and hook related to typing indicator are being revamped in PR #2912
    • lastTypingAt reducer is deprecated, use typing instead. The newer reducer contains typing indicator from the user
    • useLastTypingAt() hook is deprecated, use useActiveTyping(duration?: number) instead. For all typing information, pass Infinity to duration argument
  • Customizable activity status: new nextVisibleActivity to control activity status visibility
    • Previously, we use timestampClassName to control if the activity should show or hide timestamp. The timestampClassName was added as a class attribute the DOM element which contains the timestamp
    • Today, activity and nextVisibleActivity are passed to the middleware, so the activityRendererMiddleware can decide whether the timestamp should be shown or not. For example, developers can group timestamp based on activity type

Added

Fixed

Changed

Samples

[4.7.1] - 2019-12-13

Changed

  • Moved core-js from dev dependencies to dependencies in botframework-directlinespeech-sdk package, by @tonyanziano, in PR #2727

[4.7.0] - 2019-12-12

Breaking changes

  • adaptiveCardHostConfig is being renamed to adaptiveCardsHostConfig
    • If you are using the deprecated adaptiveCardHostConfig, we will rename it automatically

Added

  • Resolves #2539, added React hooks for customization, by @compulim, in the following PRs:
    • PR #2540: useActivities, useReferenceGrammarID, useSendBoxShowInterims
    • PR #2541: useStyleOptions, useStyleSet
    • PR #2542: useLanguage, useLocalize, useLocalizeDate
    • PR #2543: useAdaptiveCardsHostConfig, useAdaptiveCardsPackage, useRenderMarkdownAsHTML
    • PR #2544: useAvatarForBot, useAvatarForUser
    • PR #2547: useEmitTypingIndicator, usePeformCardAction, usePostActivity, useSendEvent, useSendFiles, useSendMessage, useSendMessageBack, useSendPostBack
    • PR #2548: useDisabled
    • PR #2549: useSuggestedActions
    • PR #2550: useConnectivityStatus, useGroupTimestamp, useTimeoutForSend, useUserID, useUsername
    • PR #2551: useLastTypingAt, useSendTypingIndicator, useTypingIndicator
    • PR #2552: useFocusSendBox, useScrollToEnd, useSendBoxValue, useSubmitSendBox, useTextBoxSubmit, useTextBoxValue
    • PR #2553: useDictateInterims, useDictateState, useGrammars, useMarkActivityAsSpoken, useMicrophoneButton, useShouldSpeakIncomingActivity, useStartDictate, useStopDictate, useVoiceSelector, useWebSpeechPonyfill
    • PR #2554: useRenderActivity, useRenderAttachment
    • PR #2644: Added internal/useWebChatUIContext for cleaner code
    • PR #2652: Update samples to use hooks
  • Bring your own Adaptive Cards package by specifying adaptiveCardsPackage prop, by @compulim in PR #2543
  • Fixes #2597. Modify watch script to start and add tableflip script for throwing node_modules, by @corinagum in PR #2598
  • Adds Arabic Language Support, by @midineo, in PR #2593
  • Adds AdaptiveCardsComposer and AdaptiveCardsContext for composability for Adaptive Cards, by @compulim, in PR #2648
  • Adds Direct Line Speech support, by @compulim in PR #2621
  • Fixes #2692. Rename sample 17 to 17.a, by @corinagum in PR #2695

Fixed

  • Fixes #2565. Fixed Adaptive Card host config should generate from style options with default options merged, by @compulim in PR #2566
  • Resolves #2337. Remove Cognitive Services Preview warning, by @corinagum in PR #2578
  • Fixes #2559. De-bump remark and strip-markdown, by @corinagum in PR #2576
  • Fixes #2512. Adds check to ensure Adaptive Card's content is an Object, by @tdurnford in PR #2590
  • Fixes #1780, #2277, and #2285. Make Suggested Actions accessible, Fix Markdown card in carousel being read multiple times, and label widgets of Connectivity Status and Suggested Actions containers, by @corinagum in PR #2613
  • Fixes #2608. Focus will return to sendbox after clicking New Messages or a Suggested Actions button, by @corinagum in PR #2628
  • Resolves #2597. Modify watch script to start and add tableflip script for throwing node_modules, by @corinagum in PR #2598
  • Resolves #1835. Adds suggestedActionLayout to defaultStyleOptions, by @spyip, in PR #2596
  • Resolves #2331. Updated timer to use React Hooks, by @spyip in PR #2546
  • Resolves #2620. Adds Chinese localization files, by @spyip in PR #2631
  • Fixes #2639. Fix passed in prop time from string to boolean, by @corinagum in PR #2640
  • component: Updated timer to use functional component, by @spyip in PR #2546
  • Fixes #2651. Add ends-with string module to ES5 bundle, by @corinagum in PR #2654
  • Fixes #2658. Fix rendering of markdown images in IE11, by @corinagum in PR #2659
  • Fixes #2662 and #2666. Fix various issues related to Direct Line Speech, by @compulim in PR #2671
    • Added triple-buffering to reduce pops/cracks.
    • Enable Safari by upsampling to 48000 Hz.
    • Support detailed output format on Web Chat side.
  • Fixes #2700. Enable <SayComposer> and Adaptive Cards in recompose story, in PR #2649
    • Moved <SayComposer> from <BasicTranscript> to <Composer>
    • Moved WebSpeechPonyfill patching code from <BasicTranscript> to <Composer>
  • Fixes #2699. Disable speech recognition and synthesis when using Direct Line Speech under IE11, by @compulim, in PR #2649
  • Fixes #2709. Reduce wasted render of activities by memoizing partial result of <BasicTranscript>, by @compulim in PR #2710
  • Fixes #2710. Suggested actions container should persist for AT, by @corinagum in PR #2710
  • Fixes #2718. Add Object.is polyfill for IE11, by @compulim in PR #2719
  • Fixes #2723. Fix renderMarkdown should not be called if it is undefined in minimal bundle, by @compulim in PR #2724
  • Fixes #2655. "Taking longer than usual to connect" should not show up after reconnect succeeded, by @curiousite and @compulim in PR #2656
  • Fixes #2942. Fix typing indicator should not show up for the user, by @compulim in PR #2950

Changed

Samples

[4.6.0] - 2019-10-31

Breaking changes

  • We will no longer include react and react-dom in our NPM package, instead, we will requires peer dependencies of react@^16.8.6 and react-dom@^16.8.6

Changed

Fixed

  • Fixes #2328. Updating submitSendBoxSaga.js to send sendBoxValue.trim(), by @jimmyjames177414 in PR #2331
  • Fixes #2160. Clear suggested actions after clicking on a suggested actions of type openUrl, by @tdurnford in PR #2190
  • Fixes #1954. Estimate clock skew and adjust timestamp for outgoing activity, by @compulim in PR #2208
  • Fixes #2240. Fix microphone button should be re-enabled after error, by @compulim in PR #2241
  • Fixes #2250. Fix React warnings related prop types, by @compulim in PR #2253
  • Fixes #2245. Fix speech synthesis not working on Safari by priming the engine on the first microphone button click, by @compulim in PR #2246
  • Fixes #1514. Added reference grammar ID when using Cognitive Services Speech Services, by @compulim in PR #2246
  • Fixes #1515. Added dynamic phrases when using Cognitive Services Speech Services, by @compulim in PR #2246
  • Fixes #2273. Add ScreenReaderText component, by @corinagum in PR #2278
  • Fixes #2231. Fallback to English (US) if date time formatting failed, by @compulim in PR #2286
  • Fixes #2298. Speech synthesize errors to be ignored, by @compulim in PR #2300
  • Fixes #2243. Fixed sagas to correctly mark activities with speaking attachments, by @tdurnford in PR #2320
  • Fixes #2365. Fix Adaptive Card pushButton appearance on Chrome, by @corinagum in PR #2382
  • Fixes #2379. Speech synthesis can be configured off by passing null, by @compulim in PR #2408
  • Fixes #2418. Connectivity status should not waste-render every 400 ms, by @compulim in PR #2419
  • Fixes #2415 and #2416. Fix receipt card rendering, by @compulim in PR #2417
  • Fixes #2415 and #2416. Fix Adaptive Cards cannot be disabled on-the-fly, by @compulim in PR #2417
  • Fixes #2360. Timestamp should update on language change, by @compulim in PR #2414
  • Fixes #2428. Should interrupt speech synthesis after microphone button is clicked, by @compulim in PR #2429
  • Fixes #2435. Fix microphone button getting stuck on voice-triggered expecting input hint without a speech synthesis engine, by @compulim in PR #2445
  • Fixes #2472. Update samples to use repo's version of React, by @corinagum in PR #2478
  • Fixes #2473. Fix samples 13 using wrong region for Speech Services credentials, by @compulim in PR #2482
  • Fixes #2420. Fix saga error should not result in an unhandled exception, by @compulim in PR #2421
  • Fixes #2513. Fix core-js not loading properly, by @compulim in PR #2514
  • Fixes #2516. Disable microphone input for expecting input hint on Safari, by @compulim in PR #2517 and PR #2520
  • Fixes #2518. Synthesis of bot activities with input hint expecting, should be interruptible, by @compulim in PR #2520
  • Fixes #2519. On Safari, microphone should turn on after synthesis of bot activities with input hint expecting, by @compulim in PR #2520
  • Fixes #2521. webchat-es5.js should not contains non-ES5 code and must be loadable by IE11, by @compulim in PR #2522
  • Fixes #2524. Version was not burnt into source code correctly, by @compulim in PR #2525

Added

  • Resolves #2157, added emitTypingIndicator action and dispatcher, by @compulim, in PR #2413
  • Resolves #2307. Added options to hide ScrollToEnd button, by @nt-7 in PR #2332
  • Added bubble nub and style options, by @compulim, in PR #2137 and PR #2487
  • Resolves #1808. Added documentation on activity types, by @corinagum in PR #2228
  • Added timestampFormat option to the default style options and created AbsoluteTime component, by @tdurnford, in PR #2295
  • embed: Added ES5 polyfills and dev server, by @compulim, in PR #2315
  • Resolves #2380. Added botAvatarBackgroundColor and userAvatarBackgroundColor to the default style options, by @tdurnford in PR #2384
  • Added full screen capability to IFRAME in the YouTubeContent and VimeoContent components by @tdurnford in PR #2399
  • Resolves #2461, added isomorphic-react and isomorphic-react-dom packages, by @compulim and @corinagum, in PR #2478 and PR #2486
  • Added missing Norwegian (nb-NO) translations, by @taarskog
  • Added missing Italian (it-IT) translations, by @AntoT84
  • Resolve #2481. Support alternative audio input source by adding audioConfig prop to createCognitiveServicesSpeechServicesPonyfillFactory, by @corinagum, in PR #2491
  • Added missing Finnish (fi-FI) translations, by @sk91swd, in PR #2501

Samples

[4.5.3] - 2019-10-10

Changed

  • bundle: Bumped DirectLineJS to support metadata when uploading attachments, in PR #2433
    • [email protected]
    • Removed DirectLineJS as a dev dependency for component because it was not referenced

Fixed

Added

[4.5.2] - 2019-08-07

[4.5.1] - 2019-08-01

Fixed

[4.5.0] - 2019-07-10

Added

Changed

Fixed

Samples

[4.4.1] - 2019-05-02

Added

Changed

Fixed

[4.3.0] - 2019-03-04

Added

  • Resolves #1383. Added options to hide upload button, by @compulim in PR #1491
  • Adds support of avatar image, thru styleOptions.botAvatarImage and styleOptions.userAvatarImage, in PR #1486
  • Adds ability to style sendbox background and text color, thru styleOptions.sendBoxBackground and styleOptions.sendBoxTextColor, in PR #1575
  • core: Adds sendEvent, in PR #1286
  • core: Adds CONNECT_FULFILLING action to workaround redux-saga design decision, in PR #1286
  • component: Added missing Spanish (es-ES) by @schgressive in PR #1615
  • Adds missing Spanish (es-ES) by @schgressive in PR #1615
  • Resolves #1602. Fix suggested actions regression of buttons, by @corinagum in PR #1616
  • component: Allow font family and adaptive cards text color to be set via styleOptions, by @a-b-r-o-w-n, in PR #1670
  • component: Add fallback logic to browser which do not support window.Intl, by @compulim, in PR #1696
  • *: Adds username back to activity, fixed #1321, by @compulim, in PR #1682
  • component: Allow root component height and width customization via styleOptions.rootHeight and styleOptions.rootWidth, by @tonyanziano, in PR #1702
  • component: Added cardActionMiddleware to customize the behavior of card action, by @compulim, in PR #1704
  • bundle: Add watermark and streamUrl parameters to createDirectLine, by @corinagum, in PR #1817
  • component: Added textarea option to SendBox per issues #17 and #124, by @tdurnford, in PR #1889
  • component: Added suggestedAction images per issue #1739, by @tdurnford, in PR #1909

Changed

Fixed

  • Fixes #1360. Added roles to components of Web Chat, by @corinagum in PR #1462
  • Fixes #1409. Added microphone status as screen reader only text, by @corinagum in PR #1490
  • Fixes #1605, #1316, #1341, #1411. Fix color contrast ratios & downloadIcon narrator accessibility by @corinagum in PR #1494
  • Fixes #1264, #1308, #1318, #1334,#1425. Update icons with accessibilty, Sent message accessibility, and fix sample README.md, @corinagum in PR #1506 and #1542
  • Fixes #1512. Fix #1512: fix sanitization of anchors (allow title attributes), by @corinagum in PR #1530
  • Fixes #1499.
    • Fix screen reader handling of name, activity, and timestamp,
    • connectCarouselFilmStrip: Fixed botAvatarInitials and userAvatarInitials functionality from recent name change,
    • BasicTranscript: Fixed user activity should not be recreated after receive ACK from Direct Line,
    • by @corinagum in PR #1528
  • component: Fix #1560, #1625 and #1635. Fixed carousel layout not showing date and alignment issues, by @compulim in PR #1561 and #1641
  • playground: Fixes #1562. Fixed timestamp grouping "Don't group" and added "Don't show timestamp", by @compulim in PR #1563
  • component: Fixes #1576. Rich card without tap should be rendered properly, by @compulim in PR #1577
  • core: Some sagas missed handling successive actions, in PR #1286
  • core: incomingActivitySaga may throw null-ref exception if the first activity is from user, in PR #1286
  • component: Fixes #1328. Should not start microphone if input hint is set to ignoringInput, in PR #1286
  • component: Fixes outgoing typing indicators are not sent and acknowledged properly, in PR #1286
  • Fixes #1402. Add messageBack support, by @corinagum in PR #1581
  • Fixes #1539. Fix outgoing typing indicators are not sent and acknowledged properly, in PR #1541
  • component: Fix #1547. Fixed unhandled activity type should be forwarded to custom middleware, by @compulim in PR #1569
  • playground: Fix #1610. Fixed bot and user avatar initials not working, by @compulim in PR #1611
  • bundle: Fix #1613. Pass conversationId to DirectLineJS constructor, by @neetu-das in PR #1614
  • component: Fix #1626. Fixed Number.isNaN is not available in IE11, by @compulim in PR #1628
  • bundle: Fix #1652. Pass pollingInterval to DirectLineJS constructor, by @neetu-das in PR #1655
  • core: Reworked logic on connect/disconnect for reliability on handling corner cases, by @compulim in PR #1649
  • core: Fix #1521. Add connectivity status component and update localization, by @corinagum in PR #1679
  • core: Fix #1057. Fixed suggested actions destined for other recipients should not show up, by @compulim in PR #1706
  • component: Fixed pt-br locale not being selected, added X minutes ago and missing translations, by @pedropacheco92 in PR #1745
  • component: Fix #1741 where scrollToEndButton does not have type="button"by @corinagum in PR #1743
  • component: Fix #1625 to update README.md by @corinagum in PR #1752

Removed

  • botAvatarImage and userAvatarImage props, as they are moved inside styleOptions, in PR #1486
  • sendTyping props is now renamed to sendTypingIndicator, by @compulim, in PR #1584

Samples

[4.2.0] - 2018-12-11

Added

  • Build: Development build now include instrumentation code, updated build scripts
    • npm run build will build for development with instrumentation code
    • npm run prepublishOnly will build for production
    • npm run watch will also run Webpack in watch loop
  • Build: Automated testing using visual regression testing technique in #1323
  • Added French localization, by @tao1 in PR #1327
  • Resolve #1344, by updating README.md and adding validation logic for userID props, in #1447
    • If userID props present and also embedded in Direct Line token, will use the one from Direct Line token
    • If userID props present, they must be string and not prefixed with dl_, to avoid confusion between userID props and Direct Line embedded user ID (which is forgery-proof)
    • If userID props does not pass the validation test or not specified, Web Chat will use default-user instead
  • Added support for Cognitive Services Speech to Text and Text to Speech in PR #1442

Changed

Fixed

  • Fixes #1397. Patched activities without from field, in PR #1405
  • Fixes #1237. Added new sample called migration, by @corinagum in PR #1398
  • Fixes #1332. Updated sample names and add table to README, by @corinagum in PR #1435
  • Fixes #1125. Added error handling for Adaptive Card JSON render, by @corinagum in PR #1395
  • Build: Webpack watch mode now emits non-minified code for shorter dev RTT, in #1331

Samples

[4.1.0] - 2018-10-31

Added

  • Initial release of Web Chat v4