v5.0.2 — First Stable, Fully Documented Legacy Bridge Release
Exponential Platform Legacy v5.0.2
The definitive stable release of the v5 series — featuring the complete Legacy Bridge integration running on Symfony 7.4 LTS, full Ibexa DXP 5 namespace compatibility, Twig service public visibility fix, and a leaner composer dependency graph.
What Is This?
Exponential Platform Legacy v5 is the open-source DXP skeleton that ships the complete eZ Publish legacy kernel running inside Symfony 7.4 LTS via the se7enxweb/legacy-bridge package — active by default, zero post-install setup required. You get:
- A fully working classic legacy site at
/legacy_site/ - A fully working classic legacy admin at
/legacy_admin/ - The modern Platform v5 Admin UI at
/adminui/ - REST API v2 and GraphQL on Symfony 7.4 LTS
- Multi-database legacy kernel support (MySQL 8.0, MariaDB 10.6, PostgreSQL 14+, SQLite 3.35+) via the
sevenx_exponential_platform_v5_database_translatorextension
🗄️ Major New Capability: SQLite Support (Zero-Config Local Development)
For the first time in the platform's history, the legacy kernel runs on SQLite 3.35+ with no database server required.
This is a significant quality-of-life improvement for every developer who wants to spin up a local Exponential Platform Legacy site — no MySQL, no MariaDB, no PostgreSQL server to install, configure, or manage. SQLite works out of the box on every macOS, Linux, and Windows (WSL) development machine.
What SQLite support means in practice
# Start a fully working Platform v5 + Legacy Bridge site in under 5 minutes
composer create-project se7enxweb/exponential-platform-legacy my-project
cd my-project
# .env.local — two lines, no database server needed:
echo 'DATABASE_URL="sqlite:///%kernel.project_dir%/var/data_dev.db"' >> .env.local
echo 'MESSENGER_TRANSPORT_DSN=sync://' >> .env.local
# Install — creates the .db file automatically, imports all demo content:
php bin/console exponential:install exponential-ossWhen to use SQLite
| Use case | SQLite? |
|---|---|
| Local development (single developer) | ✅ Ideal |
| Automated CI/CD test runs | ✅ Ideal |
| Demo / evaluation install | ✅ Ideal |
| Air-gapped / offline environments | ✅ Ideal |
| Multi-user production site | ❌ Use MySQL/MariaDB or PostgreSQL |
| Clustered / multi-server deployment | ❌ Use MySQL/MariaDB or PostgreSQL |
Bug Fixes
se7enxweb/ngsymfonytools v5.0 branch — Ibexa 5 Namespace Compatibility
Error fixed: NgSymfonyToolsApiContentConverter::__construct(): Argument #1 must be of type eZ\Publish\API\Repository\Repository, Ibexa\Core\Repository\SiteAccessAware\Repository given.
Ibexa DXP 5 moved the Repository interface from the eZ namespace to Ibexa\Contracts\Core\Repository. The legacy extension type-hinted against the old interface, causing a fatal TypeError at runtime.
Fix: A class_alias shim at the top of ngsymfonytoolsapicontentconverter.php maps the old interface to the new one when running under Ibexa 5:
if ( interface_exists( 'Ibexa\Contracts\Core\Repository\Repository', true )
&& !interface_exists( 'eZ\Publish\API\Repository\Repository', true ) )
{
class_alias( 'Ibexa\Contracts\Core\Repository\Repository', 'eZ\Publish\API\Repository\Repository' );
}se7enxweb/legacy-bridge v5.0.9 — Twig Service Visibility Fix
Error fixed: ServiceNotFoundException: The "twig" service or alias has been removed or inlined when the container was compiled.
In Symfony 5+, services default to private and are compiled into $container->privates[]. The legacy extension (NgSymfonyToolsIncludeOperator) called $container->get('twig') at runtime which only checks $container->services[], causing a fatal exception on any page rendering a symfony_include legacy template tag.
Fix: TwigPass.php in se7enxweb/legacy-bridge now calls ->setPublic(true) on the twig service definition during container compilation, making it accessible from legacy code.
Composer Dependency Graph Cleanup
| Package | Before | After | Reason |
|---|---|---|---|
se7enxweb/legacy-bridge constraint in skeleton |
direct with duplicated deps | single ^5.0.0.0 entry |
ngsymfonytools, richtext-datatype-bundle, site-bundle, site-legacy-bundle moved to be dependencies of legacy-bridge |
ibexa/admin-ui-assets in replace |
"dev-5.0-next" |
removed | now owned and declared by se7enxweb/admin-ui-assets |
se7enxweb/ngsymfonytools constraint in legacy-bridge |
^4.0.0.0 → dev-v5.0 |
v5.0.x-dev |
correct Composer branch-alias format for a version-like branch name |
se7enxweb/ngsymfonytools constraint in site-legacy-bundle |
^4.0.0.0 |
v5.0.x-dev |
same fix, was conflicting with legacy-bridge requirement |
Documentation (v5.0.2)
Complete ground-up rewrite of both README.md and INSTALL.md:
README.md — full Legacy Bridge advertisement and URL reference:
- New top-level section: Legacy Bridge — Architecture & Default Siteaccess URLs
- Dual-kernel architecture diagram
- Complete URL reference tables: 25+
/legacy_site/*default URLs and 30+/legacy_admin/*default admin URLs (all documented individually) - Updated Quick Start with all 9 post-install access points and correct legacy bridge step sequence
INSTALL.md — comprehensive installation and operations guide:
- New Section 3: Legacy Bridge — What You Get Out of the Box (9 subsections covering siteaccess config, extension management, database translator, INI override system, template/design customisation, cache management, CLI command reference)
- Architecture overview updated: dual-kernel diagram, four-siteaccess table, complete directory tree
- Production deploy checklist extended with legacy bridge steps
- 6 new legacy bridge troubleshooting entries
Dependency Versions (this release)
| Package | Version |
|---|---|
se7enxweb/legacy-bridge |
v5.0.9 |
se7enxweb/ngsymfonytools |
v5.0.x-dev |
se7enxweb/site-legacy-bundle |
5.0.x-dev |
se7enxweb/site-bundle |
5.0.x-dev |
| Symfony | ^7.4 |
| PHP | >=8.3 |
New Project Quick Start
composer create-project se7enxweb/exponential-platform-legacy my-project
cd my-project
cp .env .env.local
# Edit .env.local: set DATABASE_* vars and APP_SECRET
php bin/console exponential:install exponential-oss
source ~/.nvm/nvm.sh && nvm use 20 && yarn install && yarn build
php bin/console assets:install --symlink --relative public
php bin/console ibexa:build
php bin/console lexik:jwt:generate-keypair
php bin/console cache:clear
symfony server:startAccess points:
https://127.0.0.1:8000/legacy_site/— Legacy site frontendhttps://127.0.0.1:8000/legacy_admin/— Legacy admin interface (admin / publish)https://127.0.0.1:8000/adminui/— Platform v5 Admin UIhttps://127.0.0.1:8000/api/ezp/v2/— REST API v2https://127.0.0.1:8000/graphql— GraphQL
See INSTALL.md for the full step-by-step guide.
Full Changelog: v5.0.1...v5.0.2