In this release
- The login, forgot-password, reset-password and 2FA screens share one scaffold.
- CSS tokens replace repeated literals.
- The AI image pipeline lives in one trait.
- Repeated snippets became shared helpers.
Resource::translatable() resolves itself.- Saving no longer asks the database three times whether pivots changed
- A permission only grants when it is strictly
true. - Uploaded SVGs are sanitized.
- Destructive filemanager operations re-validate their paths.
- The JSON read-only field escapes its values.
- Disabling e-mail 2FA always checks permission.
- Logging with a string context no longer crashes when another module is active.
- Upload size config accepts lowercase suffixes.
- A module priority of
0 is honoured. - AI replies wrapped in prose decode reliably.
- The disable-2FA and delete-passkey buttons are red again.
- Debug leftovers removed.
- A slug only has to be unique among its siblings.
- Only a root page can claim the reserved "/" slug.
The full entry in the changelog