Content Management
- Element conditions can now have a “Not Related To” rule. (#15496)
- Element conditions can now have a “Site Group” rule, if there are two or more site groups. (#15625)
- Asset chips and cards no longer include the “Replace file” action. (#15498)
- Category slugs are now inline-editable from the Categories index page. (#15560)
- Entry post dates, expiry dates, slugs, and authors are now inline-editable from the Entries index page. (#15560)
- Improved Addresses field validation to be more consistent with Matrix fields.
- Entry chips and cards no longer include status indicators, if their entry type’s “Show thet Status field” setting is disabled. (#15636)
- Matrix and Addresses fields now show newly-created elements on first edit, rather than after they’ve been fully saved. (#15641)
Accessibility
- Improved the accessibility of Tags fields.
Administration
- Link fields now have “Allow root-relative URLs” and “Allow anchors” settings. (#15579)
- Custom field selectors within field layouts now display a pencil icon if their name, instructions, or handle have been overridden. (#15597)
- Custom field settings within field layouts now display a chip for the associated global field. (#15619, #15597)
- Field layouts can now define tips and warnings that should be displayed for fields. (#15632)
- The Fields index page now has a “Used by” column that shows how many field layouts each field is used by. (#14984)
- The Entry Types index page now has a “Used by” column that lists the sections and custom fields that each entry type is used by. (#14984)
- Single sections can now have multiple entry types. (#15630)
- Increased the text size for handle buttons within admin tables.
Development
- Added the
notRelatedTo
andandNotRelatedTo
element query params. (#15496) - Added the
notRelatedTo
GraphQL element query argument. (#15496) relatedToAssets
,relatedToCategories
,relatedToEntries
,relatedToTags
, andrelatedToUsers
GraphQL arguments now support passingrelatedViaField
andrelatedViaSite
keys to their criteria objects. (#15508)- Country field values and
craft\elements\Address::getCountry()
now return the country in the current application locale.
Extensibility
- Added
craft\base\ApplicationTrait::getEnvId()
. (#15313) - Added
craft\base\ElementInterface::getRootOwner()
. (#15534) - Added
craft\base\ElementInterface::showStatusIndicator()
. - Added
craft\elements\conditions\NotRelatedToConditionRule
. - Added
craft\elements\conditions\SiteGroupConditionRule
. - Added
craft\gql\arguments\RelationCriteria
. - Added
craft\gql\types\input\criteria\AssetRelation
. - Added
craft\gql\types\input\criteria\CategoryRelation
. - Added
craft\gql\types\input\criteria\EntryRelation
. - Added
craft\gql\types\input\criteria\TagRelation
. - Added
craft\gql\types\input\criteria\UserRelation
. - Added
craft\helpers\Cp::componentPreviewHtml()
. - Added
craft\helpers\Inflector
. - Added
craft\helpers\Session::close()
. - Added
craft\services\Sites::getEditableSitesByGroupId()
. craft\helpers\Cp::chipHtml()
now supports ahyperlink
option.craft\helpers\Session
methods are now safe to call on console requests.craft\services\Elements::saveElement()
now saves dirty fields’ content even if$saveContent
isfalse
. (#15393)- Deprecated
craft\db\mysql\Schema::quoteDatabaseName()
. - Deprecated
craft\db\pgqsl\Schema::quoteDatabaseName()
. - Deprecated
craft\helpers\ElementHelper::rootElement()
.craft\base\ElementInterface::getRootOwner()
should be used instead. - Added
Craft.cp.announce()
, simplifying live region announcements for screen readers. (#15569) - Element action menu items returned by
craft\base\Element::safeActionMenuItems()
anddestructiveActionMenuItems()
can now include ashowInChips
key to explicitly opt into/out of being shown within element chips and cards. - Element select inputs now support
allowAdd
andallowRemove
settings. (#15639) - Control panel CSS selectors that take orientation into account now use logical properties. (#15522)
System
- MySQL mutex locks and PHP session names are now namespaced using the application ID combined with the environment name. (#15313)
- Added support for “City/Town” address locality labels. (#15585)
- Craft now sends
X-Robots-Tag: none
headers for preview requests. (#15612, #15586) x-craft-preview
andx-craft-live-preview
params are now hashed, andcraft\web\Request::getIsPreview()
will only returntrue
if the param validates. (#15605)- Generated URLs no longer include
x-craft-preview
orx-craft-live-preview
query string params based on the requested URL, if either were set to an unverified string. (#15605) - The PHP session is now closed before making API requests. (#15643)
- Updated Twig to 3.12. (#15568)
- Fixed a SQL error that occurred when running the
db/convert-charset
command if there were any custom database views or sequences. (#15598) - Fixed a bug where
craft\helpers\Db::supportsTimeZones()
could returnfalse
on databases that supported time zone conversion. (#15592) - Fixed a bug where
null
values within associative arrays were ignored when applying project config data. (#10512) - Fixed a bug where tabs within field layout designers weren’t always getting positioned correctly when wrapped. (#15590)
- Fixed a bug where editable table rows’ action buttons were misaligned for newly-created rows. (#15602)
- Fixed a bug where relational fields’ element query results weren’t limited to the selected relations if the
id
param was overridden. (#15570) - Fixed a bug where ordering element queries by textual custom fields would factor in character marks. (#15609)
- Fixed a bug where Money fields’ condition rules could display incorrect values based on a user’s formatting locale.
- Fixed an error that occurred when eager-loading user addresses. (#15629)
- Fixed styling issues with classic Live Preview. (#15640)
- Fixed a bug where fields were bleeding out of the content pane on smaller viewports.
- Fixed a bug where Link fields didn’t allow URLs with TLDs longer than six characters.
- Fixed a bug where hard-deleting an element wasn’t hard-deleting any nested elements as well. (#15645)
- Fixed a bug where it wasn’t possible to hard-delete nested elements from embedded element index views. (#15645)
- Fixed an error that occurred when calling the
users/delete-user-photo
orusers/upload-user-photo
from the front end. (#15487) - Fixed styling issues. (#15537)