You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Table views within element index pages are no longer scrolled directly. (#14927)
Improved the look of user gradicons when selected.
“Save and continue editing” actions now restore the page’s scroll position on reload.
“Remove” element actions within relational fields will now remove all selected elements, if the target element is selected. (#15078)
Action menus are now displayed within the page toolbar, rather than in the breadcrumbs. (#14913, #15070)
Site menus within element selector modals now filter out sites that don’t have any sources. (#15091)
The meta sidebar toggle has been moved into the gutter between the content pane and meta sidebar. (#15117)
Element indexes will now show a confirmation dialog when cancelling a bulk inline edit. (#15139, #15142)
Matrix fields in cards view and Addresses fields now show which nested entries/addresses contain validation errors. (#15161)
Nested entry edit pages now redirect to their owner element’s edit page. (#15169)
Accessibility
Added the “Status” column option to category, entry, and user indexes. (#14968)
Element cards now display a textual status label rather than just the indicator. (#14968)
Darkened the color of page sidebar toggle icons to meet the minimum contrast for UI components.
Darkened the color of context labels to meet the minimum contrast for text.
Darkened the color of footer links to meet the minimum contrast for text.
Set the language of the Craft edition in the footer, to improve screen reader pronunciation for non-English languages.
The accessible name of “Select site” buttons is now translated to the current language.
Improved the accessibility of two-step verification steps on the control panel login screen. (#15145)
Improved the accessibility of global nav items with subnavs. (#15006)
The secondary nav is now kept open during source selection for mobile viewports, preventing focus from being dropped. (#14946)
User edit screens’ document titles have been updated to describe the page purpose. (#14946)
Improved the styling of selected global nav items. (#15061)
Administration
Added the --format option to the db/backup and db/restore commands for PostgreSQL installs. (#14931)
The db/restore command now autodetects the backup format for PostgreSQL installs, if --format isn’t passed. (#14931)
The install command and web-based installer now validate the existing project config files at the outset, and abort installation if there are any issues.
The resave/entries command now has an --all-sections flag.
The web-based installer now displays the error message when installation fails.
Edit Entry Type pages now have a “Delete” action. (#14983)
After creating a new field, field layout designers now set their search value to the new field’s name. (#15080)
GraphQL schema edit pages now have a “Save and continue editing” alternate action.
Volumes’ “Subpath” and “Transform Subpath” settings can now be set to environment variables. (#15087)
The system edition can now be defined by a CRAFT_EDITION environment variable. (#15094)
The rebrand assets path can now be defined by a CRAFT_REBRAND_PATH environment variable. (#15110)
Development
Added the {% expires %} tag, which simplifies setting cache headers on the response. (#14969)
Added the withCustomFields element query param. (#15003)
Entry queries now support passing * to the section param, to filter the results to all section entries. (#14978)
Element queries now support passing an element instance, or an array of element instances/IDs, to the draftOf param.
Added craft\elements\ElementCollection::find(), which can return an element or elements in the collection based on a given element or ID. (#15023)
Added craft\elements\ElementCollection::fresh(), which reloads each of the collection elements from the database. (#15023)
The collect() Twig function now returns a craft\elements\ElementCollection instance if all of the items are elements.
craft\elements\ElementCollection::contains() now returns true if an element is passed in and the collection contains an element with the same ID and site ID; or if an integer is passed in and the collection contains an element with the same ID. (#15023)
craft\elements\ElementCollection::countBy(), collapse(), flatten(), keys(), pad(), pluck(), and zip() now return an Illuminate\Support\Collection object. (#15023)
craft\elements\ElementCollection::diff() and intersect() now compare the passed-in elements to the collection elements by their IDs and site IDs. (#15023)
craft\elements\ElementCollection::flip() now throws an exception, as element objects can’t be used as array keys. (#15023)
craft\elements\ElementCollection::map() and mapWithKeys() now return an Illuminate\Support\Collection object, if any of the mapped values aren’t elements. (#15023)
craft\elements\ElementCollection::merge() now replaces any elements in the collection with passed-in elements, if their ID and site ID matches. (#15023)
craft\elements\ElementCollection::only() and except() now compare the passed-in values to the collection elements by their IDs, if an integer or array of integers is passed in. (#15023)
craft\elements\ElementCollection::unique() now returns all elements with unique IDs, if no key is passed in. (#15023)
Extensibility
Improved type definitions for craft\db\Query, element queries, and craft\elements\ElementCollection.
Improved the performance of exists() element queries.
Improved the performance of craft\base\Element::toArray().
The Debug Toolbar now pre-serializes objects stored as request parameters, fixing a bug where closures could prevent the entire Request panel from showing up. (#14982)
Batched queue jobs now verify that they are still reserved before each step, and before spawning additional batch jobs. (#14986)
The search keyword index is now updated for owner elements, when a nested element is saved directly which belongs to a searchable custom field.