Releases: dotCMS/core
Releases · dotCMS/core
Release 26.04.25-01
v26.04.25-01 🏁 Publishing release version [26.04.25-01]
Release 26.04.22-01
Release: v26.04.21-01 → v26.04.22-01
Caution
Rollback Warning: This release contains irrevertable changes that are non-trivial to rollback from.
- Database Migration:
Task250604UpdateFolderInodesrewrites folder inodes in-place; rolling back leaves the database in an inconsistent state. (#35393) - Feature Flags: Restores the original feature flag semantics (no flag = ON, flag OFF = OFF, flag ON = ON); rolling back reintroduces the broken behavior. (#35411)
Features & Enhancements
- UVE: Default device controls (desktop/tablet/mobile + orientation toggle) are now a dedicated pill component in the browser toolbar; the device selector menu is reduced to custom devices, social media, and search engines only. (#35419)
Fixes and Known Issues
- Database Migration: Fixed
Task250604UpdateFolderInodeshanging indefinitely on large databases by replacing a per-row N×M query storm with a singleHashSetpre-load, and releasing idle Hibernate transactions beforeALTER TABLEDDL to prevent lock deadlock. (#35393) - Feature Flags: Restored original behavior where the absence of a flag leaves a feature enabled, preventing features from being incorrectly disabled by default. (#35411)
- URL Map: Fixed a 404 error when a URL-mapped contentlet lives on a different site than the one receiving the request by adding a cross-site fallback query when the host-restricted lookup returns no results. (#35345)
- Edit Content: Fixed a race condition that could silently blank Category fields on contentlets with multiple Category fields after a lock/unlock cycle or form rebuild. (#35388)
- Key-Value Field:
nullvalues imported via CSV are now displayed as the string"null"in both legacy and new Edit Content UIs instead of being silently dropped. (#35401) - OpenSearch: Fixed
OSBulkHelper.getIndexName()always returning the hardcoded fallback"dotcms_content"due to a silentnullreturn from an incorrect index type lookup; it now queries the active working index directly. (#35390) - OpenSearch: Made shadow-write failure log verbosity configurable via
DOTCMS_SHADOW_WRITE_LOG_LEVEL(defaultWARN) to reduce noise during OS migrations. (#35389) - UI: Fixed container list right-click context menu, corrected warning toast severity mapping (
WARNING→warn), fixed bundle upload dialog to restrict file picker to.tar.gz/.gz/.tgzand display the selected filename, and corrected containercopy()fromPUTtoPOST(was returning 405). (#35380) - URL Title: Replaced inline HTML string manipulation in
url-title_old.vtlwith safe DOM methods for slug suggestion links, eliminating an XSS risk. (#35406) - Localization: Added missing
tag-select-hosttranslation key for the host selection label in the UI. (#35405)
Infrastructure & Security
Release 24.12.27_lts_v19
v24.12.27_lts_v19 🏁 Publishing release version [24.12.27_lts_v19]
dotcms-cli - 26.04.22-01
Changelog
- 0a25373 🏁 Publishing dotCLI release version [26.04.22-01]
Contributors
We'd like to thank the following people for their contributions:
- dotCMS-Machine-User
Release 26.04.21-01
v26.04.21-01 🏁 Publishing release version [26.04.21-01]
dotcms-cli - 26.04.21-01
Changelog
- 82cbf51 🏁 Publishing dotCLI release version [26.04.21-01]
Contributors
We'd like to thank the following people for their contributions:
- dotCMS-Machine-User
Release 26.04.20-01
Release: v26.04.11-02 → v26.04.20-01
Caution
Rollback Warning: This release contains irrevertable changes that are non-trivial to rollback from.
- Content Indexing API:
ContentletIndexAPI.fullReindexStart()now returnsIndexStartResultinstead ofString; ES-specific types (BulkRequest,BulkProcessor,ActionListener) removed from the interface — callers must be updated before rollback is possible. (#35289) - GraphQL Permissions: Anonymous relationship-field queries now return
PERMISSION_DENIEDin theerrorsarray instead ofInternal Server Error; rolling back restores the broken 500 behavior for anonymous GraphQL consumers. (#35038)
Features & Enhancements
- Identifier: Adds
base_typecolumn andidx_identifier_base_typeindex to theidentifiertable, backfilled in batches viaPopulateIdentifierBaseTypeJob— enables faster content-type-aware queries without joins tostructure. (#35164) - Content Indexing: Migrates
ContentletIndexAPIImplto a vendor-neutral phase-aware router, enabling dual-write to both Elasticsearch and OpenSearch backends during the ES→OS migration. (#35289) - Edit Content: Workflow command bar now renders all actions as individual inline buttons (with an overflow menu for 4+), replacing the split-button pattern so all actions are immediately discoverable. (#35290)
- File Browser: Uploaded files are now automatically selected and the Add button immediately enabled after a successful upload, eliminating the extra click. (#35301)
- UVE: Same-page navigation (hash-only or query-only URL changes) no longer triggers a full page reload in the editor canvas. (#35326)
- UVE: Quick-edit panel gains a Cancel button that restores the last saved snapshot; container labels in the row-reorder palette now show a tooltip for truncated titles. (#35374)
- Content Drive: Adds an Edit Permissions option to the folder context menu, opening the existing permissions portlet in a dialog (shown only when the user holds
EDIT_PERMISSIONS). (#35327) - Content Drive / Edit Content: Pre-fills the Host/Folder field when creating a contentlet from a folder context in the legacy browser. (#35322)
- Bundle Management: New REST endpoints
POST /api/v1/bundles/assetsandDELETE /api/v1/bundles/{bundleId}/assetsreplace the legacy JSP-based bundle asset management with partial-success semantics and in-progress bundle guards. (#35024) - Maintenance Portlet: New REST endpoints
GET /api/v1/caches,GET /api/v1/caches/stats, andDELETE /api/v1/caches/region/{regionName}replace JSP-based cache management; also fixes missingresetAllPermissionReferences()side-effect on the existing provider flush endpoint. (#35218) - Portlets: Adds push publish action to the Plugins portlet context menu (requires enterprise license and configured environments); standardizes UI across Locales, Tags, and other portlets. (#35311)
- UVE: Visual polish pass across UVE 2.0 — responsive sidebar widths, palette thumbnail and hover improvements, style editor form consistency, and row-reorder hover fill. (#35343)
Fixes and Known Issues
- Edit Content: Block editor field now correctly parses JSON strings returned by the API during content translation, preventing raw JSON from displaying as plain text. (#35247)
- Edit Content: Switching to an untranslated locale now clears
inodeand resets the workflow step, so default workflow actions (e.g. "Save as Draft") are shown instead of the original contentlet's actions. (#35309) - Tasks Portlet: Task Detail dialog now opens correctly for content types using the new edit mode, since the
edit-taskhandler always uses the legacy task detail path. (#35312) - GraphQL: Anonymous queries traversing relationship fields no longer return
Internal Server Error— denied access now surfaces asPERMISSION_DENIEDin theerrorsarray. (#35038) - Content Types API: The
ensureparameter no longer causes the ensured item to appear twice or permanently omit a displaced item from paginated results. (#35300) - Vanity URLs: Restores the trailing slash on
/c/inBACKEND_FILTERED_COLLECTION, preventing the prefix from incorrectly matching all URLs starting with the letter "c". (#35346) - Push Publish: Fixes NPE, missing content, and "Conflicts between Folders" errors when push-publishing a renamed folder by bumping
version_tson contained assets and re-keying child subfolder identifiers. (#35298) - Reindex: Eliminates a TOCTOU race in
ReindexThreadby creating a freshBulkProcessorListenerandIndexBulkProcessorper batch, preventing silent record loss from concurrent rebuild signals. (#35323) - OpenSearch:
OSIndexAPIImplnow loadsos-content-settings.json(the file that actually exists) so indices are always created withmy_analyzer, fixing HTTP 400 errors fromaddCustomMappingon OS 3.4.0. (#35349) - OpenSearch: Phase 3 (
OPENSEARCH_ONLY) no longer queries the decommissioned ES cluster or recreates ES indices oncheckAndInitializeIndex()cycles. (#35356) - OpenSearch:
OSIndexAPIImpl.getClosedIndexes()is now implemented, fixing HTTP 404 on all subsequent operations after closing an OS index. (#35352) - Feature Flags:
DotPropertiesService.getFeatureFlag()now correctly handles native JSONbooleanvalues from the config endpoint, fixing the Style Editor tab being hidden despite the flag being enabled. (#35332) - UVE: Workflow actions in the UVE toolbar are restored to the
p-splitButtongrouped layout; the inline-buttons behavior introduced in #35290 is preserved for Edit Content. (#35361) - Rules Engine:
/api/portlet/rules/includenow returns HTTP 400 for missing/malformed IDs and HTTP 404 for unmatched IDs, replacing aJasperExceptionHTML error page; also fixes an XSS vector in the JSP script block. (#35337) - Security: Upgrades
commons-beanutils(CVE-2025-48734),commons-io(CVE-2024-47554),guava(CVE-2023-2976),bouncy-castle(CVE-2023-33202), andcommons-lang3(CVE-2025-48924); adds OWASP suppressions for 21 Elasticsearch client false positives. (#35236) - Database: Fixes a connection leak visible in logs approximately 30 minutes after dotCMS startup. (#35120)
- Next.js SDK Example: Restores
@dotcms/react,@dotcms/types, and@dotcms/uvedependencies tolatestpublished versions, fixing broken installs for anyone cloning the example. (#35357) - Portlets UI: Standardizes search box widths, fixes the content compare version dropdown not showing a selected value on first load, and corrects Categories import dialog layout overflow. (#35341)
Infrastructure & Security
- UVE Store: Refactors UVE store to a single-source-of-truth model via computed signals (
$page(),$site(), etc.), removing duplicated state fields and renaming GraphQL-specific properties to implementation-agnostic names. (#34173) - Dependencies: Removes the
com.dotcms.lib:dot.guavarepackaged artifact and migrates all 240com.dotcms.repackage.com.google.common.*imports to standardcom.google.common.*. (#35315) - OWASP: Wires
owasp-suppressions.xmlto thedependency-checkMaven plugin — the suppression file existed since 2024 but was never referenced, causing 21 false-positive CVEs to appear in every scan. (#35340) - SDK Publishing: Introduces a single
VERSIONfile as the source of truth for all SDK package versions, fixing@nextpublish collisions caused by per-package version drift. (#35110) - OpenSearch Tests: Adds 20 integration tests for
ContentFactoryIndexOperationsOSagainst a live OS 3.x container, and fixes cache key stability, sortunmappedType, scrolltrack_total_hits, and missingSearchHit.indexbugs discovered during testing. (#35317) - CI: Upgrades the Claude orchestrator to v2.1.0, adding a pre-flight Anthropic API availability check so PR pipelines skip gracefully during service outages instead of failing. (#35336)
- Starter: Bumps the empty starter deploy version to
empty_20260331, ensuring fresh installs include the correct Plugins portlet layout configuration. (#35364)
...
Release 24.12.27_lts_v18
v24.12.27_lts_v18 🏁 Publishing release version [24.12.27_lts_v18]
dotcms-cli - 26.04.20-01
Changelog
- ff3e837 🏁 Publishing dotCLI release version [26.04.20-01]
Contributors
We'd like to thank the following people for their contributions:
- dotCMS-Machine-User
Release 26.04.11-02
Release: v26.04.11-02 → v26.04.11-02
No user-facing changes in this release.