diff --git a/CHANGELOG.md b/CHANGELOG.md index 8dddee7..b263b4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - New `PublicPathMatcher` service for path pattern matching. - New `PublicAccessListener` (priority 84) in the request pipeline. +### Changed +- **Upgraded Symfony 7.4 → 8.1** — All `symfony/*` components bumped to + `8.1.*` (resolved to 8.1.2–8.1.6). The 7.4 deprecation sweep was clean + (test suite runs with `failOnDeprecation`), so the major-version jump + required no application code changes. See + `docs/symfony-8.1-upgrade-plan.md`. + +### Removed +- **`runtime/frankenphp-symfony`** — No longer needed: `symfony/runtime` + 8.1 handles FrankenPHP worker mode natively via its built-in + `FrankenPhpWorkerRunner`. The `extra.runtime` override in + `composer.json` was removed so the runtime auto-detects FrankenPHP. + Note: the old package's `FRANKENPHP_LOOP_MAX` env var (default 500 + requests per worker) is no longer read; worker lifecycle is now managed + by FrankenPHP itself. + ## [1.0.0] — v1.0 Release ### Security diff --git a/ROADMAP.md b/ROADMAP.md index f5263f8..0a49503 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -10,7 +10,7 @@ authentication — it's a gate that prevents outsiders from even seeing what service is running. - **Location:** `projects/preauth/` -- **Framework:** Symfony 7.4 (PHP ≥ 8.4) +- **Framework:** Symfony 8.1 (PHP ≥ 8.4) - **Serving:** FrankenPHP (Docker image) - **Cache:** Dual-layer — APCu (in-memory) + file-based persistence - **Auth:** TOTP (single secret) + single-use backup codes @@ -329,7 +329,7 @@ struggle with TOTP apps. command or initial-setup flow to register a passkey). - [ ] Research `web-auth/webauthn-framework` integration with Symfony - 7.4 and FrankenPHP + 8.1 and FrankenPHP - [ ] Design passkey registration flow (console command? first-visit setup? separate registration endpoint?) - [ ] Implement challenge generation and storage (extend existing diff --git a/bin/dev.sh b/bin/dev.sh index a3fe03c..e2cc65c 100755 --- a/bin/dev.sh +++ b/bin/dev.sh @@ -46,7 +46,7 @@ REQUIRED_PHP_EXTS=( ) # Apt packages for PHP + extensions -# Note: preauth uses Symfony 7.4 which requires PHP >=8.1. +# Note: preauth uses Symfony 8.1 which requires PHP >=8.4. # We install PHP 8.4 (available in Debian 13/Trixie) for consistency. PHP_APT_PACKAGES=( php8.4-cli diff --git a/docs/symfony-8.1-upgrade-plan.md b/docs/symfony-8.1-upgrade-plan.md index 0829b9f..d7cdc81 100644 --- a/docs/symfony-8.1-upgrade-plan.md +++ b/docs/symfony-8.1-upgrade-plan.md @@ -198,13 +198,15 @@ twig-bundle, uid, yaml) and tick each item against this codebase. Rollback = `git revert` the bump commit + redeploy previous image tag. No data/schema migrations are involved (no database). -## 8. Open questions +## 8. Open questions — resolved during implementation -- [ ] Confirm none of our listeners/services relied on implicit behavior - of `Runtime\FrankenPhpSymfony\Runner` (e.g. per-request kernel - reboot). The built-in runner reuses the kernel — our services must - implement `ResetInterface` where they hold per-request state - (`ConfigBag`, nonces, cache-touching services). Audit in Phase 0. -- [ ] Decide whether to pin `symfony/*` as `8.1.*` or `^8.1` going - forward (current convention is minor-pinned — keep `8.1.*`). -- [ ] Regenerate `config/reference.php` — scripted or manual dump? +- [x] ~~Confirm none of our listeners/services relied on implicit behavior + of `Runtime\FrankenPhpSymfony\Runner`.~~ **Resolved:** audited every + class in `src/` — all are `final readonly` with constructor-injected + dependencies and no mutable state. No `ResetInterface` needed; kernel + reuse across worker requests is safe. +- [x] ~~Decide whether to pin `symfony/*` as `8.1.*` or `^8.1`.~~ + **Resolved:** kept minor-pinned `8.1.*`, matching repo convention. +- [x] ~~Regenerate `config/reference.php` — scripted or manual dump?~~ + **Resolved:** it's gitignored and auto-regenerated by Flex on + `composer update`; already refreshed for 8.1 during the bump.