Skip to content

Release 26.07.09-01

Choose a tag to compare

@dotCMS-Machine-User dotCMS-Machine-User released this 09 Jul 20:18

Release: v26.07.06-02 → v26.07.09-01

Features & Enhancements

  • 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)