Skip to content

Release 26.06.29-01

Choose a tag to compare

@dotCMS-Machine-User dotCMS-Machine-User released this 29 Jun 19:06

Release: v26.06.22-03 → v26.06.29-01

Caution

Rollback Warning: This release contains irrevertable changes that are non-trivial to rollback from.

  • Page API: Reshapes the GET /api/v1/page/_render-sources response (generic files[] + opt-in Sass source maps) and preview/live mode handling — consumers depend on the new contract. (#36264)
  • Publishing API: Adds a new SCHEDULED status tier to GET /api/v1/publishing, changing the response contract that downstream callers consume. (#36275)
  • Workflow: Changes the workflow fire-action REST contract to accept (and warn on) payloads carrying system location fields instead of rejecting them. (#36326)

Features & Enhancements

  • Content Drive: Uploads now prompt for Asset vs File, send the chosen base type to the backend, and the backend resolves a content type from the FILEASSET base type (matching mime type to the accept field variable). (#36243, #36317)
  • Image Editor: New standalone @dotcms/image-editor Angular library replaces the legacy Dojo editor, wired into Edit Content's binary field with server-rendered preview, crop/focal tools, command history, and download. (#36236)
  • dotAI / SDK: Productionizes the agentic runtime as @dotcms/ai (sandboxed code execution against the dotCMS API) and migrates the MCP server onto it, adding download_assets / upload_assets tools. (#36309)
  • Site Search: Vendor-neutral Site Search with an OpenSearch implementation and a phase-aware router that dual-writes and reads correctly across ES→OS migration phases. (#36282)
  • Folder API: New GET /api/v1/folder/search endpoint with name filtering, pagination, and sort, backed by a batch permission check that collapses N+1 permission queries into one SQL round-trip (fixes ~2s response times on large sites). (#36308)
  • Image Processing: Registers the libvips rotate filter (?filter=rotate now works) and adds a SHARED_COMPLETED dotGenerated mode that generates renditions on local scratch and shares only the finished file across clustered instances. (#36284)
  • Container/JVM: setenv.sh now auto-selects the GC algorithm by available vCPUs — G1GC with periodic GC for 1–3 vCPUs, ZGC for 4+ — overridable via JAVA_OPTS_MEMORY. (#36259)
  • Cache: H22 async cache commits migrated from a fixed platform-thread pool to virtual threads (Java 25), with behavior and backpressure preserved. (#35992)
  • Edit Content: The Tags field now shows a Search tags or type to create one. placeholder in its empty state. (#36291)
  • SDK Examples: The examples/nextjs reference example migrated to TypeScript (Next.js 16, React 19, Tailwind v4) with a refreshed "TravelLux" brand identity. (#36330)

Fixes and Known Issues

  • Workflow: Reverts a regression that caused workflow steps to disappear. (#36278)
  • Push Publishing: Static Push Remove now removes fallback-rendered page artifacts in every configured language (not just the default), mirroring publish behavior. (#36274)
  • Push Publishing: Bundles stuck in a failed-to-send state against an unreachable endpoint are now finalized as FAILED_TO_PUBLISH and removed from the queue once retries are exhausted, instead of looping forever. (#36342)
  • Push Publishing: Clicking content on the pending-bundles tab now opens the edit-content dialog. (#36292)
  • Maintenance/Starter: Starter export and import now include Experiments and their Variants, which were previously silently omitted from backups and migrations. (#36339)
  • OpenSearch Migration: Unified, phase-aware OpenSearch startup connection gate so an unreachable/misconfigured OS fails fast with an actionable message instead of an opaque exception ~30s into startup. (#36248)
  • dotAI: Semantic search and streaming chat no longer throw a ClassCastException with Amazon Titan Embed Text V1 — embedding JSON values are now read via Number.floatValue(). (#36314)
  • Vanity URLs: Unpublishing now correctly unpublishes the canonical page. (#36205)
  • REST API: Fixes deprecated ESIndexResource create/modify path-param endpoints that returned HTTP 500 by forwarding the captured params to the 3-arg auth(...) overload; missing/invalid shards now returns 400. (#36260)
  • SDKs: Stop leaking UVE edit-mode data-dot-* attributes into live/production pages, gated by analytics activity. (#36288)
  • SDK Client: client.page.get() no longer returns undefined optional params inside graphql.variables, so the response is JSON-serializable for Next.js Pages Router. (#36290)
  • Edit Content: Single-option Checkbox/Radio/Select/Multiselect fields now display only the label from label|value options instead of the raw string. (#36319)
  • Admin Portlets: Content Type Edit dialog Cancel now closes the dialog, and the Tags portlet gains a Show Global Tags toggle plus Export Selected/Export All. (#36299)
  • Plugins: Typing in the Exported Packages search field keeps focus in the input instead of jumping into the editable package-list textarea. (#36300)
  • Content Drive: Fixes the Upload-button flow silently dropping the selected file in Chrome by consuming files before resetting the input. (#36352)
  • SDK Docs: Audited and fixed broken README links across all 8 @dotcms npm packages and authored the missing "How to Enable Page Editing" section. (#36272)
  • AI Review: Stops review models from wrapping their entire output in a fenced code block by removing the example fence from the prompt. (#36303)

Deprecations, End of Life, and Reminders

  • Folder API: POST /byPath is deprecated (forRemoval) in favor of GET /api/v1/folder/search; existing callers continue to work unchanged. (#36308)
  • Feature Flags: Removed getFeatureFlagWithDefault, standardizing on getFeatureFlag so a missing flag consistently resolves to enabled — note the FEATURE_FLAG_NEW_BLOCK_EDITOR sites now default to the new block editor when the flag is absent. (#36306)

Infrastructure & Security

  • CI/CD: New Release Tracks promotion engine advances floating Docker tags (latest / standard / trailing) across the GA stream by release age, with registry-only state and digest-based re-pointing. (#36161)
  • CI/CD: GA releases now default to moving the latest Docker tag, requiring an operator to type an exact phrase to skip, replacing the easy-to-forget boolean checkbox. (#36311)
  • CI/CD: Auto-PR reviewer upgraded to DeepSeek R1 via a configurable REVIEW_MODEL_ID variable, with the ai-workflows orchestrator pinned to the floating @v3 tag and a raised output-token budget. (#36289, #36296)
  • CI/CD: AI auto-review comment behavior moved off the sticky_namespace hack to first-class flags, defaulting to one rolling sticky comment per PR via the AI_REVIEW_STICKY_COMMENTS variable. (#36302, #36336)
  • Testing: Adds a phase-aware OpenSearch test bootstrap plus a Maven profile and just recipe so the indexing flow can run under a chosen ES→OS migration phase without per-test instrumentation. (#36268)
  • SDK Tooling: Expanded @dotcms/experiments README and Next.js usage guidance, added example env/gitignore files, and improved Docker compose compatibility. (#36281)