Skip to content

Release 26.07.13-01

Choose a tag to compare

@dotCMS-Machine-User dotCMS-Machine-User released this 13 Jul 22:38

Release: v26.07.10-01 → v26.07.13-01

Caution

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

  • Viewtools (VTL): This restores the $json.generate($rawResults.response) aggregations/tookInMillis/suggest contract; rolling back silently re-breaks any template that navigates those keys (zero-iteration loops, no error or log). (#36512)

Features & Enhancements

  • UI: New dot-content-thumbnail component unifies all admin content thumbnails (image/SVG/PDF/video/icon) into one Angular viewer across all 10 surfaces, with proper SVG vector rendering and static video first-frame previews. (#36424)
  • SDK: Added a Vue.js SDK (@dotcms/vue) and rewrote the Vue example app, bringing page rendering and live in-context UVE editing to parity with the React and Angular SDKs. (#36477)
  • SDK / Examples: Updated the Next.js example to a standalone nextjs-experiments demo (Analytics and Experiments now use separate infrastructures) and bumped references to the 20260630 starter. (#36490)

Fixes and Known Issues

  • Viewtools (VTL): $json.generate($rawResults.response) again includes aggregations, tookInMillis, and suggest, fixing templates (e.g. sitemap.vtl) that rendered empty after the OpenSearch migration — navigate aggregations directly as aggregations.<name>.buckets (drop the legacy .get("asMap") hop). (#36512)
  • Edit Content: History Tab now compares versions in the locale you are viewing and switches the compared version in place instead of exiting compare view, plus assorted loading/skeleton UX fixes. (#36461)
  • Block Editor: Content-type and contentlet slash-menu pickers now search server-side on every keystroke, so records past the first 40 are findable, with the sub-menu correctly re-anchoring to the caret. (#36488)
  • Edit Content: Relationship field table now right-aligns the last data column positionally, fixing misaligned status chips when showFields reorders columns. (#36542)
  • OSGi: Plugin uploads on a clustered instance now decide restarts against each node's live framework state under the cluster lock, fixing plugins left permanently unresolved after adding a new exported package. (#36503)
  • Indexing: deactivateIndex no longer orphans the OpenSearch store when the last index is removed, preventing a stale pointer from recreating a deleted index empty on restart. (#36502)
  • Reindex: Per-entry mapping now runs under a bounded timeout, so a hung filesystem stat on network storage can no longer wedge the single-threaded ReindexThread and halt all indexing. (#36499)
  • OpenSearch Index: Delete fan-out now exists-checks the shadow leg first and logs expected post-migration misses through the configurable shadow-write policy instead of noisy ERROR stack traces. (#36431)
  • Logging: Stack traces now collapse framework/plumbing frames (Tomcat, servlet, GraphQL, executors, reflection) into a ... suppressed NN lines marker while keeping com.dotcms/com.dotmarketing frames and cause chains, tunable via CMS_LOG4J_STACK_FILTER. (#36516)

Infrastructure & Security

  • Permissions: "Copy and Edit" and the page _deepcopy endpoint now enforce instance-level WRITE permission, returning 403 instead of letting View/Read-only users duplicate content. (#36510)
  • Search: Added integration coverage and documentation for the non-finite _score regression, verifying field-sorted /api/es/search and /api/es/raw queries return valid JSON with null scores. (#36489)
  • Frontend Testing: Migrated all frontend test files from @ngneat/spectator/jest to @openng/spectator/jest. (#36481)
  • Backend Testing: ImportUtilTest relationship tests now use unique content-type variables, eliminating cascading failures caused by asynchronous cleanup under dual-write migration phases. (#36518)