Seamly Web UI Changelog
24.0.0 (23 September 2024)
Bugfixes
- Fix an issue where the interface would not give feedback when the connection to the server was lost.
- Fix an issue where translations could be disabled after returning from hibernation.
Breaking changes
- Connection to the back-end has been upgraded from the deprecated
Web API
to the latest version of theChannel API
.
Changes
- Added specification for the
state
property ofSeamlyStaticCore
. - Added a new version of the
setVisibility
window API call which supports an additionalsetInputFocus
argument. - Multiple open instances are now synchronised to maintain consistent conversation state.
- Added an optional
message
property to thesetTopic
window API call to fix timing issues arising when usingsetTopic
combined withaskText
. - Dismiss the
ResumeConversationPrompt
when new messages are received, as this indicates that the conversation is still ongoing.
23.0.6 (11 July 2024)
Bugfixes
- Fix an issue where multiple
init
-calls for the same namespace would render multiple instances. - Fix an issue where the websocket connection would sometimes use an incorrect URL.
23.0.5 (17 June 2024)
Bugfixes
- Fix an issue where the originating action of activated translations was no longer set.
Changes
- Update automatic translation documentation to include a
source
property when changing theuserLocale
through a bot service. - Export the
TextEntry
andUpload
components for use by client implementations.
23.0.4 (22 April 2024)
Bugfixes
- Fix incorrect import of
View
component in style guide (which could cause errors in client implementations).
23.0.3 (9 April 2024)
Bugfixes
- Fix an issue where
SeamlyStaticCore
would encounter an error when used with a customView
. - Fix an issue where translated participant data would not be shown.
Changes
- Renamed new topic divider class
cvco-divider--type-newtopic
tocvco-divider--type-new-topic
. This should also be changed in client implementations.
23.0.2 (2 April 2024)
Bugfixes
- Fix an issue where the style guide would encounter an error due to incorrect imports.
23.0.1 (21 March 2024)
Bugfixes
- Fix an issue where translated data would sometimes be empty.
23.0.0 (18 March 2024)
Changes
-
Dividers now share the same HTML structure.
-
Added input label with upload button to 'other features' in the styleguide.
-
Added ordered list to user messages and the full conversation demo's in the styleguide.
-
The
context.locale
has been changed tocontext.contentLocale
. This is the language the bot or agent uses. -
A new
context.userLocale
has been added and is the locale the user wants to use. Automatic translation of the conversation is activated when it differs from thecontext.contentLocale
. -
The
setTranslation
Window API call is considered deprecated, but is backwards compatible. Translations should now be set viasetContext
.// Set translation Web UI version <= v22 window.seamly.push({ action: 'setTranslation', args: { enabled: true, locale: 'nl-NL' }, instance: 'targetInstance', }) // Replaced by: window.seamly.push({ action: 'setContext', args: { userLocale: 'nl-NL', contentLocale: 'en-GB' // Optional } })
-
Pre-chat messages (PCM) and continue-chat messages (CCM) now share the same HTML structure.
- Renamed PCM class
.cvco-pre-chat-messages
to.cvco-collapsed-chat-messages
. This should also be changed in client implementations.
- Renamed PCM class
-
The
preact
peerDependency has been upgraded to version10.19.6
. This should also be used in client implementations. -
Updated @seamly/eslint-config to
3.1.0
. -
Updated @seamly/prettier-config to
3.1.0
. -
Updated @seamly/stylelint-config to
3.1.1
. -
Updated @seamly/doc-site to
3.0.3
.
22.3.6 (6 February 2024)
Bugfixes
- Fix an issue where restarting the chat after the session was expired would prevent users from submitting messages.
22.3.5 (22 December 2023)
Bugfixes
- Fix an issue where reconnecting to the websocket could generate multiple open instances, leading to duplicate open channels.
22.3.4 (15 December 2023)
Bugfixes
- Fix an issue in Safari where the
Notifications API
was inaccessible, causing unexpected behaviour in the chat.
22.3.3 (8 December 2023)
Changes
- Increased the WebSocket reconnect interval to prevent unnecessary reconnections triggered by network transitions (e.g., WiFi to cellular) or short offline periods.
22.3.2 (3 November 2023)
Bugfixes
- Fix an issue where the the websocket would not disconnect after a
destroy
event was emitted. - Fix an issue where restarting the chat after an error occurred would not start a new session.
22.3.1 (22 September 2023)
Bugfixes
- Fix an issue where the loading indicator would not disappear after returning from hibernation.
22.3.0 (14 August 2023)
Changes
- The amount of automatic chat restarts (which can occur after an error) has been reduced.
- Add support for card messages without an image.
- Change cards to
flex-direction: column;
.
Bugfixes
- Fix an issue where the original language was not set in the styleguide.
- Fix an issue where author elements were being rendered as empty elements.
- Fix an issue where the unread messages count badge was being rendered as an empty element.
- Fix an issue where the
events
array would always be empty on async
, which resulted in fetching the history unnecessarily. - Fix an issue where some icons did not have an alt attribute.
- Fix an issue where starting a new chat session was not possible after connection with the server was lost.
22.2.0 (19 July 2023)
Changes
- Renamed input label class
.cvco-input__label
to.cvco-label
. - Only send locale to the server if it's explicitly configured.
- Improved language selection by duplicating the selected language and placing it within the visible range if it was previously out of view in the list.
Bugfixes
- Fix an issue where the default
locale
from the server would not be set correctly.
22.1.0 (4 July 2023)
Changes
- Removed
DeprecatedView
from the web-ui. - The
preact
peerDependency has been upgraded to version10.15.1
. This should also be used in client implementations. - Added translation support to the abort transaction button.
Bugfixes
- Fix an issue where notifications would not have a title or be sent multiple times.
22.0.1 (22 May 2023)
Bugfixes
- Fix an issue where the loading indicator would disappear while waiting for a live agent.
- Fix an issue where incoming messages would not be rendered after reconnecting to the websocket.
- Fix an issue where optimistically injected messages would not be removed after history was fetched.
22.0.0 (5 May 2023)
Changes
- Added support for aborting transactional dialogs.
- Allow setting of custom label and placeholder text.
- Add support for authenticated conversations.
- The
preact
peerDependency has been upgraded to version10.13.2
. This should also be used in client implementations. - Removed
superagent
dependency from the web-ui to reduce bundle size. - Continue chat and pre-chat messages can be configured to be shown, hidden or have a delayed fade in and fade out.
- Added
:focus-visible
styling to alla
,button
, andinput
that removes focus outlines unless:focus-visible
is used. - Clean up unused styling
- Switching margin in favor of
gap
in flex containers. This requires some working of things that have margins set currently. - Added preview support for images uploaded by the user.
- Notifications are now sent whenever the browser tab is inactive and new messages have arrived. If the user has not given permission to receive notifications, an audio file will be played instead.
- Added TypeScript support to the external api.
Bugfixes
- Fix broken icon hover state on modal enlarge button.
21.0.9 (4 May 2023)
Bugfixes
- Fix an issue where recovering from an error would:
- Fetch the config multiple times.
- Not reset the initial state properly.
- Fix an issue where Firefox would allow submitting a text longer than the maximum allowed.
21.0.8 (7 March 2023)
Bugfixes
- Fix an issue where errors would incorrectly be thrown as a GeneralError because of minification
21.0.7 (2 March 2023)
Bugfixes
- Fix build size
21.0.6 (1 March 2023)
Bugfixes
- Fix an issue where the minimized window variant would not automatically reset the app after the session was expired.
21.0.5 (8 February 2023)
Bugfixes
- Fix an issue where the options menu button would not toggle the open / closed state.
- Fix an issue where the events being sent over the websocket would be in reverse order.
- Fix an issue where events would be received before the web-ui was entirely ready.
21.0.4 (12 January 2023)
Bugfixes
- Add pre-built css back to the release.
21.0.3 (20 December 2022)
Bugfixes
- Fix an issue where context and start events would be sent multiple times on (re)connect.
21.0.2 (13 December 2022)
Bugfixes
- Fix an issue where the collapse button would not be visible when the interrupt screen was shown on the window chat interface.
- Fix an issue where messages would not be sent during chat initialization.
- Fix an issue where the
setTopic
window API call would be set in context while the chat was already initializing. - Fix an issue where imports in the style guide would mismatch in clients with custom components.
Changes
- Improved accessibility of the translations menu.
21.0.1 (28 November 2022)
Bugfixes
- Fix an issue where the unread messages button would be visible whenever the inline chat interface was minimized.
- Fix an issue where imports and exports done via different aliasses in the web-ui would result in a mismatch in clients.
Changes
- Changed structure of translation-option component to allow for easier styling.
- Changed translation-option input type from
checkbox
toradio
.
21.0.0 (24 November 2022)
Bugfixes
- Fix an issue where interactivity updates would be sent while the window chat interface was minimized.
- Fix an issue where providing an invalid domain would not show an interrupt screen.
Changes
- Improved consistency of errors thrown by the web-ui.
- Updated the
TypeScript
module system toES6
to reduce the bundle size. - The
preact
peerDependency has been upgraded to version10.11.2
. This should also be used in client implementations. - Updated @seamly/eslint-config to latest
- Updated @seamly/prettier-config to latest
- Added a new boolean property
userTriggered
to thesetTopic
window API call. This enables clients to start a conversation with a topic without always showing the suggestions. - Render NewTranslationDivider solely with texts received from the server.
- Query parameters (
apiKey=**
,locale=**
) used in demo pages are now persisted viasessionStorage
- Added the following url helpers to
@seamly/web-ui/utils
to be used in demo pages of client implementations:getSearchParamsByKeys
initResetSearchParams
replaceSearchParams
- Improve automatic scrolling behaviour. The chat will only scroll automatically if the user sends a new message or the user already was at the bottom of the conversation. If the user has scrolled up an indicator that new messages have arrived will appear.
- Removed
xstream
from the web-ui to reduce the total package size. This has no consequences for client implementations. - Translations can now be activated directly from the translations dialog instead of a drop-down selection.
- Added a new translation proposal prompt based on browser language when translations are available.
20.8.1 (4 November 2022)
Bugfixes
- Fix display of pre-chat messages in styleguide.
20.8.0 (11 October 2022)
Bugfixes
- Fix an issue where the chat container would not scroll to the end of a conversation whenever an idle timer message would appear.
- Fix an issue where having a large amount of cards in the carousel would push the navigation arrow out of sight.
- Fix an issue where the loading/typing indicator might be hidden too soon.
- Fix an issue where the message and divider as injected by a pick choice action would duplicate on a sync.
Changes
- Suggestions can now be deactivated by setting
showSuggestions
in the configuration tofalse
. - Moved translation toggles from individual messages to the translation divider where the translation started.
- The
preact
peerDependency has been upgraded to version10.10.6
. This should also be used in client implementations. - Stop password managers (like LastPass) from interfering with the text entry input field.
Breaking changes
-
Added TypeScript support. Clients that do not use TypeScript will not be affected.
-
Redux has been replaced with
redux-toolkit
(RTK). This may have an impact on client implementations. Becauseslices
in RTK automatically createaction
functions, it affects howdispatch
should be called.useSeamlyActions
(previously known asseamlyActions
) is exported for client implementations that includes variousaction
functions which automatically dispatch to the store and therefore removes the need ofuseDispatch
.
// v20.7.x import { useDispatch } from "@seamly/web-ui" const ExampleComponent = () => { const dispatch = useDispatch() // Somewhere in the component dispatch({ type: "CLEAR_IDLE_DETACH_TIMER_COUNTDOWN", }) dispatch({ type: "SET_IS_LOADING", isLoading: false, }) }
// v20.8.x import { useSeamlyActions } from "@seamly/web-ui" const ExampleComponent = () => { const { clearIdleDetachCountdown, setIsLoading } = useSeamlyActions() // Somewhere in the component clearIdleDetachCountdown() setIsLoading(false) }
20.7.0 (14 September 2022)
Bugfixes
- Fix an issue where destructuring the
type
of anentry
would result in an error when thepayload
wasundefined
.
Breaking changes
- The sendInfo() Seamly command has been removed.
Changes
- Added
.suggestions--aside
class to the suggestions in the inline interface to allow for easier styling.
20.6.0 (12 August 2022)
Bugfixes
- Fix an issue where the interface would not be translated when translation had started before the user had sent a message.
- Fix an issue where optimistically rendered user messages would re-render after being mutated with the response from the server.
20.5.0 (29 July 2022)
Changes
- When syncing, give incoming events in the history precedence over events in the local state to allow the server to push changes to events.
- Added links to user messages and the full conversation demo's in the styleguide.
- The
connect()
andstart()
methods are decoupled to avoid unnecessary chat sessions. Thestart()
method will only be called if thevisibility
state is 'open' or if using the inline view if it's 'open' or 'minimized'. - Markdown and Mustache rendering have been removed as this is now done server-side. Any implementation that uses
useTextRendering
should be rewritten to directly work on the rendered message body.
Bugfixes
- Fix an issue where reconnecting to the api would not happen when a page is loaded from back/forward cache.
- Fix an issue where the order of appearance was incorrect when there where multiple start events and the suggestions block was used.
- Fix an issue where
showDisclaimer
would be overwritten by the config in the styleguide. - Fix an issue where the FAQ would not immediately disappear after submitting an entry.
- Fix an issue where the input entry was not showing the correct character limit after an entry with
limit
was received. - Fix an issue where the inline interface would not reopen after returning from hibernation or after clearing the session storage. This changes the way
visibilityCallback
is called. If thevisibility
state is not present in the storage after returning to a chat session, it will be set once the conversation data is fetched. This results in an extra execution of thevisibilityCallback
.
20.4.0 (13 July 2022)
Changes
- Added minimized inline interface with limited characters to styleguide.
Bugfixes
- Fix an issue where the translation locale would be
undefined
after reopening a session from hibernation. - Fix an issue where virtual keyboards would close after submitting a message in the chat.
- Fix an issue where message count would accidentally show up briefly when collapsing the chat.
20.3.1 (11 July 2022)
Bugfixes
- Fix compatibility with existing custom view implementation by allowing passing of
children
to the<View />
component.
20.3.0 (22 June 2022)
Changes
- The
preact
peerDependency has been upgraded to version10.7.3
. This should also be used in client implementations. - Only load the inline chat interface when scrolled into view. This behaviour can be disabled by setting
connectWhenInView
inconfig.js
tofalse
. - Allow initial topic to be set through configuration or by calling the
setTopic
window API call before initialization. - When the
setVariables
window API call is called before initialization it will be merged with the variables set through configuration. - Added support for using locale native name in translation button label. This concerns the
translations.settings.openButtonText
label. For instance, change themessage
to:{hasLanguage, select, true {Language: {language}} other {Translation}}
Bugfixes
- Fix scrolling to the bottom of a chat window after an image has fully loaded.
- Fix support for sending in both an
apiKey
and anexternalId
as query parameter on the demo pages. - Fix ensuring conversation suggestions remain hidden in the window variant after user interaction.
- Fix classes to match BEM convention (modifier classes) in suggestions-item component.
- Fix missing translation locale and variables during initialization.
20.2.0 (10 May 2022)
Changes
- Allow setting the automatic translation of the conversation upon initialization.
Bugfixes
- Fix inline interface to be open by default if the user has responded.
- Fix agent name as subtitle of the header in the
DeprecatedView
. - Fix missing variables for the client name and client version.
- Fix incorrect class name
icon
toavatar
on agent and user avatar. - Fix default participant icon when switching to a service without an agent avatar.
20.1.0 (26 April 2022)
Changes
- The upload component has been rearranged to remove the redundant div container.
- Expose
SeamlyStaticCore
component from styleguide in package. - All components that need disabled states now use aria-disabled for consistency across the board.
- Added
message
to the Error object in theerrorCallback
when the error originates from the back-end. - Expose client name and client version to the server.
- Expose layoutMode to the server.
Bugfixes
- Fix scrolling to top of inline interface in style guide.
20.0.0 (4 April 2022)
The new interface
Version 20.0.0 contains a major upgrade of the look and feel. The most noticeable improvements are:
- The inline interface now starts in a collapsed state so it uses less screen real-estate on load and allows for a more call-to-action based interaction.
- The chat button for the window variant shows pre-chat messages which makes it possible to have different call-to-action triggers based on the users need/location.
- All UI variants have more screen real-estate for chat as the fixed header has been redesigned.
- FAQ/suggestion handling is now part of the chat-flow in the window and app variants making it a more natural interaction.
Important The old UI has been deprecated and will be removed in a future version. New implementations should not use the deprecated style.
Changes
- Add
.cvco-form
class to form component. - Add
.cvco-form--submitted
,.cvco-form--valid
,.cvco-form--invalid
modifier classes to form component. - Add
onError
handler to form component. - Add error classes when an error occurs in a form.
- Legacy feature cobrowsing has been removed.
- Emit warning on console if a translation label is missing.
- Add Splash message component
- Initializing a web-ui instance in the same parentElement will destroy the existing instance first
- Add
app
layoutmode - Move initialisation of UI in IOS webviews to the app side. This fixes a bug in newer IOS versions where the storage data would arrive too late.
- All demo pages on https://developers.seamly.ai/clients/web-ui now accept an
apiKey
parameter to connect to different accounts for demo purposes. - Add
context.channelName
to the Seamly initialization configuration options.
Breaking changes
-
Remove
modal
window variant -
Non-structural implementation specific styling is now in a separate stylesheet (
src/stylesheets/styles-default-implementation.scss
or pre-built:styles-default-implementation.css
). If you depend on styling for hover/scrollbars on these you need to load this stylesheet as well. -
The
inline
andwindow
UI has been completely revamped. The old UI can still be used by using the deprecated views. If you wish to retain the old UI when updating you need to:-
Add
<DeprecatedView />
as<CustomView />
to the client.import { DeprecatedView } from '@seamly/web-ui' const config = { customComponents: { view: DeprecatedView, } }
-
Add deprecated stylesheet and remove the default stylesheet:
@import '~@seamly/web-ui/src/stylesheets/deprecated-view';
-
To use the deprecated view in the styleguide, add
isDeprecated: true
to styleguide config:initStyleGuide({ ...defaultConfig, isDeprecated: true, })
-
-
To mark the conversation's connection as ready we used to watch for a message of type
join_conversation_succeeded
, but this has been changed to typeattach_channel_succeeded
. If you depend on messages of typejoin_conversation_succeeded
you should switch over to the new type. -
Replace
defaults.startChatIcon
,defaults.agentName
,defaults.agentIcon
in config, with server-side equivalents. -
Replace
defaults.userName
with a translation label, allowing per language labels.
19.1.6 (14 September 2022)
Bugfixes
- Fix an issue where destructuring the
type
of anentry
would result in an error when thepayload
wasundefined
.
19.1.5 (17 August 2022)
Bugfixes
- Fix an issue where the interface would not be translated when translation had started before the user had sent a message.
19.1.4 (16 February 2022)
Bug fixes
- Fix deep merging of
defaults
key in config when supplied by both implementation and ininit
. - Fix carousel sliding in Safari
- Fix the aria-label of a slide to use the correct index
- Fix display of automatic translations in carousel messages.
- Fix resetting of translation and other state after remote conversation crash.
19.1.3 (16 February 2022)
Changes
- Extended and improved data of
errorCallback
.
19.1.2 (26 January 2022)
Bug fixes
- Fix open/close state in styleguide for window layoutMode.
19.1.0 (11 January 2022)
Changes
- Added an option to monitor errors by passing
errorCallback
to the config.
Bug fixes
- Do not display user input as Markdown or Mustache to prevent potential XSS attacks.
- Add translation dividers to styleguide
- Add all error types to styleguide
- Show time-indicators in styleguide
19.0.0 (19 December 2021)
Breaking Changes
- Translation files will be loaded from the back-end and can be managed there. Translations will no longer be provided in this package.
setLocale
window API call has been removed. The locale can only be set at initialisation of a conversation.setTranslation
now also triggers a translation of the UI- The key for the store (sessionStorage, cookie, etc) will include the locale which is provided through the context. Any implementation using the storage directly will need to be adjusted accordingly. (Old format:
cvco.NAMESPACE.connection
, new format:cvco.NAMESPACE.connection.LOCALE
). - The default locale for a conversation is provided by the server, but can be overridden through
config.context.locale
duringinit
.
Changes
- Provide representative demo images for card and image messages to be used in styleguides.
- Increase inline window size. This also changes some of the Sass variables.
- Determination of
userResponded
has been moved to the server. This also means the keyuserResponded
in the Storage is no longer available. If you need to know the state on startup you can use the appstate parameter on theui.start
orui.beforeStart
events. - Updated @seamly/eslint-config to latest
- Updated @seamly/prettier-config to latest
- Styleguide: "Cobrowser bar" has been renamed to "Chat status bar"
- The locale for translations of the UI can now be changed to a different locale dynamically
18.3.1 (22 November 2021)
Changes
- Add class for styling to the
activity-monitor
div.
18.3.0 (20 October 2021)
Changes
- Improve entering send_transcript e-mail on mobile and desktop. Especially in combination with autocomplete on mobile.
Bug fixes
- Time indicators are properly shown before user messages.
- Links in messages by users in the default UI are now legible.
- Fix options dialog
max-height
issue to make implementations easier. - Fix keyboard navigation and focus of carousel.
- Fix settings focus of input entry when windowed chat is opened.
- Make card description element a
div
instead ofp
to prevent invalid HTML nesting.
18.2.0 (17 September 2021)
Changes
- Add default
secondary
category to be used with choice prompts - ChoicePrompt
<li>
's now have an additional class based on the choice category to aid styling of choices in client implementations - Process card descriptions as markdown
- Don't process cta descriptions as Mustache templates as we won't ever have any variables
Bug fixes
- Remove redundant img alt attribute in cards
18.1.1 (9 September 2021)
Bug fixes
- Fix translation menu automatically closing on focus-out by removing the close-on-focus-out from the Translations-Dialog.
18.1.0 (8 September 2021)
Changes
- Add Carousel message type
- Add Card message type, the following three card types can be rendered:
ask
which contains a cta that sends a question into the conversation.navigate
which contains a cta that navigates to a url.topic
which contains a cta that sets the topic of the conversation.
Bug fixes
- Make uploads show correctly as not-deleted if they are still available.
18.0.0 (30 August 2021)
Changes
- Added
Automatic Translation
feature to support live machine translations. - Added
setTranslation
added to the window API (only works if the feature is enabled in the account). - Added
@seamly/web-ui/index.debug
as a drop-in replacement for@seamly/web-ui
to enable debug tools in client implementations useChoicePrompt
's return value now also contains{ body, subEvent }
- Exported
MessageContainer
for usage in client implementations - Exported
useTranslations
,useTranslatedEventData
anduseTranslationsContainer
for usage in client implementations
Breaking changes
useChoicePrompt
now requires the full event as a parameter instead ofevent.payload
- Drop support for IE11
useTranslation
is renamed touseI18n
and exports a name function (t
).
// v17.x
import useTranslation from '@seamly/web-ui`
const t = useTranslation()
// v18.x
import useI18n from '@seamly/web-ui'
const { t } = useI18n()
- Translation files now use a flattened structure and should be updated.
// config.js v17.x
import nlInformal from '@seamly/web-ui/translations/nl-informal'
const translations = {
...nlInformal,
toggleButton: {
...nlInformal.toggleButton,
title: 'Chat',
resumeTitle: 'Chat',
subtitle: 'Start gesprek',
},
header: {
...nlInformal.header,
title: 'Stel je vraag aan',
}
}
// config.js v18.x
import nlInformal from '@seamly/web-ui/translations/nl-informal'
const translations = {
...nlInformal,
'toggleButton.resumeTitle': 'Chat',
'toggleButton.subtitle': 'Start gesprek',
'toggleButton.title': 'Chat',
'header.title': 'Stel je vraag aan'
}
Bug fixes
- Fix timing issue between clearing entry and changing entry type based on incoming messages.
- Fix issue in i18n where default object for overrides was provided, but tested against undefined instead of keys.length
17.2.0 (3 august 2021)
Changes
- Added app state information to
ui.beforeStart
,ui.start
andui.visiblity
window.api events. App state containshasResponded
,hasConversation
,visiblity
andunreadMessagecount
. - Always show time indicator at beginning of conversation when enabled.
- Always show username/agent name when it is preceded by a time indicator.
17.1.1 (13 july 2021)
Bug fixes
- Expose
useSeamlyConfig
&useSeamlyVisibility
hooks for customer implementations.
17.1.0 (29 june 2021)
Changes
- Replace default
api.*.seamly.ai
domains withapi.*.seamly-app.com
. - Minor dependency updates
Bug fixes
- Replace all
/
used for division in SCSS files with fractions. The/
for division is being deprecated by Sass, as it is technically a seperator in CSS. In future, it will be eithercalc()
,math.div()
or we can use a fraction. - Info messages no longer disable choice prompts
- Server-side triggered idle-timer elapse no longer doubly triggers detach-service action
17.0.0 (7 june 2021)
Breaking changes
- The
system.service_changed
event has been renamed tosystem.systemChanged
. - For file uploads the following translation keys have been affected and should be changed if overrides or nonstandard translations are used:
srMessageIconText
has been removed.- The text for
srFileUnavailableText
has been changed. - Keys
srFileUploadedText
andsrFileDownloadText
have been added.
Changes
- File download messages without a
url
value are now supported and rendered correctly. - Authenticate all conversation requests
- Now hides all chat content from being shown in the Google Search result snippet by applying the
data-nosnippet
attribute. - A
system.userFirstResponse
event is now broadcast via the external api when a user responds for the first time in a conversation. - Added
@seamly/web-ui/standalone
and@seamly/web-ui/standalone.min.js
as standalone pre-built package exports which do not require . - Update activeServiceSessionId on each incoming message
- Add pre-built
@seamly/web-ui/styles.css
to the package exports.
Bug fixes
- Remove
cvco-false
class from the options toggle button. - The style guide will no longer display duplicate Preact key console errors.
- Load scss imports from
node_modules
without deprecated~
.
16.0.7 (18 may 2021)
Bug fixes
- Add missing styling for time indicators.
16.0.6 (12 may 2021)
Bug fixes
- Add optional chaining to prevent error in time indicator display when locale doesn't match.
16.0.5 (11 may 2021)
Bug fixes
- Export the following exports from the package as required by client implementations to enable upgrade to v16:
useSeamlyCommands
useSeamlyIdleDetachCountdown
useDispatch
seamlyActions
eventTypes
AppFrame
ChatFrame
ToggleButton
AgentInfo
Header
Conversation
EntryContainer
Interrupt
16.0.4 (10 may 2021)
Bug fixes
- Export
useSeamlyEvents
asuseEvents
for the package
16.0.3 (10 may 2021)
Bug fixes
- Fix FAQ overflow on mobile screens with low height (especially an issue when the keyboard is open on Android)
- Fix image modal not expanding to full height in the inline layoutmode
16.0.2 (4 may 2021)
Bug fixes
- Also export
useSeamlyChat
hook from the package.
16.0.1 (22 april 2021)
Bug fixes
- Properly export all package files so you can use exports like
@seamly/web-ui/storage
16.0.0 (20 april 2021)
Changes
- Remove loading of
@include-media
inindex.scss
as this is now loaded through theWeb UI
. FAQ
is now part ofWeb UI
and can be deactivated with theshowFaq
setting in the configuration.- An
action.click_cta
is now broadcast via the external api when the to action is clicked in a CTA message. - Time Indicators can now be shown in a conversation when enabled in the configuration.
- Render
info
events of typedivider
when received over the websocket. - Reorder events when an ACK is received
- Add
setTopic
action to the window API. - A
system.system_changed
event is now broadcast via the external api when the current service changes. - Add guide to documentation on how to add analytics to your implementation.
- All HTML buttons are now explicitly typed and safe for use inside wrapping forms (mainly classic ASP.NET applications).
Breaking changes
- Regardless of whether
FAQ
is activated inWeb UI
or not, the main application is now wrapped in classcvco-app-wrapper
which reguires styling adjustment in all implementations. - All implementations already containing
FAQ
should migrate to the internal implementation. This is mostly the removal of the flex styling on certain breakpoints, and making sureposition: absolute
is possible on thefaqs
. - All direct references to
@seamly/web-ui/src/javascript/*
must be updated to reflect the new exports at@seamly/web-ui
@seamly/web-ui
must be transpiled in the webpack-config of the implementation to enable cross-browser supportpreact
is now a peerDependency and must be included from the implementation
Bug fixes
- Don't render the skip link when minimized. This fixes the issue where you could focus the skip-link when only the button was visible.
15.0.1 (11 March 2021)
Changes
@babel/plugin-transform-react-jsx
now supports automatic transpilation of JSX without the need to importpreact
,preact.h
orpreact.Fragment
.
Breaking changes
- Implementations must upgrade to Preact 10.5.12
- Implementation must update the Babel configuration for
@babel/plugin-transform-react-jsx
to{ runtime: 'automatic', importSource: 'preact' }
in order to support automatic transpilation.
15.0.0 (11 March 2021)
Changes
- Options, options dialogues, the upload button, as well as the Seamly modal version can now be animated with the same standard transition classes.
- Add configurable z-index for implementations via config.
- Add
overscroll-behaviour: contain
to windowed chat so scrolling a windowed chat will not automatically scroll the whole page when the user has reached the bottom of the chat. - Focus code has been consolidated to use hooks and helper functions. All focus code should use and expand on this implementation.
- Remove cog icon when just one specific option is shown in the bottom bar. Also add classes so the entry can be styled.
Breaking changes
- Implementations with options need to update the hide/show of the options menu, and the upload button to use the new transition classes.
Bug fixes
- Fix double rendering of upload bubbles on socket reconnect.
14.0.2 (12 February 2021)
Changes
- Send transcript button now has it's own translation and explicitly says
Send
.
Bug fixes
- Fix typo in
de-informal
translations.
14.0.1 (10 February 2021)
Bugfixes
- Transcript email validation now also allows capital letters.
14.0.0 (27 January 2021)
Changes
- Build all translations as UJS modules and expose them in the NPM package in
@seamly/web-ui/dist/translations/*
. - Use
description
field for rich text in CTA messages. - Add
fileUpload.errors.virusFound
translation to indicate an uploaded file contains an unsafe file. - All non-user downloads will open in a new window.
- Remove
inResponseTo
from the payload in a message as the back-end no longer uses it. - The user can now request a transcript of the chat to be sent via email.
- Add German informal translations (
translations/de-informal.js
) - Any use of
:first-child
on.cvco-conversation
may be removed from client implementations. This should've been removed when we moved the privacy disclaimer into the conversation stream. - The current agent name is passed to the resume conversation prompt translation.
Breaking changes
- Update the
marked
depdendency to 0.8.2, this fixes multiple security issue. Unfortunately this means implementations need to processmarked
by babel as it exports ES6 - Upgrade webpack to v5. Implementations now have to upgrade to webpack 5 too. Things that need changing:
- Update
webpack.config.js
to work with Webpack 5 - Update
.eslintrc.js
resolver config. Replace'import/resolver' : 'webpack'
with:'import/resolver': { webpack: {}, },
- Update any calls to
yarn build -- --env.target=XX
toyarn build --env target=XX
- Update
- Removed the
/webpack/implementation_config.js
file. Custom implementations should use @seamly/doc-site package with a custom config instead. - Options are now shown as pop-over screen driven by a menu button for multiple options, and an action button for single options. Styling needs to be adapted.
- All options now show as single option pop-over screens. Styling needs to be adapted.
- The screen sharing option is no longer implemented as a checkbox control but has become a toggle button. Styling needs to be adapted.
- The file upload button will now only show when uploads are available. This may affect the display of the entry container in implementations. Styling needs to be adapted.
13.0.0 (9 December 2020)
Changes
- The entry component can now be set via the
entry
property on messages. Currently this is available forupload
entry types but this can be extended via the same mechanism for all entry types where required. - Validations loaded on entry components can also now be adjusted via server message inside the
entry
property as per the previous point.
Breaking changes
- The import path for
EntryContainer
has changed to@seamly/web-ui/src/javascripts/ui/components/entry/entry_container
. This should be adjusted in all custom views. - The structure of the entry block has been changed. All custom views should update the JSX declaration:
// Replace
<EntryContainer>
<Entry />
</EntryContainer>
//With
<EntryContainer />
- As the entry block has been closed in JSX, custom implementations of the
Entry
component should now use the standardcustomComponents
interface in the configuration as described in the documentation. - Any custom implementations of
Entry
will need to be recoded to follow the new structure inSeamly Web UI
. - All implementations using the src from the
@seamly/web-ui
package should transpile thephoenix
package to ES5 if IE11 support is required. If you use webpack, you should make surenode_modules/phoenix
is not excluded from transpilation in webpack.config.js.
Bugfixes
- An edge case existed in the forms system where form element components could re-initialize if the upper application state changed thereby losing preloaded forms data. This has been fixed.
- Fixed NL translation typo in the screen reader text of a configuration error.
- The package now uses the source Phoenix file as the dist file contains JavaScript that violates the
unsafe-eval
CSP policy. - Send Content-Type header on POST requests to get config and to create a new conversation.
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 customEntry
component should remove this.
12.0.0 (25 September 2020)
Breaking changes
- Hook
useSeamlyContainerClassNames
has been renamed touseSeamlyMessageContainerClassNames
. - 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 tocontext
on the main configuration level. Within this configuration object any usages ofmeta
orsettingsProfile
should be removed if still present in implementations as these are dead options. - The
customViewComponent
configuration option has been moved tocustomComponents.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 thecustomComponents
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)
- Remove the wrapping
- Various
layoutModes
with the samenamespace
no longer share avisibility
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 thedefaults
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 ofuploads
. - Split
useText
component hooks in touseTextRendering
anduseEventLinkClickHandler
. Any custom text message components should now use these hooks instead of theuseText
hook.
Changes
- Add two
on
events to the window API for the idle detach warning:'idleTimer.selectContinue
is sent when the user clicks on theContinue coversation
button andidleTimer.selectEnd
is sent when the user clicks on theEnd 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
orEntryContainer
components should re-align the implementations of these components to that inside Seamly UI in order to supportFile uploads
and function with the adjustedMulti Forms Data Engine
inside Seamly UI. - Classname for the icon in the lightbox/modal has been changed. From
cvco-model__icon
tocvco-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 usefill
instead. Implementations that target specific parts of anysvg
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 mainARIA 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 (asuseInput
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, theidleTimer.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 genericEntry
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
anddestroy
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 thecvco-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 touseSkiplink
. - Any usages of the hook
useInputFocusing
should be refactored touseSkiplinkTargetFocusing
.
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 theseamly-client-participant
participant message from the server. - A default chat start icon can be set using the
startChatIcon
setting found in the newdefaults
object in the configuration object. - A default agent icon can be set using the
agentIcon
setting found in the newdefaults
object in the configuration object.
Breaking Changes
- Any custom implementations using
component overrides
should migrate to theComponentProvider
component instead. Passing custom components to theConversation
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 newuseSeamlyContainerClassNames
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 addtoggleButton.resumeTitle
in all custom language files. - The
defaultName
settings for bothuser
as well asagent
no longer exists. Instead use theuserName
setting for theuser
and theagentName
setting for theagent
. Both are contained in a new maindefaults
object in the config. - Any implementations relying on an
agent defaultName
ofBot
coming from the Seamly client itself, needs to implement this with theuserName
setting. - Any implementations relying on a
user defaultName
ofYou
coming from the Seamly client itself, needs to implement this with theuserName
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
andImage
components now implement adescriptorId
prop asid
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 viaid
but instead implement adescriptorId
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
andaction.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
ofChoice 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 theParticipant
component has been adjusted todivider__graphic
. Styling should be adjusted in implementations.