Important changes in Cord SDK
You can find all important changes to the Cord product on this page.
21 September, 2023
JS SDK 1.15.0
This SDK version includes the following changes:
threadUrl
and threadName
properties, and onFocus
, onBlur
and onClose
callbacks to the ThreadedComments component.20 September, 2023
JS SDK 1.14.0
This SDK version includes the following changes:
19 September, 2023
JS SDK 1.13.0
This SDK version includes the following changes:
NotificationListLauncher
component includes an extra propertyfilter
which functions similarly to the one inNotificationList
. It can be used to better control the displayed value of the unread count badge and related notifications depending on the properties you filter by.Notification Summary API
. You can use this to filter notifications summary depending on the value of their metadata
, location
and organizationID
properties.autofocus
, and replyComposerExpanded
properties to the ThreadedComments component.composerExpanded
ThreadedComments prop totopLevelComposerExpanded
.Full preferences response object in Preferences REST API
The response object for listing all user preferences REST API now returns the whole preferences object rather than just the preferences for notification_channels
.
8 September, 2023
JS SDK 1.12.0
This SDK version includes the following changes:
includeResolved
option in the observeLocationData API has been deprecated. Replace calls using includeResolved: true
, with filter : { resolvedStatus: "any" }
.displayResolved
property to the ThreadedComments component.location
and organizationID
filter properties to the NotificationList
component, Observe full notification data API
and the Mark notifications as read API
.Version 1.12.1 was released on 11 September to fix a build failure some customers were experiencing in 1.12.0.
4 September, 2023
beforeMessageCreate callback
We've added a new configuration option called beforeMessageCreate
that lets you process messages before they're sent. This can be used to change the message or trigger behavior in your app in response to the message.
1 September, 2023
Optional Message IDs
30 August, 2023
JS SDK 1.11.0
This SDK version includes the following changes:
viewportCoordinatesToString
and stringToViewportCoordinates
. These functions provide the logic that Cord uses internally in order to save the position of annotations into our backend and the logic to use those saved positions in order to place annotations on the screen.25 August, 2023
JS SDK 1.10.0
This SDK version includes the following changes:
Message ID in Data Structure
When using our client API to send a message, we've moved the message ID parameter from a positional argument to inside the data
argument. The old version will still work for the forseeable future, but the new one should be a little easier to use and allows for some future improvements.
24 August, 2023
JS SDK 1.9.0
This SDK version includes the following changes:
Inline Formatting in Composer
The Cord composer now supports many more text formatting options, including *bold*
, _italic_
, `inline code`
, and code blocks starting with ```
.
23 August, 2023
JS SDK 1.8.0
This SDK version includes the following changes:
partialMatch
and onSend
properties to ThreadedComments.onMessageEditStart
and onMessageEditEnd
properties to ThreadedComments and Thread.experimental
namespace.22 August, 2023
Delete user endpoint to REST API
We've added a new endpoint to our REST API to delete users. Calling it will delete the information associated with the user, including messages and attachments they created.
Users REST API change
Email is no longer a required field for creating a user. See the docs for more information about this API.
18 August, 2023
Preferences REST API
We have a new Preferences REST API to allow you to update users preferences. At the moment you can only update the notification_channels
, which determines if users will receive Slack or email notifications based on activity on Cord.
Notification's extraClassnames
Do you need more control? Are some notifications more important, or do you want system notifications to look different from normal users' notifications?
There is a new property on notifications called extraClassnames
. Any CSS classes present in that property will be added to the notification when it's rendered.
You can combine this field and CSS to achieve greater customization. This allows you to make some notifications look different from others.
11 August, 2023
JS SDK 1.7.0
This SDK version includes a few changes:
Message
component now emits onEditStart
, onEditEnd
events and has an additional property: isEditing
. These can be useful for creating custom UI and behaviors for editing a message.9 August, 2023
JS SDK 1.6.0
This SDK version adds some properties to ThreadedComments:
highlightThreadId
, used to highlight a specific thread. This is useful to visually connect a thread to an element on screen.showReplies
, used to initially show the thread replies expanded, or not show any replies at all.9 August, 2023
JS SDK 1.5.0 and 1.5.1
8 August, 2023
JS SDK 1.4.0
This SDK version includes:
filter
option to the useLocationData
hook.2 August, 2023
JS SDK 1.3.0
This SDK version makes a couple of changes:
@cord-sdk/api-types
package is deprecated and all of its types have been moved into the @cord-sdk/types
package. The former will remain around for backwards-compatibility, but prefer @cord-sdk/types
for new code.25 July, 2023
JS SDK 1.2.0
This release of the package updates type definitions to reflect the changes listed below since the 1.1.0 package release. It also adds a "lastMessage" field to complement the "firstMessage" field in the thread summary JS API.
20 July, 2023
Events Webhook
We have added Events Webhook so you can stay up to date with Cord activity in your app.
You can receive thread-message-added and notification-created events.
Update Cord options
You can now update the Cord configuration options without reinitializing Cord, which should be more convenient for some use cases, such as enabling or disabling features based on the state of your application.
17 July, 2023
JS SDK 1.1.0
This release of the package updates type definitions to reflect the changes listed below since the 1.0.0 package release.
14 July, 2023
Message's extraClassnames
Do you need more control? Are some messages more important, or do you want system messages to look different from normal users' messages?
There is a new property on messages called extraClassnames
. Any CSS classes present in that property will be added to the message when it's rendered.
You can combine this field and CSS to achieve greater customization. This allows you to make some messages look different from others.
13 July, 2023
Deprecate Inbox and Inbox Launcher
The Inbox and Inbox Launcher have been deprecated. Please use Notification List and Notification List Launcher instead.
JavaScript update message API
We have added a new API to update a message. You can use this to implement message editing, mark messages as deleted, or update the message metadata.
11 July, 2023
JavaScript set subscribed API
We have added a new API to update the subscribed status of a thread. You can use it to change the subscripted status for a thread for the current user.
JavaScript message sending API
We have added a client-side API to send a new message. You can use it to create new threads or add messages to existing ones, all from inside the browser.
10 July, 2023
Threaded Comments events
The ThreadedComments
component now emits onMessageClick
, onMessageMouseEnter
, onMessageMouseLeave
, onLoading
and onRender
events. The first three will pass an object to the callback containing the relevant threadId and messageId.
You can use these events to build custom UI behavior.
JavaScript Message Data
We've significantly expanded the message data we return from our client-side thread APIs to include everything available in the REST API, including message content.
JavaScript thread update API
We have added a new API to update the properties of a thread. You can use it to resolve threads, update their name or location, and more, all from inside your client code.
4 July, 2023
Timestamp component
The Timestamp component is now available! It can be used as a building block to create your own desired message layouts.
Reactions component
The Reactions component is now available! The use case is to display, add and remove reactions on a particular message in a thread. It is lower level component used as a building block to create your own message layouts. Use it alongside our various APIs such as the Thread API to get the information you need to hook this up to the message you want.
Deprecate badgeStyles
The badgeStyle
in notification list launcher and the inboxBadgeStyle
in inbox launcher have been deprecated. If you were using a value other than the default badge_with_count
, please write some CSS style targeting .cord-badge
to replicate the other two options. E.g. to replicate badgeStyle="badge"
, you can use .cord-badge::after { content: ''; height: 10px; min-width: 10px; }
.
30 June, 2023
JS SDK 1.0.0
From this version, Cord components will not have a shadowRoot
anymore. This gives you unlimited flexibility when customizing Cord: you won't be limited to the CSS variables we expose, but you can write any CSS.
While we've tried our best to maintain backwards compatibility, some parts of the UI might look off when you update to this version. The great news is that you should be able to write CSS to fix them!
Notification Component
This new version also contains a notification component which renders a single notification, for greater control over notification rendering in cases when the existing notification list component might not be suitable.
27 June, 2023
JavaScript Thread API
You can now do partial matching with thread.useLocationData
and thread.observeLocationData
. The existing options object now accepts a partialMatch
property to perform partial matching. See the Thread API page for more information.
Notification Data JS API
We have a new JS API for fetching complete notification data for a user. You could use this, for example, to build your own completely custom notifications UI.
26 June, 2023
Disable Slack
You can now disable our Slack integration on the client side by passing enable_slack: false
as an option to CordSDK.init
or enableSlack={false}
to CordProvider
. See the initialization documentation for more information.
19 June, 2023
JS SDK 0.0.49
This release includes some minor bugfixes for the new ThreadedComments component.
16 June, 2023
Javascript Notification Preferences API
We have a new Javascript Notification Preferences API to allow you to update what notifications your user would like to receive.
15 June, 2023
More CSS customizable components (and JS SDK 0.0.48)
Two more components were migrated to the new, fully CSS customizable version of Cord's components:Composer, and Pin.
If you update to version 0.0.48
of our JS SDK, you will get the new version of these components by default. There should not be any visual changes, and you will be able to write CSS to style the components as you need. These components will still support CSS variables, but we encourage you to move away from them to plain CSS.
ThreadedComments (and JS SDK 0.0.47)
The new ThreadedComments component is available to use. This component is great for an all-in-one threaded commenting experience. Furthermore, it's completely built upon public APIs, with full source code available under a permissive license. The component is ready-to-use as-is, but the source code is there to learn from as an example, or even copy-paste into your app to remix and customize!
14 June, 2023
Presence REST API
We have a new Presence REST API to allow you to update where a user is within your product.
13 June, 2023
CSS customizable components
Four components were migrated to a new, fully CSS customizable version of Cord's components. These components don't have a shadowRoot
and have stable CSS class names, which are guaranteed to not change between versions of Cord SDK. These CSS class names are prefixed with cord-
. You can target these classes to style Cord's components using the full power of CSS, rather than being limited to specific CSS variables. The new fully CSS customizable components are: PagePresence, PresenceFacepile, Avatar, Facepile and Message.
If you update to version 0.0.45
of our JS SDK, you will get the new version of these components by default. There should not be any visual changes, and you will be able to write CSS to style the components as you need. These components will still support CSS variables, but we encourage you to move away from them to plain CSS.
9 June, 2023
Message REST API
We've released our message REST API to allow you to create, read, update, and delete messages from Cord. You can use it for a variety of purposes, from analytics to building an AI chatbot.
Notifications REST API
Our notifications REST API has been extended. Along with creating notifications, you can now also get all of a user's notifications, as well as delete a notification.
JS SDK 0.0.44
Our JavaScript SDK packages have been updated with a bunch of new TypeScript types, as well as compatibility improvements in our React package to allow it to build with a wider variety of build systems.
2 June, 2023
JS SDK 0.0.43
This version adds a customEventMetadata
parameter that you can set on Cord initialization. At the moment this is only useful for customers using our Segment integration. The value you provide will be attached to Segment events as thecustom_event_metadata
property.
31 May, 2023
Add typing field to Thread REST API
We have added a new field typing
to update a thread using the Thread API. The new field accepts an array of user ids, and will force show a typing indicator in the thread.
29 May, 2023
JavaScript User API
We have a new client-side JavaScript API to fetch details about users you've synced to Cord. See the documentation for the User API for more details.
27 May, 2023
Threads REST API
We have a new Threads REST API which has multiple endpoints you can use to manipulate threads. You can list all of the threads in your app, change a thread's name and location, or even delete a thread altogether.
26 May, 2023
Applications REST API
We have a new Applications REST API which has multiple endpoints you can use to manipulate your applications. This API will enable you to create new applications and update, delete or view details of your existing ones.
25 May, 2023
Update Cord's Server to Version 0.0.42
If you're using our server JS SDK @cord-sdk/server
in order to sign Cord tokens with the function getClientAuthToken
please update to the latest version to ensure it's passed a user ID and organization ID.
Don't worry, we haven't found any security holes or vulnerabilities in our code. We've rolled out this new version as an extra guardrail for clients who may have improperly implemented our API, and created a way to call the function with a completely empty payload. While this should be prevented by the TypeScript types, we just want to advise customers that, if called without a user ID and organization ID, the resulting token will actually be an administrative token that's usable for any query in the REST API.
We don't anticipate many customers will be affected, but we recommend updating as a failsafe. As a reminder of how to implement the API, check out our guides on our server-side libraries and our authentication reference.
24 May, 2023
Message component
The Message component is now available! It is a separate component that allows you to render thread messages individually. You can use it with our Thread API to put together unique custom experiences way beyond what we provide.
3 May, 2023
Avatar and Facepile components
3 May, 2023
Pass threadID to useCordAnnotationClickHandler callback
In addition to id
and location
, we now supplythreadID
in the object passed to the callback given to theuseCordAnnotationClickHandler
hook. This could be used, for example, if a user clicks a message in the ThreadList which is no longer visible on the page. The threadID can be passed to a Thread component to render the comment independently.
2 May, 2023
New and updated JavaScript thread APIs
We have a number of new APIs for getting information about threads in JavaScript. They complement our existing thread APIs. Altogether, we now offer the following thread functions:
thread.observeLocationSummary
: Build activity indicators and badges with information about a location and its threadsthread.observeLocationData
: Build thread previews with detailed data about all threads in a locationthread.observeThreadSummary
: Build activity indicators and badges with information about a thread and its messagesthread.observeThreadData
: Build rich integrations with detailed data about all messages in a thread28 April, 2023
Add showScreenshot to screenshot options in initialization call
When initializing Cord, there is now an additional option within the screenshot options to allow you to hide screenshots in messages. This is useful if you want to disable viewing any pre-existing screenshots. (The existing captureWhen
option lets you disable taking new screenshots.)
27 April, 2023
Add screenshotUrlOverride to ScreenshotConfig API
A new screenshotUrlOverride
property for ScreenshotConfig API allows to specify a URL to an image to use as screenshot, rather than having Cord create one.
19 April, 2023
Add auto-scrolling to ThreadList Component
19 April, 2023
JS SDK 0.0.36
This SDK version sets the stage for some naming changes which will make our function and React hook APIs more consistent. (Components names will be unaffected.) Old names are maintained for backwards-compatibility as well. Our documentation will be updated in the coming days to reflect the new names.
18 April, 2023
New prop highlightThreadId added to ThreadList Component
13 April, 2023
Update of placeholders in components
TheThread
component prop showPlaceholder
will be set to true
by default. If set to true
it will show a placeholder containing users from the org and a prompt to send a new message. If set to false
the user will just see the composer if the thread has no messages.
The Sidebar
and SidebarLauncher
placeholders in the conversation view has been updated to show users from the org, and a composer to prompt the user to create a new message.
The components ThreadList
, Inbox
, InboxLauncher
, NotificationList
, and NotificationListLauncher
will have updated placeholders that include an icon before the text prompt.
6 April, 2023
Screenshot Options API
All screenshot related configurations have been merged into a single ScreenshotOptions API.
blurScreenshots
is now screenshotOptions.blur
showBlurredScreenshots
is now screenshotOptions.showBlurred
enableScreenshotCapture
is now screenshotOptions.captureWhen
Existing code using the old names will continue to work for the foreseeable future, but we recommend using the new names in any new code
5 April, 2023
Placeholders in components available in JS SDK 0.0.35
The components ThreadList
, Inbox
, InboxLauncher
, NotificationList
, and NotificationListLauncher
now have a showPlaceholder
prop set to true
by default that will show a placeholder when there are no threads. If set to false
the user will see an empty list.
TheThread
component now has a showPlaceholder
prop set to false
by default temporarily. If set to true
it will show a placeholder containing users from the org and a prompt to send a new message. If set to false
the user will just see the composer if the thread has no messages.
4 April, 2023
Thread and Notification updates
Thread component metadata attribute
The Thread
component now has a metadata
attribute. The attribute's value is a JSON object that can be used to store arbitrary data about the thread. For example, you could use the metadata
attribute to store the URL of a task in your internal task tracker that relates to the thread.
Correspondingly, the ThreadList
component now has a filter
attribute. The attribute's value is a JSON object that can be used to filter the list of threads. Currently the only valid key is metadata
. The value for a metadata
entry should be an object representing the metadata key/value to filter on. For example, to show only threads where the metadata entry for the key "category"
has a value of "sales"
, set the filter to { metadata: { category: "sales" } }
.
Notification List and Notification List Launcher
The NotificationList
component and NotificationListLauncher
component are now available to keep users up to date with things directly related to them.
Notification Summary API and React hook
A new API is available to fetch information for a users' notifications. The Notification Summary
API can be used to get the number of unread notifications for the current user. The data is updated in real-time.
3 April, 2023
Thread List onThreadClick event returns threadSummary
The ThreadList
component has a second threadSummary argument passed to its onThreadClick event in addition to threadID.
3 April, 2023
Thread Summary Javascript API and React hook
A new API is available to fetch information for a thread ID. The Thread Summary
API can be used to get the number of messages in a thread, the id`s of the participants, who is currently typing and more. All data is updated in real-time.
22 March, 2023
Default Thread List highlight behavior with Floating Threads
15 March, 2023
Thread List onLoading and onRender props
The ThreadList
component now hasonLoading
and onRender
props that are useful for building a custom loading UI.
9 March, 2023
Thread List and Floating Threads props to show/hide screenshots
The ThreadList
component now has a new prop showScreenshotPreviewInMessage
which is true
by default. If the developer sets it to false
, messages in the ThreadList will no longer show the screenshot preview element (also known as the Annotation Pill).
The FloatingThreads
component gains a similar showScreenshotPreview
prop which is false
by default. If the developer sets it to true
, users will see a screenshot preview elements (also known as the Annotation Pill) in the first message of Floating Threads.
3 March, 2023
Thread List mouseenter and mouseleave events
The ThreadList
component now emits events when users `mouseover` and `mouseleave` a thread.
20 February, 2023
Presence defaults to exact matching
The JavaScript Presence API has changed to do exact matching on the provided location by default, with a partial_match
argument to invoke partial matching.
31 January, 2023
JS SDK v0.0.30
The JavaScript SDK is updated to version 0.0.30
. This version adds an experimental notifications launcher button component into the beta
components. Documentation and more information will be provided later, as the component stabilizes.
27 January, 2023
JS SDK v0.0.29
This fixes an issue in our JavaScript SDK when used with server-side rendering.
23 January, 2023
JS SDK v0.0.28
The JavaScript SDK is updated to version 0.0.28
. This version adds an experimental notifications component into thebeta
components. Documentation and more information will be provided later, as the component stabilizes.
10 January, 2023
Thread autofocus
The Thread
component now has an autofocus
property, used to focus its composer on render.
3 January, 2023
Thread List resolve and reopen events
The ThreadList
component now emits events when it is aware that a thread has been resolved or reopened. This allows developers to implement custom behavior using the threadID.
16 December, 2022
Screenshot targets and disable buttons
Screenshot targets
Adding data-cord-screenshot-target="true"
data attribute to an element will crop the screenshot to include that specific element only.
New Disabled property
New property available from SDK version 0.0.24
. Used to disable the button of cord-inbox-launcher
component andcord-floating-threads
component.
28 November, 2022
Sidebar thread open and close events
The Sidebar
component now emits events whenever a thread is opened or closed. This allows developers to implement custom behavior based on the threadID
, like showing a message, scrolling the page to the right section, etc.
23 November, 2022
CSS variables and Annotations
New CSS Variables
New CSS variables to change the height
and border
of the following buttons: cord-sidebar-launcher
component, cord-inbox-launcher
component, cord-floating-threads
component. See each component's page for more information.
Only allow annotations on some parts of a page
Adding data-cord-annotation-allowed="false"
data attribute to an element prevents users from annotating it. Documented here.
Deprecated Annotation Mode
Deprecated annotationMode
. Use data-cord-annotation-allowed
instead.
14 October, 2022
Set New Thread Titles
11 October, 2022
Sidebar onOpen Width
The Sidebar
component's onOpen
property is now passed the width of the sidebar.
3 October, 2022
Disable SidebarLauncher button
The SidebarLauncher
component has a new optional disabled
boolean attribute, which disables the button if the value provided is true
.
27 September, 2022
Short User Names
The user API has a new short_name
field. If supplied, this will be used to refer to a user in most places (such as message headers) instead of the name
field.
In addition, the first_name
and last_name
fields are being deprecated. They aren't currently used for any purpose and calls can omit them without any effect. They'll keep being accepted and stored for now, but eventually they'll stop being returned when fetching a user's details.
13 September, 2022
Annotation Mode
We are adding a new option to the SDK to specify that annotations operate in targeted mode. In this mode, annotations can only be placed on designated targets. To use this, please pass annotationMode: 'custom_targets_only'
when initializing the SDK or CordProvider.
7 September, 2022
✨ We have a changelog!
This is the beginning of Cord's changelog. From now on, new features, SDK changes and improvements, and important bug fixes will appear here.