All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- [Unreleased]
- [1.0.10 - 2026-08-18](#1010-2026-08-18)
- [1.0.9 - 2026-08-04](#109-2026-08-04)
- [1.0.8] - 2026-07-29
- [1.0.7] - 2026-07-28
- [1.0.6] - 2026-07-27
- [1.0.5] - 2026-07-27
- [1.0.4] - 2026-07-24
- [1.0.3] - 2026-07-22
- [1.0.2] - 2026-07-22
- [1.0.1] - 2026-07-22
- [1.0.0] - 2026-07-09
1.0.12 - 2026-08-24
- Raise minimum PHP to 8.2 and sync README badge (REQ-SF-001).
- Docs: PHP-FIG PSR evaluation (REQ-CS-007).
- No API or configuration changes for integrators unless noted above.
- CI: run
composer audit --lockedafter dependency install (REQ-SEC / P3).
1.0.10 - 2026-08-18
- Demos: pin
nowo-tech/hot-reload-bundleto^1.4with FrankenPHP Mercure/hot_reload(dev/testonly). - Demos: Symfony 8 only; Symfony 6/7 demo apps removed.
1.0.9 - 2026-08-04
- CI (Symfony 6.4): build
RequestStackviapush()so query-param gate tests work without the 7.2+ constructor.
- Makefiles (REQ-MAKE-010) — prefer Docker Compose V2 (
docker compose) with fallback todocker-composeV1 in root and demo Makefiles; resolvedockervia absolute path so GNU Make does not collide with a localdocker/directory whenPATHhas empty entries. - Makefiles (REQ-MAKE-009) — monorepo
update-depsincludes are optional (-include) so standalone GitHub Actions checkouts do not fail.
make demo-smoke+.github/workflows/demo-smoke.yml: bootdemo/symfony8and assert HTTP 200 (REQ-TEST-011).- REQ-SF-005:
SYMFONY_DEPRECATIONS_HELPER=max[direct]=0inphpunit.xml.distand CI test jobs.
- Default sample config
console_methodaligned tolog(recipe +src/Resources/config/packages). - Composer — restore Symfony component constraints to
^7.4 || ^8.0(narrowed again by a post-1.0.5 CS Fixer commit).
- CI — Code Style job discards
composer.json/composer.lockmutations from the temporary Symfony 7.4 pin before auto-committing CS Fixer changes (prevents^7.4 || ^8.0from being rewritten to^7.4).
- Table of contents on long docs (REQ-DOCS-005).
docs/PERFORMANCE.md: English wording (REQ-DOCS-016).docs/SECURITY.md: logging/observability policy (REQ-OBS-001); AI audit Pass (conditional) (REQ-SEC-004); checklist heading aligned to 12.4.1.docs/DEMO-FRANKENPHP.md: demo-smoke command and URL.
- REQ-CS-005 — CONTRIBUTING.md documents PHPStan FrankenPHP classic + worker rulesets as require-dev only.
- REQ-DOCS-018 — GitHub About: plain-text description, Packagist website, and topics (
php,symfony,symfony-bundle,frankenphp, …).
- REQ-DOCS-002 / REQ-DOCS-015 — README
## Documentationuses the canonical link order (Code of Conduct after Contributing, before Changelog); Performance and GitHub CI notes moved under### Additional documentation. - REQ-DOCS-015 — CONTRIBUTING.md includes a Code of Conduct section linking to
../CODE_OF_CONDUCT.md.
- Composer — restore Symfony component constraints to
^7.4 || ^8.0(regressed after v1.0.4). - Tests —
RequestStackconstruction inGateTestaligned with Symfony constructor style (Rector). - Chore — refresh
composer.lock(php-cs-fixer, phpstan, rector, Symfony 8.x lock pins).
- FrankenPHP worker safety —
ConsoleDebugRegistryimplementsResetInterface;ConsoleDebugHolderstores the service in$_SERVER(no mutable static property) and re-binds onkernel.requestviaConsoleDebugHolderRequestSubscriber. - PHPStan FrankenPHP —
nowo-tech/phpstan-frankenphpin require-dev with classic + worker rulesets (phpstan.neon.dist). - Code of Conduct — Contributor Covenant at repository root (
CODE_OF_CONDUCT.md). - Git hygiene (REQ-GIT-001) —
.githooks,make setup-hooks/check-no-cursor-coauthor/strip-cursor-coauthor-from-history, CIgit-hygienejob, and GITHUB_CI.md.
- Composer — Symfony component constraints allow
^7.4 || ^8.0. - Demos —
FRANKENPHP_MODEdefault isworker; Symfony 8 demo image uses FrankenPHP PHP 8.5 (dunglas/frankenphp:1-php8.5-alpine). - Makefile —
down-dev;release-checkruns Cursor co-author history check first.
- README FrankenPHP Friendly Worker Mode banner and Code of Conduct / CI links.
- DEMO-FRANKENPHP.md, CONTRIBUTING.md, RELEASE.md, and Spec Kit baseline (
specs/001-baseline/) updated for worker defaults and inventory.
- Coverage restored to 100% (Twig
{% cdbg %}token parser/node + registry reset / holder edge cases).
- CI — Symfony 8 matrix jobs use
composer config platform.php 8.4.1(Composer treats8.4as8.4.0, which fails Symfony 8.1’sphp >=8.4.1). - CI — Code Style / Code Style Check / Coverage install Symfony 7.4 before resolving deps so PHP 8.2 runners work with a lockfile that may pin Symfony 8.1.
- Demos — ignore
/.pnpm-storein each demo.gitignore(REQ-GITIGNORE-003) and stop tracking the local pnpm store underdemo/**so it is no longer versioned.
- Demos (FrankenPHP) — runtime mode is selected with
FRANKENPHP_MODE(classicdefault, orworker) via.env/ Compose; entrypoint lives indocker/entrypoint.shinstead of an inline Dockerfile script. - Docs — DEMO-FRANKENPHP.md documents classic vs worker switching and recreate after env changes.
- Bump
friendsofphp/php-cs-fixer(3.95.12 → 3.95.15). - Bump
rector/rectorin lockfile (2.5.5 → 2.5.7). - Bump GitHub Actions:
actions/checkout(6 → 7),actions/github-script(7 → 9).
cdbg()global helper — non-blocking debug calls; execution continues (unlikedd()).- Role-based gate —
ConsoleDebugGateInterfacewith default enabled + Symfony Security roles. - Optional query parameter gate —
QueryParamConsoleDebugGateexample andquery_paramconfig. - Custom gate service — replace the default gate via
gate_service. - HTML script injection —
ConsoleDebugResponseSubscriberappends console output before</body>on HTML responses. - Browser console output — styled banner, expanded
console.group()entries, file/line, optional label, timing offsets. - JSON-safe payload —
<script type="application/json">+JSON.parse()for safe embedding (namespaces, slashes, special chars). DebugValueNormalizer— scalars, arrays, enums, dates, throwables,JsonSerializable, objects ({ object, hash }or__toString()).- FQCN normalization — PHP class names rendered as
App/Entity/Userin console (JSON-safe). - Twig integration —
{{ cdbg() }},{% cdbg %}, full template context dump (like{% dump %}). - Symfony Flex recipe — bundle registration and default config.
- Demos — FrankenPHP + Docker:
demo/symfony7(port 8010),demo/symfony8(port 8011). - Documentation — installation, configuration, usage, performance, security, upgrading, release process.
- CI / release — GitHub Actions (
ci.yml,release.yml), 100% PHPUnit coverage.
console_method:log(visible in DevTools without filtering Info level).label_prefix:[cdbg]roles:[ROLE_CONSOLE_DEBUG]