Seamly Web UI Changelog

[Unreleased]

  • None

12.4.0 (27 November 2020)

Changes

  • Send timezone information to server if it can be determined (only works in modern browsers)
  • Export new ViewWithFaq to use in implementations that use the bundled javascript.
  • Add support for file uploads without a deleteAt.

12.3.0 (19 November 2020)

Changes

  • Add support for file upload messages from agents.
  • Add support for securely downloading uploaded files.
  • Clearly mark expired file upload links as such.

12.2.0 (17 November 2020)

Changes

  • Add new api.externalId configuration option to persist conversations when messaging is enabled.
  • Add new ResumeConversationPrompt to ask users to continue or restart a conversation after returning to if after a while (when using messaging).

Bug fixes

  • Always remove loader when initial events arrive from the server.
  • To avoid multiple instances sending events via the same event bus instance a unique event bus is now used for each chat instance.
  • Don't break on missing activeServiceSettings from a history call.

12.1.0 (9 November 2020)

Changes

  • The character limit is visible 50 characters before the limit will be reached instead of the previous 25 characters.
  • History synchronisation with the server is now only performed when it results in new history.
  • The Privacy Disclaimer is now shown at the top of the chat window and scrolls away.
  • The Style Guide now accepts custom i18n files.
  • Add appStorageProvider with support for iOS, Android and React Native. This makes integration with those platform work out of the box (if implemented correctly on the app side).

Bug fixes

  • In the Spanish language file, the srStopCobrowsingText language key has been repaired.
  • All event sorting is now based on the occurredAt timestamp on events. This ensures proper merging of history and current event streams in all cases.
  • Client side message again have the ID set properly from the server ACKs.
  • Incorrect height value for screen resolution in the browser environment context has been fixed.
  • Add missing documentation for storage providers.

Breaking changes

  • Hook useSeamlyDisclaimerDelayedClose no longer exists. Implementations with a custom Entry component should remove this.

12.0.0 (25 September 2020)

Breaking changes

  • Hook useSeamlyContainerClassNames has been renamed to useSeamlyMessageContainerClassNames.
  • Chat bubbles are no longer full width. Most client implementations do not use this full width, so needed escaping every time. For clients who do have full width bubbles this needs checking.
  • The api.defaults configuration option has been moved to context on the main configuration level. Within this configuration object any usages of meta or settingsProfile should be removed if still present in implementations as these are dead options.
  • The customViewComponent configuration option has been moved to customComponents.view
  • Allow setting of custom implementation specific view components in the config. The ComponentProvider component no longer exists. Custom components should now be passed via the customComponents key in the init configuration. To upgrad:
    • Remove the wrapping <ComponentProvider>
    • Pass the custom view components to config (see "Configuration" documentation and "Custom message components" documentation)
  • Various layoutModes with the same namespace no longer share a visibility setting in the storage, but have been separated. Therefore it can no longer be assumed that a windowed variant will open just because an inline variant had been active.
  • The visible config setting has been moved to the defaults object in the configuration. The function has remained unchanged. To upgrade, move this setting in the configuration.
  • File upload settings are now read from entry.options.upload configuration in service change events instead of uploads.
  • Split useText component hooks in to useTextRendering and useEventLinkClickHandler. Any custom text message components should now use these hooks instead of the useText hook.

Changes

  • Add two on events to the window API for the idle detach warning: 'idleTimer.selectContinue is sent when the user clicks on the Continue coversation button and idleTimer.selectEnd is sent when the user clicks on the End conversation button.
  • Do not show disabled option checkboxes.
  • Improve icon accessibility.
  • Add style guide to public site. The style guide contains a list of most common states for the UI. The style guide application can also be used in implementation to speed up styling.
  • Add support for custom message type. Custom messages allow you to pass arbitrary data from a back-end service to the UI. You can create custom rendering components to render these custom messages. Custom message components can be passed to the Seamly engine via the customComponents.message.custom configuration key.
  • The visibility mutations of the UI can now be overridden and managed with a custom visibilityCallback function set as value of the config property with the same name.
  • Add support for character limit on text input.
  • Add Call to Action (CTA) message type.

Bug fixes

  • The participant displayed information is now cleared after an interrupt restart.
  • Fix duplicate rendering of accessiblity text in image messages.
  • Fix modification of the body data of messages when rendering them as rich text.
  • Fix issue with socket reconnects that would result in messages appearing at the start of the chat

11.1.0 (30 July 2020)

Bug fixes

  • Fix history fetching when file uploads are disabled

Changes

  • Clear waiting actions when destroying an instance

11.0.0 (29 July 2020)

Bug fixes

  • Focus outline will now always show, also in browsers with :focus-visible activated.
  • Focus input when user clicked the restart button in the error interrupt.
  • Hide cobrowsing bar, options and options toggle button when the UI is minimized

Breaking changes

  • Implementations with custom Entry, ChatFrame or EntryContainer components should re-align the implementations of these components to that inside Seamly UI in order to support File uploads and function with the adjusted Multi Forms Data Engine inside Seamly UI.
  • Classname for the icon in the lightbox/modal has been changed. From cvco-model__icon to cvco-icon to be consistent with all other icons.
  • All icons are now outlined, so any implementations that use stroke in the css (for instance to change color or width) should be fixed to use fill instead. Implementations that target specific parts of any svg will need tweaking, because all icons are now compound shapes (as few different paths as possible).

Changes

  • The Forms Data Engine inside Seamly UI now supports multiple forms as well as the persistence of forms data.
  • The Forms Engine now supports validation.
  • File uploads are now supported in Seamly UI if the account configuration and service supports it.
  • An aria-live window API event has been added for testing the main ARIA Live region in Seamly UI. Any texts added to this live region will be broadcast via this event.

10.0.1 (7 July 2020)

Bug fixes

  • Export useEntry again (as useInput used to be exported).

10.0.0 (3 July 2020)

Changes

  • When the idle detach warning countdown starts the idleTimer.start window API event gets called and when the timer stops, the idleTimer.stop event.
  • Add sendCustomAction action to the window API.
  • Add generic Form engine for easier form handling and future extensibility for validation.
  • Introduce options window. It will only show when the connected account actually has options.
  • Introduce option for screensharing. This will also activate the screensharing warning when enabled.

Breaking changes

  • The idle detach warning now displays the countdown as minutes and seconds. This will need styling changes in the implementation on upgrade.
  • Input component has been replaced with a more generic Entry component. This is a drop-in replacement.
  • Rename package to @seamly/web-ui. Updage your package.json files accordingly. Versioning will continue.

9.3.0 (23 June 2020)

Changes

  • FAQ click also sets userResponded to true

9.2.0 (16 June 2020)

Changes

  • Add the appContainerClassName configuration option to set custom class names on the container element.
  • Add new ui.inputFocus event callback that is triggered whenever the input field gets focus.
  • Emit faq question with faqclick custom action on click to aid implementations who need the faq question.
  • The external API now support fetching the current visibility state with the getVisibility action.

9.1.0 (5 June 2020)

Changes

  • Removed custom focus styles on disclaimer close, modal enlarge, modal close, input etc. These get in the way when doing custom styling for clients. Remove any CSS that escapes this now removed styling.
  • Expired chats no longer show an interrupt screen but automatically restarts. The sessionExpired error key can be removed from all custom language files.

Breaking changes

  • Chat now starts at the bottom of the window container. This severely improves visibility of initial chat messages in smaller views. This adds an extra container div. Test if scrolling/window visibility is still ok after updating.

9.0.0 (19 May 2020)

Changes

  • Depending on server configuration, send user typed text to the Seamly server periodically.
  • Prefetch api configuration prior to chat start.
  • Prefetch initial chat state prior to chat start.
  • Initialise unit testing of Seamly.
  • Upgraded Preact to 10.4.1. Please align all custom implementations to this version.
  • Add the hideOnNoUserResponse configuration option to allow chats to only render if the user has previously replied via a chat interface using the same namespace.
  • Add init and destroy functionality to the external api to allow users to destroy or re-initialise the Seamly chat window.
  • Remove the deprecated object API, you can only use the window.seamly API from now on.
  • No longer automatically initialise an instance. You need to call the init action explicitly to render/start an instance.
  • Sanitize user input from any executable HTML.

Breaking changes

  • Migrate the UI to version 2 of the Seamly API.
  • The exported Seamly function no longer returns an API
  • You need to explicitly init an instance to start it
  • The adjacent sibling combinator (+) has been removed in favour of the cvco-conversation__item--new-participant class on messages. Many implementations have either classes that override this default styling, or are using the adjacent sibling combinator themselves. This will need checking and potentially fixes on update.

8.1.0 (24 April 2020)

Changes

  • FAQ events will now be persisted over application reloads and only be cleared when intended by the Seamly server.

8.0.1 (6 April 2020)

Bug fixes

  • Repair text input labelling.

8.0.0 (6 April 2020)

Changes

  • The default FAQ component has been adjusted to handle more implementation requirements. Refer to faq.md for the latest API.
  • An Idle Detach Warning will be shown if the user is connected to a live agent, inactive for a set amount of time and the server configuration allows for this.

Breaking changes

  • The form element component used inside the view should now be wrapped inside a new <EntryContainer> component. All custom implementation should upgrade the custom view with this component:
<EntryContainer>
    <Input />
</EntryContainer>
  • Custom implementations using a custom <ToggleButton> component should align to the new version of the code.
  • Custom implementations using a custom <Input> component should also align to the new version of the code.
  • Any usages of the hook useSkiplinkInputId should be refactored to useSkiplink.
  • Any usages of the hook useInputFocusing should be refactored to useSkiplinkTargetFocusing.

7.1.0 (26 March 2020)

Bug fixes

  • FAQ's selections will now show in history as the original event ID is now passed to the FAQ click action.
  • Image and video elements will now also show the event participant, when appropriate.

Changes

  • The current active participant will show as event participant on the chat loader bubble, when appropriate.

7.0.0 (12 March 2020)

Bug fixes

  • Avoid empty introductions from overwriting existing avatar intros.
  • Update avatar in button/header to show initial state / active agent avatar.

Changes

  • Display info messages in the chat windo when they are sent via the websocket.
  • Upgrade Preact to v10.3.3. It is recommended to upgrade custom implementations to this version of Preact as well.
  • The configuration object has been expanded with a new defaults object:
  defaults: {
    startChatIcon: imageUrl,
    agentName: 'Seamly Bot',
    agentIcon: imageUrl1,
    userName: 'You',
  },
  • The standard display name and avatar of the user participant will now be source from the seamly-client-participant participant message from the server.
  • A default chat start icon can be set using the startChatIcon setting found in the new defaults object in the configuration object.
  • A default agent icon can be set using the agentIcon setting found in the new defaults object in the configuration object.

Breaking Changes

  • Any custom implementations using component overrides should migrate to the ComponentProvider component instead. Passing custom components to the Conversation component is no longer supported and will be ignored.
  • The container classes are no longer exposed as containerClassNames by the internal component hooks. Any view components relying on this should import the new useSeamlyContainerClassNames hook to resolve the same classes.
  • The choose again divider will no longer render in history if used with a version of the server API that does not support info messages.
  • Add privacy disclaimers will now auto close after 5000 milliseconds, unless the disclaimerTimeout is set in the config.
  • Remove toggleButton.openChat and add toggleButton.resumeTitle in all custom language files.
  • The defaultName settings for both user as well as agent no longer exists. Instead use the userName setting for the user and the agentName setting for the agent. Both are contained in a new main defaults object in the config.
  • Any implementations relying on an agent defaultName of Bot coming from the Seamly client itself, needs to implement this with the userName setting.
  • Any implementations relying on a user defaultName of You coming from the Seamly client itself, needs to implement this with the userName setting.

6.2.0 (3 March 2020)

Changes

  • Upgrade Preact to v10.3.2. It is recommended to upgrade custom implementations to this version of Preact as well.

Bug fixes

  • Avoid empty introductions from overwriting existing avatar intros.
  • Fixed race condition that sometimes caused a double connect of the chat client.

6.1.0 (17 February 2020)

Changes

  • Allow links to open in new tabs via server configuration.

Other

  • Fix image opening in lightbox after previous server change.

6.0.0 (17 February 2020)

Bug fixes

  • Choice Prompts with prompts other than type="text" now displays properly.

Changes

  • Custom Text, Video and Image components now implement a descriptorId prop as id to decorate description containers.

Breaking Changes

  • Custom ChoicePrompt components should now allow for custom prompt component injection via the children prop.
  • Custom Text components should no longer use a textBodyId prop to decorate the text container via id but instead implement a descriptorId prop.

5.1.1 (12 February 2020)

Bug fixes

  • Fix misalignment of balloon agent icon.

5.1.0 (7 February 2020)

Changes

  • Expose new action events for action.pick_choice, action.navigate and action.custom.

5.0.2 (31 January 2020)

Bug fixes

  • Properly build and release Dutch I18N text for Choose Again.

5.0.1 (31 January 2020)

Changes

  • Adjust default Dutch I18N text for Choose Again.

5.0.0 (29 January 2020)

New features

  • Enable choose again of choice prompt values.

Bug fixes

  • Repair semantics of the Choice Prompt list.

Breaking Changes

  • When services are setup to allow Choose Again of Choice Prompts, a choose again button will now be shown in the chat interface. New topic dividers will also be shown after choosing again. Styling should be adjusted to allow for this in implementations.
  • Choice Prompts will be rendered as a <ul> instead of <div>. Styling should be adjusted in implementations.
  • To align divider views the class postfix divider__icon in the Participant component has been adjusted to divider__graphic. Styling should be adjusted in implementations.