v0.0.32

28 June 2026

Worker mode support, App boots once per worker instead of once per request.

Added

  • App::boot() : wires core hooks and loads addons exactly once even when many requests share a worker process; execute() now resets $request/$page/shutdownEmitted per request instead of re-running addon loading.
  • phlat/Caddyfile.classic : the old non-worker Caddy config, split out now that Caddyfile/Caddyfile.worker both default to FrankenPHP worker mode (worker /app/site/public/worker.php).
  • Login controller surfaces a flash message ($app->session->namespace('phlat')->pop('flash')).

Changed

  • App::$request is no longer readonly : it's replaced on each execute() call so a long-lived worker process gets a fresh request/page per call.
  • Caddyfile/Caddyfile.worker dropped the missing-static 404 responder (moved to Caddyfile.classic) and bind :80 directly instead of localhost.