UX/UI Improvements
- Added support for
showTotalsoption for Lists andsummableoption for columns of type: number to render the totals on a per page and per query basis in the Lists widget. - Added new
user:createCLI command to create a new backend user from the CLI. - Checkbox lists will now show all of their options, even when disabled or in read-only mode.
- Visiting the backend login page will now redirect to the backend dashboard if the user is already logged in.
- Added additional warning about disabling debug mode in production to the
config/app.phpfile. - Added additional configuration checks to the Status dashboard widget.
- Improved the UX of drag and drop sorting of tree views.
- Disabled autocomplete on
passwordandsensitivefield types by default. - Fixed minor box shadow issue with the recordfinder clear button.
- Made the entire
fileuploadfield clickable in single file mode. - Made the entire
recordfinderfield clickable and added translation support for the default prompt. - Repeater items can now be extended by clicking on their title rather than just the dropdown arrow.
- Fixed minor styling issues with Select2 inputs.
- Fixed repeater item titles in
previewcontexts.
DX Improvements
- Added support for the Vite asset compiler (see Laravel docs & Winter docs for more information).
- Added new
npm:install,npm:update,npm:runhelper CLI commands. Refer to the docs. - Added new
BundleManagerthat manages the "asset bundles" used by themix:createandvite:createscaffolding commands. - Added support for Laravel-style relations (see wintercms/docs#176)
- Added a simple
.devcontainerfor the Storm library and the main Winter repository. - Added support for "asset prioritization / load ordering" to the
AssetMakertrait through the use of a newordersystem attribute that can be provided. - Added support for project relative paths to the SQLite database.
- Changed the default scaffold for
create:themeto Tailwind - Changed the default asset compiler for the tailwind theme scaffold to vite.
- Added support for all
abort($code)errors to the CMS module, now you can useabort(404)anywhere and get a nice 404 error page. - Added
winter:install,winter:env, andwinter:mirror publicto the default post create project composer scripts. - Improved compatibility with Laravel's
artisan migratecommand by adding support for the--seed&--isolatableoptions. - Added support for using dynamic methods to handle custom list column types.
- Added
create:factorycommand to scaffold model factories in plugins. - Added support for the
--batchableoption to thecreate:jobscaffolder. - Added support for dynamically extending filter scopes even if no scopes have been defined yet.
- Added
--sidebarflag to thecreate:controllerscaffolder to create a controller that uses the sidebar layout for form views. - Fixed display of deleted files when reviewing changes in
winter:version. - Added
--only-version|-ooption flag towinter:versionto display only the version number. - Added new
winter:util purge resizedCLI command to delete all previously cached images from the resizer. - Allowed
create:migrationto be called with the--updateflag even if model does not have afields.yamlto scan.
API Changes
- Added support for
.avifimage files. - Removed the unnecessary Maker class from the core Application container.
- Added support for
$table->dropColumnIfExists()in migrations. - Added support for enabling the Laravel Mix manifest feature.
- Added
File::getMaxUploadSize()andFile::sizeToBytes()helper methods. - Added
File::copyBetweenDisks()andFile::moveBetweenDisks()helper methods. - Added
slaverelationship configuration to theDeferredBindingbase model. - Added
$routePersistanceparameter toPage::resolveMenuItem(). - Removed unnecessary
TableDataprefix from data returned by the Table widget (alsoDataTableformwidget) in AJAX requests. - Added support for translation strings providing options in
FormField->options(). - The Stripe Loader provided by Snowboard.js can now be disabled by setting
data-request-stripeto false. - Added support for command names that include a number.
- Core after login logic (
runMigrationOnLoginand logging to the access log) has been moved to an event listener to more reliabily work across all methods of logging in. - Added a default UserAgent of
Winter Stormto calls made by the Winter HTTP client. - Added a
nestedArray()scope to theNestedTreetrait and atoNestedArray()method to the coreTreeCollectionclass.
Bug Fixes
- Fixed the argument order for
paginate()andsimplePaginate()inBelongsToOrMorphsManyrelationships. - Fixed issue where attempting to use the
SortableScopecould conflict with columns in pivot tables. - Fixed infinite loop when using
HasSortableRelationson a model with a self-referencing relationship. - Restored the previous default value of true for
showPageNumbersin theRelationController'sviewandmanageconfiguration scopes. - Fixed support for empty calls to
date()in Twig. - Fixed issue where FormWidgets would return null even when their raw field values aren't present in the save data.
- Fixed issue with some styling elements in the backend due to the switch of asset compilation systems for the backend styles in 1.2.6.
- Fixed error when using taglist with a single value.
- Fixed issue where the
RelationManagerFormWidget was overriding the default configuration of theRelationControllereven when the overrides were not explicitly set on the field instance. - Fixed issue where creating themes from the backend using the
blankscaffold would fail. - Fixed issue where custom File models could not use string keys (i.e. UUIDs) as their primary key when using the default backend partials.
- Fixed issue where Pivot models were not being properly initialized with their attributes causing problems when the pivot record contained
jsonableattributes used by repeaters / nested forms. - Improved
trace_loghelper's handling of objects - Fixed support for viewing complex (jsonable) pivot data in the RelationController.
- Fixed issue where the job class was generated twice when using
create:jobwith the--syncoption. - Fixed issue where
maxItems: 1didn't work for the first item on repeaters. - Fixed nested form data in Snowboard requests.
- Fixed issue where the Mix webpack config wasn't being removed after it was no longer required.
- Fixed issue where sometimes event listeners for model events would be bound multiple times.
- Disabled the
--relativeflag forwinter:mirroron Windows because Windows doesn't support relative symlinks. - Properly escape the SQLite database path when running
winter:envon Windows.
Security Improvements
- Added the
$requiredPermissionsproperty to the default controller stub used bycreate:controller. - Hardened theme objects, preventing certain properties from being passed through to the ThemeData object.
- Improved the Twig security policy (blocked methods that write, delete, or modify records and attributes in Database/Eloquent and Halcyon models; blocked access to the theme datasource; prevented extensions from being created or directly interacted with). See GHSA-xhw3-4j3m-hq53 for more information.
Translation Improvements
- Improved Latvian translation.
- Improved French translation.
- Improved Russian translation.
Performance Improvements
Winter\Storm\Database\Traits\ArraySourcenow supports using generators to return records in thegetRecords()method.
Community Improvements
- Fixed links to documentation in
composer.json
Dependencies
- Bumped minimum required version of Twig to v3.14 to fix potential security issue.
New Contributors
Full Changelog: v1.2.6...v1.2.7