Release 26.04.25-01
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
providerConfigtextarea in the Apps UI with a dedicated side-by-side config editor showing current config and example JSON, and adds aPUT /api/v1/ai/completions/configendpoint 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
refreshReferencesresponses, ensuring consistent{ "categories": [] }output even when no categories are assigned. (#35413) - Block Editor: Fixes relationship-chain hydration so nested content updates propagate correctly;
refreshContentletno longer throwsJsonParseExceptionon non-JSON_rawdefault 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-leftandblock-editor.bubble-menu.image.wrap-righti18n 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
DotWizardServiceso 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
ClassCastExceptionwhen a related contentlet atdepth≥1has 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/plaininstead ofapplication/json, which caused silentHTTP 415 Unsupported Media Typefailures onPOST /api/v1/changePassword. (#35440) - Key/Value Field: Fixes a stale
duplicatedKeyvalidation 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 orSYSTEM_HOSTrather than always resolving from the HTTPHostheader. (#35456)
Infrastructure & Security
- UI Icons: Migrates
core-webfrom the deprecated Material Icons font to Material Symbols Outlined (variable font), replacing allmaterial-iconsclass usages across Angular templates, JSPs, and web components, and removing the legacy.ttf/.otffont files. (#35449) - Style Editor: Refactors style editor schema handling to centralize form normalization and removes unused hooks to streamline the codebase. (#35355)