- Added support for SQLite backups and restores. (#18803)
- Added support for Symfony-style array config files in
config/craft/sanitizers/. (#18808) - Added support for configuring the system time zone during installation. (#18794)
- Added the legacy
paginateTwig variable back. - Added CP access permission checks to Control Panel action routes.
- The
craftAsset()Twig function now resolves to Vite versioned assets. (#18801) - Renamed the
|moneyTwig filter’sformatLocaleargument tolocale. - Deprecated the
csrfTokenName,enableCsrfCookie, andenableCsrfProtectiongeneral config settings. (#18806) - Removed support for the Debug Toolbar. Laravel Debugbar can be used instead. (#18812)
- Improved Control Panel icon loading performance.
- Fixed a PHP error that occurred when saving a Structure section with a Max Levels value. (#18809)
- Fixed a bug where plugin settings pages were missing registered scripts and styles. (#18815)
- Fixed a PHP error that occurred when saving an entry type. (#18816)
- Fixed an issue with Typecast where typed setters wouldn't have precedence over private properties.
- Fixed a bug where Control Panel templates failed to load on Windows due to mismatched directory separators or drive-letter casing in
CraftCms\Cms\View\TwigEngine. (#18804) - Fixed a bug where Craft’s Vite hot file configuration could override the host application’s Vite hot file. (#18810)
- Fixed a bug where
CraftCms\Cms\Support\Typecastcould give private properties precedence over typed setters. - Fixed a bug where
runQueueAutomaticallywasn’t being respected. (#18817) - Fixed a bug where
CraftCms\Cms\Validation\Rules\EnvValueRulecould parse boolean values incorrectly. - Fixed a bug where Blade templates weren’t resolving correctly.
- Fixed a bug where console command aliases weren’t prefixed with
craft:. - Fixed a bug where element duplication included IDs.
- Fixed a bug where legacy action requests didn’t resolve correctly when using
DefaultController. - Fixed a bug where legacy controller CSRF validation exclusions weren’t always respected.
- Fixed a bug where legacy plugin settings weren’t saved correctly.
- Fixed a bug where legacy redirects and streamed responses weren’t forwarded to Laravel correctly.
- Fixed a bug where preview requests could write template caches.
- Fixed a bug where private templates couldn’t be used as section templates.
- Fixed a bug where the legacy
Application::EVENT_AFTER_REQUESTevent wasn’t triggered. - Fixed a bug where the password reset email throttle applied to Control Panel requests.
- Fixed a bug where the Support widget could render unescaped HTML.
- Fixed a bug where Twig macros were allowed in sandboxed templates.
- Fixed a bug where user passkeys weren’t persisting.
- Fixed an error that occurred when validation errors stored in the session were plain arrays.
- Fixed compatibility issues with legacy element queries.
- Fixed compatibility issues with legacy fallback routes.
- Fixed legacy model behavior when unsafe config keys were provided.
- Fixed permissions enforcement when duplicating Matrix blocks.
- Fixed permissions enforcement when saving user fields through generic element save endpoints.
- Fixed a bug where a
yii\base\InvalidConfigExceptionwould be thrown when a Yii2-based plugin registered an asset bundle. (#18818) - Fixed a bug where using
{{ successMessageInput() }}would not decrypt the resulting message for the flash message. - Fixed a bug where a missing widget from an uninstalled plugin would throw instead of mapping to a MissingWidget.
- Fixed a bug where an address' ownership ids could be overridden unintentionally.
- Fixed a bug where
getHasSsoIdentity()would returnfalsewhen Socialite was not installed but the user had an SSO identity. - Fixed a bug where the site's offline status was not being enforced on matched element routes.
- Fixed a user photo validation issue with file extensions.
- Fixed a bug where legacy controllers could return
nullbut were not considered handled. - Improved performance of the dashboard by reducing the amount of queries for widgets
- Fixed a bug where criteria added to clones of executed element queries could be ignored. (#18826)
- Fixed a bug where Yii2 behaviors registered from plugins weren’t getting attached at the right time. (#18824)
- Fixed an error that occurred when running
craft:installin environments where Laravel Prompts can only render tasks statically. (#18830) - Fix legacy model array access for null properties (#18843)
- Fix Twig access to Laravel error bags (#18841)
- Fixed a bug where singles were throwing an exception (#18845)
- Fixed a bug where plugin settings were not saving consistently (#18849)
- Fixed a bug where deprecated string-based
orderBy()arguments could cause element queries to throw an unknown column exception. (#18852) - Fixed a bug where Laravel HTTP exceptions weren’t passed to legacy error handler event listeners. (#18854)
- Fixed a bug where FieldLayouts were being flashed to the session as arrays. (#18847)