Skip to main content
Version: 2026.2

Upgrade Notes

Upgrade to 2026.2.3​

Frontend Build Ships as a Packaged Archive​

The compiled Studio frontend is no longer committed as an expanded src/Resources/public/studio/build/ directory. It now ships as a single archive (build-dist/build-<id>.zip) that is extracted into src/Resources/public/studio/build/ automatically during cache warmup.

pimcore/studio-ui-bundle ^2026.2.1 is now required, as it provides the archive extraction.

Note: Read-only filesystem deployments must run bin/console cache:warmup (or cache:clear) during the build/deploy phase while the bundle directory (usually under vendor/) is still writable. Standard Pimcore deployments already do this. When assets:install runs in copy mode, run cache:warmup before it, otherwise no frontend assets are copied. If the filesystem becomes read-only before the first warmup, the bundle fails with BuildArchiveNotWritableException because there is no build to serve.

Upgrade to 2026.1.0​

  • Added support for PHP 8.5.
  • Removed support for PHP 8.3 and Symfony v6.

Removed Admin Classic / ExtJS Support​

  • PimcoreDirectEditBundle no longer implements PimcoreBundleAdminClassicInterface and no longer uses BundleAdminClassicTrait. The getJsPaths() and getCssPaths() methods have been removed.
  • All ExtJS-based frontend assets have been deleted:
    • src/Resources/public/js/startup.js
    • src/Resources/public/js/modal.js
    • src/Resources/public/js/bootstrap-modal.js
    • src/Resources/public/css/style.css

Removed Controllers​

  • AssetEditController has been removed (was Admin Classic based).
  • MercureController has been removed (was Admin Classic based).
  • StudioRouteLoader has been removed; Studio routing is now handled directly via configuration.

Studio UI Implementation​

  • Full Studio UI support has been implemented. The bundle now ships with a React/TypeScript frontend under assets/studio/.

  • New Studio backend controllers added under src/Controller/Studio/:

    • CancelEditController
    • ConfirmUploadController
    • GenerateLinkController
    • GetStatusController (replaces the former DefaultController)
    • ResolveConflictController
  • New Studio event classes added:

    • Pimcore\Bundle\DirectEditBundle\Event\Studio\DirectEditLinkEvent
    • Pimcore\Bundle\DirectEditBundle\Event\Studio\DirectEditStatusEvent

    These classes exist but the bundle does not dispatch them anywhere. There is currently no way to hook into a direct edit request through the event system.

Interface & API Changes​

  • ClientController is now marked @internal.
  • ClientController constructor: ClientCommunicationService $clientCommunicationService dependency has been replaced by DirectEditEventNotifierInterface $notificationService.
  • ClientCommunicationService constructor: a new optional ?string $clientHostUrl parameter has been added as the last argument.
  • The internal method call ClientCommunicationService::sendStartLocalEditingEvent() used inside ClientController has been replaced by DirectEditEventNotifierInterface::notifyStartEditing().
  • ClientController upload handler now calls DirectEditEventNotifierInterface::notifyUploadComplete() instead of ClientCommunicationService::sendClientUploadEvent().
  • Both notifyStartEditing() and notifyUploadComplete() now return string[] (warnings for non-fatal failures), and the JSON responses from ClientController will include a warnings key when warnings are present.

New Interfaces​

The following new interfaces have been added (all marked @internal):

  • Pimcore\Bundle\DirectEditBundle\Service\DirectEditEventNotifierInterface: abstraction over event notification channels, with methods:
    • notifyStartEditing(AssetToken $assetToken): string[]
    • notifyUploadComplete(AssetToken $assetToken): string[]
  • Pimcore\Bundle\DirectEditBundle\Service\Studio\DirectEditServiceInterface: Studio backend service interface with methods: generateLink(), cancelEdit(), confirmUpload(), resolveConflict(), getStatus().
  • Pimcore\Bundle\DirectEditBundle\Hydrator\DirectEditLinkHydratorInterface: hydrates DirectEditLink schema objects.
  • Pimcore\Bundle\DirectEditBundle\Hydrator\DirectEditStatusHydratorInterface: hydrates DirectEditStatus schema objects.

Update to Version 2.5​

  • It is now possible to define the JWT Cookie Host and strictness via configuration.

Update to Version 2.1​

Please be aware that version 2.1 of the bundle drops support for Pimcore 10.6. Make sure to upgrade to Pimcore 11.1 or higher before updating the bundle.