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.