Skip to content

Release 26.04.25-01

Choose a tag to compare

@dotCMS-Machine-User dotCMS-Machine-User released this 25 Apr 00:33

Release: v26.04.22-01 → v26.04.25-01

Caution

Rollback Warning: This release contains an irrevertable change that is non-trivial to rollback from.

  • Dot AI: New backend API endpoint and credential-preserving config merge logic for AI provider configuration cannot be safely reverted once the custom UI config has been saved. (#35445)

Features & Enhancements

  • Dot AI: Replaces the generic providerConfig textarea in the Apps UI with a dedicated side-by-side config editor showing current config and example JSON, and adds a PUT /api/v1/ai/completions/config endpoint with credential-preserving merge. (#35445)
  • AI Embeddings: Adds a 50-token overlap between embedding splits so context at chunk boundaries is preserved for better semantic continuity. (#35367)

Fixes and Known Issues

  • Block Editor: Fixes hydration of Category and Tag fields for nested contentlets in StoryBlock refreshReferences responses, ensuring consistent { "categories": [] } output even when no categories are assigned. (#35413)
  • Block Editor: Fixes relationship-chain hydration so nested content updates propagate correctly; refreshContentlet no longer throws JsonParseException on non-JSON _raw default values. (#35412)
  • Block Editor: Corrects swapped icons on the image wrap-left/wrap-right toolbar buttons and adds the missing block-editor.bubble-menu.image.wrap-left and block-editor.bubble-menu.image.wrap-right i18n keys so tooltips render text instead of raw key strings. (#35424)
  • Block Editor: Enforces mutual exclusion between superscript and subscript marks so toggling one now unsets the other in the bubble menu. (#35414)
  • Workflows: Fixes DotWizardService so that dismissing a wizard dialog no longer fires workflow actions (e.g. Send for Review, Push Publish) against unrelated content on the next invocation. (#35423)
  • Content Types: Fixes the field editor dialog leaking state from a previously saved field — the Value textarea, boolean flags, and form state are now fully reset when opening a new field dialog. (#35435)
  • Content API: Prevents a ClassCastException when a related contentlet at depth≥1 has an empty binary field, by skipping the map entry write when no file is present. (#35283)
  • Rules: Skips the VIEW Rules permission check when a page has no rules attached, restoring the ability for users with edit/publish permissions to copy HTML pages without requiring explicit Rules permission. (#35404)
  • UVE: Scopes radio button and checkbox inputs by field variable name so selections in one field no longer affect other fields in the quick-edit form. (#35433)
  • Auth: Fixes the Change Password form sending Content-Type: text/plain instead of application/json, which caused silent HTTP 415 Unsupported Media Type failures on POST /api/v1/changePassword. (#35440)
  • Key/Value Field: Fixes a stale duplicatedKey validation error that persisted after the conflicting entry was deleted by re-running the key validator whenever the forbidden keys map changes. (#35455)
  • Dot AI: AI config endpoints (GET/PUT /api/v1/ai/completions/config) now accept an optional ?siteId= query param so configuration can be scoped to a specific site or SYSTEM_HOST rather than always resolving from the HTTP Host header. (#35456)

Infrastructure & Security

  • UI Icons: Migrates core-web from the deprecated Material Icons font to Material Symbols Outlined (variable font), replacing all material-icons class usages across Angular templates, JSPs, and web components, and removing the legacy .ttf/.otf font files. (#35449)
  • Style Editor: Refactors style editor schema handling to centralize form normalization and removes unused hooks to streamline the codebase. (#35355)