10.4.1

Cerb (10.4.1) is a maintenance update released on August 30, 2023. It includes 42 minor features and fixes from community feedback covering the 10.4 update. You can follow these instructions to upgrade.
Changelog
Added
-
[Automations/Events] The record.changed automation event is now triggered when records are deleted. The event has a new
change_type
input with a value ofcreated
,updated
, ordeleted
. Forcreated
thewas_record_*
dictionary is empty andrecord_*
is the current state. Fordeleted
thewas_record_*
andrecord_*
are identical as the final state (this avoids existing listeners seeing deletion as changing every field value to blank). This behavior can be temporarily disabled with theAPP_OPT_RECORD_CHANGED_NO_DELETE
config option. Thanks to 1Password for the feature request! -
[Automations] In automations, added
cerb.commands.dataset.vector_similarity
to api.command:. This loads a 'Dataset (.jsonl)' resource file and uses cosine similarity to find the closest matches between its document vectors and a given query vector. The JSONkey
containing vectors is required, and its dimensionality must match the query. A list of keys to return may be provided (e.g.id
,name
). This local implementation provides reasonable performance for semantic search on a small corpus (e.g. FAQ) up to a few thousand documents. Text embeddings can come from anywhere (OpenAI, Hugging Face, custom LLMs). A vector database or other HTTP microservice should be used for high-performance (Qdrant, Pinecone). -
[Automations] In the file.read: automation command, added a
length_split:
option to prefer a specific sequence to split the bytes on. This will always be less than or equal to the requested length. For instance, alength: 2048
read withlength_split@json: "\n"
would return bytes up to the last linefeed character occurring before to the length position. -
[Worklists/Toolbars] A records.worklist toolbar can override the default explore mode by defining
interaction/explore:
. -
[Profiles/Widgets] On 'Interaction Toolbar' profile widgets, custom
keyboard:
shortcuts are now supported. -
[Connected Services/Packages] Added 'OpenAI' to the package library when creating new connected services. This automatically configures a 'Token Bearer' service.
-
[Connected Services/Packages] Added 'Hugging Face' to the package library when creating new connected services. This automatically configures a 'Token Bearer' service.
-
[Platform/Stats] Implemented a 'cosine similarity' function in the platform's statistics service. This compares the similarity of n-dimensional vectors (e.g. text embeddings). It will use the
bcmath
extension for performance when enabled. -
[Resources/Datasets] Added a new 'Dataset (.jsonl)' resource type. This stores an arbitrary JSON Lines formatted dataset for fast access by automations.
-
[Worklists/Export] When exporting data from worklists using the Export KATA ("Build") option, the KATA schema is now saved and used as the default on the next export.
Changed
-
[Worklists/Export] When exporting data from worklists using the Export KATA ("Build") option,
value:
annotations are now properly preserved and evaluated. For instance,value@int:
returns an integer andvalue@json:
returns an object. This is important for JSON/JSONL exports where non-string data types are validated. -
[Worklists/Import] When importing records into a worklist from a CSV file, it's now possible to import 'List' custom fields. The value should be a newline-delimited list.
-
[Worklists/Log] On activity log worklists, the 'ID' column is now available.
-
[Worklists/Explore] Implemented explore mode for calendar event worklists.
-
[Worklists/Explore] Implemented explore mode for custom fieldset worklists.
-
[Worklists/Explore] Implemented explore mode for feed worklists.
-
[Worklists/Explore] Implemented explore mode for scheduled behavior worklists.
-
[Records/Notifications] On notification worklists, the record 'ID' column is now available.
-
[Records/Address] On address cards and profile pages, the 'Record Fields' widget can now display the 'Worker' field.
-
[Records/Address] On email address worklists, the 'Worker' column now displays the linked record rather than just a record ID.
-
[Interactions/UX] The built-in
cerb.ticket.move
interaction now shows 50 groups/buckets per page rather than 10. -
[Interactions/UX] The built-in
cerb.ticket.assign
interaction now shows 25 workers per page rather than 10. -
[Toolbars/KATA] Toolbar editors now autocomplete the
keyboard:
option. -
[Watchers/Performance] On the watchers popup, worker profile images now lazy load in modern browsers (i.e. the images load from the server when scrolled into view). On large teams it was possible for the watchers popup to request 1,000+ images from the server at the same time. This was particularly an issue if a worker had their browser cache disabled (e.g. Web Developer Console). In Cerb Cloud it could lead to temporary rate-limiting (a "Forbidden" response to all access for several minutes). A forthcoming improvement will replace this popup's table with a filterable/pageable sheet.
-
[Worklists/Explore/Comments] Explore mode on comments now automatically scrolls to each comment in the profile timeline.
Removed
- [Connected Services/Packages] Removed the 'Twitter' package when creating new connected services.
Fixed
-
[Records/Notifications] Fixed an issue with deleting notification records through the API or automations.
-
[Automations/Records] Fixed a cache invalidation issue causing
record.changed
automation events to not trigger for custom field and custom fieldset records. -
[Custom Records] Fixed an issue that prevented custom record type class files to not be cleaned up on disk after deletion.
-
[Profiles/Merge] Fixed an issue with the 'Merge' button at the top of profile pages for non-admins. Clicking the button had no effect due to a failing permissions check.
-
[Records/Search] Fixed an issue with autocompletion on worklist search queries. The autocompletion suggestions menu closed prematurely after selecting a
filter:
from the menu. -
[Sheets] Fixed an issue with Sheet KATA where specifying an invalid
columns:
type prevented the sheet from rendering. -
[Worklists/Explore] Fixed an issue with explore mode on call record worklists.
-
[Interactions/Website] Fixed an issue in
interaction.website
automations where the optional reset button didn't restart the interaction (await:form:elements:submit:reset@bool: yes
). Thanks to @yungtyyler for the bug report! -
[Worklists/Explore] Fixed an issue with explore mode when using the Firefox browser. Occasionally the
load
event wouldn't fire properly and explore toolbars and keyboard shortcuts wouldn't function. Thanks to @mryanb for the bug report! -
[Worklist/Export] Fixed an issue when exporting data from worklists. The previously used column names were blank if they were custom fields. This was due to the change from legacy
custom_123
keys to custom field URIs (aliases). -
[Interactions/Website] Fixed an issue in
interaction.website
automations where there was no padding betweenawait:form:
elements when using a sheet with paging. -
[Interactions/Website] On
interaction.website
automations, text selection is no longer disabled on sheet tables. This was preventing visitors from copying bot responses. -
[Worklists/Export] Fixed an issue when exporting custom records from a worklist and record ownership isn't enabled.
-
[Search/Elasticsearch] Fixed an issue with Elasticsearch 8.x compatibility as a full-text search schema (e.g. message content). Thanks to @nicholsk18 for the patch!
-
[Bots/Behaviors/Actions] Fixed an issue with setting custom fields in legacy bot behavior actions.
-
[Bots/Behaviors/Conditions] Fixed an issue with using custom field conditions in legacy bot behavior outcomes.