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
Edit Content: The image editor is now available in Image and File fields (for image assets), saving edits as a new published version of the referenced file-asset without changing the field reference. (#36406)
Analytics: New $dotAnalytics.code() Velocity ViewTool lets template authors place the analytics tracking <script> tag manually, avoiding corrupted output on non-HTML pages. (#36451)
Site Search: Deleting a site-search index now removes it from both Elasticsearch and OpenSearch and rejects deletion of the active index. (#36439)
dotAI: Story Block (Block Editor) fields are now embedded as Markdown instead of HTML-stripped text, preserving tables, code blocks, lists, and headings for better embeddings. (#36366)
Edit Content: Added Playwright E2E coverage for the key-value field and hardened key-value and date/calendar parsing so string/array values are no longer split into characters and timestamps are stored consistently. (#36428)
Fixes and Known Issues
Search: Non-finite _score values (NaN/Infinity) in /api/es/search responses are now coerced to null, fixing HTTP 500s on sorted and filter-only queries. (#36480)
Content: Language-only locales without a country code (e.g. es) no longer crash page rendering, content save, History, GraphQL, or the Push Publishing queue view. (#36405)
Categories: PUT /api/v1/categories now actually re-parents an existing category (guarded by an edit permission check on the target parent) instead of silently ignoring the supplied parent. (#36440)
Publishing: Push Publishing retry now verifies permission on every targeted environment, and the draft-bundle listing endpoint is restricted to the caller's own user id. (#36446)
Search: The index management endpoints now block deletion of the active/building index (HTTP 400), cascade delete across Elasticsearch and OpenSearch, accept full physical index names, and mirror clear/open/close/replica ops to both engines. (#36399)
OpenSearch: Endpoint-separation is now enforced at the index-creation chokepoint, preventing .os shadow indices from being created when the ES and OS clients point at the same cluster. (#36421)
OpenSearch: Rolling the migration phase back to 0 during an in-flight reindex no longer wipes the OS index store or strands a partial .os reindex pair that could later return partial search results. (#36472)
OpenSearch: Startup connection errors are now classified (TLS mismatch, auth, unreachable) with remediation hints in fatal and fallback log messages. (#36462)
Template Builder: The "add container" dropdown now shows all matching containers by sending the correct per_page param and raising the option cap from 10 to 100. (#36475)
Edit Content: Category field now uses primary/tertiary button styling, adds a field-level "Clear all" button, and fixes chip alignment and remove-icon positioning. (#36438)
Edit Content: Comment section Send/Clear buttons are restyled and empty or whitespace-only comments are now blocked with a "A message is required." validation message. (#36464)
Edit Content: History cards now always display the exact date/time for every version, replacing the relative-time labels and hover tooltip. (#36450)
Infrastructure & Security
CI/CD: Removed the redundant workflow-based Semgrep jobs, relying on the Semgrep App that already scans every PR. (#36437)
Frontend: Removed Storybook configuration, stories, and pipeline steps from dotcms-ui and the repository. (#36443)
SDK: Migrated remaining Nx library projects to inferred build targets, moving build options into dedicated rollup.config.cjs/vite.config.ts files. (#36444)