Skip to main content

5.0 releases

Read below for more information on each version in the 5.0 release.

v5.0.4

New features

  • Added a new @DelegatedPermission annotation for Managed content types, allowing permission delegation to be expressed in a way that downstream projects can override or extend. This replaces the overloaded use of @Permission on content types, which prevented extension projects from adapting the delegation behavior.

  • Added native geo-distance filtering support to the OpenSearch database, enabling queries to filter results by maximum distance when using geographic sorts. Projects can now implement location-based search filtering without requiring a custom database subclass.

  • Migrated the core HubSpot integration to a standalone plugin (com.brightspot.hubspot:hubspot:1.0.0). Projects using the HubSpot integration should add the plugin BOM (com.brightspot.hubspot:bom:1.0.0) to their platform/brightspot-dependencies.

  • Migrated the translation integration to a standalone platform-translate plugin repository. Projects using the translation integration should migrate their dependencies to the new plugin.

Improvements

  • Rebranded in-CMS AI features: Ask AI is now Ask Esca, and Create with AI is now Create with Esca. Updated icons, avatars, and labels throughout the CMS to reflect the new brand, including new animated avatar interactions for AI chat and content creation flows.

  • Extended plugin settings loading to support complex configuration shapes in properties files. Properties-based plugin settings can now express collections of values, fields that reference an ObjectType, and references to non-embedded records — previously only scalar values and simple embedded records were supported.

  • Reduced the size of the v5 CSS bundle by eliminating excessive Tailwind CSS @apply selectors and redundant Lucide icon styles, improving initial page load performance.

  • Automated the coordination between platform-ui releases and the brightspot consumer update process. Previously, a new platform-ui version required a manual release bump PR in the brightspot repo; this is now handled automatically, reducing the risk of version drift.

  • Moved the complete tool-ui source from the brightspot monorepo into the platform-ui plugin repository, enabling independent versioning and faster iteration on UI tooling. A compatibility layer is maintained to support the transition.

  • Moved a range of deprecated modules — including indesign, push, print, suggestions-rekognition, Atlassian, community, auth, and social integrations — to the dedicated platform-deprecated repository with backward-compatibility shims to ease migration.

  • Migrated additional deprecated modules — including ftp-client, appetizeio, dari-jclouds, dari-solr-v6, kaltura, mpx, pinecone, and access — to the platform-deprecated repository with backward-compatibility shims.

  • Migrated the DAM integration to a standalone platform-dam plugin repository. Monorepo dam-* modules now resolve transitively through the new plugin.

  • Released the Crosslinker integration as a standalone platform-crosslinker plugin and removed the code from the monorepo. Monorepo crosslinker modules now resolve transitively through the new plugin.

  • Released the Veeva integration as a standalone platform-veeva plugin and removed the code from the monorepo. Monorepo Veeva modules now resolve transitively through the new plugin.

  • Released the Marketo integration as a standalone platform-marketo plugin and removed the code from the monorepo. Monorepo Marketo modules now resolve transitively through the new plugin.

  • Released the AEM integration as a standalone platform-aem plugin and removed the code from the monorepo. Monorepo AEM modules now resolve transitively through the new plugin.

  • Published Maven relocation metadata for 24 legacy bridge modules (including dari-db, dari-solr, localization, cms-health, graphql, sitemap, and others) redirecting from com.psddev:* coordinates to their com.brightspot.* equivalents. Projects still using the legacy coordinates will now receive build-time deprecation warnings.

  • Added profiler information to OpenSearch database operations, bringing diagnostic parity with the Solr database's existing profiler support.

  • Improved OpenSearch sort and relevance behavior to align with Solr semantics. The sortRelevant boost now uses BM25-scaled additive scoring and sortOldest now uses a bounded recency curve, making it functional. See "Breaking changes" below.

  • Added OAuth 2.1 authorization support to the MCP Server, including authorization code with PKCE, client credentials, refresh-token rotation with replay detection, dynamic client registration, and JSON Web Key Sets (JWKS).

  • Converted PageFilter#renderObject to use the Dari Web API, resolving an API gap for projects that have Renderer implementations delegating to PageFilter#renderObject. The PageContextFilter bridge is no longer required in these implementations.

  • Added a fluent API for building Query#having predicates, consistent with the existing where(…) API, allowing having predicates to be constructed using method chaining.

  • Added username and password authentication support to HttpOpenSearchClientSupplier, enabling connections to managed OpenSearch instances — such as those deployed on GCP — that require credential-based authentication.

  • Improved the bulk archive and restore functionality to reduce memory consumption when processing large volumes of content. Previously, bulk archive and restore operations could cause excessive heap usage across multiple threads.

  • Updated BSP Styleguide to support multi-site development and theming, allowing an optional top-level folder structure in the Styleguide directory to represent individual sites, each with its own _config.json.

Bug fixes

  • Fixed a performance bug in the v5 UI where the btu-toggleable web component made redundant requests when loading forms. Previously, forms such as those on the Sites & Settings page were fetched multiple times instead of once, causing browser lag and unnecessary server load.

  • Fixed a bug in the Gallery editor where clicking "Upload Image" showed only a spinner and never opened upload options due to a 404 error caused by incorrect URL encoding in the upload request path.

  • Fixed a bug in the v5 UI where publishing a revision through a workflow did not visually reflect the published changes until the user manually refreshed the browser.

  • Fixed a bug where the Schedule Publish button appeared on a separate row from the Publish button in the workflow transitions list. Both transitions now appear on the same row, separated from other workflow transitions by a divider.

  • Fixed a bug where Query#canReturnInvisible and Query#getConcreteTypeIds did not account for the having predicate when performing visibility checks, which could allow invisible results to be returned unexpectedly.

  • Fixed a bug in OpenSearch 2.5.0 where low-relevance partial substring matches appeared at the top of site search results, degrading search quality and relevance ordering.

  • Fixed a bug in the OpenSearch recency boosting logic where content without a date value received a boost of zero, causing it to rank at the bottom of searches regardless of other relevance factors.

  • Fixed an intermittent SCHEMA_LOAD_EXCEPTION in GraphQL caused by a race condition during concurrent first-time schema loads, where the VoidScalar type failed to register.

  • Fixed a bug where Query#hasMoreThan incorrectly used reference-only mode, causing downstream problems in databases that require full JSON data for non-visibility-aware type ID resolution.

  • Ported two critical bug fixes from SolrDatabase to OpenSearchDatabase that were previously omitted: prevention of automatic reference resolves and proper handling of exceptions for invisible result types.

  • Fixed a bug in SolrDatabase where the fix for non-visibility type IDs incorrectly returned all data for reference-only objects, inconsistent with the behavior of AbstractSqlDatabase.

  • Fixed a bug where OpenSearch search result ordering varied significantly based on the order of search terms, causing inconsistent results for editors.

  • Fixed a bug where AmazonRekognitionRecognitionProvider used the deprecated Guava CacheBuilder instead of the Caffeine cache implementation.

  • Fixed a critical security vulnerability (CVE-2025-66516) in Apache Tika by upgrading tika-core from version 1.24.1 to 3.2.2. The outdated version contained an XXE (XML External Entity) injection vulnerability.

  • Fixed a bug where StorageItemFilter silently swallowed exceptions instead of logging them, making issues difficult to diagnose.

  • Fixed a bug in OpenSearch where sortNewest and sortOldest added a deterministic field sort that overrode the configured relevance boost, making any boost weighting ineffective when those sorters were used alone.

  • Fixed a bug in OpenSearch where using the matches predicate on non-text fields — such as keyword, UUID, or record fields — threw an OpenSearchException.

  • Fixed a critical bug in OpenSearch where queries against @Embedded types were not bounded by type, causing reads to silently return wrong-typed documents and delete operations to potentially destroy unrelated content.

  • Fixed a security vulnerability in the real-time communication endpoint that disclosed sensitive user activity data and failed to enforce appropriate authorization controls for non-admin users.

  • Fixed a bug where the region field map stopped rendering tiles due to a change in the tile provider's usage policy. The fix ensures the required HTTP Referer header is sent with tile requests.

  • Fixed a bug where the DB Bootstrap Debug Tool's export functionality always produced an empty file, caused by a flag change in CapturingResponse introduced in version 4.8.10.

  • Fixed a bug where the having predicate was incorrectly cleared for grouping item queries in non-SQL databases such as Solr. The predicate-clearing logic is now targeted specifically to SQL queries.

  • Fixed a bug in the RTE toolbar where overflow menu items displayed unwanted line breaks caused by whitespace in the inner text of toolbar button elements.

Breaking changes

  • As a result of aligning OpenSearch sort and relevance behavior with Solr (BSP-19444), the ranking behavior for sortRelevant, sortNewest, and sortOldest in OpenSearch-backed installations has changed. The sortOldest boost curve has changed from an unbounded linear shape to a bounded curve, sortRelevant now uses BM25-scaled additive scoring rather than multiplicative scoring, and the sortNewest decay curve has changed from a Gaussian function to an exponential function with the same half-life but a longer tail, better matching Solr's recency curve for older content. Projects that have tuned relevance boost weights for OpenSearch should re-evaluate their configurations.

v5.0.3

New features

  • Added support for a sizes attribute in _imageSize.config.json, allowing developers to pair responsive image size hints with srcsetDescriptors for improved image rendering control.

  • Removed the Localization Monorepo from the core repository as part of the ongoing plugin extraction initiative; localization functionality is now available as a separate dependency.

  • Added telemetry instrumentation to Create with AI interactions, capturing key events such as prompt submissions, suggestion clicks, and insert and replace actions to improve the feature over time.

Improvements

  • Migrated dari utility and web library classes from the Brightspot monorepo into an external plugin, reducing monorepo size and enabling independent versioning for those libraries. Projects with a direct Gradle dependency on the old dari module path should update it to depend on the new plugin.

  • ToolRequest#userTypesPredicate now correctly restricts managed types such as ToolUser and Site for users who do not have access to the corresponding admin area permissions.

  • Addressed an issue where the search URL for creating new scheduled items in ScheduleEdit was missing the parent type id parameter, impacting SearchExtension implementations.

  • Improved the comment query used in FormRequest to be more efficient when checking for comments associated with field labels.

  • Added Windows keyboard support (F6 shortcut) for switching focus between major CMS UI regions, improving accessibility for Windows users.

  • Added a backend API for specifying the preferred tabbing order of CMS UI regions, improving keyboard navigation consistency and reducing reliance on hardcoded JavaScript ordering.

  • Updated the Track Changes toolbar button in the Rich Text Editor to use the radar icon, saving toolbar space and aligning visually with other RTE tools.

  • Improved the Bulk Edit experience for embedded fields: editing a single sub-field on an embedded object no longer clears the other sub-fields in that object.

  • Published resolved versions for all dependencies including transitive ones, improving dependency management consistency across builds.

Bug fixes

  • Fixed a security vulnerability where authenticated users with any role that enabled Bulk Edit could escalate privileges to Administrator level by abusing an internal bulk-edit endpoint.

  • Fixed a security vulnerability where file upload was possible even when all actions were restricted for a role, bypassing access controls on file upload operations.

  • Fixed a broken access control issue where certain admin endpoints were accessible by regular users without admin area permission.

  • Fixed a user enumeration vulnerability that could allow malicious actors to use brute-force or dictionary attacks to confirm valid user accounts via login and password-reset flows.

  • Fixed an information disclosure vulnerability where internal application endpoint paths were exposed via a client-side JavaScript variable on the login page, visible to unauthenticated users.

  • Fixed a server-side request forgery (SSRF) vulnerability affecting certain preview and rich-text transformation endpoints.

  • Fixed a critical security vulnerability in an internal debugging tool that could be used to permanently delete data.

  • Fixed a bug where fields exposed with @Ignored(false) were not editable — clicking the pencil icon had no effect.

  • Fixed a bug where MFA setup was broken for newly created users, preventing them from configuring multi-factor authentication during their first login.

  • Fixed a significant performance regression where typing in CodeMirror-based input fields (such as the Front End settings in Sites & Settings) was very laggy.

  • Fixed a bug where custom time input options remained visible in the date picker after selecting a common time option.

  • Fixed a bug where deleting a conversation post from the edit popup did not close the popup.

  • Fixed a bug where Notification Query Match Settings were not saving correctly.

  • Fixed a bug where the menu icon was misaligned when menu option text was long.

  • Fixed a bug where rendering a 404 error response in global site settings caused a stack overflow when a non-existent URL was requested with ?_prod=true.

  • Fixed a bug where Rapid Add was not working for items inside advanced lists after upgrading to 5.0.

  • Fixed a bug where CMS Menu custom search was broken across all custom search pages that use AbstractSearchPageServlet.

  • Fixed a bug where the content type badge in the CMS header displayed an incorrect value in certain scenarios.

  • Fixed a regression where clicking into a tall field caused the content edit panel to scroll and vertically center the entire field, interfering with cursor position and click accuracy.

  • Fixed a bug where saving content type permissions on a role defaulted to "All Except" regardless of the value selected.

  • Fixed a bug where a Combo Input field using a ValueGenerator with escaped JSON as the value caused rendering errors.

  • Fixed a bug where style overrides configured in Content Templates were not applied to content until the Styles tab was manually opened.

  • Fixed a bug where Promo Content Template titles were not visible on content types in the list view.

  • Fixed a bug where quoted search terms were not highlighted in CMS search result labels when using exact-match quotation marks.

  • Fixed a bug where the preview pane was cutting off content on the right side in mobile view.

  • Fixed a bug where the overflow: hidden CSS on .RCIG-item prevented the RTE toolbar from using sticky positioning when scrolling through rich-text module content.

  • Fixed visual spacing issues on popups and overlays for certain enhancements including link, block quote, form, playlist, ad, embed, HTML, and iframe elements.

  • Fixed a regression where the date column was output twice in search results when sorting by a date field.

  • Fixed a bug where setting "format": "webp" as the default image format caused SVG images to be incorrectly cropped and broken.

  • Fixed a bug where automatic subscriptions assigned to a role were not applied to a user when that role was used as a Site Specific Permission.

  • Fixed a bug where the Locales column in search results was too narrow, causing multiple locale entries to wrap to new lines and making rows unnecessarily tall.

  • Fixed a bug where filtering the Recent Activity shelf by a status other than "Published" did not filter content type results as expected.

  • Fixed a bug where configuring the Article Body field for display in search results caused a malformed search results layout.

  • Fixed a bug where dragging and dropping items from the Content Edit Drawer to a field did not apply the state-changed CSS class, breaking change-detection styling.

  • Fixed a bug where a "comment resolved" notification was not generated when a user resolved a conversation thread.

  • Fixed a bug where the View and Edit icons for associated content were not clickable when the content had @ReadOnly annotations applied.

  • Fixed a bug where AI-generated content that included HTML text tags caused those tags to be exposed and visible in CMS labels.

  • Fixed a bug in the v5 UI where the page navigation toggle button's aria-label and title attributes were not updated when the menu state changed between open and closed.

  • Fixed an accessibility bug where using the keyboard to reorder list items caused the item's label to disappear during reordering.

  • Fixed a bug where the search input disappeared when the viewport transitioned across the 768px breakpoint, such as when switching between landscape and portrait on a tablet.

  • Fixed a bug where adding an image override in an advanced list auto-added extra promos and eventually caused an error.

  • Fixed a bug where plain text input fields intermittently shrank in height when a modal dialog was open.

  • Fixed a bug where the preview panel briefly loaded a different device breakpoint before settling on the correct one.

  • Fixed a bug where the multi-sort action was incorrectly displayed on Set record types, which do not support reordering.

  • Fixed a bug where combo input dropdown items and selected labels on mobile did not match the font size of surrounding input fields.

  • Fixed a visual bug where the Scheduled Events widget displayed an unnecessary border beneath a single scheduled event.

  • Fixed a bug where scroll bar arrows appeared in the search filter rail even when scrolling was not required.

  • Fixed a bug where Module Picker card heights were inconsistent when module preview images had varying heights.

  • Fixed a bug where the scheduled event modal title was truncated on mobile in the dashboard Schedule Events widget.

  • Fixed a bug where RTE enhancement exclusions defined with @ToolUi.RichText were not being applied correctly.

  • Fixed a missing styles issue for the Ongoing Index Tasks heading in the bulk operations developer page.

  • Fixed a bug where the last letter of "Untitled" content was cut off in the Recent Activity panel.

  • Fixed a visual bug where shrinking the viewport caused the navigation rail to briefly flash in an expanded state before collapsing.

  • Fixed display issues in the Admin → History → Revisions popup, including an off-center toggle background and incorrect toggle shift behavior.

  • Fixed styling and layout issues in the Advanced Query search popup, including a missing loading spinner and the query input field not expanding to show its full content.

  • Fixed a bug where removing a previously archived item from a Bulk Schedule caused unexpected behavior.

  • Fixed a possible deadlock in TypeDefinition#getImplicitInterfaces under concurrent load, which could cause frontend pods to become unresponsive and return 502/503/504 errors.

  • Fixed a bug where map tiles in Region fields were blocked due to a violation of the tile provider's usage policy; tiles are now served from a compliant source.

  • Fixed an AWS SDK version conflict in the BSP BOM that caused a NoSuchMethodError at runtime in the AWS plugin.

  • Fixed a bug where the Type Search popup did not appear when adding shared items on a Shared Module (overlay).

  • Fixed a bug where publishing a copy of an article with a Promo Image threw an error and removed the image.

  • Fixed a Track Changes bug where deleting within or around a comment cleared text without tracking the deletion as a change.

  • Fixed an OpenSearch max_bytes_length_exceeded_exception error when saving content with large field values.

  • Fixed an OpenSearch copier failure caused by Jackson's string length constraint when copying records with large string values from SQL to OpenSearch.

  • Fixed a bug where the URL Widget's redirect and permalink could not point to the same path even when owned by different sites.

  • Fixed a bug where a plugin save that failed validation displayed a blank page instead of showing the errors.

  • Fixed a bug where the REST Management API accepted / as a valid path, which combined with ** caused all CMS requests to match the endpoint.

  • Fixed a bug where the Back bar in the gallery editor did not size correctly after publishing images.

  • Fixed a bug where the Plugins page returned a 404 error when a role had Permission Settings configured as Area → All Except → (any value).

  • Fixed a bug where trailing slash duplication validation in Sites and Settings → URLs failed to detect duplicate URLs when one URL had a trailing slash and the other did not.

  • Fixed a bug where the Schedule Events List query could time out on larger datasets.

  • Fixed an ExternalItemSearchResultView IndexOutOfBoundsException in edge cases during search result rendering.

  • Fixed a bug in the Rich Text Editor where copying and pasting from Google Docs or Microsoft Word did not correctly preserve text alignment and indentation.

  • Fixed a bug where the CMS Bulk Copier did not use SQL index values when populating Solr, causing copies to miss indexed field data.

  • Fixed a bug where the Google Translate action showed no loading indicator while the UI remained unresponsive for up to 30 seconds.

  • Fixed a bug where a lazy-load failure in the repeatable list component (repeatable.js) during a pod restart could cause content loss.

  • Fixed a bug where BrightspotCmsFieldAccess attributes were placed inside HTML attributes rather than as standalone data attributes, breaking the rendered HTML.

  • Fixed a bug where /contentFormFields requests on pages with many RecordFormInput or RecordListFormInput fields caused the CMS UI to become sluggish and unresponsive.

  • Fixed a bug where the RTE overflow menu exposed screen-reader-only buttons to keyboard navigation at certain breakpoints.

  • Fixed a bug where a CMS search using a full URL returned results from all sites instead of filtering to the site associated with that URL.

  • Fixed a bug where a RichTextElement used for markup wrapping inserted an extra space in the opening tag.

  • Fixed a bug where enhancements such as images and modules in Rich Text Editor table cells could not be edited.

  • Fixed a bug where a DynamicPlaceholderMethod on an RTE field made the field erroneously editable, interfering with the fallback content population.

  • Fixed a bug where Adobe Analytics integration was not pulling in all available report suites (API results were capped at nine).

  • Fixed a bug where the "Work in Progress" text was missing from the Fullscreen RTE header.

  • Fixed a bug where the Upload widget triggered an error when selecting multiple video files.

  • Fixed a bug where ScheduleTask did not restore the thread name after execution.

  • Fixed a bug where AWS Translation returned HTML-escaped characters for plain text fields, causing escaped sequences to be saved into content.

  • Fixed a bug where dragging a non-media item from the shelf caused page text to become highlighted.

  • Fixed a bug where StringUtils#decodeUri failed to decode valid URI query parameters, throwing an exception for certain URL strings.

  • Fixed a bug where site health alerts were visible in CMS markup to unauthenticated users.

  • Fixed a bug where the Revisions Widget timed out on content items with a very large number of history records.

  • Fixed a bug where site-restricted ECTs disappeared from a role's content type list when other ECTs were added to the role.

  • Fixed a bug where a console error occurred when typing in a workflow status name input field.

  • Fixed a build configuration issue where test-cms was incorrectly declared as an api dependency instead of testImplementation in cms-type, unnecessarily leaking test infrastructure onto the compile classpath of downstream consumers.

v5.0.2

New features

  • Enhanced the plugin admin page with configuration status indicators and a setup checklist, giving users clear visibility into what is complete and what remains to fully enable each plugin.

Improvements

  • Enabled users to schedule content for publication directly from the final workflow transition, resolving previous permission limitations.

  • Designed and implemented a new accessible UI for skip links and a keyboard shortcut menu.

  • Improved focus management between regions in the CMS to remember the last highlighted field when navigating back and forth.

  • Addressed an issue where the search URL for creating new Schedule → Bulk Scheduled Items was missing a parent type id, affecting SearchExtension implementations.

  • Improved the determinism of the Brightspot application's aggregate database selection during OpenSearch upgrades.

Bug fixes

  • Fixed a bug where Google Drive folder results caused a 403 error upon import, by hiding folders from search results.

  • Fixed visual glitches in the filtering dashboard widgets caused by a scroll regression and abrupt transitions that shifted the filters frame during loads.

  • Fixed a bug where SVG images caused incorrect text sizing in file input fields.

  • Fixed a bug where the word count was pushed below the dynamic input note when present.

  • Fixed a bug in SolrDatabase that caused data queries to ignore the "resolve to reference only" setting, leading to unnecessary MySQL hits and potential performance issues.

  • Fixed an issue with adding annotations to an @Indexed method on a Modification<Object>.

  • Fixed a bug where messages in the UI occupied the full height of their containers.

  • Fixed a bug in the v5 AI Usage Widget where brackets and HTML tags were improperly displayed due to the API returning multiple nodes instead of a single renderable object.

  • Fixed a permissions regression where users with "write" permission were unable to edit content in revision state.

  • Fixed a bug where the cursor intermittently became hidden and input focus shifted away during typing.

  • Fixed an issue where the page title in admin areas was truncated prematurely due to widget controls consuming excessive space.

  • Fixed a UI misalignment with the Restore button and More menu after archiving a workflow.

  • Fixed a bug where the Gradle cache ID in cms-tool-ui was incorrect, preventing proper detection of *.ts file changes.

  • Fixed an IndexOutOfBoundsException in the search view when filtering by visibility.

  • Fixed a query timeout in the schedule events list that affected larger datasets.

  • Fixed a bug where atomic updates to global fields were not updating indexes.

  • Fixed a bug where long URLs in publishing tools caused overflow and layout issues.

  • Fixed a scrolling issue in the content edit form when the form slightly exceeds the viewport height.

  • Fixed a visual collision between side-by-side multi-select fields in the Content API schema settings.

  • Fixed a bug where switching tabs in Sites & Settings caused the form to scroll to the top of the first field.

  • Fixed compatibility issues caused by the macOS Tahoe update that caused test failures due to Chromium incompatibility with older Playwright versions.

  • Fixed a bug that caused a TypeError when clicking on the Available Locales dropdown in Site Settings.

  • Fixed a bug where all Create with AI prompt suggestions were displayed regardless of whether they were global, type-specific, or field-specific.

  • Fixed a security vulnerability in a debug endpoint.

  • Fixed a Google Translate exception caused by a dependency version mismatch by updating the relevant Google dependencies.

  • Fixed a bug where the SearchFields tab container was not displaying in the popup.

  • Fixed a bug where the HTML toggle button's pointer events were disabled in Rich Text Editor (RTE) HTML mode.

  • Fixed a bug where the first save action no longer triggered the tryNewDraft method, breaking the expected draft creation process.

  • Fixed a bug where the Plugins page returned a 404 error when a role's Permission Settings area was set to "All Except".

  • Fixed an issue where plugin names appeared as "Untitled" in the v5 UI.

  • Fixed an issue where broadcast messages in the v5 UI appeared on a single line instead of wrapping correctly.

  • Fixed a validation error during plugin save that caused a blank page.

  • Fixed a bug where newly added RichTextElement components with @ToolUi.IconName rendered empty icons, affecting elements including ColorRichTextElement and BlockQuoteRichTextElement.

  • Fixed a bug where the Locales column was too narrow, causing multiple language items to wrap and increase row height.

  • Fixed a bug where the Content Edit Drawer showed no eligible items despite available content.

  • Fixed an issue where MergedRevision records were being saved during scheduled publishes even if the publish failed, leading to unnecessary database growth.

  • Fixed a bug where spacing on overlays for certain enhancements was misaligned.

  • Fixed a bug where users could delete entire comments instead of individual characters within comments.

  • Fixed a bug related to a negative size parameter in an OpenSearch query that resulted in an illegal_argument_exception.

  • Fixed an IllegalArgumentException caused by unsupported numeric aggregate types when grouping by publishDate.getYear in OpenSearch.

  • Fixed a deadlock in TypeDefinition that caused sporadic 502/503/504 errors under concurrent load.

  • Fixed bugs in the OpenSearch query builder that caused site search to return zero results when combining relevance boosts with recency boosts.

  • Fixed a critical bug where queries against @Embedded types in OpenSearch were unbounded by type, leading to incorrect read results and potential data loss.

v5.0.1

Improvements

  • Platform & tooling

    • Upgrades to the latest platform-ui for improved stability and consistency.

    • Enables integration tests to execute in parallel to speed up CI cycles.

    • Updates the Styleguide app to commit screenshots to the repo, allowing faster builds.

  • Search & configuration

    • Changes default for “Retain Search Settings” to None, altering how search state is persisted.

    • Adds a system-specified cap to CMS search result pagination, improving performance and avoiding excessive result sets.

Bug fixes

  • Blank / broken screens

    • Fixes a blank page shown when user profile settings are updated.

    • Fixes Users & Roles page returning a blank UI for multiple projects.

  • Data integrity & publishing

    • Prevents embedded object data loss during content editing.

    • Resolves publishing performance issues impacting workstream counts.

  • Navigation & redirects

    • Fixes redirects from case-sensitive directory lookups that were causing 404s.
  • Accessibility / keyboard interaction

    • Updates the / keyboard shortcut for search to meet WCAG criteria for character-key shortcuts.

    • Fixes Content Selector ComboInput being keyboard-interactive in read‑only mode.

    • Fixes focus behavior on long pages so focus doesn’t temporarily move below the fold before scroll catches up.

  • V5 UI behavior and overlay issues

    • Fixes V5 search overlay selection not displaying the corresponding screen.

    • Fixes translation popup issues when a translation already exists for the selected language.

    • Restores file previews for read‑only files.

    • Makes RTE “More” menu options accessible in fullscreen mode.

    • Fixes Quick Start Settings where the “Edit Existing Content” field could be hidden unexpectedly.

  • Minor / cosmetic and usability bugs

    • Corrects the RTE label from rte.replaceAll to “Replace All”.

    • Reduces extra padding and excess height in the V5 Edit Comment action bar.

    • Fixes aside buttons in narrow screen preview that had no visible effect.

    • Fixes content reporting notification behavior that caused the notification widget to scroll horizontally when queries fail.

    • Fixes preview/edit toggle switch background so it remains visible when focused and disabled.

    • Ensures the “No Results” banner stretches across the page for Sites & Settings search.

    • Ensures ContentRaw advanced tab shows all values for list/set indexes.

v5.0.0

New Features

  • Added a new Avatar component library for Brightspot, with specified fields, events, and styling options.

  • Deprecated and hid the "Default Bulk Upload" field to prevent user confusion, as it does not function as intended. Files uploaded as ZIP are automatically converted into attachments, aligning with the attachment content type.

  • Added a new badge component in the Brightspot Component Library. Removed the "shape" attribute, allowing implementers to customize border radius through CSS custom properties instead.

  • Added a new web component for Brightspot UI. This component is designed to support child nodes declaratively and is documented in Storybook.

  • Added an API for providing Tailwind CSS classes to the new Rich Text Elements in Rich Text Editor (RTE).

  • Added the ability to limit style availability per site.

  • Introduced OpenSearch as an alternative to Solr that supports multi-region requirements. You cannot use OpenSearch and Solr together.

  • Introduced the Content Edit notification topic that enables users to receive notifications for content editing actions—including Archive, Delete, Merge, New Draft, Publish, Restore, and more—with the flexibility to customize notification preferences and support for future extensibility.

  • With the new release, you can now unsubscribe from a notification topic from the Notifications panel.

  • You can now pause or turn off CMS notifications from the Notifications panel. You can mute notifications for a configurable duration or indefinitely, with clear visual indicators and message reflecting the paused state.

  • Added a new translation provider option that leverages Google’s latest LLM-based translation service to create higher quality machine translations.

  • Removed the AMP plugin.

  • Removed the Split Testing plugin.

  • Removed the User plugin.

  • Create with AI now supports instruction-driven editing directly within the rich-text editor. Users can select text in the rich-text editor and provide specific instructions for the AI to rewrite or enhance it, enabling a streamlined content editing and writing experience.

  • Included Live Blog plugin and created a new Live Blog content type. Introduced LiveBlog.less styling for Live Blog content types. After enabling the Live Blog plugin, users can create and edit posts via the new New Blog Post widget in Publishing Tools.

  • Enhanced the Content Type component in v5 with updated styling and improved icon presentation in the admin UI.

  • Enhanced the APIs section.

  • Introduced updated styling for the Theme Bundle Editor in v5.

  • Introduced updated styling for the Crosslinker component in v5.

  • Introduced integration with Amazon Bedrock Guardrails in v5, enabling admins to configure comprehensive monitoring policies for Create with AI interactions. This enhancement allows for real-time detection of policy violations—including harmful content, sensitive information, and denied topics—across supported AI models, providing greater oversight and safety without blocking user requests or responses.

  • Added a new node module in v5 that exposes the complete CMS TailwindCSS configuration, enabling external projects to seamlessly reuse, extend, and opt into Brightspot’s UI styling and plugins, with continued support for VSCode Intellisense.

  • Expanded Amazon Bedrock Guardrails monitoring to Ask AI interactions in v5, enabling policy-based detection of harmful or sensitive content. Admins can now configure guardrails for Ask AI with detection mode providing oversight without blocking responses.

  • Added enhanced AI reporting to the Audit widget, allowing users to monitor and review AI interactions that violate Guardrail policies. The updated widget provides comprehensive metadata, advanced filtering options, and clear visual indicators for policy violations.

  • Deprecated express-dam to prevent duplicate features from appearing in the CMS at once.

  • Introduced new training content for v5 UI, providing developers with comprehensive guidance on the latest UI concepts and TailwindCSS usage.

  • Developers can now control which RichTextTransformers are applied to individual rich-text fields, enabling more precise handling of pasted content, such as avoiding unwanted Oembed transformations for specific contexts like newsletters.

  • Updated V5 components ContentSelector, RepeatableContentSelector, and Sortable, enhancing their functionality.

  • Updated user avatars for V5 with improved styling and contextual variations, supporting individual and group displays, dynamic user data handling, and hover and focus states.

  • Updated buttons and links throughout the CMS to align with the V5 design system.

  • Introduced a new V5 color palette with accessible, dark-mode-ready main colors and accent colors.

  • Integrated Feather icons into the V5 design system, offering a lightweight and modern icon library.

  • Refined typography in the V5 design system with updated font sizes and expanded font weights.

  • Added versatile badges in the V5 design system, supporting text, icons, avatars, and status indicators.

  • Refined Notification.less styling to align with the V5 design system. Deprecated styles were cleaned up, and padding updates are handled as part of Widget.css conversion.

  • Enhanced FileInput.less styling for file upload fields, including one-off inputs and bulk uploads.

  • Introduced TailwindCSS module, incorporated tailwind processor in our toolUi build, along with a CMS setting to toggle between v4 and v5 CSS.

  • Updated dropdown component styles, including Dropdown and ProfileDropdown, to align with the V5 design system.

  • Updated Message.less component styles, enhancing Info, Warning, Success, and Error messages across the UI.

  • Updated the GuideField style for Help pop-ups on the content edit page.

  • Redesigned the main CMS header using the V5 design system.

  • Redesigned the navigation using the V5 design system.

  • Added a new set of shadows to the V5 design system, ranging from xs to 3xl, to enhance depth and hierarchy across the CMS UI.

  • Standardized popup styles (Popup.less) across the CMS UI for features like search actions, quick views, notifications, profile dropdowns, and contextual search.

  • Updated progress indicators in the V5 design system, including restyled progress bars and progress circles with improved customization and accessibility.

  • Restyled data tables in the V5 design system with support for title text, supporting text, row count badges, flexible column types, and pagination. Tables now support diverse data formats like avatars, thumbnails, and progress bars.

  • Enhanced ComboInput.less for fields requiring value selection.

  • Restyled input components in V5, including standard inputs, text areas, auto-expanding fields, and input rows.

  • Redesigned V5 Tab Style with Tailwind-based TabBar.css.

  • Updated V5 Search Input Style by converting SearchInput.less to Tailwind-based CSS.

  • Restyled the V5 DateTime Input toggle button by converting DateTimeInput.less to Tailwind-based classes.

  • Redesigned the V5 Labeled Checkbox and Checkbox Toggle styles by converting Checkbox.less and LabeledCheckbox.less to Tailwind-based CSS.

  • Revamped V5 Pagination Style by converting Pagination.less to Tailwind-based CSS.

  • Redesigned the V5 ActionBar styles by converting ActionBar.less to Tailwind-based CSS.

  • Updated the V5 Conversations widget by converting Conversations.less to Tailwind-based CSS.

  • Introduced Contextual Commenting to enable field-level comments within the content edit form.

  • Updated the V5 Guide Style by converting Guide.less to Tailwind-based Guide.css, modernizing guide headers and adding a Guide Tree popup for better navigation. Introduced a disabled edit button for unselected ComboInputs.

  • Updated the V5 Tree List Style by converting TreeList.less to Tailwind-based CSS.

  • Updated the V5 DateStringField and Month components.

  • Restyled the V5 Embedded Input Group (EIG) with Tailwind-based CSS.

  • Restyled V5 DashboardRow by converting DashboardRow.less to Tailwind-based DashboardRow.css.

  • Restyled the V5 Content Summary (Quick View) component by converting ContentSummary.less to Tailwind-based CSS.

  • Converted QueryField.less to Tailwind-based CSS, improving the Query Field component’s design and usability in role management and embedded forms, while addressing responsive layout and styling issues.

  • Restyled the V5 Paginated Result component with Tailwind-based CSS, enhancing filters and pagination layouts for Mail Publishing and Community widgets while maintaining flexibility for future improvements.

  • Restyled LinkCarousel and DashboardWidget components with Tailwind CSS, introducing Lucide icons and removing legacy SearchWidget-related styles for a cleaner, modernized design in dashboard widgets.

  • Updated Mirror and Share Preview components with improved layouts, clipboard action visibility, and error state styling using Tailwind-based CSS.

  • Restyled the FormFilter (formerly ContentFilter) component with Tailwind CSS.

  • Revamped the color picker component with Tailwind CSS, improving hover/focus interactions, palette handling, and overall usability.

  • Redesigned map components for improved marker visibility, locate control interactions, and remove marker functionality using Tailwind CSS.

  • Redesigned the Card component with Tailwind CSS, improving hover interactions, image handling, and missing media states.

  • Restyled the Label component with Tailwind CSS for enhanced aesthetics and improved readability.

  • Updated Content Reporting styles for a refined layout, enhanced button interactions, and improved widget design using Tailwind CSS. Multi-format downloads are supported seamlessly in Reports and Dashboards.

  • Removed the Community Plugin and its related modules from the platform and express.

  • Modernized the Search Widget Advanced component with Tailwind CSS for improved layout design and usability. Fixed regressions to ensure consistent Add button visibility in Advanced Query field popups.

  • Revamped the Diff functionality in the V5 UI, streamlining content comparison workflows for revisions/versions.

  • Redesigned the AnalyticsWidget.less component for V5.

  • Redesigned the AssociatedContentWidget.less component for V5.

  • Restyled the BulkWorkflow component in V5, featuring improved drop-down handling, sticky elements, and an optimized layout for a more streamlined user experience.

  • Restyled the Calendar dashboard widget in V5, bringing it in line with the updated design system.

  • Restyled the Admin.less component for V5, ensuring alignment with the latest design standards.

  • Polished the V5 Dashboard with updates, aligning with the latest design standards.

  • Restyled the ImageEditor.less component for V5, aligning with the latest design standards.

  • Restyled the ContentColors.less component for V5, aligning with the latest design standards.

  • Introduced a new API ProfileDropdownAction for managing profile drop-down items.

  • Restyled the ContentEditDrawer component for V5, improving the layout for filters, carousels, and sortable elements.

  • Redesigned the Page component with a responsive grid layout for dashboards, admin, and edit areas. Added a mobile-friendly header for improved navigation and search, along with a dedicated mobile footer for edit pages.

  • Restyled the PrivilegeAccessWidget for V5, creating a cleaner and more modern interface and introduced a new PrivilegeAccessWidget.css file.

  • Standardized the color mapping for CMS visibility statuses in the Revision component.

  • Updated the Revisions component for V5 with a modernized design, including workflow color customization and a refined layout for version history. Enhanced filters, pagination, and status labels to improve usability and visual clarity.

  • Redesigned the SearchFields component for V5.

  • Redesigned the SearchResult component for V5, introducing responsive styling for search controls and results. Enhanced views (list, mixed, grid) dynamically adapt to screen size, with key features like sorting and pagination optimized for smaller viewports.

  • Redesigned the Hierarchy component for V5.

  • Redesigned the Board component for V5 with an improved layout for the Board view in CMS search results. Enhanced column designs, card interactions, and error handling for a more responsive and user-friendly experience.

  • Redesigned the SearchWidget component for V5 with improved grid-based layouts and enhanced filter management. Introduced seamless transitions for global and fullscreen searches, along with better handling of recent/saved searches and darkened backgrounds for popups.

  • Refined Slack authentication UI with updated styling and improved user experience by eliminating unnecessary tab clicks. Unauthenticated users are now presented directly with a message and a sign-in button.

  • Redesigned the View Watchers component with updated styles for improved form layouts, streamlined watcher lists, and enhanced action button visibility, creating a more intuitive user experience.

  • Updated the Content Tools interface with a refined design.

  • Improved the Suggestions widget with updated styling for seamless interaction, including an enhanced refresh feature, better visual feedback, and intuitive controls for managing tags and sections.

  • Enhanced the Collections UI with updated layouts for collection lists, streamlined search forms, and improved pagination styling, delivering a more cohesive and accessible user experience.

  • Refined the Workflow UI with updated styles for states, transitions, and actions, featuring improved drag-and-drop functionality and optimized layouts for initial and final states. Compatibility with existing JavaScript has been maintained.

  • Revamped the Content Preview interface with updated styling for overlays, enhanced uniformity in toolbar spacing, and refined hover and interactive states, delivering a polished and user-friendly preview-to-edit workflow.

  • Updated the Content Edit Page with refined layouts for toolbars, banners, and embedded popups, ensuring better functionality and a cohesive design.

  • Enhanced the Content Form UI with updated layouts for visible/hidden items, clusters, and tabs, while hiding redundant fields and controls.

  • Updated the Repeatable Text Input (RTI) with numbered markers, improved button visuals, and enhanced feedback for selected and removing items, delivering a more user-friendly and polished experience.

  • Revamped Content Input Group (CIG) with flexbox layouts, hover-based fade effects for reduced visual clutter, and performance-optimized collapsed clusters using content-visibility for a streamlined editing experience.

  • Refined the Repeatable Content Input Group (RCIG) with updated layouts and interactions for content fields.

  • Enhanced Ask AI and Create with AI interfaces with consistent avatars, improved prompt and response designs, and user-friendly layouts, delivering a more cohesive and polished AI-driven experience.

  • Updated Mail Publishing UI with refined attachment icons, error indicators, and highlight styles for improved visual clarity and usability.

  • Streamlined the translation workflow with updated table layouts, enhanced error and status labeling, and refined controls, delivering a more intuitive and polished user experience for managing translations.

  • With the V5 Components - TimedContent.less update, we have redesigned timed content playback and companion features with improved video preview and player styling.

  • Enhanced the Before You Publish popup with updated styling for the cancel link, making it consistent with V5 design standards.

  • Revamped styling for numbered lists with the V5 Components - NumberedList.less update.

  • Updated the V5 Components - AdobeStock.less to include a visually distinct green badge with a premium icon for licensed Adobe Stock images.

  • Enhanced the V5 Components - BackgroundTasks.less to include updated button styles, task display alignment, and status labels, ensuring a more consistent and visually refined interface for background tasks.

  • The Brightspot Billing Plugin has been removed.

  • The Brightspot Billing : Mock Plugin has been removed.

  • The Brightspot Native Plugin has been removed.

  • The Brightspot InDesign Plugin has been removed.

  • The Atlassian Plugins, including Brightspot: Atlassian, Jira, and Personal Data Reporting API, have been removed.

  • The Brightspot Quiz Plugin has been removed.

  • The Brightspot Corporate Plugin has been removed.

  • Implemented Integration tests - Webpage ping tests to validate the loading and functionality of all available webpages, including automatic testing for newly created pages to ensure reliability.

  • Redesigned the V5 Components - CodeMirror.less to enhance the appearance of code blocks in the RTE, including refined syntax highlighting and cursor styles, ensuring consistency with the V5 design system.

  • Added an AI Audit Dashboard widget to enable CMS users to monitor AI interactions comprehensively, showcasing key metadata like requests, responses, timestamps, and performance metrics for enhanced transparency and oversight.

Improvements

  • Removed gradient backgrounds from buttons such as save, publish, and done, replacing them with theme color 7, while keeping gradient backgrounds on icons.

  • Improved keyboard navigation and accessibility within the content editing interface. Updated requirements now specify using Alt+Tab and Shift+Alt+Tab for region switching, replacing Ctrl+Tab due to browser restrictions.

  • Migrated the btu-icon web component to the brightspot-ui repository to promote the use of declarative web components.

  • Converted a Tailwind CSS loader into a reusable web component to promote declarative web development.

  • Restored and enabled specific timezone-related tests that were previously removed or conflicted during branch merges.

  • Implemented tasks to improve project organization and clarity. Consolidated files into a single util directory and split documentation files for better structure.

  • Improved transition from exposing utility functions as global Window-level functions to making them installable dependencies within the platform-ui repository.

  • Implemented the following improvements to the styling of enhancement previews in the V5 Components project:

    • Fixed the Quick View feature for content types to improve user experience when previews are unavailable.
    • Updated the contrast of the "State Changed" color for inputs to improve accessibility and distinguish them from error states.
    • Implemented UI improvements for the content edit page to enhance user experience during scrolling.
  • Resolved an issue with web components rendering and querying child elements during lifecycle events to improve their reliability without relying on MutationObservers.

  • Disabled AI streaming responses to improve performance and address response lag issues, with subsequent testing and code updates.

  • Enhanced Brightspot UI tooling to support web components.

  • Added the data-cluster attribute for clusters that includes the name of the cluster.

  • Implemented the following performance improvements:

    • Lazy-load elements with descendants
    • Reduced five or more complex CSS selectors
    • Investigated render bottlenecks that were caused by Rich Text Editor (RTE)
    • Audited and investigated performance-related warnings with btu- web components
  • On the mobile view, navigation on the left panel now collapses automatically when you tap a link such as Reports, Ask AI, Sites & Settings, and so on.

  • Enhanced Create with AI user experience by enabling preconfigured prompts for users.

  • Added the data-cluster attribute for clusters that includes the name of the cluster.

  • Implemented the following performance improvements:

    • Lazy-load elements with descendants
    • Reduced five or more complex CSS selectors
    • Investigated render bottlenecks that were caused by Rich Text Editor (RTE)
    • Audited and investigated performance-related warnings with btu- web components
  • On the mobile view, navigation on the left panel now collapses automatically when you tap a link such as Reports, Ask AI, Sites & Settings, and so on.

  • Enhanced Create with AI user experience by enabling preconfigured prompts for users.

  • Configured the UI by using Conventional Commits to create commit history and Claude Code AI model.

  • Carried out the following performance improvements in Brightspot UI popup:

    • Lazy-load Analytics widget in tabs

    • Lazy-load Translations widget locale and locales combo-input items

    • Reduce the usage of :has selector to:

      • Solve Content Edit popup issues such as:

        • The Information Message box appears with no text

        • When you click the item in the Shelf, nothing appears

        • Loading indication is not displayed when saving, transitioning, scheduling, or publishing in a pop-up

      • Remove complex selectors from Dialog.css

  • Projects now independently map Content Types with their Lucide icons so that all Content Types have the appropriate icons.

  • Added the ability to resolve comments that are addressed. The Resolve action appears only for the parent comment. With Resolve Comment feature, you can do the following:

    • Resolve comment

    • Unresolve comment

    • Show resolved comments

    • Hide resolved comments

  • Improved the transition on dashboard widgets where the background gets blurred when you expand widgets.

  • If you leave a comment on a field within an embedded object (for example, contents > module) which is later removed, the comment stays in the Conversation widget and displays details such as Content > Module > Field Name (Removed) along with the following:

    • User Name

    • Timestamp

    • Contents > List > Promo (Removed)

    • Comment

  • Introduced phase 1 performance improvements for the v5 UI. Improved each of these areas to bring the performance and responsiveness at least on par with the v4 UI.

    • Typing

    • Moving tab focus

    • Hover state and focus

  • Made the Publish button green.

  • Added additional TailwindCSS classes for l10n badges (localization badges) that indicate what locale site and content is in.

  • Comments for default and variation/overlay content are now properly separated. While viewing Contextual Commenting and Conversations Widget, you now see relevant comments.

  • Updated sizes of Experimentation dialog boxes for improved usability.

  • Moved Ask AI to the left of the page. On mobile, it appears on the top of the page.

  • Enhanced edit content experience on mobile by removing stickiness in headers and banners.

  • Repositioned the Guides to the left of the grid with a new gray background and improved spacing between label and text to be more consistent with field spacing.

  • Updated the display of Highlight AI in the RTE toolbar with other RTE tools by introducing a wand icon and updating the tool text to appear only on hover.

  • Enhanced the side toolbar to enable users to open both the Preview panel and one other panel all at once. On mobile, we enable opening only one toolbar panel at a time, with the right-rail navigation always visible.

  • Popups with .is-noGap or .is-fromTop styling now remain open if you click outside the popup, preventing accidental closures. These popups can only be closed through direct user actions such as clicking close, cancel, or pressing the Escape key.

  • Introduced support for additional CSS classes via a dedicated text file, enabling downstream (Plugins, GO and Delivery projects) and experimentation projects to include required utility classes in the final CSS.

  • Restored backward compatibility for interfaces that used ToolPageContext by introducing new abstract methods and interfaces.

  • Refined admin navigation with updated spacing, colors, and visual states, and added a V5-specific Area header for improved alignment between the left nav and page heading. These enhancements apply to all relevant admin pages, including Sites & Settings.

  • Slack notifications now appear in threads.

  • The Create New option is now visible again in global search.

  • The publishingWorkflow widget in V5 is now styled to match with the V4 experience, with the Publish and the Schedule options hidden behind the Publish Override button.

  • Introduced a customizable Conversation ContentEditTopicAction that allows you to configure which conversation post notifications you receive by using flexible, filter-based criteria. The legacy ConversationSubscription system has been deprecated. This improvement introduced a breaking change. See the Breaking Changes section below for more information.

  • Introduced a new notification trigger that notifies users when content is scheduled for future publication. This provides updates both in the CMS and external notifications via Slack or Teams.

  • Updated default background color for user avatars to --btu-theme-purple-600

  • Optimized webpack build performance for development.

  • Restored the original location of The Shelf so that it appears at the bottom of the content edit page.

  • Updated the content edit page for Brightspot v5.0.

    • Refactored the content edit page header.

    • Enhanced the right rail (colors and spacing) to make the area more consistent with the left navigation.

    • Updates right rail panel backgrounds to gray 50.

  • Updated the header and left navigation design.

  • Brightspot v5.0 now defaults to enabling the v5 UI instead of the earlier disabled default.

  • Added the Link icon (link to homepage) next to site switcher in expanded view.

  • The Source Data popup at the bottom right of images now has an improved UI for better readability and less clicks.

  • Enhanced user permissions so that site categories are now only visible for sites to which a user has access.

  • Converted Suggestions.js to a web component.

  • Refined List Manager widget styles in v5 RTE for improved layout and usability.

  • Enhanced spell check styling in v5 RTE, improving the display and interaction of spelling problem indicators and suggestions.

  • Updated the Content Types Icon field to support Lucide icons in v5. Tooltips and UI references now guide users to lucide.dev, and valid Lucide icons will display consistently across all relevant widgets and components.

  • Added table headers to the Recent Activity and Alerts dashboard widgets in v5.

  • Combined the v4 and v5 JavaScript bundles into a single bundle.

  • Added additional examples of Brightspot UI’s custom TWCSS plugins to Storybook.

  • Converted jquery.toggleable.js to a TypeScript-based Lit web component, eliminated the jQuery dependency, and implemented robust tests.

  • Improved the Conversations plugin by modernizing its codebase, integrating workflow comments into the widget, enabling automatic watcher addition for content posts, adding support for edited post timestamps, and WIP retention functionality.

  • Rewrote ContentFilter.js as a TypeScript-based Lit web component, aligning with modern development practices and introducing comprehensive test coverage for improved reliability.

  • Rewrote RTC/Socket in TypeScript to enhance type safety, maintainability, and alignment with modern development practices.

  • Converted v4/graphql JavaScript files (GraphQL.js, GraphQLPersistedQueryRequestData.js, GraphQLPreview.js) to TypeScript, modernizing the codebase with Brightspot's web component development standards and improving reliability through comprehensive testing.

  • Enhanced error messaging for external item imports in the CMS to provide clearer, more user-friendly feedback when issues like timeouts or failures occur, improving the editor experience.

  • Updated the Users and Roles page to utilize the ToolPage framework, enhancing consistency in pagination and user experience across the CMS.

  • Converted the Content Types page servlet to use ToolPage and Dari HTML.

  • Converted SearchWidget.js to TypeScript.

  • Refactored the Bulk Upload Processor to support object types with non-specific MIME types, enabling efficient bulk uploads for catch-all content types like Attachment File. Simplified the caching mechanism for improved performance and flexibility.

  • Converted LiveBlog.js to TypeScript.

  • Converted Theme.js to TypeScript.

  • Reintroduced a help icon for non-developer roles to access contextual production guide information and added a wrench icon for developer roles.

  • Converted ContentInputGroup.js to TypeScript.

  • Migrated PostPublish.js to TypeScript. Improved the post-publish popup behavior by ensuring it scrolls to the success message after an article swap.

  • From the Tools popup, removed the Return to Dashboard on Save field.

  • Resolved an issue in the Upload servlet to correctly recognize and honor generic MIME type patterns defined via the @MimeTypes annotation, ensuring seamless bulk uploads for custom content types.

  • Enhanced the admin area workflow by ensuring users remain in the same admin area after permanently deleting a record, rather than being redirected to the dashboard.

  • Converted the RadialProgressBar component to TypeScript.

  • Introduced a widget to mark existing content as a translation, enabling users to connect it to source content without following the rigid Translate this flow.

  • Migrated Translation.js to TypeScript and implemented a reusable checkbox as a web component.

  • Updated Viewers.less to align with the v5 design system, enhancing the styling of search results, the publishing toolbar, and the dashboard's recent activity widget. Improved avatar visuals by introducing a green ring for editing or locked modes while maintaining consistent viewer order.

  • Restyled Widget.less to Widget.css, layering it into the Tailwind components system to align with the v5 design.

  • Converted Watchers.js to TypeScript. Verified that the View Watchers popup and menu toggle display accurate watcher counts and labels, ensuring seamless and intuitive user interactions.

  • Streamlined bulk scheduling by consolidating scheduled items into a single Bulk Schedule Items field and removing redundancies. Improved clarity by renaming the field and refining the UI for better usability.

  • Resolved styling inconsistencies by syncing key CSS files with their 4.8 Less-based counterparts. Updated the right-rail feature to integrate seamlessly with the v5 Tailwind grid structure, ensuring design consistency across components.

  • Removed the outdated and unused Calendar Search Result View, along with its associated files, to reduce code clutter and improve maintainability. This change aligns with the introduction of the new calendar widget.

  • Converted ContentSelectorActions.js to TypeScript.

  • Resolved conflicts between v4 dynamically imported styles and v5 CSS by isolating specific styles (e.g., ProseMirror.css) into dynamic import bundles. This ensures v5 styling integrity while preserving the functionality of dynamically loaded v4 scripts.

  • Removed the Brightspot: Social: Publish Plugin to reflect modern workflows. Future integrations will leverage Zapier to connect Brightspot with popular social media management platforms, ensuring alignment with current industry practices.

  • Refactored Upload.java by migrating to ToolPage, modernizing code, and replacing deprecated elements.

  • Refactored multiple classes to align with the ToolPage framework.

  • Refactored the BulkWorkflow from the legacy PageServlet to the ToolPage API. Enhanced the success page for bulk workflow actions to include a styled green success banner and improved navigation.

  • Deprecated ToolPageContext APIs. This improvment introduced a breaking change. See Breaking Changes below for more information.

  • Converted ContentSummary.js to TypeScript.

  • Deprecated and removed all ToolPageContext(TPC) usage from APIs. This improvement introduced a breaking change. See Breaking Changes below for more information.

  • Convert RTE Interchangeable to TypeScript.

  • Migrated the functionality of CopySiteWidget.js to CopySiteToolPage.java, centralizing the logic within the ToolPage framework. This enhances maintainability and ensures consistent behavior when redirecting to newly copied sites.

  • Replaced the legacy CopySiteWidget.less file with updated styling using TWCSS, maintaining the same functionality while simplifying the codebase.

  • Restyled the StyleEmbeddedContent.less to align with v5 design principles, addressing layout responsiveness, overflow handling, and scroll behavior.

  • Converted Diff.js to TypeScript.

  • Added a customizable Custom Keyboard Config field in CMS settings, empowering users to modify the RTE Unicode Keyboard by adding, removing, or replacing characters for greater editorial control.

  • Resolved an issue where search filters appear sortable but CMS did not respect the order set by users.

  • Converted EditFieldUpdateCache to TypeScript.

  • Converted ExternalItemObjects to TypeScript.

  • Converted ContentState from PageServlet to ToolPage.

  • Converted ContentTools from PageServlet to ToolPage.

  • Converted SearchInput.js to TypeScript.

  • Converted ContentEditSites.js to TypeScript.

  • Converted EmbeddedInputGroup.js to Web Component. Affects when toggling the collapse state of lead items on a content like Article.

  • Removed usages of ToolPage#page (ToolPageContext).

  • Converted DashboardPage and DashboardWidgetPage to ToolPage.

  • V5 - Added an ability to specify an icon name for items in Tool Page navigation. This is a critical improvement.

  • Removed hardcoded references to non-existing Javadoc domains within ToolRequest.

  • Modernized the Download This functionality in the Platform DAM plugin.

  • ToolUserWorksInProgress implemented ProfileDropdown.

  • Converted AddEmbeddedContent.js to TypeScript.

  • Improved the UI/UX by modernizing and standardizing the way we present popups to the user in the CMS. This is a critical improvement.

  • Refined the foundation of ProseMirror styles in V5, including enhancements to text formatting, alignment, lists, comments, and track changes, ensuring a more polished editing experience.

  • Converted ProseMirrorContainer.css styles in V5, introducing a rounded border for the RTE, smoother loading transitions, and streamlined HTML mode styling.

  • Enhanced the ProseMirrorToolbar with updated MenuView.less styles, improving icon buttons, submenus, overflow menus, and word count positioning while streamlining HTML mode functionality.

  • Updated foundational styles for enhancements in V5, improving layouts, type labels, previews, and menus while enhancing the move UX for better placement control.

  • Streamlined preview styling by integrating it into Enhancement.css, covering preview placement, image height limits, and preview labels for a more cohesive design.

  • Refactored a number of PageServlet classes to use the ToolPage API, replacing deprecated HttpServlet usage with Dari Web for improved maintainability and modernized code. Additionally, unit tests were added for these classes to ensure enhanced reliability.

  • Removed a number of deprecated DAM PageServlets related to Collections for reduced technical debt and improved codebase maintainability:

  • Refactored TermsResults, TermsServlet, and DictionaryResults classes to adopt the ToolPage API, replacing deprecated PageServlet usage. Added unit tests for DictionaryResults to ensure enhanced reliability and maintainability.

  • Added ProseMirror-table.less for Rich Text Editor in V5, enhancing table styling with improved layout, interactive menus, and streamlined design for better user experience.

  • Added TableSizerPopup.less to enhance the V5 Rich Text Editor's table sizing interface, introducing hover effects, active state styling, and improved table spacing for a better user experience.

  • Added CustomKeyboard.less to support the new custom keyboard feature in the V5 Rich Text Editor, accessible via the toolbar or the cmd + shift + K shortcut.

  • Added ProseMirrorEnhancementMenu.less to style the actions menu and icon buttons for block and non-block enhancements in the V5 Rich Text Editor.

  • Redesigned the ProseMirrorFindReplace component for V5 with responsive styling for all breakpoints.

  • Added FullscreenView.less to style the V5 Rich Text Editor in fullscreen mode, supporting a comment rail for toolbar comments and Track Changes insertions/deletions. Further refinements to selectors will follow after addressing related bugs. This is a critical improvement.

  • Added PastePopup.less to style the Paste Popup in the V5 Rich Text Editor, enhancing the experience for pasting content into Articles using keyboard shortcuts.

  • Added Mention.less to style tagged mentions in the V5 Rich Text Editor, improving the user experience for identifying and interacting with tagged individuals.

  • Enhanced the Status filter to include only @ToolUi.Filterable fields, improving control and preventing duplicate visibility filters. Updated relevant methods and javadocs to reflect the new behavior. This improvement introduced a breaking change. See Breaking changes below for more information.

  • Added localized text labels for Page-guideLink (Guides) and Page-askAiLink (Ask AI) in the left navigation, improving clarity and accessibility.

  • Added a CMS Icon field in Global and Site settings to provide distinct logo options for navigation and login, ensuring consistent branding across the V5 UI and legacy interfaces.

  • Converted existing web components to Dari HTML.

  • Moved unsupported V4 UI theme fields to a dedicated V4 UI cluster across Global, Site, and User settings, ensuring clarity and compatibility during the transition to V5 UI.

  • Added visibility-specific classes to status badges across the CMS in the V5 UI, enhancing clarity and consistency in search results, widgets, admin pages, and version history labels.

  • Updated the V5 UI to make URLs, Site Ownership, and Privilege Access widgets read-only when viewing overlays, enhancing clarity and preventing unintended edits.

  • Refactored AbstractWebPage and ToolPage in the V5 UI to reuse existing instance variables, enhancing clarity and reduces the risk of errors.

  • Released Phase 2 of the AI Audit Dashboard Widget in the V5 UI, providing advanced filtering, detailed metadata visibility for AI interactions, and configurable access permissions.

  • Enhanced the V5 UI by pre-selecting the Default option in the Image Download Options dropdown, providing a more intuitive and user-friendly experience.

  • Added DownloadImageAction into the Platform DAM.

  • Fixed a failing BulkOperationsTest#ongoingIndexTasks.

Breaking changes

  • This release removes a public method, changing

public void initialize() to private void initialize(boolean isPostMethod) in the AssociatedContentResultsServlet.

  • To make an Indexed Visibility field appear in the Search Status drop-down, you now need to add the @ToolUi.Filterable annotation to that field. Previously Indexed Visibility fields would appear there by default.

  • ToolPageContext has been removed from interfaces/abstract classes so that failure of implementations can be detected at compile time.

    • Any JS based classes will only break at runtime, so JS code should be reviewed and updated before deploying.

    • The following files which have been deprecated since 4.8 and marked for removal have been removed:

      • /cms/db/src/main/java/com/psddev/cms/tool/file/AudioFileType.java
      • /cms/db/src/main/java/com/psddev/cms/tool/file/ImageFileType.java
      • /cms/db/src/main/java/com/psddev/cms/tool/file/PdfFileType.java
      • /cms/db/src/main/java/com/psddev/cms/tool/file/SvgFileType.java
      • /cms/db/src/main/java/com/psddev/cms/tool/file/VideoFileType.java
      • /cms/db/src/main/java/com/psddev/cms/tool/page/content/field/FileField.java
  • The following APIs have been removed:

    • WebResponse#getCookies(String)
    • WebResponse#addCookie(String, String)
  • The methods publish, publishDifferences, trash, restore, and purge have been relocated to ToolRequest.

Was this page helpful?

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.