Repository navigation
Release v3.8.0
v3.8.0
Changelog
PSR-3 logger instead of error_log, release-check chain and CI gates, Rector PHP 8.2, demo fixes, dependency refresh. See UPGRADING.
Changed
- Dependencies refreshed (Composer and pnpm/npm lock files of the bundle and its demos, campaign 2026-10-19).
.php-cs-fixer.dist.php:new ParallelConfig(2)(REQ-CS-001).- Logging goes through an injected PSR-3
logger(PerformanceMetricsSubscriber,PerformanceMetricsService,NotificationService, e-mail and webhook channels): diagnostics atdebug(still gated byenable_logging), delivery failures atwarning.Helper\LogHelper(error_log) is deprecated;psr/logis required (REQ-DI-001 / REQ-OBS-001). release-checkis sequential and starts withensure-up; the misspelledcheck-twig-extra-since-releaseprerequisite is replaced bycheck-twig-extra, andcheck-open-prsandvalidate-translations(now with key parity across the 12 shipped locales) are added; newcleantarget (REQ-MAKE-001 / REQ-MAKE-002 / REQ-MAKE-004).- CI: coverage gate raised from 80% to 99%;
git-hygienechecks the whole history (Claude trailers before the baseline stay grandfathered); newDemo smokeworkflow (REQ-TEST-003 / REQ-GIT-001 / REQ-TEST-011). - Rector targets the PHP 8.2 floor (
withPhpSets(php82: true)) and its safe suggestions are applied (readonly classes,??=); rules that broke runtime contracts (empty Doctrine listener method,#[Required]optional properties, reflection-read test properties) are skipped inrector.php(REQ-CS-003); PHPUnit@covers/@dataProviderdocblocks replaced (REQ-TEST-010); Twig extensions rely on autoconfigure (REQ-SF-003). - Demo:
release-checkrefreshes the bundle first (REQ-DEMO-007), Makefile uses$(COMPOSE)everywhere (REQ-MAKE-010), Caddyfiles set the timeout stack (REQ-RUNTIME-001), smoke follows redirects; the root dev PostgreSQL no longer publishes host port 5433 (REQ-DEMO-006). composer.json: keyword list trimmed,support.docsadded (REQ-PKG-004).- Docs: PSR evaluation (PSR-3 adopted, PSR-20 re-evaluated), SECURITY logging policy, CSRF section and AI-audit checklist row, Messenger retry/failure transport policy, demo timeout hierarchy, extension points of the non-final classes (REQ-CS-007, REQ-SEC-002/005, REQ-MSG-001, REQ-PHP-001).
Fixed
- Webhook notification timeouts are covered by tests (timeout options, clamped minimum, logged failure) (REQ-RUNTIME-001).
.scripts/check-no-cursor-coauthor.shalso runs inside git worktrees (.gitfile instead of directory).- Demo
make test-coveragecalled a non-existentcomposer testscript (the demo has no PHPUnit suite): it now checks that the demo kernel boots, so the demorelease-checkruns end to end. - Demo
make upinstalls Composer dependencies in a one-off container before FrankenPHP starts: a fresh checkout crash-looped the worker on the missingvendor/andupfailed ("service php is not running").
Documentation
- Documentation: wave-1 REQ compliance — README documentation list order, GitHub stars and Coverage badges, canonical FrankenPHP worker claim, canonical issue templates, per-variable comments in the demo
.env.example, CONTRIBUTING Cursor Agent settings, TOCs for long docs, Spec Kit inventory refresh (120/120,NowoPerformanceBundle.*catalog names, FR-SEC-001 and FR-TWIG-003).
Commits
- Release v3.8.0: PSR-3 logger instead of error_log, release-check chain and CI gates, Rector PHP 8.2, demo (77e28f8)
- chore(demo): lock the bundle as dev-main after merging chore/req-wave2 (28718b6)
- feat: REQ wave 2 — PSR-3 logger instead of error_log, release-check chain, CI gates, demo fixes (3b186c7)
- docs(changelog): dependency refresh 2026-10-19 (c9e36a3)
- chore(cs): cap php-cs-fixer parallel workers at 2 (REQ-CS-001) (36088d9)
- chore(deps): update composer dependencies (bundle + demo) (76f891f)
- docs: wave-1 REQ compliance (README, issue templates, demo env, CONTRIBUTING, TOCs, inventory 120/120) (99f36e9)
- chore(deps): bump nowo-tech/form-kit-bundle from 2.7.1 to 2.12.0 (#62) (e95198a)
- chore(deps): bump nowo-tech/phpstan-frankenphp from 1.2.3 to 1.3.0 (#63) (47c6ac3)
- Apply PHP CS Fixer fixes [skip ci] (fdb7e3c)