Back to Releases

v4.5 release

Release date: November 1, 2022

v4.5 had 200 bug fixes, 163 improvements, and 47 new features.

An issue was discovered affecting v.4.5.9 that prevents users from setting style presets from the rich-text editor, such as setting alignment on modules. A workaround is available by adding the following custom CSS.

.CIG-row.StyleguidePreset-row .CIG-small:has(select[data-selected-id=""]) + .CIG-large { 2 display: block !important; 3}

The custom CSS above is compatible with Apple Safari and Google Chrome. A setting must be updated in Mozilla Firefox for the custom CSS to be compatible. See Mozilla's browser compatibility section.
A significant issue in v.4.5.8 that affects two-factor authentication was fixed in v.4.5.9. When evaluating an upgrade, Brightspot advises that customers upgrade to v.4.5.9 or later.

Significant new features

The Styleguide build command has a new option that allows for a continuous integration pipeline. The option is -p puppeteer-custom-config.json. The contents of puppeteer-custom-config.json override the standard Styleguide build configuration. A typical command is as follows:

yarn node node_modules/@brightspot/styleguide/build/bundle -b build/styleguide -o build/ -p puppeteer-launch-config.json

Significant improvements

The search panel now includes a board view that groups search results by a field. In addition, editors can use drag-and-drop in board view to update Assignment Desk assignments.

The content edit form now includes a shelf. Editors can drag and drop assets from the shelf onto fields in the content edit form.

Editors can now favorite assets in selection fields. Favorites appear in a selection field before recently used and recently updated.

Editors can now favorite content templates in the Quick Start widget. Favorited content templates (and content types) appear at the left of the Quick Start widget.

Editors can now delete links to shared previews.

Administrators can now customize permalink rules at the site level (previously available only at the global level).

Editors can now print search results from the search panel.

In the Sites & Settings > Sites widget, administrators can now filter sites by site category.

Administrators can now use a query field in a custom content type.

The following integrations were added to Brightspot:

  • Microsoft Teams
  • Google Vision

Front-end rendering was improved and streamlined by better associating markers (as HTML comments) injected by Brightspot with concrete HTML elements.

An abstract class AssociatedContentWidget was deployed. Concrete classes extending from this class can replace various disparate Assignment Desk classes.

Developers can now introduce new Brightspot classes by coding them in JavaScript.

Styleguide now includes an inspector that indicates, for an arbitrary element, the associated template files and CSS classes.

Improved informational and error messages now appear when configuring notifications.


  • Improved representations of returned rich text.
  • Improved implementation of inverse indexes.
  • A diff tool highlights the changes in GraphQL schema between Brightspot versions.
  • Improved labels, field names, and UI behavior in the GraphiQL explorer.
  • Developers can open the GraphQL explorer from an API configuration inside Brightspot.
  • Administrators can customize the entire API endpoint.
  • Developers can dynamically generate API keys when no WebRequest is present.

Back-end extension and front-end rendering of editorial content types are now more robust.
Editor A schedules an asset for publication in 30 days. Editor B updates the same asset before the 30 days expire. Editor B can choose to merge the changes into A's version, or to replace A's version entirely.

Administrators can now write a single production guide entry for fields appearing in multiple content types. The entries follow a typical inheritance scheme of Global > site > content type. For example, an administrator can write an entry for the Hat field that applies to all sites and content types, and specify a separate entry in for blog posts in Site A.

The rich-text editor now displays previews of linked Instagram Reels.

Image recognition:

  • The presentation of terms returned from image recognition services was improved so that editors can more easily view them.
  • Default confidence intervals were changed from 0% to 50%.

The display for compared revisions no longer includes HTML markup.

A platform upgrade now facilitates adding menu options to the image editing menu.

TypeScript is now available for customizing Brightspot.

Multiple levels of toolbar buttons are now highlighted as appropriate for the selected text. For example, a toolbar button Format has a child buttons Superscript and Subscript. Selecting subscript text highlights the Subscript button but not the parent Format button.

Color pickers now have a placeholder field for setting and displaying default values.

Enhanced accessibility in various Brightspot forms and widgets.

  • Search filters now have the aria-labelledby attribute to describe the inputs.
  • Keyboard shortcuts are available for editing images and videos.
  • The focus order of the items in the navigation area are now sequential.
  • In the image and video editing UI, the crop feature now has a proper name, role, and value.
  • Individual projects can customize the purpose of each input field.
  • Tabs remain tabs in smaller resolutions instead of turning into a menu.
  • Increased contrast between separators and items in a list.
  • Buttons in the header now have visible focus.
  • Clear identification of multiple languages, such as mixed English and Spanish, in the rich-text editor.

Ensured that Styleguide builds invalidate the browser cache so that after five minutes the server delivers the latest assets.
In board view, editors can now abort a drag-and-drop action by returning the dragged card to its initial column.

Improved the MarkedText schema in GraphQL.

Significant defects addressed

Corrected an issue that with sticky search enabled, each keystroke in the Advanced Search field closed and then re-opened the Edit Dynamic Query widget.

Corrected an issue that when opening the Edit Query widget from an edit edit icon, criteria in the Advanced Query field did not affect search results.

Corrected an issue causing HTTP status code 503 due to database refresh calls.

Corrected an issue in which the annotation @DisplayGrid did not display assets correct in grid view.

Corrected a regression error that suppressed display of a custom widget's contents.

Corrected an issue that caused Brightspot to freeze after inserting a Call To Action button.

Corrected rendering of a list of file upload controls.

Preview to edit:

  • Corrected an issue in which Preview to edit stopped functioning for some content types or some fields.
  • Corrected an issue in which Preview to edit did not recognize referenced content.

Corrected an issue preventing some cluster headings from appearing in content edit forms.

Corrected an issue preventing image recognition from working on images imported from external services.

Corrected an issue in which the list of available values for a text field resets after typing a character. For example, an editor clicks on a text field. Brightspot provides a list of all allowed or existing entries. The editor presses A, and Brightspot filters the list to those starting with A. After a short delay, the filter is removed and the list of all allowed entries appears. (Not all text fields have this feature.)

Corrected an issue preventing the correct display of social networking accounts in various widgets.

Corrected an issue causing images in gallery view to appear in different sizes.

Corrected an issue in which clicking the control for a new site category actually displayed the form for creating a new site.

Corrected an issue preventing the Edit Service form from appearing for editing a social networking service.

Corrected an issue preventing the appropriate display of module styles in a List Styles field.

Corrected an issue preventing the display of cluster headings for image recognition results.

Corrected an issue preventing some template fields from appearing in a content edit form's Styles tab.

Corrected an issue in which a next arrow chevron_right appears on the last page in a list of paginated results.

Corrected an issue in which changed values in the color picker were not saved.

Rich-text editor—

  • Corrected an issue in which non-breaking spaces in the rich-text editor caused run-time errors in GraphQL.
  • Corrected an issue in which some missing fields prevented rich-text elements from rendering in Brightspot.

Corrected an issue in which deleting an editorial content type referenced by another editorial content type generated server errors.

Corrected an issue in which pre-publish actions rendered multiple call-to-action buttons.

Corrected an issue in which text fields did not wrap correctly after the asset is published.

Corrected a regression error that caused two-factor authentication to stop working with Google Authenticator codes.

Corrected a regression error that caused batch upload failures into objects of type GoogleStorageItem.

Corrected an issue in which invalid Dynamic Placeholder values can block editors from creating new content.

Corrected issues that prevented saving and processing of editorial content types.

Corrected an issue that prevented correct operation of the show/hide comments toggle.

Corrected an issue that prevented proper deployment of a new bundle to an existing theme.

Corrected an issue that caused overlays to disappear when adding a slide to a homepage carousel.

Corrected an issue that caused comments to appear in promo descriptions.

Corrected an issue that displayed the Edit Theme widget behind a full-screen rich-text editor.

Corrected a regression error that displayed empty production guides that cannot be closed.

Breaking changes

The permission system can now be consulted from a background task. As a result, the following changes were made:

Previous signatureNew signature
ToolRole#hasPermission(ToolPageContext, String) (removed)ToolRole#hasPermission(String)
ToolUser#(hasPermission(ToolPageContext, String) (removed)ToolUser#hasPermission(String)
ToolRolePermission#(hasPermission(ToolPageContext, String) (changed)ToolRolePermission#hasPermission(String)
SiteSpecificPermissions#hasPermission(ToolPageContext, String, ToolRolePermissionSettings) (changed)SiteSpecificPermissions#hasPermission(String)
ToolRolePermission#hasPermission(ToolPageContext, String) (changed)ToolRolePermission#hasPermission(String)
AreaPermission#hasAreaPermission(ToolPageContext, String) (changed)AreaPermission#hasAreaPermission(String)
DeveloperPermission#hasDeveloperPermission(ToolPageContext, String) (changed)DeveloperPermission#hasDeveloperPermission(String)
SitePermission#hasSitePermission(ToolPageContext, String) (changed)SitePermission#hasSitePermission(String)
TypeOption#hasPermission(ToolPageContext, String) (changed)TypeOption#hasPermission(String)
TypePermission#hasTypePermission(ToolPageContext, String) (changed)TypePermission#hasTypePermission(String)
UiPermission#hasUiPermission(ToolPageContext, String) (changed)UiPermission#hasUiPermission(String)
ToolPermissionProvider#hasPermission(ToolPageContext, String) (changed)ToolPermissionProvider#hasPermission(String)

Administrators can now generate a password reset token from Brightspot. As a result, the AuthenticationEntityWidgetWriter interface signature has changed to add a new (non-default) method update(ToolPageContext page, Object content).

Improvements to Google Analytics import mandated the following changes:

  • On GoogleAnalyticsTaskGlobalSettingsModification, the analyticsImportTaskSchedule field has been deprecated in favor of the new importSchedule field.
  • The data in analyticsImportTaskSchedule is being @Relocate-ed to importSchedule, and any usages of #getAnalyticsImportTaskSchedule() will need to be updated to #getImportSchedule().

Abstraction of AmazonRekognition mandated the following changes:

  • The image-rekognition and suggestions-rekognition modules have been deprecated in favor of the new image-recognition, image-recognition-aws, image-recognition-google, and suggestions-recognition modules.
  • If you have existing Rekognition data, some steps must be taken to ensure existing focus points are not lost and that the project does not incur unnecessary AWS costs due to re-running of Rekognition service. Below are various options.
    • If you do not move to new modules—Everything will continue to function as usual. Old modules will not be maintained from this point forward, and could potentially be removed in future versions. All classes in old modules have been marked @Deprecated.
    • If you do not remove old modules and add new modules—
      • Old focus points from Rekognition will still be applied.
      • New Rekognition settings must be configured, and old settings should be disabled in this case.
      • Any pre-existing Rekognition data on images will be automatically relocated into the new format.
      • Recognition will be re-run on all old images on save unless RekognitionMetadata is migrated to new RecognitionLog.
    • If upgrading to new modules—
      • Rekognition settings must be reconfigured once the upgrade is deployed. Image Rekognition settings are now configured in Sites & Settings under the Integrations Tab, under the Image Recognition cluster.
      • Any pre-existing Rekognition data on images will be automatically relocated into the new format.
      • Any existing focus point data from old Rekognition modules will no longer be applied, meaning that crops might be reset. You can either migrate old RekognitionMetadata to new RecognitionLog, or force re-Rekognize all images.

Updates to the Marketo plugin mandated the following changes:

  • Method signature change: brightspot.form.action.Action#tryAction(FormSubmission formSubmission) to #tryAction(FormSubmission formSubmission, Form form). The new Form parameter is the Form containing the Action having #tryAction called.
  • Model change: MarketoExternalSubmitAction no longer needs any instance variables. The actionLink and submitMethod fields have been removed, along with their respective getter and setter methods.
  • Marketo API Permission change: the SubmitForm endpoint requires the Read-Write Lead (might be called Read-Write Person) be added to the Role associated with the REST endpoint created in Marketo.

The class CssGroup was renamed to Row.

Improving the class inheritance of Editorial Content Types required the following changes:

  • Field names are now checked to make sure that they are valid Java names.
  • The getters and the setters are not generated if the field name is either label or state, as that interferes with the methods defined in Record. To access them in Handlebars, you have to do state.label or state.state.
  • Content type modifications now require a name, since it creates a Modification class. This means that the fields from the modifications are not added until you manually add the names and resave them.
  • Existing editorial content types need to be reindexed or resaved, otherwise they do not appear in the left pane in the content type page.

Updates to Intranet profiles required a refactor of the singular class IntranetUserModification into smaller, more specific modification classes. As a result, the hidden and indexed employeeTypeType field has changed, so projects must run the following script. The script loops over and re-saves the User records.

public class Code {
     public static Object main() throws Throwable {

         Site site = Query.from(Site.class).where("name = ?", "Brightspot Intranet").first();
         if (site == null) {
             return false;

    		.where(" = ?", site)

         return true;

The schema for the CDA and rCDA have changed, and the following elements have been removed:

  • interface Mark
  • type HtmlMark
  • type MarkedText
  • type RichTextMark

For the rCDA, there is an option for backwards compatibility in the form of a Use Marked Text Schema V1 toggle field in the Advanced tab of Recordable API schema settings.

For the regular view CDA, this is a breaking change with no backwards compatibility.

The elements that get you up and running in a matter of days, from pre-built content types, to modules, to landing pages.

Content types
Landing pages
Everything you need to manage and administer content within Brightspot CMS, including plug-and-play integrations.

Admin configurations
A guide for installing, supporting and administering code on the Brightspot platform, including integrations requiring developer support to use.

Field types
Content modeling
Rich-text elements