You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Block Editor: Added image text wrap (wrap-left/wrap-right) and horizontal alignment controls; images now use semantic <figure> elements across the editor, VTL templates, and React/Angular SDKs. (#35209)
Block Editor: Link editor now supports title, aria-label, and rel attributes via an expandable Advanced section in the link popover, replacing the previous "Open in new window" checkbox with explicit target/rel dropdowns. (#35240)
Edit Content: Relationship dialog auto-populates site/folder and language filters from the current contentlet's Host-Folder field values when one is configured, showing pre-filled chips immediately on open. (#35214)
Edit Content: File Picker and Image Picker now include an Upload New File button to upload assets directly to the selected site/folder without leaving the content editor. (#35221)
Style Editor: Duplicate variable name validation now prevents saving fields with conflicting identifiers. (#35219)
Categories: The Categories portlet has been rewritten in Angular with PrimeNG — includes TreeTable listing with pagination/sort/search, breadcrumb navigation, inline sort order editing, bulk delete, CSV import/export, and a permissions dialog; the legacy Dojo portlet is preserved as Categories Legacy. (#35146)
UVE: window.dotUVE.createContentlet(contentTypeVariable) is now available on the global UVE API and importable from @dotcms/uve, allowing the content creation dialog to be opened without inserting the new contentlet into the page layout. (#35282)
Fixes and Known Issues
Folders: Folder rename now correctly generates a new deterministic UUID when the URL changes while using direct SQL (UPDATE identifier) for child path updates, restoring the identity contract and fixing failures on folders with 20K+ contentlets. (#35176)
Edit Content: Multiple relationship field UI improvements — dynamic filter popover width, 6-dot drag handle, hover-only delete button, right-aligned Status column, and unified thumbnail styling in the selection dialog. (#35223)
Edit Content: url-title VTL now conditionally loads a modernized or legacy implementation based on the new edit mode feature flag. (#35216)
REST API: Non-admin users with the Locales portlet can now add and edit locales; LanguagesResource v2 now accepts either "languages" or "locales" portlet access. (#35250)
Tags: DotTagsService.getTags() now sends the filter query parameter (instead of name) to /api/v2/tags, restoring filtered tag suggestions in edit content. (#35244)
Site Search: Added SITE_SEARCH_USE_HTML_TITLE config flag (default false) to optionally index the rendered <title> tag instead of the CMS Page Title field for non–URL-mapped HTML pages; a full re-index is required when enabling this flag. (#35265)
Edit Content: Category fields now correctly join selected inodes as a comma-separated string on save and guard against non-array values during content translation, preventing crashes and ensuring categories persist. (#35249, #35248)
Edit Content: Lock warning no longer displays "undefined undefined" when the locking user has a null firstName or lastName. (#35245)
Edit Content: Key-value fields now display null imported values as empty strings instead of silently dropping them. (#35246)
Edit Content: Required binary, file, and image fields now show a red validation border when Save is clicked without a value, consistent with other field types. (#35254)
Edit Content: Drag-and-drop row reorder in paginated relationship fields no longer resets the table to page 1. (#35286)
Edit Content: Relationship field table now shows a thumbnail or content type icon placeholder for all rows whenever any item in the list has a title image. (#35285)
Template Builder: Fixed drag-and-drop regression where cross-row column moves left the source row empty by restoring stable row.id/box.id tracking; bumped gridstack to 8.4.0. (#35277)
Inline Edit: TinyMCE blur now correctly saves changes when the isNotDirty flag is unreliable (e.g., deleting an empty list), by comparing current content against the editor's startContent snapshot. (#35288)
Content Import: Async CSV imports no longer fail silently on large files due to Tomcat recycling the HttpServletRequest before the import thread finishes; the request is now snapshotted before async handoff. (#35287)
REST API: Uploaded filenames containing Unicode characters (including macOS NFD-encoded filenames) are now correctly preserved in TempFileResource instead of being stripped to ASCII. (#35276)
Infrastructure & Security
Search: Added foundational ES→OpenSearch migration infrastructure: IndexTag-based targeted routing, IndexStartupValidator for startup version/endpoint checks, and a side-by-side Docker Compose stack for dual-write validation. (#35275)
Frontend: Migrated deprecated RxJS 6 operators (pluck, switchMapTo, publishLast/refCount) to their RxJS 7.8 equivalents across dotcms-ui. (#35145)
CI/CD: Added min starter type to the publish-starter workflow, backed by minstarter.dotcms.com credentials and producing min_YYYYMMDD.zip artifacts. (#35230)
Docker: Bumped CUSTOM_STARTER_URL to version 20260409 across Docker Compose example configurations. (#35273)
Developer Tooling: Added angular-developer, link-workspace-packages, and monitor-ci agent skills, and a /gh-issue-troubleshoot Claude Code command for end-to-end GitHub issue resolution. (#35237, #35261, #35264)