v0.3.0

<p>The hand-written docs browser is replaced by a live reference generated from PHP reflection, the runtime moves to FrankenPHP with optional worker mode, and a self-contained Docker image ships for releases.</p>

28 September 2026

Added

  • Docs reference generated from reflection - every all-static Toolkit class plus a curated list of core framework objects (App, Page, Record, Field, Request, Router, Registry, etc.) is walked at request time; a method's page shows its full signature, docblock summary, declaring class, and source location. Routes: /docs/{category}, /docs/{category}/{class}, /docs/{category}/{class}/{method}.
  • FrankenPHP as the base runtime, replacing php-fpm behind a separate Caddy sidecar - compose.yaml collapses to a single app service, and the Caddyfile serves directly via php_server.
  • Optional FrankenPHP worker mode via a new site/public/worker.php entry point (persistent worker loop, gc_collect_cycles() between iterations); the Caddyfile ships the config commented out, to opt in without code changes.
  • phlat/Dockerfile.dist - a self-contained release image baking in phlat/, site/, and vendor/ (via composer install --no-dev --classmap-authoritative), so only data/ needs mounting at runtime.

Fixed

  • SessionRoot's idle-timeout check used a "run once per request" flag that, under FrankenPHP worker mode's persisting App instance, only ever ran on a worker's very first request - silently disabling the idle timeout for every request after. App::execute() now resets that flag at the start of every request.
  • Git commands against the bind-mounted repo failed inside the container ("detected dubious ownership") since the container runs as root over a host-owned mount - the Dockerfile now marks /app as a git safe directory.

Removed

  • The hand-authored docs topic files from the previous release, superseded by the reflection-generated reference above.

Comments

No comments yet. Be the first!

Loading form…