| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| Morning Glory source code.tar.gz | 2026-08-13 | 19.1 kB | |
| Morning Glory source code.zip | 2026-08-13 | 21.9 kB | |
| README.md | 2026-08-13 | 1.9 kB | |
| Totals: 3 Items | 42.8 kB | 1 | |
v5.0 - 15 Aug 2026
Added
- A new routing engine: routes compile at registration instead of being regex-matched per request, exact routes match instantly from an index, and dynamic routes only check relevant candidates
- Optional route parameters (
/posts/{id?}) and inline constraints (/users/{id:[0-9]+}) - Leaf Crash is the error engine: structured reports with frames, request context, breadcrumbs from your logs, views, queries and jobs, redaction, and a debug page in Leaf's design language
- Named route groups cascade (
admin.users.index), and resource routes name themselves Router::reset()clears routes, hooks, middleware and cached request state for long-running processes and test suites- Environment reads are cached per request, making
_env()dramatically faster;_envUncached()reads live when you genuinely need it
Fixed
- Group middleware runs on dynamic routes: middleware like
auth.requiredis no longer silently skipped for/{id}-style routes inside groups when a global middleware exists - Base path detection only strips URL prefixes when requests actually live under your script's folder, so
php -Sand CLI runs no longer 404
Changed
- Raw regex routes no longer match: patterns without
{}placeholders are literal paths. Rewrite with named parameters, optional parameters or inline constraints - Custom error handlers receive a single
Leaf\Crash\Reportinstead of three whoops arguments - Exact routes always beat dynamic ones, regardless of registration order
- Debug output follows
APP_ENV: production shows clean error pages, development gets the full crash experience, no configuration - Async support is paused while Eien is rebuilt:
$app->ws()andeien.enabledare removed - Leaf now requires PHP 8.2+