Brightspot Releases

4.8 releases

4.8 is currently stable


4.8 versions of Brightspot are currently stable. Refer to the 4.8 Product Guide and release-specific information below to see what is available in 4.8.

4.8.9 (latest release)

Significant defects addressed

  • Resolved the issue of the SiteMapEntry news:publication_date timestamp format.

4.8.8

Caution
Brightspot has identified an issue in v.4.8.8 and recommends customers skip this version and upgrade to v.4.8.9 (or latest).

Significant new features

  • Introduced a new AI Audit Widget that provides a snapshot of guardrail violations and AI performance indicators.
  • Added Amazon Bedrock Guardrails features. This new feature has introduced a breaking change. See the "Breaking Changes" section below for more information.

Significant improvements

  • Enhanced user permissions so that Site Categories are now only visible for sites to which a user has access to.
  • Enhanced the SiteMapEntry lastmod field to support full timestamp formatting with both date and time.
  • Added support for customizable report storage settings, allowing projects to specify where report CSVs are stored.
  • Added support for Java 16+.
  • Added the ability to export full URLs—including Permalink, Redirect (Permanent and Temporary), Alias, and CMS edit page URLs—from CMS search results and content reports.
  • Introduced shared provider fields for Ask and Create clients, enabling admins to select from multiple AI models. This improvement has introduced a breaking change. See the "Breaking Changes" section below for more information.
  • Moved Audience dropdown code into the existing Audience plugin.
  • Created an API that enables projects to add custom UI in the top left, next to the item label, replacing the existing Audience dropdown. This improvement has introduced a breaking change. See the "Breaking Changes" section below for more information.
  • Enhanced the BulkVectorIndexLog with additional details including run timestamps, item types to the failed-to-vectorize error messages, and the number of items that failed to vectorize.

Significant defects addressed

  • Resolved an issue where video previews were missing when selecting shared videos for the Lead field in a new article.
  • Resolved an issue where changes to a name made via a content form with a Global scope persisted, even after editing the form’s scope or deleting the form.
  • Addressed an issue where opening multiple links simultaneously could display incorrect previews.
  • Resolved an issue where the Archive button was visible and occasionally functional for users that did not have archive permissions in admin areas.
  • Fixed an issue where escaped markup tags were shown in rich text field diffs when Track Changes were enabled.
  • Resolved an issue where workflow options were missing when editing content revisions in draft or other non-published states.
  • Brightspot now redirects to the published path’s original casing, rather than always lowercasing URLs.
  • Resolved an issue where items filtered with @Where were not appearing in the Hierarchy view for reference fields.
  • Fixed an issue where copying and pasting tables in the same RTE resulted in duplicate colspan and rowspan attributes.
  • Resolved an issue preventing reports from being saved or accessed after importing Adobe Analytics report suites.
  • Fixed an issue where attempting to publish a revision without a publish override would incorrectly reset the workflow, rather than publishing the revision as intended.
  • Fixed an issue where the reset filters button on fullscreen search did not clear selected filters.
  • Fixed an issue where the contents of the Dari HTML <style> element were incorrectly escaped.
  • Resolved different issues while accessing Quick View for different users such as NPE errors and missing Quick View icons for certain users.
  • Fixed an issue where P2E would fail if the data-state attribute was not the last entry in rich text element attributes.
  • Removed an obsolete static database environment reference from TypePermission, replacing it with up-to-date usage of DatabaseEnvironment.getCurrent().
  • Resolved an issue where enabling the debug profiler would display unintended sequence numbers at the top of HTML pages.
  • Addressed issues with the GraphQL Reference Type Filter field so that selecting None now defaults to All Types, and choosing Content correctly includes all relevant content types.
  • Resolved an issue where users having permissions for only a few statuses had only read-only access to content types.
  • Fixed an issue where hierarchy view allowed selection of sections owned by other sites.
  • Disabled the non-functional User Access widget in the platform, ensuring it will only be shown once the feature is fully implemented.
  • Resolved issues with unnecessary spacing and padding in top-level widget messages and class notes.
  • Fixed an issue where redirects were pointing to the last configured permalink rather than the canonical (first) permalink.
  • Resolved an issue where creating a new Revision in environments with AI enabled could result in a NullPointerException.
  • Fixed an issue where QueryRestriction parameters could cause ObjectIdResultPageto display a blank page.
  • Addressed an issue where concurrent requests to GraphQL Content API (GCA) endpoints could fail with NoSuchElementException. This defect has introduced a breaking change. See the "Breaking Changes" section below for more information.
  • Resolved an open redirect vulnerability on the CMS login page that allowed redirection to malicious external sites.
  • Resolved an issue where Recent Activity Filters and Saved Search Filter (in the shelf) failed to filter content types for statuses other than Published.
  • Updated the ValidateEncoding task plugin to support additional human-readable Unicode characters.
  • Create with AI and Ask AI displays a clearer message when the AI Guardrails service is unavailable.

Breaking changes

  • Added new API to AIChatProvider interface: #getModelNameInUse should return the model name that the provider is using. This is used to populate the model column in the audit widget. Additionally, Bedrock Chat Provider implementations of #handleResponse now take in the AiChatRequest as a param in order to record any error and have that information be properly saved on the the request.
  • The AIChatClient#provider field has been deprecated and replaced with AIChatClient#providerOption. Existing provider info will be relocated to the new model automatically.
  • The rendering of Overlay Provider selection is no longer provided by default. Instead, implementations of Overlay are expected to provide their own UI to discover and switch to overlays. Projects with their own custom implementation of Overlay should use this new API to render overlay selection in the title prefix are of the content page. Projects using the audience feature will still function.
  • GraphQLJavaSchemaLoader#profiler was changed from protected to private. GCASchemaTypes#newInstance API signature changed.

    4.8.7

Significant new feature

  • Added a Show AI Content toggle to the rich-text editor toolbar, enabling users to visually identify and review AI-generated text. AI-generated content is now highlighted in blue when the toggle is on, making it easier to proofread and fact-check. Users can also insert AI content directly at their current cursor location within the editor.

Significant improvements

  • Introduced a validation process and Gradle task to enforce UTF-8 encoding for all property files, addressing past issues with character corruption in translations. Project documentation now clearly recommends UTF-8 encoding to ensure consistency and prevent future encoding issues.
  • The Reset button in CMS search now fully clears all filters for the selected content type, even when sticky search is enabled.
  • Added onFind, setupMenuForAria, and toggleMenu functions to window.BRIGHTSPOT.js for experimentation from newer Brightspot versions to 4.5.

Significant defects addressed

  • Fixed an issue where JSON files included in _navigation.config.json were incorrectly assigned the PreviewPage.hbs template, resulting in type compatibility errors. This bug introduced a breaking change. See the Breaking Changes section below for more information.
  • Resolved an issue where Mirror Preview would erratically switch between content and a blank state when a rich text element was opened.
  • Fixed an issue where long URLs in the URLs Widget could occasionally run off the edge of the page.
  • Fixed an issue where links inside pop-up frames would reload the entire page, navigating you away from the underlying page you were editing.
  • Fixed an accessibility issue where the Create New option in ComboInput dropdowns was not keyboard accessible.
  • Resolved an issue where users could create new revisions from revision pages even when draft creation was disabled.
  • Resolved an issue where the CIGtitle-toggle icon did not update its state when toggled in cluster headings.
  • Fixed an accessibility issue where the Bulk Workflow Selected option in the ellipses menu could not be activated via keyboard.
  • Fixed an accessibility issue where the Reset Filters button on the Search page could not be activated using the keyboard.
  • Resolved an issue where rich text enhancements within editorial content types were not rendering correctly based on the view system.
  • Resolved an issue where unscheduling the revision set for a future date did not clear the publish date.
  • Saved search links are now shortened in versions 4.5.x and 4.7.x.
  • Addressed an issue where the report widget would display an empty table with no message when no results were returned. An info-message is now shown when there is no data to display.
  • Fixed an issue where the search keyword could become stuck when Retain all filters and settings was enabled.
  • Added a warning message to the Calendars admin page when a calendar is no longer connected to a user’s profile.
  • Fixed an issue where dragging and dropping multiple articles from The Shelf into the rich-text editor would result in only the last article link appearing.
  • Resolved an issue where data for custom modules could not be viewed using _renderer=json or _renderer=styleguide. This fix introduced a breaking change. See the Breaking Changes section below.
  • Fixed an issue where the Report widget could throw an error if not configured as a ValueReporter or TableReporter.
  • Resolved an issue where the replication cache reported a healthy status despite having stopped receiving updates.
  • Fixed an issue causing read-only fields to be sortable.
  • Fixed CMS image preview functionality to properly handle a URLStorageItem using a URL that contained spaces encoded as + instead of %20.
  • Disabled browser autocomplete for Content Filter inputs across Sites & Settings and Named Revisions.
  • Fixed calendar date/time picker issue that was resetting the selected time to the present time when viewing it after setting it.
  • Resolved an issue where GraphQL Content API endpoint queries could fail with a Failed to load schema error.
  • Fixed an issue where revision validation occurred before a content state was set to be updated by widgets. Since validation occurred before additional changes were made, the additional changes would sometimes survive validation when they should not have.
  • Resolved an issue where theme images with non-absolute src URLs caused errors during the screenshot phase of the build process.
  • Resolved an issue where revisions would at times run validation without first calling beforeSave().
  • Fixed an issue where FieldAccessFilter added comments inside HTML tags that do not support them.
  • Fixed an issue where the banner on revision items would incorrectly show Published instead of Updated during workflow states.
  • Resolved an issue where the notifications were not being rendered when site specific role was set.
  • Fixed JavaScript error that occurred when using the rich-text editor's full screen mode in places other than on a content edit page.
  • Fixed an issue where the title of the conversation widget is partially obscured after adding a comment.
  • Fixed an issue where selecting Reports in the navigation menu would incorrectly highlight the Dashboards item.
  • Addressed an issue causing frequent errors occurred when committing web response in the application logs. This fix introduced a breaking change. See the Breaking Changes section below.
  • Resolved an issue where updated editorial information was not being displayed by PrePublishAction.shouldDisplay upon publishing.
  • Resolved an issue where image URLs with uppercase characters were being converted to lowercase, causing image rendering failures.
  • Fixed an issue where columns containing list values were not being displayed in content reports.
  • Fixed an issue that caused a NullPointerException in the rich-text editor when the AI Plugin was disabled.
  • Resolved multiple integration test failures related to AI functionality in version 4.8.

Breaking changes

  • Projects that used the navigation configuration option to exclude static JSON files that should not be processed (e.g. example API responses from 3rd party) need to now use staticFiles option instead to explicitly mention which files should not be processed.
  • As a result of resolving an issue where data for custom modules could not be viewed using _renderer=json or _renderer=styleguide, the Renderer#render API signature was changed from returning a String to returning a CharSequence. This may impact projects that call that API directly that depend on the return type being a String.
  • The following APIs have been removed:

    • WebResponse#getCookies(String)
    • WebResponse#addCookie(String, String)

4.8.6

Significant defect addressed

  • Resolved an issue where an exception thrown in a method of the ViewModel would prevent the entire ViewModel from displaying.

4.8.5

Significant new feature

  • Implemented AWS OpenSearch as a vector database option for Ask AI.

Significant improvements

  • Addressed connection overflow and rate-limiting errors pertaining to Pinecone.

Significant defects addressed

  • Fixed an issue causing a date selected by a date picker to include a double underline.
  • Resolved an issue where cms.privilege.getConsumers added unnecessary latency on unrelated queries.

4.8.4

Significant new features

  • Added author personas to Create with AI, enabling content creators to specify writing tone and style, ensuring AI-generated content aligns with brand guidelines.

Significant improvements

  • Added conversation history to Ask AI, providing users the ability to access and manage their previous interactions.
  • Improved filter clearing functionality in CMS search so that it works as intended.

Significant defects addressed

  • Corrected an issue when viewing a previous revision that prevented the Name Revision and Compare to Live links from being aligned properly.
  • Resolved an issue that at times prevented Preview to Edit from working.
  • Fixed an issue in which, if a class implements SearchExtension, and a user attempts to save a filter in a saved search, the filter is not re-applied when accessing the saved search in the future, requiring that the user reapply those filters manually.
  • Fixed an issue where preview would at times experience slowness after an upgrade.
  • Fixed an issue causing Styleguide screenshot failures.
  • Fixed an issue causing the caption field, when included in a CMS search, was returned multiple times instead of once.
  • Fixed an issue where rich text alterations caused invalid GraphQL schema (GCA).
  • Improved exception handling so that the behavior is different depending on implementation (i.e., whether an exception is logged or thrown), with an emphasis on having exceptions thrown in GraphQL and other headless implementations.
  • Fixed an issue preventing metadata from being captured when using the OpenAI client with Create with AI.

4.8.3

Note
v4.8.3 is the next Brightspot version after v4.8.1.

Significant new features

  • Introduced footnotes to Ask AI answers. Now, when Ask AI responds to a prompt, it will also cite exactly where it got the information from in the footnotes. Clicking these sources will take you directly to the original source.
  • A user with a role that has the Publish permission, but does not have the Workflow permission, now sees the Publish button on the content edit page of an asset.

Significant improvements

  • Made Ask AI conversations easier to follow and understand by introducing a way to save forked chat request data. This lets users save different versions or paths of their conversations, so they can explore different ideas without losing track of a conversation.
  • While using Create with AI, users now have the ability to use AI on Pre-Publish Actions fields. This feature allows editors to make quick, last-minute changes to content using AI before publishing. Brightspot flags any AI-altered content as being AI-generated.
  • Made saved searches clearer by improving the Contains AI label.
  • Ask AI now offers collapsible references in the Ask AI window.
  • Added an Introspection entry field to the GCA to give programmatic access to the type system. This improvment introduced a breaking change. See "Breaking changes" below for more information.
  • Users are now able to specify where AI prompt suggestions appear at the content type level and at the field level

    • Prompt setup moved: AI prompts are now configured in Sites & settings under AI.
    • Site-wide prompts: Users can create prompts that appear on all pages.
    • Prompt selection/creation: Users can pick existing prompts or make new ones.
    • Content type prompts: Users can add prompts specific to content types.
    • Content type field prompts: Users can add prompts to all fields on a content type.
    • Field-specific prompts: Users can add prompts to individual fields.
    • Prompt hierarchy: Site-wide, then content type, then field-level prompts are shown.
    • No duplicate site-wide prompts: Site-wide prompts do not repeat on specific pages.
    • Embedded content prompts: Linked content shows both site-wide and main page prompts.
  • Deprecated DAM PageServlets related to Collections.
  • Deprecated RichTextToolbarItem.CUSTOM.
  • If content has not been published in more than two days, Brightspot will now generate an empty sitemap instead of no sitemap at all, which resulted in a 404 error.

Significant defects addressed

  • Fixed an issue when creating a table inside of a table that caused table icons to overlap.
  • Fixed an issue preventing changes to data that was relocated from one module type to another to persist after the first save action. Now, changes persist after the first save action after data is relocated from one module type to another.
  • Fixed an issue that caused a page to get stuck in an infinite loop when saving a content template.
  • Resolved an issue by increasing the Lingotek connector locale limit from 300 to 1000.
  • Fixed an issue where live blog posts remain locked in the CMS after a user publishes them.
  • Corrected an issue that saw a WIP message displayed on the content edit page after moving a revision between workflow states or after saving a revision while it was in a workflow state.
  • Resolved an issue causing an error when loading a content edit page after a populated field in a data model changed from a single embedded record field to a list of the same record type.
  • Fixed an issue of Rich Text Editor toolbar drop-down menus flickering while re-sizing the browser window.
  • Fixed an issue in which the images that are dragged from The Shelf were appearing in the wrong order.
  • Fixed an issue where Styleguide was not displaying certain errors.
  • Fixed an issue in which schema description is not removed from GraphQL Schema Definition Language (SDL) when a certain setting was applied.
  • Resolved an issue that caused errors in logs when reloader was triggered.
  • Resolved an issue of not being able to edit inline rich text elements when wrapped in a block rich text element with fields.
  • Fixed an issue where pasting links surrounded by <u> tags into a rich-text editor field was removing the link.
  • Resolved an issue related to a site health alert pointing to a condition which no longer existed.
  • Fixed an issue causing editorial content types to not be properly represented in the GraphQL schema upon schema generation.
  • Resolved an issue where large GraphQL endpoints, due to the length of time it took for them to load, were making other endpoints temporarily unavailable.
  • Fixed an issue that was confusing the view system reflection APIs when searching for the list of properties of a view model. This fix introduced a breaking change. See "Breaking changes" below for more information.

Breaking changes

  • As a result of adding an Introspection entry field, a breaking change was introduced: The GCA field Get > Record > View > Response has an argument named request that has been split into a secondary argument named typed. request used to have a dynamic type name, but now has a more generic and static type name of ViewRequestInput and has a different shape in that it only accepts generic headers/parameters via name/value pairs. All of the ViewModel type specific parameters have been moved to the sibling argument typed that now has the dynamic type name since it holds the type specific arguments.
  • As a result of fixing an issue caused by a getModel method on ViewModel, the viewModel#getModel instance method has been removed, and there is now a new static ViewModel#getModel(Object) method.

4.8.1

Significant new feature

  • Added support for Amazon's Nova models, which offer significant improvements over their Titan series. Support is added for:

    • Amazon Nova Micro
    • Amazon Nova Lite
    • Amazon Nova Pro

Significant improvements

  • In the chat window for both Create with AI and Ask AI, we now support formatting the responses from the model to improve readability for CMS users. The following support is provided:

    • Supports bold, italics, underline, bulleted list and numbered lists.
    • Supports the HTML format.
    • When a CMS user chooses to copy the text via the Copy action in the chat window and pastes the content into a rich-text editor field in Brightspot, the text retains the proper formatting as it was in the chat window.
  • Updated a dependency in Styleguide so that module style screenshots work as intended.
  • Brought more clarity to the integer-type field names to establish the connection between the two fields.
  • Resolved an SSL issue that was preventing the replicator in Tomcat from securely connecting to the Cloud SQL instance.
  • Improved GCA endpoint readability by alphabetically sorting get types in the GraphQL Explorer.
  • Provided a helper method for interacting with an Enum based search filter, similar to the helper method for Record based filters.

Significant defects addressed

  • Fixed an issue where the page focus gets stuck, causing scroll bar to not fully scroll when adding images in the Grid View.
  • Resolved an issue where Scheduled Events Widget pop-up for a single day showed extra items than expected.
  • Fixed an issue causing the Watching Query Restriction not working correctly on the Associated Content widget.
  • Corrected an issue of missing space between workflow comment and the rest of the text.
  • Fixed the issue of days not being announced correctly and dates not giving clear information on a screen reader.
  • Corrected an issue of Amazon Bedrock (Titan model) not recognizing decimal input in the Top P field in Create with AI.
  • Fixed an issue of status messages not being announced by screen readers.
  • Fixed an issue where controls have accessible labels (aria-labels) that are inaccurate or incomplete. This issue had an impact on localization as well, which also got covered.
  • Fixed an issue in which the disclosure/expander widget did not function as intended.
  • Fixed an issue where the form field errors were not properly defined.
  • Fixed an issue causing interactive controls to require a mouse to operate. Users can now use a keyboard as intended.
  • Fixed an issue of controls having inaccurate programmatic role.
  • Corrected controls having long names that were unnecessarily verbose.
  • Corrected the issue of list boxes that were missing a programmatic name.
  • Resolved the issue wherein the Ask AI panel overlapped the side toolbar and preview page of the content edit page.
  • Fixed an issue where paging was broken on Adobe Stock images search results.
  • Fixed an issue of java.util.ConcurrentModificationException error while updating embargo date (of newly embargoed and published article) without changing the scheduled date.
  • Fixed an issue that was causing OutputStreamWebResponseBody not working in ApiEndpoints.

Breaking changes

  • As a result of an effort to track AI-based metadata, a new method was introduced called extractSingleShotResponseMetadata in BedrockChatProvider , which is used for extracting metadata off of responses. Any and all implementations of this class will need to implement this method.

4.8.0

Significant new features

  • GraphiQL Explorer:

    • Removed sorting for root fields, nested fields, and input arguments.
    • Restored the sorting logic for interfaces that was previously removed.
  • Hovering over an image in the preview pane now displays the image's crop name and size.
  • Zapier:

    • Created a Zapier API endpoint.
    • Created a private Zapier integration with Brightspot.
    • Created GraphQL-based search and action Zapier implementations allowing users to create and retrieve assets from Brightspot.
    • Created a Zapier webhook for configuring notification triggers in Zapier. The webhook enables users to select a topic they want to allow Zapier to subscribe to.
    • Added an Admin area in Brightspot for managing the Zapier integration.
    • Created a non-GraphQL-based search implementation for Zapier.
    • Implemented asset-level analytics for Zapier execution. This feature enables editors and admins to validate if an asset is being used, if an asset is working, and if an asset is failing.
  • GraphQL:

    • A new directive @sdl causes GraphQL queries to fetch raw-text schema.
    • The GCA can now create permalinks through mutations.
  • Introduced a new My Activity dashboard widget.
  • Artificial intelligence:

    • Introduced infrastructure for AI chat and Ask AI.
    • Introduced integration with Amazon's Bedrock Claude.
    • Introduced widgets for interacting with AI, such as text fields in the content edit form and searching for assets.
  • Calendar integration:

    • Deployed a top-level framework for integrating calendar services.
    • Deployed a sub-framework for integrating web-based calendar services, such as Google Calendar.
    • Introduced a Calendar dashboard widget.
    • Introduced permissions to the calendar feature at the site, role, and user levels.
    • Deployed Java classes for internal calendars that track scheduled events.
    • Deployed mapping infrastructure between internal and external calendars.
  • Google Calendar:

    • Added a cluster for configuring the Google Calendar integration in Global settings; deployed synchronization rules.
    • Added the package com.psddev.calendar.google for deploying the Google Calendar integration.
    • Added widgets for editors to manage the integration with their Google Calendars.
    • Introduced transmission of new and updated scheduled events and assignments to Google Calendar.
    • Added class DraftGoogleCalendarAutomaticDistributor and interface AssignmentExternalCalendarAutomaticDistributor to manage the transmission of scheduled events and assignments to Google Calendar.
    • Refactored initial Google Calendar integration.
  • Added a side toolbar for Brightspot. This toolbar provides finer control for showing and hiding widgets on the content edit form.
  • Introduced localization to the list of roles in the Unpublished Drafts dashboard widget.
  • Microsoft Outlook Calendar—

    • Added API configuration.
    • Added importation of Outlook Calendars.
    • Added configuration of an Outlook Calendar's appearance in Brightspot.
    • Added removal of Outlook Calendar from Brightspot.
  • Upgraded OpenSaml 2 to OpenSaml 4.
  • Deployed OpenSaml Docker container for local testing.
  • Brightspot no longer caches empty model lists returned from Ask AI and Create with AI.
  • Developers can now add a maximal depth for GCA queries.
  • Deployed a site health framework. Developers can extend the framework to implement customized validations and notifications.
  • Added Google Vertex AI Integration - Gemini as a provider for Chat AI.
  • Added AWS Bedrock Titan as a search and embedding engine provider for Search AI.
  • Added Amazon Bedrock Titan as a provider for Chat AI.
  • Added Amazon Bedrock Llama 2 support for Chat AI.
  • Added Amazon Bedrock Llama 3 support for Chat AI.
  • Added AWS Bedrock Cohere support for Chat AI.
  • Added an asset-level flag indicating that any field within the asset contains AI-generated content. Editors can filter for assets based on this flag's value.
  • Added a field-level flag in the content edit form indicating that the field's content was generated using AI.
  • Actionable notifications—

    • Editors can start/stop watching assets from a notification.
    • Editors can post comments to an asset's conversation from a notification.
    • Editors can advance assets through a workflow from a notification.
  • Automated the generation of page object models during integration testing.
  • Added an API client to retrieve analytics from Adobe Analytics.
  • Added a task for processing analytics ingested from Adobe Analytics.
  • Added reporting for analytics ingested from Adobe Analytics.
  • Deployed infrastructure for directly integrating with Azure Blog Storage.
  • Added ability to configure embeddings for Ask AI via Google Vertex AI.

Significant improvements

  • GraphQL:

    • Classes more performant.
    • Expanded query capability.
    • Expanded access to view system.
    • Enabled access to arbitrary Java methods.
    • Added Java code generator.
    • Merged CDA and CMA into a single GCA API.
    • Restored a Dari profiler response in the top-level query response extensions entry.
    • Special content edit fields were moved behind settings for more control over the returned schema.
    • The fields Query Endpoint View Model Classes and Mutation Endpoint View Model Classes now allow for selecting all available view model classes.
    • Added support for boolean arguments and return types.
    • A GCA static method that returns void now returns null.
    • Admins can configure if an API key is required to query a GCA endpoint.
  • Removed extraneous Auto Awesome icon Magic Button from text fields that do not interact with ChatGPT.
  • In board view, the search panel's current sort field appears in each card. For example, if the search panel is sorted by update date, the update date appears in each asset's card.
  • Improved performance of the References tab in the Content Type widget by implementing DataCache, thereby avoiding unnecessary Query and recursive reference lookups. See "Breaking changes," below.
  • Migrated the class HttpServletRequest to WebRequest. See "Breaking changes," below.
  • Embedded forms now have the same background shading in the header when the form is collapsed. Previously, when an embedded form was collapsed, the header was lost the background shading.
  • Improved accessibility and usability of the rich-text editor's find/replace toolbar.
  • The internal precision of an asset's scheduled publication date has been reduced to minutes, reflecting what is visible in the date picker. (Previously the precision was stored at the selected date:hour:minute, and additional seconds and milliseconds were included based on the time the editor clicked Set in the date picker.)
  • Refactored classes in the package com.psddev.translation (and subpackages) to facilitate integration with future translation services.
  • A setting is now available to ensure the Name field in the Name Revision widget is required.
  • A role with publish override permission now sees read-only workflow statuses to which that role does not have permission. For example, an article has remaining statuses Review, Proofread, and Publish. An editor has permission only to publish the article using Publish Override. When the editor opens the Workflow widget, the statuses Review and Proofread are read-only labels, giving the editor an indication that clicking Publish Override skips those two statuses.
  • Added a permission for allowing editors to restore an asset from archive to live. This setting prevents an editor without this permission to publish from effectively publishing an archived asset.
  • Moved the permission for Manage Reports from Additional Permissions to UI.
  • Removed GuideField.js as its features were implemented in TypeScript.
  • Updated Gradle to v8.6.
  • Reduced build times in GitHub Actions.
  • Refactored code to avoid false positives in Sonar checks.
  • Upgraded Playwright to 1.41.2.
  • Refactored and simplified the method DashboardWidgetPage#doService.
  • The list of workflow transitions is now alphabetized when opening the list box Edit Tool Role > Permission Settings > Types > Actions > Only or All Except.
  • Exposed AWS credentials version 2 for AWS authentication.
  • Coded the rich-text toolbar for Brightspot version 5.
  • Enabled integration tests for releases 4.8 and 5.0.
  • When Solr search data is not cached, Brightspot now searches only the default original database instead of traversing the entire database stack.
  • Added support for MySQL 8. See "Breaking changes," below.
  • Notifications for the Content Reporting topic have been expanded to filter based on combinations of event, site, and creator as well as combinations of report configuration and event.
  • Added the query parameter _callers to URLs to display levels in a stack trace. For example, with _callers=10, the profiler provides 10 levels of stack trace.
  • Added a system-wide limit to the number of assets that can be exported from each report in the Reports widget. This limit is configured in the context.xml setting brightspot/contentReporting/reportLimit.
  • The task initiated by clicking on Run Report in an Edit Report widget is now asynchronous. Editors no longer experience a UI freeze when the run time is longer than a few seconds. Editors can view the report by clicking the Last Run link or by selecting more_horiz > Recent Reports in the Edit Report widget.
  • Expanded and enhanced integration test APIs.
  • Added an integration test for pre- and post-publish actions.
  • Increased the size of the runner for Github Actions.
  • Expanded testing to Firefox and Safari to detect if browsers are retaining outdated cookies.
  • Improved keyboard navigation inside a reference field's list of assets. Specifically, after pressing the right arrow key to focus on the favorite icon star_border, pressing the up/down, escape, and tab keys now have expected behaviors.
  • Integration tests:

    • Added integration tests for paging, a dependency for content template bulk editing.
    • Added integration tests for sticky search.
    • Added integration tests for content reporting.
    • Added integration tests for Playwright 1.41.2.
    • Added integration test for content edit forms that appear when clicking the edit icon edit.
    • Added integration tests for paging, a dependency for content template bulk editing.
  • Content reporting:

    • Improved error handling and reporting.
    • Added ability to select individual options in the New Report widget, Data Supplier > Content Query > Display Fields.
    • In the Data Supplier field, the Top Content option is hidden if there are no corresponding applicable values.
    • Added ability to track report configurations.
  • The field Dropbox Application Key was removed from the core product. This field is now available only for those instances that explicitly activate the Dropbox feature.
  • Editors can create contextual edits on images in the rich-text editor. For example, Adam embedded a shared image inside the rich-text editor. Adam now has the ability to edit this image so it appears differently in the rich-text editor, but appears as the original image everywhere else it is used.
  • The Java Server Page file.jsp was migrated to the FormInput class.
  • The contextual image editor is no longer available for images of format .svg.
  • After deleting a workflow status, an asset's revision history displays the status's name (instead of its UUID), and assets in that deleted status are returned to draft.
  • Comparison between two revisions' rich text is now more granular.

    • When ordered or unordered lists are changed, comparing from one revision to another highlights only the changed text. (Previously, the entire list was highlighted as a change.)
    • When text within a table is changed, comparing from one revision to another highlights only the changed text. (Previously, the entire table was highlighted as a change.)
  • When viewing a comparison between two revisions, the styling and behavior of information icon info is now more intuitive.
  • AI permissions:

    • Admins can enable/disable AI chat functionality at the Global site level, and can override that setting at the individual site level.
    • For a site with AI chat functionality enabled, admins can further limit the site's associated roles that can access that functionality.
  • Embedded fields with no associated values now have appropriate placeholder text. For example, if there are no polling triggers for a Zapier endpoint, the field Polling Triggers shows None.
  • The HTML rendering of collapsible widgets inside the content edit form (such as URLs) is modified so that they behave consistently.
  • Further coded the rich-text toolbar for Brightspot so that it appropriately shows or hides icons depending on window size.
  • Removed BulkWorkflow.js as its features were implemented in TypeScript.
  • Enhanced the Alteration class to account for alteration of abstract classes.
  • Moved the cms-type dependency from graphql-api to graphql-cma-cda.
  • Generation of Javadocs now includes annotations.
  • The method DimsImageUrlBuilder#build now uses the method getBaseUrl() instead of the property baseUrl. This change facilitates the creation of subclasses that process image URLs.
  • Added ability to vectorize existing content in Brightspot.
  • If an editor cannot save an asset in its current workflow status, or cannot advance an asset to the next step in a workflow, then the content edit form is read-only for that editor. This improvement avoids scenarios in which an editor makes changes to an asset but cannot save them due to insufficient permissions.
  • Improved the user experience for adding and managing calendars.
  • The method JspUtils#createCookieSignature now accepts as a parameter a literal for a user-selected hash algorithm. Previously the only available hash algorithm was SHA-1, which is now considered insecure.
  • Improved the user experience for working with Adobe Analytics reports.
  • The CreateShared class has a new static method create for creating shared previews. This method provides for better integration with GCA queries.
  • Updated the Facebook oEmbed API to v20.0.
  • URLs used for applying watermarks now use the AES/GCM/NoPadding mode of operation instead of the less secure AES/ECB.
  • Added a GraphQL Explorer action to automate creation of static persisted queries.
  • Disabled external entity resolution in the SAML XML parser, thereby helping to prevent XML eXternal Entity (XXE) attacks.
  • Replaced the class org.apache.commons.lang3.RandomStringUtils with org.apache.commons.text.RandomStringGenerator to more securely generate API keys.
  • Replaced the class org.apache.commons.lang3.RandomStringUtils with org.apache.commons.text.RandomStringGenerator in the GraphQL explorer to more securely generate nonces.
  • Replaced the function HMAC SHA-1 with HMAC SHA-256 to more securely generate a Tool User Time Based One Time Password.
  • Improved performance of database initialization when instances of legacy types contain references to other objects.
  • In GCA, different view types can now be fetched via variables instead of being intrinsic to a query.
  • Added integration tests for previewing an asset from the right rail.
  • Added a GraphQL Explorer action to take the user back to the endpoint's configuration.
  • Added integration tests for the right-rail toolbar.
  • Added integration tests for POST search requests.
  • Improved the usability of the GraphQL code generator.
  • Restored the ability to specify a proxy when running yarn server:styleguide.
  • Renamed the label Chat with AI to Create with AI.
  • Increased the width of the Ask AI chat window.
  • Improved appearance and function of the Calendar widget.
  • A Users widget is now available in the content edit form's right rail to restrict individual assets to specific users.
  • Admins can configure prompt suggestions for AI Clients. Editors see these suggestions when engaging with AI Chat in the content edit form.
  • Links in the Saved Searches widget now have shorter URLs, making them easier to share with other editors.
  • Notifications pertaining to publishable assets now include a link to open the asset's shared preview.
  • Deployed improved rendering of Slack notifications.
  • Deployed improved rendering of Teams notifications.
  • Deployed improved rendering of email notifications.
  • Established a dedicated integration test site that accommodates any content type, not only those in the production environment.
  • Improved view model and other front-end processing to enable developers to build custom modules using editorial content types.
  • Added improved monitoring of timeouts during GraphQL retrievals.
  • Added classes for generating different preview types from GCA retrievals.
  • Improved the presentation of a chat in the Ask AI widget.
  • In the Ask AI widget, the start of a response is now initially visible, instead of the end of the response. Editors no longer need to scroll up to start reading the response.
  • Improved styling and layout of the Conversation widget in the content edit form's right rail.
  • Improved integration testing for the screen shot API.
  • Improved logging output when an integrated AI service fails to perform an action.
  • Updated the OpenAI client to its latest version.
  • Implementations of DateTimeRange no longer need to look for a resource bundle. This improvement avoids fully qualified class names from appearing in the search panel's date filter.
  • If an asset or administrative object does not have a preview, the associated notifications no longer include an Open Preview control.
  • In the method ViewClassFieldDefinitons#getFieldValueTypes, if a JSON field is a map of key-value pairs, the return value is now a set containing two types: string and any object type. See "Breaking changes," below.
  • The method ViewModel#findViewModelClassHelper now requires a model's class as a parameter instead of a model object.
  • Added GCA support for multiple query complexity managers, default implementations, and admin configuration.
  • Upgraded Github runner for Antithesis, addressing the run-time error System.IO.IOException: No space left on device.
  • Refactored RichTextTransformerPage so that it extends ToolPage instead of PageServlet.
  • Improved the class EditorialGCASchemaSettings and associated classes: removed extraneous methods, added new UI controls and associated classes, added/improved comments, etc.
  • For consistency, changed a package name from com.psddev.bedrock to com.psddev.aws.bedrock.
  • Ask AI now restricts its responses to the current site; while in the Global site, responses pertain to all sites.
  • The HTTP response status code is now 500 for GraphQL schema load failures.
  • Improved the readability of the error message that appears when an editor submits too many questions in the Ask AI widget.
  • In the Revisions widget, a clearer presentation is now available for revisions by audience.
  • Deployed a security update required by AP Images. For details, see Important API Security Updates.
  • Added state information to logs for better diagnosis of replication cache failures.
  • The Shelf has been recoded to allow for more customizations.
  • Improved the form of the ping command used to determine if a database is available.
  • When configuring a content report using a content query, the list Display Fields now includes an extra identifier if several fields have the same name. If previously the editor saw the field Description twice in the Display Fields list, now the editor sees Description (description) and Description (cms.seo.description).
  • Updated the class ContentEditPage so that its methods return more compact URLs. Previously the methods returned unnecessarily long URLs with many query parameters set to false.
  • Improved field filtering in GCA editorial schemas.
  • Added a message to the content edit form clearly indicating that using AI Chat to develop an asset incurs charges from the AI provider.
  • Added a warning message to the Report widget that appears when an incorrect configuration prevents Brightspot from running the report.
  • Added a copy control content_copy in the Ask AI widget so editors can copy the response from the AI provider.
  • Localized prompts now appear in the various AI widgets.
  • Improved the way that content types that implement Hierarchy are displayed when surfacing as Hierarchy View search results in both Brightspot search and in the content picker, resulting in a more cohesive and less confusing UI.
  • Added the ability to add internal or external links to CMS-wide broadcast messages.
  • GraphQL improvements:

    • Removed queries that are too long to be a part of a valid URL from the URL when automatically constructed in the GraphQL explorer.
    • Added saved query and shareable query support in the GraphQL explorer.
    • Added permissioning to the GCA editorial interface.
    • Added in-schema docs to the GCA.
    • Added mutations for performing workflow actions on content and for moving content from an unpublished state to a published state.
    • Reserved the names of built-in GCA mutation content action types so that they are not appended with naming-conflict-resolving-suffixes (for example, PublishAction1). Now, this mutation content action type would be reserved as PublishAction.
    • Improved how ObjectType queries work in the GCA (specifically how they resolve and how they are found when using Get > Record).
  • Converted search.jsp to a tool page. This improvement introduced a breaking change. See the "Breaking Changes" section below.
  • Fixed duplicate recent search links in the recent searches widget of the search panel.
  • Ask AI/Create with AI improvements:

    • Refactored vector database.
    • Replaced deprecated OpenAI SDK with an Azure-based SDK.
    • Added ability to cache Bedrock clients, helping with connection pool issues that may occur with many parallel requests.
  • Improved display of errors when they exist in nested widgets in the Side Toolbar.
  • Improved the display of an error that can appear in Sites & Settings when duplicate Site URLs exist.
  • Added ability for external users to send a secure Reset Password email to the email associated with CMS tool users.
  • Improved the display of notifications that reference content that has since been deleted. Instead of showing the content's UUID, the notification will simply display the unlinked name of the content.
  • Added ability to clear individual notifications from the CMS (located behind notifications).
  • Removed an unnecessary parameter from the Notifications Actions API.
  • Made changes to keep Brightspot compatible with Lingotek as a result of a recent authentication mechanism change.
  • Backported translation functionality to better indicate which pieces of content are translations of one another.

Significant defects addressed

  • Corrected an issue preventing display of a material icon in the Icon field of the New Content Type widget.
  • Corrected an issue preventing proper update of default placeholder text. For example, a Byline field's default placeholder text is an asset's author. Deleting the author from the asset did not remove the author from the Byline field.
  • A role with publish override permission now sees read-only workflow statuses to which that role does not have permission. For example, an article has remaining statuses Review, Proofread, and Publish. An editor has permission only to publish the article using Publish Override. When the editor opens the Workflow widget, the statuses Review and Proofread are read-only labels, giving the editor an indication that clicking Publish Override skips those two statuses.
  • Corrected an issue causing incorrect sequencing as specified in the @ToolUi.FieldDisplayOrder annotations when that annotation is used in class T and also used in class Alternation.
  • Corrected an issue causing incorrect text display as specified in the @Recordable.DisplayName annotations when that annotation is used in class T and also used in class Alternation.
  • Corrected an issue causing incorrect application of recordable annotations to modified and target classes. For example, applying the @Recordable.Embedded annotation to Modification embedded both class Modification and class T in a parent class.
  • Corrected an issue causing copied dashboards to display the original dashboard's headings. For example, Sue creates Dashboard A has a widget named Sue's Reports. Sue copied the dashboard to Dashboard B, and renamed the widget to Sam's reports. When using Dashboard B, the widget Sue's Reports remained.
  • Corrected an issue preventing recently used modules from appearing in the module picker's Recently Used list.
  • Corrected an issue preventing an option from being marked as a favorite in drop-down lists.
  • Corrected an issue causing delays of up to five minutes in cache replication.
  • Corrected an issue preventing closing of a Quick View widget after clicking refresh refresh or changing search filters.
  • Corrected an issue preventing correct sorting of users in the Search Tool Users widget.
  • Corrected an issue causing delays in rendering large tables in the rich-text editor.
  • Corrected an issue preventing the closing of widgets when pressing Escape. This behavior occurred when a selection field (such as Any Content Type in the search panel) had focus.
  • Corrected an issue causing the Quick View icon info and associated widget to appear in the search panel's board view for content types not configured for quick view.
  • Corrected an issue throwing TestAbortedException errors during integration testing of the Content Templates dashboard widget.
  • Corrected an issue allowing possibly excessive scopes in the Google Drive integration.
  • Corrected an issue causing the search panel's hierarchy view to always display both tags and sections even when filtering on only one of them.
  • Corrected an issue causing multiple selections to be cleared. For example, an editor selects two options in a selection field, and then types in the field to locate additional options. After typing in the field, the previous two selections are lost.
  • Corrected an issue preventing bulk-uploaded images inside a parent asset from being published when the parent asset is published. For example, in a new article, an editor inserts a gallery in the rich-text editor, and bulk uploads several images into the gallery. Publishing the article did not simultaneously publish the uploaded images.
  • Corrected an issue preventing the method RtcEventUpdateNotifier#onChange from generating NullPointerException errors.
  • Corrected an issue causing case-sensitive sorting of workflow statuses in the Workflow widget. For example, an editor creates an asset, and then opens the Workflow widget. The available statuses were sorted A–Z and then a–z.
  • Corrected an issue causing the rich-text editor to mark correctly spelled words as incorrect, and incorrectly spelled words as correct.
  • Corrected an issue preventing correct rendering of fields of type Set in content edit forms.
  • Corrected an issue causing the method ReportStorage#createAccessLink to directly download objects instead of rendering download links.
  • Corrected an issue causing clusters with only hidden fields to appear as expandable ( keyboard_arrow_down control) or collapsible (keyboard_arrow_up control).
  • Corrected an issue returning a Service Unavailable status when multiple editors are searching for assets through the search panel.
  • Corrected an issue causing the React Developer Tools extension in Chrome to throw extraneous errors to the browser's console.
  • Corrected an issue throwing a NullPointerException when selecting several assets in search results and then clicking more_horiz to open the search actions menu.
  • Accessibility:

    • Added labels, descriptive text, and announcements to fields as required.
    • Corrected inconsistent field labels and screen announcements.
    • Improved keyboard accessibility and announcements for the image editor.
    • Corrected announcement for AI chat icon.
    • Recast duplicate 
       headings in various widgets and forms.
    • Ensured the audience menu in the content edit form is keyboard accessible.
    • Ensured focus is applied to fields associated with the add_circle_outline control. For example, when adding tags to an article, clicking add_circle_outline ensures the focus moves to the newly opened field.
    • Ensured focus is applied to fields associated with the edit and Back controls. For example, in an article, clicking edit to edit a tag opens an Edit Tag form and applies focus to the Display Name field; clicking Back applies focus to the originating tag field.
    • Added keyboard accessibility to the pagination controls chevron_left and chevron_right in the date picker.
    • Ensured the order of screen reader announcements matches the visual layout of the content edit form.
    • Added announcement for the name of date fields, such as Embargo Date.
    • Added announcements for the Expand All unfold_more control as well as for successfully removing an item from a list.
  • Corrected an issue causing improper placement of the success message in the Post Publish Actions widget.
  • Corrected an issue preventing the appearance of Is Missing in the search panel's content-type specific filters.
  • Corrected an issue preventing a content template from populating its fields when that template is embedded in a parent asset.
  • Corrected an issue causing the number of suggestions in the Add Section widget to exceed the limit set in Edit Global > CMS > Suggestions > Number of Suggestions.
  • Corrected an issue causing selection fields to display an enum's constants that are annotated as @Deprecated.
  • Corrected an issue preventing display of the Post Publish Actions widget for assets on the Global site.
  • Corrected an issue causing contextual edits to a shared image to replicate to all instances of that shared image in the same asset.
  • Corrected an issue preventing correct initialization of notification payloads, which in turn prevented proper transmission of notifications.
  • GraphQL:

    • Corrected an issue causing GraphQL codegen to generate code that did not resolve type name IDs properly.
    • Corrected an issue causing GraphQL codegen to generate code that annotated primitive fields with @NotNull.
    • Corrected an issue causing queries along the path Query/Records/from/type to return old or incorrect data.
    • Corrected an issue causing GraphQL codegen queries to fail on SDLs lacking a mutation field.
    • Corrected an issue causing GraphQL codegen to throw a compile-time error when a root type's field did not have arguments.
    • Corrected an issue causing GraphQL view requests to fail for view models containing the @CurrentPageViewModel annotation.
    • Corrected an issue causing GraphQL queries missing an operation type to throw a NullPointerException.
    • Corrected an issue causing GraphQL to throw a NullPointerException when when a GraphQLSchemaLoader implementation returns null from getPreDataFetchListener().
    • Corrected an issue causing ViewRequestInput to have no effect on ViewModel parameters.
    • Corrected an issue causing the method getLocations() to return missing directive locations which in turn created invalid schema.
    • Corrected an issue preventing the GraphQL Persisted Query Request Data widget from loading cURL and wget options.
    • Corrected an issue causing fields to appear in a GraphQL editorial endpoint even though those fields were excluded from the endpoint's configuration.
  • Corrected an issue causing an error 404 when a new user attempted to change a password during first login.
  • Corrected an issue causing error 404 when clicking on an asset in the References widget. Specifically, when an editor created a shared module, and added that module to a parent asset. After refreshing the shared module, the parent asset appeared in its References widget. Clicking on that parent asset's link threw an error 404.
  • Corrected an issue preventing localizing the message Are you sure you want to leave this page? Unsaved changes will be lost..
  • Revisions widget: Corrected an issue causing the Revisions widget to disappear after toggling Only show named revisions or clicking the pagination controls chevron_leftchevron_right; corrected an issue throwing an error 404 after clicking Edit Live.
  • Corrected an issue causing a blank popup to appear after clicking one of the create buttons in a landing page's Associated Content cluster. For example, in a podcast's landing page, clicking Podcast Episode displayed a blank popup.
  • Corrected an issue preventing rendering of hotspots on images when those hotspots have a @DisplayName of anything other than Pin.
  • Corrected an issue preventing labels from appearing in hotspot pins.
  • Corrected an issue preventing a border from appearing around the Recent Searches widget when tabbing through the search panel.
  • Corrected an issue causing a phrase in the search field that was surrounded in quotation marks to ignore all filters and return all assets. For example, searching for "cms workflow" returned all assets, not just those identifiable by the phrase cms workflow.
  • Corrected an issue causing loss of context in the search panel after clicking refresh. For example, clicking search in the Users widget opens the search panel with filters applicable for users. Clicking refresh removed those user-specific filters.
  • Corrected an issue preventing a deleted watcher from being added again without reopening the View Watchers widget. For example, Adam inadvertently deleted Olivia from an asset's watchers list. The only way Adam could add Olivia back to the list is to reopen the View Watchers widget and then search for and select Olivia.
  • Corrected an issue preventing the conversion of a list from basic to advanced. For example, an editor added videos to a basic playlist. When converting the playlist to advanced, the added videos did not appear in the list.
  • Corrected an issue preventing expected operation of the annotation @Ignored(false).
  • Corrected an issue causing incorrect layout of the preview pane.
  • Corrected an issue causing a filtered search field to become empty after typing a space. For example, in the Authors field, typing Adam displayed all the authors starting with Adam. After typing a space, the list of matching authors was empty.
  • Corrected an issue causing all Material icons within Brightspot to appear in their solid version even when not selected. For example, the favorite icon star_border always appeared solid even when not toggled on.
  • Corrected an issue preventing the typing of an HTML hex code in the color picker.
  • Corrected an issue preventing editing text in the rich-text editor when entering full-screen mode with the preview pane open.
  • Corrected an issue causing incorrect layout of the warning messages appearing under search fields in the left rail. For example, when selecting menu > Content Templates, if there are no content templates, the warning message No matching items was not laid out correctly.
  • Corrected an issue throwing an error in The Shelf. Specifically, after saving a search for an external type (such as YouTube Video), opening The Shelf and selecting Recent Activity > Saved searches threw a NullPointerException.
  • Corrected an issue preventing the publication of a video when the provider was HTML5.
  • Corrected an issue disabling the Format menu when an X (formerly Twitter) post is embedded in the rich-text editor.
  • Corrected an issue causing a hyperlink in the rich-text editor to be applied to all selected characters except the last one.
  • Corrected an issue throwing a NullPointerException error to appear in a dashboard's Reports widget.
  • Corrected an issue preventing updates to scheduled revisions from being saved. For example, an editor created a new revision of a homepage, and added a module to the contents. The editor then scheduled this revision. Subsequently, the editor removed a module from the scheduled homepage's contents, and scheduled this new revision. The removed module still appeared. See "Breaking changes," below.
  • Corrected an issue preventing population of the Suggestions widget when both annotations @ToolUi.Suggestions and @Where are present on a Set field. See "Breaking changes," below.
  • Corrected an issue preventing usage of editorial content types during CloudSQL maintenance.
  • Corrected an issue allowing an admin to restore a site without permission to do so.
  • Corrected an issue preventing correct styling of the menu to add hotspots.
  • Corrected an issue causing the preview pane's width to equal the content edit form's width on initial load.
  • Corrected an issue that caused the method SegmentationDatabase#personalize to trigger a large number of extraneous reference resolves.
  • Corrected an issue that did not account for the Zip Slip vulnerability. A security check now exists to detect and avoid this vulnerability.
  • Corrected an issue throwing JavaScript errors when clicking edit to open the Edit Post widget in an asset's Conversation cluster.
  • Corrected an issue throwing a Paths must be unique error even after deleting the duplicate path from an asset.
  • Corrected an issue causing the rich-text editor to accept changes beyond any text actually selected.
  • Corrected an issue preventing setting permissions on content types for a copied role. For example, Adam added permissions for the Image content type to the role Reporters. He then copied the role Reporters to a new role Proofreaders. Next, he changed the Proofreaders permissions for the Image content type to Video and saved the role. The permissions for Video were not saved.
  • Corrected an issue preventing rCDA schema generation when a field's internal name has a prefix containing a dash. For example, a prefix declared as String PREFIX = "brightspot.custom-components." prevented schema generation.
  • Corrected an issue in which View ID appeared in the error message Credentials and View ID must be populated in order to make requests while authentication with Google Analytics 4. View ID was replaced with Property ID.
  • Corrected an issue causing fields of type java.time.OffsetTime to be ignored in publication dates.
  • Corrected an issue causing cluster labels to display on two lines when a validation error occurs inside that cluster.
  • Corrected an issue throwing a NullPointerException in The Shelf when one of The Shelf's labels are null.
  • Corrected an issue in which the StateWalker class was calling the deprecated RichTextElement.fromElement(Database db, Element element) method. The class now calls RichTextElement.fromElement(Recordable parent, Element element).
  • Corrected an issue preventing an image's Hotspots tab from displaying correctly.
  • Corrected an issue preventing preview-to-edit containers from rendering fields correctly when those fields do not have a valid preview.
  • Corrected an issue preventing an asset's revision URL from being stored when that revision was created.
  • Corrected an issue causing user sessions to unexpectedly end.
  • Corrected an issue in which an impersonated editor became the active editor. For example, Adam impersonated Olivia. When Adam clicked Stop Impersonating, Olivia became the active editor instead of Adam.
  • Corrected an issue preventing admins from saving a header background color at the global level.
  • Corrected an issue incorrectly assembling a URL after clicking help to open a field's developer text.
  • Corrected an issue preventing proper closure of the Bulk Workflow widget in the search panel.
  • Corrected an issue preventing the method ToolUi#setHidden() from actually showing or hiding fields and clusters.
  • Corrected an issue preventing an asset's state to update if a Set field has dynamic placeholder text.
  • Corrected an issue preventing the removal of images from a gallery.
  • Corrected an issue preventing contextual image edits from carrying over when copying the containing asset to a new asset.
  • Corrected an issue preventing proper post-publish placement of an asset inside a parent asset's lists. For example, an editor created a homepage whose contents are a module. The editor then added a list List 1 to the module. The editor then copied List 1 to List 2. Next, the editor created an article, and in post-publish actions added the article to List 1. The article was also added to List 2.
  • Corrected an issue preventing selection of Any Content Type in the Recent Activity widget.
  • Corrected an issue preventing inclusion of response headers added with response.addHeader inside an overridden ViewModel#onCreate.
  • Corrected an issue preventing population of GCA schema WebParameter fields in view models when using the endpointViewType schema setting.
  • Corrected an issue preventing population of widgets inside the content edit form's right rail.
  • Corrected an issue preventing proper use of database schema for Solr 9.
  • Corrected an issue preventing methods in the class UrlBuilder from properly decoding query parameters.
  • Corrected an issue causing an extraneous control keyboard_arrow_up to appear above the message You are currently editing .
  • Corrected an issue preventing proper rendering of the search panel's board view when viewing abstract content types in status Draft. (An example of an abstract content type is All Article Types that includes concrete types Article, Listicle, and Blog Post.)
  • Corrected an issue causing localized Spanish labels to appear garbled.
  • Corrected an issue in which the Restore widget (containing the buttons Restore to Draft and Restore to Live) was rendered too wide.
  • Corrected an issue throwing a NullPointerException when clicking more_horiz > Swap in the content edit form. Specifically, when a homepage has a module as a lead, clicking more_horiz > Swap in the module threw this error.
  • Corrected an issue preventing successful drag-and-drop between columns in board view when the search panel was opened from the content edit page. For example, an editor is working on an article. The editor opens the search panel, adjusts the filters, and displays the results in board view. The editor could not drag and drop assets from one column to another.
  • Corrected an issue preventing proper conversion of a Zapier GraphQL query or mutation to Zapier input fields.
  • Corrected an issue throwing an error message when attempting to add an asset on the content edit page to a collection.
  • Corrected an issue causing the Publish button to be disabled but the Publish Override control to be visible. Specifically, an asset is in the status before Publish, and an editor has access to the Publish status. The Workflow widget did not display the expected control Publish, and did display Publish Override.
  • Corrected an issue involving mixed versions of the dependency com.fasterxml.jackson.core:jackson-core in build configuration and runtime .gradle files.
  • Corrected an issue preventing the Copy With Updates feature from synchronizing copies of assets between sites. For example, an editor published Article 1 on Site A. The editor changed to Site B and selects more_horiz > Copy With Updates, creating Article 2. Updates to Article 2 were not carried over to Article 1.
  • Corrected an issue throwing an UnsupportedPredicateException when performing queries on sites with the toggle All Sites Accessible set to on.
  • Corrected an issue preventing methods configured in GraphQL Content API > Static Methods from appearing in the GraphQL explorer. Specifically, this error occurred if the method accepted a parameter of type UUID.
  • Corrected an issue preventing interfaces or abstract content types annotated with @Hidden(false) from appearing in the search panel's filter of content types.
  • Corrected an issue incorrectly removing a user's access to the Sites & Settings area.
  • Corrected an issue causing screen readers to announce a checkbox instead of a switch when the focus was on a toggle.
  • Corrected an issue causing the method JspUtils#getAbsoluteUrl to return an http URL when an https URL is available.
  • Corrected an issue causing a GCA schema load to fail when a record uses an unbounded generic type mapped to a field. Specifically, a data model uses a generic type parameter a) mapped to a field (or non-ignored method) and b) is unbounded (e.g., T extends Object). In addition, at least one sub-class exists that maps the generic to a type more specific than Object. In this scenario, the GCA schema failed to load.
  • Corrected an issue causing a post or a reply to an asset's conversation to a) make duplicate API calls and b) change in the content edit page's DOM structure.
  • Corrected an issue causing a secret field's value in an editorial content type to appear as cleartext.
  • Corrected an issue preventing proper layout of The Shelf when a) an asset in The Shelf has a content type label that wraps or b) when the Watching field is truncated.
  • Corrected an issue causing text to wrap mid-word in the rich-text editor for an asset's conversation posts.
  • Corrected an issue preventing editors from opening an asset from the Editorial Calendar widget. For example, an article scheduled for tomorrow appears in the Editorial Calendar widget. Clicking on the article displayed the article's preview, but there was no active link to open the article in the content edit form.
  • Corrected an issue causing the rich-text editor to duplicate enhancements instead of updating them. For example, opening an embedded image, modifying it, and then saving it caused the rich-text editor to retain the original image and add the modified image.
  • Corrected an issue throwing a io.grpc.StatusRuntimeException when attempting to use Pinecode with Azure Blob storage.
  • Corrected an issue throwing a NullPointerException when attempting to update a database vector cache for Ask AI.
  • Corrected an issue causing the task ./gradlew japicmp:japicmp to fail due to missing page object models.
  • Corrected an issue preventing publication of assets when Pinecone was configured as the vector database provider for Ask AI.
  • Corrected an issue causing the method AIChatSettings#getCurrent to throw a NullPointerException when initializing Brightspot with a new database.
  • Corrected an issue causing the Ask AI widget to disrupt the placement of a broadcast message.
  • Corrected an issue causing the Ask AI widget to throw an intermittent RuntimeException.
  • Corrected an issue preventing importation of subscribed calendars from Google Calendar. For example, editors were not able to import a Google Calendar Holidays in United States.
  • Corrected an issue preventing the use of string literals in GraphQL queries backed by selection fields in an editorial content type. Specifically, if an editorial content type included a select field, then submitting a GraphQL query filtering on the value of the select field (such as issueType: "Bug") threw a validation error.
  • Corrected an issue preventing GCA type resolution for embedded fields of disparate types. For example, a field List foo is annotated with @Types({ Bsp16620Foo.class, Bsp16620Bar.class }). Queries retrieving the value of foo failed.
  • Corrected an issue preventing proper rendering of an RSS feed when the corresponding section has a URL ending with a forward slash (such as /firstsection/).
  • Corrected an issue preventing proper rendering of a post's history in an asset's Conversation widget.
  • Corrected an issue preventing persistent disabling of the Crosslinker.
  • Corrected an issue preventing proper listing of assets in The Shelf when filtering by a role.
  • Corrected an issue preventing Brightspot from populating all iframe elements in the preview pane.
  • Corrected an issue causing a parent asset's preview control remove_red_eye to disappear and a NullPointerException message to be thrown when a child asset's content type is not available.
  • Corrected an issue causing a certain combination of workflow and permissions to incorrectly give a user the publish permission.
  • Corrected an issue throwing a NullPointerException when attempting to drag an asset from The Shelf onto the content edit form.
  • Corrected an issue causing the method Query#format to output nothing.
  • Corrected an issue causing incorrect rendering of an asset in the preview pane, but correct rendering on the live front end.
  • Corrected an issue causing incorrect behavior of an image's Source Data widget.
  • Corrected an issue preventing an editor from properly saving a module in the rich-text editor. For example, in the rich-text editor, an editor created a pull quote. With the pull quote's module layered on top of the rich-text editor, the editor was able to close the entire asset, losing text entered in the pull quote.
  • Corrected an issue preventing re-importation from a Google Drive file.
  • Corrected an issue causing error messages to appear in the Edit Site widget after deleting an embedded content type used in an editorial content template.
  • Corrected an issue causing a content type to appear twice in the field New GraphQL Content API > Schema Settings > Read/Write Content Types. The content type appeared once in the Main list and again in the Supertype list.
  • Corrected an issue preventing correct operation of the spell checker when track changes is toggled on.
  • Corrected an issue preventing display of controls to add hotspots in the image editor for new hotspot modules.
  • Corrected an issue rendering the AI magic icon  for fields that did not interact with AI.
  • Corrected an issue causing GCA mutations to fail for existing embedded objects.
  • Corrected an issue causing TypeScript tests to fail.
  • Corrected an issue throwing an error when using GCA to fetch view models annotated with @MainContent.
  • Corrected an issue causing GCA to exclude embedded content types from schema, causing downstream fetch errors.
  • Corrected an issue throwing an IllegalStateException when submitting a prompt to Amazon Bedrock Claude.
  • Corrected an issue causing Zapier to be incorrectly included in available notification topics.
  • Corrected an issue displaying an erroneously large number of requests and errors for a topic subscription.
  • Corrected an issue preventing synchronous updates of dynamic placeholder text on integer fields.
  • Corrected an issue preventing GCA reference input types from including read-only types; those input types included only read/write types.
  • Corrected an issue preventing display of the AI Content label on the rich-text editor when a) the text was indeed generated by AI and b) the rich-text editor included an image.
  • Corrected an issue causing the AI configuration field Generated Content Detectors to appear in the Main tab of Edit Site instead of the Integrations tab.
  • Corrected an issue preventing display of an image's preview in the content edit form when the class AbstractAsset is annotated with @ToolUi.ReadOnly.
  • Corrected an incorrect boolean expression in the GCA's Restore action.
  • Corrected the method EditorialGCASchemaSettings#getIncludeModelOnViews so that it returns a boolean instead of a Boolean.
  • Corrected an issue causing unexpected results after accepting deletions in text with tracked changes. For example, spaces in some positions were not deleted.
  • Corrected an issue preventing the standard process when creating a new item while creating a shared list module. For example, an editor created a new shared list of people. As part of that process, the editor created a new person. After creating the new person, the editor clicked Back, and the editor did not return to the people list being created.
  • Corrected an issue preventing the swapping of module types within a page. For example, an editor created a page and added three modules in the Contents field. Clicking more_horiz to swap one of the modules for a different module threw a NullPointerException.
  • Corrected an issue preventing proper display of the Title and Description fields in the content edit form's SEO tab.
  • Corrected an issue causing text to scroll in the RTE when clicking on a button in the RTE toolbar.
  • Corrected an issue allowing editors to close a nested module's rich-text editor without seeing a warning to save unsaved changes. Specifically, the warning was missing after pressing Escape.
  • Corrected an issue preventing proper layout of the preview pane in Firefox.
  • Accessibility—improved keyboard navigation and screen reader announcements pertaining to the rich-text editor's toolbar.
  • Corrected an issue preventing proper operation of Brightspot when clicking Publish and then quickly opening another form such as Edit Global.
  • Corrected an issue preventing proper behavior of selection fields when one of the options is Is Missing.
  • Corrected an issue generating different robots.txt rules for visitors to a URL with a www subdomain compared to a URL without a www subdomain.
  • Corrected an issue causing bookmarks in Microsoft Word documents to be imported as links instead of as plain text.
  • Corrected an issue preventing sticky search from correctly filtering assets in the search panel. For example, opening menu > Admin > Ads displayed all assets, not just ads.
  • Corrected an issue preventing proper pasting of rich text from Microsoft Word into the rich-text editor.
  • Corrected an issue preventing a favorite content type from behaving as expected in the content picker's Create field. For example, an editor selected User as a favorite content type. Next, the editor created an article, and in the Authors field selected Create New. In the content picker, in the Create field, User was not indicated as a favorite, and Author was.
  • Corrected an issue preventing proper rendering of assets in the preview pane when selecting a small device size.
  • Corrected an issue causing the more icon more_horiz to disappear after converting a module between shared and inline in the content edit form.
  • Corrected an issue preventing the disabled setting for Automatic Analytics JavaScript Injection at the Global level from cascading to the site level.
  • Corrected an issue preventing proper rendering of a referenced asset in the preview pane. Specifically, when an asset is in the preview pane, and referenced assets are available from the View Reference list, the referenced asset did not appear correctly.
  • Corrected an issue causing the content edit form to scroll to the bottom when creating a subsidiary asset, such as creating an assignment from a pitch.
  • Corrected an issue throwing a JavaScript error when clicking more_horiz > Source Data in an image.
  • Corrected an issue throwing a ClassCastException when attempting to copy a hotspot.
  • Corrected an issue preventing a GraphQL CMA's detection of a content type when adding a StorageItem asset by URL.
  • Corrected an issue causing a signature error when making calls to Amazon Translate.
  • Corrected an issue preventing proper interaction with the New Workstream widget. Specifically, if an editor opened New Workstream and clicked Save, the widget became blank instead of displaying a message to enter a required name.
  • Corrected an issue preventing proper population of lists of objects. For example, when creating a role, the list of content types included entries other than content types.
  • Corrected an issue inserting incorrect links in the search panel's grid view for integrated searches. For example, when searching on Getty Images, clicking on an image in grid view did not open the corresponding image in the content edit form.
  • Corrected an issue preventing population of The Shelf's source list when the asset in the content edit form did not include a typeId in its URL.
  • Corrected an issue throwing NullPointerException errors when generating a content report. Specifically, if a content report was incorrectly configured and then subsequently correctly configured, running the correct configuration threw this error.
  • Corrected an issue incorrectly including a reply button in an actionable notification for conversations. Specifically, in the Conversation widget editors cannot reply to a reply, but a Reply button was appearing in notifications triggered by a reply.
  • Corrected an issue preventing publication of assets when Pinecone was configured as the vector database provider for Ask AI.
  • Fixed an issue allowing users to click and navigate through links in the Quick View summary.
  • Improved security related to a jsoup library. This change contains a breaking change on the third-party end. See "Breaking changes" for more details.
  • Fixed a Styleguide error related to the quality parameter for image size.
  • Corrected an issue preventing UrlBuilder from properly handling URL fragments.
  • Fixed an issue preventing items from being shown in the default group of Board View when no workflow status was selected.
  • Fixed a UI issue causing module tab menus to be partially covered by an opened preview pane.
  • Fixed an issue when editing image enhancements that caused the mouse cursor to suggest that one can open the content picker by clicking on the image itself instead of by clicking the search (search) icon.
  • Fixed an issue causing the Quick View icon (info) to appear on certain fields when there is no content to display.
  • Fixed a number of visual issues with the Calendar widget.
  • Corrected an issue throwing a Null Pointer Exception when using @DynamicFieldMethod with a DATE_STRING_TYPE field type, like LocalDate.
  • Fixed an issue causing the Production Guide help icon (help) to appear in contexts in which it did not apply.
  • Fixed an issue preventing the Crosslinker widget and other legacy widgets from appearing in the side toolbar.
  • Fixed an issue where giving a site-limited role the Create with AI permission overrode the site limitation, instead giving the role access to all sites.
  • Fixed an issue preventing image croppings from being handled as intended with newer versions of Styleguide.
  • Fixed an issue preventing the AI flag from appearing on fields that were originally populated by AI, then replaced with human-generated input, and then replaced again with AI-generated content. Now, in this scenario, the AI flag appears properly.
  • Fixed an issue where embedded records within CmsTool that extend Content were causing IllegalStateExceptions.
  • Fixed an issue related to image resolution with downloads of Adobe Stock images.
  • Fixed an issue causing Preview to Edit to not work properly in some cases.
  • Fixed an issue where including a static method that returns abstract type was causing schema load failure.
  • Fixed an issue preventing Actionable Notifications from being sent when ClassFinder referenced the MockWebRequest method type. This fix introduced a breaking change. See "Breaking Changes" below for more information.
  • Fixed an issue where AIChatSettings were causing NoCurrentWebRequestException when saving Site in a task.
  • Fixed an issue preventing a CMS UI popup initiated from the submission of a form from being reopened upon a resubmission.
  • Fixed an issue preventing GCA: Record fields that only exist on Rich Text Element types from being resolved in the schema.
  • Fixed an issue that at times displayed Create with AI chat interactions from other users.
  • Corrected an issue causing dynamic notes to replace existing notes if the content was the same.
  • Fixed an issue preventing SAML responses from being parsed.
  • Corrected an issue preventing the proper display of images when querying and trying to import from external AP Images libraries.
  • Fixed an issue showing duplicates of standard image sizes in the resized image popup.
  • Fixed an issue that caused Brightspot to authenticate with Outlook Calendar using the wrong field.
  • Fixed an issue preventing the publish of copied content if Pre-Publish Actions was enabled.
  • Added forRemoval to the @deprecated annotation on the Saved Search widget and did the same to the @deprecated annotation for SavedSearchServlet after adding it.
  • Fixed an issue at times preventing embedded objects from loading in preview.
  • Fixed an issue at times causing a NullPointerException when trying to log in after changing a tool user's role.
  • Fixed a number of exceptions related to the Calendar integration.
  • Fixed a regression issue causing Editorial Content Type fields named id to throw an error.
  • Improved the display of Quick View when The Shelf is open so that it is more clear to which asset its details pertain.
  • Fixed a NullPointerException that was thrown when attempting to save content when AI content is enabled.
  • Fixed an issue preventing the proper preview of an image that was swapped in for another, then deleted, then restored.
  • Fixed a number of minor issues related to the Outlook Calendar integration.
  • Fixed unintended behavior when interacting with rich-text editor fields in content edit page overlays (like the Author popup overlay).
  • Fixed an issue preventing the embargoing of content if a workflow status used by the embargo was deleted.
  • Fixed an issue causing rich text fields included in Quick View to display with HTML tags and without line breaks.
  • Fixed an issue preventing the AI button from displaying in embedded objects when AI permissions were limited by type.
  • Fixed an issue preventing the AI flag from appearing above some fields whose content was generated by AI.
  • Fixed an issue preventing Ask AI with Titan model from answering questions about content that is expected to be vectorized.
  • Fixed an issue preventing the Cancel button from working when interacting with AI via the Create with AI functionality.
  • Fixed an issue causing a Null Pointer Exception when attempting to use Create with AI with videos imported from YouTube.
  • Fixed an issue where some GCA field filter configurations were resulting in a broken schema.
  • Fixed an issue where editorial content types were at times not rendering images after a project was upgraded.
  • Fixed a visual issue where the rich-text enhancement list was appearing on top of modals opened from the same menu.
  • Fixed an issue preventing the editorial GCA entry types selection from filtering out the all of the items that it should have.
  • Fixed an issue causing some field filter > field selections to not be excluded when they should have.
  • Fixed a regression causing a number of issues with the rich-text editor and its toolbar.
  • Fixed an issue causing cms.ui.cluster to not work properly when creating sets of front-end fields.
  • Fixed an issue preventing modules added in between tab modules from being clickable.
  • Fixed an issue causing content forms to override cluster names in Pre-publish actions.
  • Fixed an issue preventing the scheduling of content when AI content was enabled.
  • Fixed an issue allowing revisions that did not have values in required fields to be saved and to be passed through a workflow. This resulted in a breaking change. See the "Breaking changes" section below.
  • Fixed an issue causing saved search URLs to contain parameters for integrations and functionality even if a user's project did not include them.
  • Fixed a Zookeeper vulnerability.
  • Fixed an issue allowing a tag to be selected as its own parent tag.

Breaking changes

  • Regarding the implementation of DataCache, if you created classes extending Item , and those subclasses contain references to other content types, you may need to update those subclasses to implement the new ItemContainer interface.
  • Regarding the migration from HttpServletRequest to WebRequest, implementations of interfaces/abstract classes incorporating HttpServletRequest may experience disruptions in downstream applications. Below are the changed APIs:

    • brightspot.core.requestextras.RequestExtra#matches
    • brightspot.core.requestextras.RequestMatcher#matches
    • brightspot.form.field.captcha.CaptchaProvider#validate
    • brightspot.form.field.FieldProcessor#getPriority
    • brightspot.form.field.FieldProcessor#getValue
    • brightspot.form.field.validate.FieldValidator#validate
    • com.psddev.access.AccessProvider#findAccesses
    • com.psddev.access.AccessProvider#requiresAccess
    • com.psddev.analytics.AnalyticsDataProcessor#modify
    • com.psddev.auth.AuthenticationManager#getCurrentSession
    • com.psddev.auth.social.AbstractAtlassianAuthenticationProvider#createCallbackUrl
    • com.psddev.auth.social.AbstractLinkedInAuthenticationProvider#createCallbackUrl
    • com.psddev.cms.auth.ToolAuthenticator#logIn
    • com.psddev.cms.auth.ToolAuthenticator#onFormPost
    • com.psddev.cms.ui.Components#createObjectLabel
    • com.psddev.segmentation.Target#matches
  • The behavior for ToolUi#isEffectivelySuggestions has changed since it no longer automatically returns false if there is a field predicate present.
  • Connections to MySQL 8 may not function with an existing dataset due to the following reasons:

    • Upgrading from MySQL 5.6 to 8 is not supported.
    • The UIDs between two images differ.
    • Passwords need to be updated to conform to MySQL 8's caching_sha2_password authentication plugin. See Caching SHA-2 Pluggable Authentication.
  • In the class com.psddev.cms.db.Draft:

    • The method void update(Map, Object, Map, boolean) has been removed.
    • The method void update(Map, Object) is still available.
  • Regarding the new return value for the method ViewClassFieldDefinitons#getFieldValueTypes: Some projects may have fields defined as a JSON object without an associated template. Re-running the codegen on those projects generates views with method signatures incompatible with those in existing view models. In those cases, update the methods to the correct generic signature.
  • As a result of converting search.jsp to a tool page, WEB-INF/search.jsp was removed. Any project referencing this JSP via JavaUtils#include or TPC#include will need to update to the new API. Please reach out to a Brightspot representative for code examples. Additionally, any usage of the following request attributes need to be accessed via the SearchRequest web extension: validTypeIds, validTypeClass, newJsp, newTarget, resultPath, resultJsp, name.
  • As a result of fixing an issue preventing Actionable Notifications from being sent, EmailDeliveryOption#addMockDefaultToolUrl no longer exists, in favor of using its static parent method ToolDeliveryMethod#addMockDefaultToolUrl.
  • As a result of an issue that did not force validation of revisions when passed through a workflow, revisions will now undergo validation when passing through a workflow to ensure that no required fields are blank.
  • As a result of changes made to hierarchy to make it usable for mixed-type hierarchies, any multi-type hierarchies that are implemented in projects must adjust any applicable models to add the generic bounding type parameter in order to function properly.
  • Changes were made to remain current with jsoup; however, in doing so, library updates to whitespace handling may change textual content, like stripping spaces that were not previously stripped, vice versa, and other changes. Projects running versions that implement these changes (4.5.15.23, 4.5.27, 4.7.20, and 4.8.0) must address any potential issues surrounding this. The update is from 1.14.3 -> 1.17.3. See jsoup News and release notes for more information on how to resolve issues. Additional references can be found in jsoup’s Parser documentation and on their Issues repository.
  • Changes the ApiRequest site provider chain logic. New rules:

    • A provider returning null (e.g. global site) is valid, and now short circuits on the first occurrence.
    • A provider that throws an exception will get skipped unless it's a ApiRequestIllegalArgumentException in which case it will short circuit and highlight that error.
    • If all throw an exception, a single ApiRequestIllegalArgumentException will get thrown aggregating the messages.
    • ApiRequest#getSite no longer falls back to PageRequest#getCurrentSite if there are no providers in the chain or if none of the providers return a non-null site.
Previous Topic
4.5 Product Guide
Next Topic
4.7 releases
Was this topic helpful?
Thanks for your feedback.

Browse All Docs

Everything you need to know when creating, managing, and administering content within Brightspot CMS.

Dashboards
Publishing
Workflows
Admin configurations
A guide for installing, supporting, extending, modifying and administering code on the Brightspot platform.

Field types
Content modeling
Rich-text elements
Images
A guide to configuring Brightspot's library of integrations, including pre-built options and developer-configured extensions.

Google Analytics
Shopify
Apple News
Brightspot is packaged with content types that get you up and running in a matter of days, including assets, modules and landing pages.

Assets
Modules
Landing pages
Our robust, flexible Design System provides hundreds of pre-built components you can use to build the presentation layer of your dreams.

Asset types
Module types
Page types