Skip to main content
Version: Next

Upgrade Information

The following steps are necessary during updating to newer versions.

Upgrade to 2026.4.0​

Embeddings​

  • auth_token and options.headers of an embedding model now reject unescaped %name% parameter references in addition to %env(...)% placeholders, in Studio, in config/packages/*.yaml and in the embeddings write-target yaml. A configuration that uses one fails validation after the update; replace it with the literal value, or escape a literal % as %%.
  • On Studio saves and uploads, the text of document and plain-text assets is extracted by the index queue worker instead of during the request, so their vectors appear once the worker has processed the asset.
  • Inputs the provider rejects permanently (HTTP 400/413/422) are isolated and stamped with an emb_<model>[__<format>]_failed timestamp; the bpt_embedding_reconcile maintenance task retries them at most once every 24 hours. No index recreation is needed.

Duplicates Detection​

  • A running analysis can only be canceled by the user who started it or by an admin

Semantic Search (experimental)​

  • Semantic grid search now cuts off weak matches with a default minimum score (text 20 %, image 8 %) instead of returning the top 150 hits. Set semantic_search.targets.<text|image>.default_min_score to 0 (or send minScore: 0) to keep every hit.
  • Candidates per search are limited by semantic_search.candidate_cap (default 10000) instead of 150, so totals and paging go deeper; lower the cap on large indexes if searches get slow.
  • The global semantic search endpoint applies the same default minimum score; its candidates per index are configurable via semantic_search.global_search_candidate_cap (default 150, unchanged).
  • CSV/XLSX exports and batch actions of a semantic grid now apply the semantic filter with the job owner's permissions, so they contain the same elements as the grid.
  • New semantic_search configuration record (System → Semantic Search Configuration); run the migrations to seed it.
  • Requires pimcore/studio-backend-bundle, pimcore/studio-ui-bundle and pimcore/generic-data-index-bundle 2026.4.

Upgrade to 2026.3.0​

  • Added Embeddings (experimental) – off by default.
  • New public API - EmbeddingProviderInterface, AbstractHttpEmbeddingProvider, EmbeddingModelConfig and EmbeddingConfigException are public so a custom provider can be implemented.

Embeddings are adding a new table, please execute the migration command after updating the bundle:

bin/console doctrine:migrations:migrate --prefix='Pimcore\Bundle\BackendPowerToolsBundle\Migrations'

Upgrade to 2026.2.6​

Frontend Build Ships as a Packaged Archive​

The compiled Studio frontend is no longer committed as an expanded public/studio/build/ directory. It now ships as a single archive (build-dist/build-<id>.zip) that is extracted into 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​

  • The bundle installer now implements PostInstallCommandsProviderInterface from Pimcore's InstallBundle. This means the post-install command bpt:aet:rebuild-tree -a is automatically executed during pimcore:install when using Install Profiles. Manual execution of this command after pimcore:bundle:install is still required as before.
  • The messenger transport DSN is now configurable via the %pimcore.messenger.transport_dsn_prefix% container parameter instead of being hardcoded to doctrine://default. This allows the installer to wire the transport DSN from environment variables (e.g. PIMCORE_MESSENGER_TRANSPORT_DSN_PREFIX).
  • Added support to PHP 8.5.
  • Removed support to PHP 8.3 and Symfony v6.