Skip to content

Releases: craftcms/cms

4.5.4

12 Sep 18:50
4.5.4
bf4756f
Compare
Choose a tag to compare
  • Added the @stripTags and @trim GraphQL directives. (#9971)
  • Added SK to the list of keywords that Craft will look for when determining whether a value is sensitive and should be redacted from logs, etc. (#3619)
  • Improved the scrolling behavior for page sidebars and detail panes. (#13637)
  • Filesystem edit pages now have a “Save and continue editing” alternative submit action, and the Command/Ctrl + S keyboard shortcut now redirects back to the edit page. (#13658)
  • Attribute labels are no longer surrounded by asterisks for front-end validation messages. (#13640)
  • The |replace Twig filter now has a regex argument, which can be set to false to disable regular expression parsing. (#13642)
  • Added craft\events\DefineUserGroupsEvent.
  • Added craft\services\Users::EVENT_DEFINE_DEFAULT_USER_GROUPS. (#12283)
  • Added craft\services\Users::getDefaultUserGroups().
  • craft\events\UserAssignGroupEvent now extends DefineUserGroupsEvent, giving it a new $userGroups property.
  • craft\helpers\DateTimeHelper::toDateTime() now supports DateTimeImmutable values. (#13656)
  • craft\web\Response::setCacheHeaders() no longer includes public in the Cache-Control header when $overwrite is false. (#13676)
  • Deprecated craft\events\UserAssignGroupEvent. DefineUserGroupsEvent should be used instead.
  • Fixed a bug where the “Active Trials” section in the Plugin Store cart modal wasn’t listing plugins in trial. (#13661)
  • Fixed a bug where changed fields weren’t being tracked properly when applying a draft for a multi-site entry.
  • craft\services\Elements::duplicateElement() now supports passing a siteAttributes array to the $attributes argument, for setting site-specific attributes.
  • Fixed an error that could occur when executing a GraphQL query with fragments. (#13622)
  • Fixed a bug where addresses queried via GraphQL had a photo field.
  • Fixed a bug where boolean environment variables weren’t always getting the correct value indicators within Selectize fields. (#13613)
  • Fixed a bug where some system icons were getting black backgrounds when displayed within Vue apps. (#13632)
  • Fixed a bug where the user and address field layouts were getting new UUIDs each time they were saved. (#13588)
  • Fixed an error that could occur if a Money field was set to an array without a value key. (#13648)
  • Fixed a bug where relations weren’t getting restored when restoring a revision’s content. (#13626)
  • Fixed a bug where “Entry Type” fields were showing typeId labels for admin users with “Show field handles in edit forms” enabled. (#13627)
  • Fixed a bug where Lightswitch fields with only one label weren’t getting the correct padding on the unlabelled side of the container. (#13629)
  • Fixed a bug where the transformGifs and transformSvgs config settings weren’t always being respected. (#13624, #13635)
  • Fixed a bug where filesystems weren’t requiring the “Base URL” setting to be set. (#13657)
  • Fixed a bug where applying a draft could redirect to the “Current” revision on a different site, if a new site had been added on the draft. (#13668)
  • Fixed an error that could occur when changing a field’s type, if a backup table needed to be created to store the old field values. (#13669)
  • Fixed a bug where Matrix blocks that were initially created for a newly-added site within a draft could be lost when applying the draft. (#13670)
  • Fixed a bug where fill transform properties weren’t being passed along by craft\elements\Asset::getUrlsBySize() and getSrcset(). (#13650)
  • Fixed a bug where SVG asset icons weren’t visible in Safari. (#13685)
  • Fixed two RCE vulnerabilities.

3.9.2

12 Sep 18:46
3.9.2
253c3a7
Compare
Choose a tag to compare
  • Added SK to the list of keywords that Craft will look for when determining whether a value is sensitive and should be redacted from logs, etc. (#3619)
  • Improved the scrolling behavior for page sidebars and detail panes. (#13637)
  • Fixed an error that could occur when saving an element with an Assets field from a console command. (#13623)
  • Fixed a bug where the “Active Trials” section in the Plugin Store cart modal wasn’t listing plugins in trial. (#13661)
  • Fixed two RCE vulnerabilities.

4.5.3

29 Aug 20:42
4.5.3
43ee7a7
Compare
Choose a tag to compare
  • Fixed a bug where custom fields could be marked as changed within element editor slideouts, if they modified their input values on initialization. (craftcms/ckeditor#128)
  • Fixed a bug where elements were getting saved a second time after being converted to a provisional draft within a slideout. (#13604)
  • Fixed a JavaScript error. (#13605)
  • Fixed support for storing PHP session info in the database on PostgreSQL.
  • Fixed a bug where search inputs within element selector modals weren’t getting focus rings.
  • Fixed a bug where boolean menu inputs were initially treating null values as true.
  • Fixed a bug where boolean menu inputs weren’t toggling other fields. (#13613)
  • Fixed a bug where Craft.namespaceId() wasn’t working properly if the namespace ended in a ] character.
  • Fixed a bug where the |replace Twig filter wasn’t identifying regular expressions that contained escaped slashes. (#13618)
  • Fixed a bug where entries that were cloned from a provisional draft weren’t getting propagated to other sites initially. (#13599)
  • Fixed an error that could occur when cloning a multi-site provisional draft that contained nested Matrix/Neo/Super Table blocks.

4.5.2

25 Aug 00:03
4.5.2
4f20a31
Compare
Choose a tag to compare
  • craft\helpers\UrlHelper::buildQuery() is no longer deprecated. (#12796)
  • Fixed a bug where control panel notifications weren’t always closing automatically if they contained interactive elements. (#13591)
  • Fixed a bug where default user avatars were getting black backgrounds when displayed within Vue apps. (#13597)
  • Fixed a bug where the Username and Email fields weren’t required for public registrations forms, if “Deactivate users by default” was enabled. (#13596)
  • Fixed a bug where switching sites when editing a global site wasn’t working. (#12796, #13603)
  • Fixed a bug where page shortcuts weren’t working after a related element was saved via a slideout. (#13601)

4.5.1

23 Aug 19:47
4.5.1
19c51a9
Compare
Choose a tag to compare
  • Control panel notifications no longer block page keyboard shortcuts. (#13591)
  • Garnish.uiLayerManager.addLayer() now supports a bubble option, which allows non-matching keyboard shortcuts to bubble up to the parent layer.
  • Fixed an error that could occur when Craft was performing a Composer operation, if no HOME environment variable was set for PHP. (#13590)
  • Fixed a bug where craft\fields\Matrix::serializeValue() was setting fields keys to a closure. (#13592)
  • Fixed a bug where time values weren’t saving properly for Greek locales. (#9942)
  • Fixed a bug where the “Status” lightswitch would always be enabled on edit pages for single-site elements. (#13595)

3.9.1

23 Aug 19:16
3.9.1
b8f602d
Compare
Choose a tag to compare
  • Fixed an error that could occur when Craft was performing a Composer operation, if no HOME environment variable was set for PHP. (#13590)

4.5.0

22 Aug 16:21
4.5.0
3395410
Compare
Choose a tag to compare

Content Management

  • Entry and category edit pages now show other authors who are currently editing the same element. (#13420)
  • Entry and category edit pages now display a notification when the element has been saved by another author. (#13420)
  • Entry and category edit pages now display a validation error summary at the top of the page, including a mention of errors from other sites. (#11569, #12125)
  • Table fields can now have a “Row heading” column. (#13231)
  • Table fields now have a “Static Rows” setting. (#13231)
  • Table fields no longer show a heading row, if all heading values are blank. (#13231)
  • Element slideouts now show their sidebar content full-screen for elements without a field layout, rather than having an empty body. (#13056, #13053)
  • Relational fields no longer track the previously-selected element(s) when something outside the field is clicked on. (#13123)
  • Element indexes now use field layouts’ overridden field labels, if all field layouts associated with an element source use the same label. (#8903)
  • Element indexes now track souces’ filters in the URL, so they can be sharable and persisted when navigating back to the index page via the browser history. (#13499)
  • Users’ default thumbnails are now the user initials over a unique color gradient. (#13511)
  • Improved the styling and max height of Selectize inputs. (#13065, #13176)
  • Selectize inputs now support click-and-drag selection. (#13273)
  • Selectize single-select inputs now automatically select the current value on focus. (#13273)
  • It’s now possible to create new entries from entry select modals when a custom source is selected, if the source is configured to only show entries from one section. (#11499)
  • The Entries index page now shows a primary “New entry” button when a custom source is selected, if the source is configured to only show entries from one section. (#13390)
  • Invalid Dropdown fields now automatically select their default option and get marked as changed (if they have a default option). (#13540)

Accessibility

  • Image assets’ thumbnails and <img> tags generated via craft\element\Asset::getImg() no longer use the assets’ titles as alt fallback values. (#12854)
  • Element index pages now have visually-hidden “Sources” headings for screen readers. (#12961)
  • Element metadata fields now have visually-hidden “Metadata” headings for screen readers. (#12961)
  • Structure elements within element indexes now convey their levels to screen readers. (#13020)
  • Non-image asset thumbnails in the control panel now have alt attributes set to the file extension. (#12724)
  • Improved copy-text buttons for screen readers. (#13073)
  • Improved the contrast of asset file type icons. (#13262)

Administration

  • Added the “Slug Translation Method” setting to entry types. (#8962, #13291)
  • Added the “Show the Status field” setting to entry types. (#12837, #13265)
  • Added the setup/cloud command, which prepares a Craft install to be deployed to Craft Cloud.
  • Added the setup/message-tables command, which can be run to set the project up for database-stored static translations via DbMessageSource. (#13542)
  • Entry types created via the entrify/global-set command now have “Show the Status field” disabled by default. (#12837)
  • Added the defaultCountryCode config setting. (#13478)
  • Custom element sources can now be configured to only appear for certain sites. (#13344)
  • The “My Account” page no longer shows a “Require a password reset on next login” checkbox.
  • The Asset Indexes utility no longer shows the “Cache remote images” option on ephemeral environments. (#13202)
  • It’s now possible to configure UK addresses to show a “County” field. (#13361)
  • The “Login Page Logo” and “Site Icon” general settings’ image previews now have checkered backgrounds. (#13210, #13229)
  • Empty field layout tabs are no longer pruned out. (#13132)
  • active, addresses, admin, email, friendlyName, locked, name, password, pending, suspended, and username are now reserved user field handles. (#13579)

Development

  • Added a new _globals global Twig variable for front-end templates, which can be used to store custom values in a global scope. (#13050, #12951)
  • The |replace Twig filter now supports passing in a hash with regular expression keys. (#12956)
  • {% exit %} tags now support passing a message after the status code. (#13166)
  • Built-in element types’ GraphQL queries now support passing null to relatedToAssets, relatedToEntries, relatedToUsers, relatedToCategories, relatedToTags, and relatedToAll arguments. (#7954)
  • Elements now include custom field values when being iterated over, and when being merged. (#13009)
  • Dropdown and Radio Buttons fields now have a “Column Type” setting, which will be set to varchar for existing fields, and defaults to “Automatic” for new fields. (#13025, #12954)
  • Successful users/login JSON responses now include information about the logged-in user. (#13374)

Extensibility

  • Filesystem types can now register custom file uploaders. (#13313)
  • When applying a draft, the canonical elements’ getDirtyAttributes() and getDirtyFields() methods now return the attribute names and field handles that were modified on the draft for save events. (#12967)
  • Admin tables can be configured to pass custom query params to the data endpoint. (#13416)
  • Admin tables can now be programatically reloaded. (#13416)
  • Admin table properties are now reactive. (#13558, #13520)
  • Native element sources can now define a defaultFilter key, which defines the default filter condition that should be applied when the source is selected. (#13499)
  • Added craft\addresses\SubdivisionRepository. (#13361)
  • Added craft\base\Element::showStatusField(). (#13265)
  • Added craft\base\Element::thumbSvg(). (#13262)
  • Added craft\base\ElementInterface::getIsSlugTranslatable().
  • Added craft\base\ElementInterface::getSlugTranslationDescription().
  • Added craft\base\ElementInterface::getSlugTranslationKey().
  • Added craft\base\ElementInterface::getThumbHtml().
  • Added craft\base\ElementInterface::modifyCustomSource().
  • Added craft\base\ElementInterface::setDirtyFields().
  • Added craft\base\ElementInterface::setFieldValueFromRequest(). (#12935)
  • Added craft\base\FieldInterface::normalizeValueFromRequest(). (#12935)
  • Added craft\base\FieldLayoutProviderInterface. (#13250)
  • Added craft\base\FsInterface::getShowHasUrlSetting(). (#13224)
  • Added craft\base\FsInterface::getShowUrlSetting(). (#13224)
  • Added craft\base\FsTrait::$showHasUrlSetting. (#13224)
  • Added craft\base\FsTrait::$showUrlSetting. (#13224)
  • Added `craft\behaviors\EventB...
Read more

3.9.0

22 Aug 18:24
3.9.0
960cb2f
Compare
Choose a tag to compare
  • Updated Yii to 2.0.48.1. (#13444)
  • Loosened the Composer constraint to ^2.2.19. (#13396)
  • Internal Composer operations now use a bundled composer.phar file, rather than Composer’s PHP API. (#13519)
  • craft\services\Assets::getAllDescendantFolders() now has an $asTree argument. (#13535)
  • Fixed a bug where asset exports could be blank if only subfolders were selected.

4.5.0-beta.2

15 Aug 18:17
4.5.0-beta.2
c44911b
Compare
Choose a tag to compare
4.5.0-beta.2 Pre-release
Pre-release
  • Added craft\events\AssetBundleEvent.
  • Added craft\web\View::EVENT_AFTER_REGISTER_ASSET_BUNDLE.
  • Added support for the CRAFT_LOG_ALLOW_LINE_BREAKS environment variable. (#13544)
  • Fixed multiple issues with Selectize inputs.
  • Fixed a bug where Command/Ctrl + clicks on “New entry” button menu options would open the Entries index page in a new tab, and redirect to the Edit Entry page in the current tab. (#13550)
  • Fixed a bug where autosuggest fields weren’t mouse-selectable. (#13553)
  • Fixed a bug where craft\events\MoveElementEvent::$targetElementId was getting set incorrectly. (#13552)

4.5.0-beta.1

10 Aug 20:32
4.5.0-beta.1
6471504
Compare
Choose a tag to compare
4.5.0-beta.1 Pre-release
Pre-release

Content Management

  • Entry and category edit pages now show other authors who are currently editing the same element. (#13420)
  • Entry and category edit pages now display a notification when the element has been saved by another author. (#13420)
  • Entry and category edit pages now display a validation error summary at the top of the page, including a mention of errors from other sites. (#11569, #12125)
  • Table fields can now have a “Row heading” column. (#13231)
  • Table fields now have a “Static Rows” setting. (#13231)
  • Table fields no longer show a heading row, if all heading values are blank. (#13231)
  • Element slideouts now show their sidebar content full-screen for elements without a field layout, rather than having an empty body. (#13056, #13053)
  • Relational fields no longer track the previously-selected element(s) when something outside the field is clicked on. (#13123)
  • Element indexes now use field layouts’ overridden field labels, if all field layouts associated with an element source use the same label. (#8903)
  • Element indexes now track souces’ filters in the URL, so they can be sharable and persisted when navigating back to the index page via the browser history. (#13499)
  • Users’ default thumbnails are now the user initials over a unique color gradient. (#13511)
  • Improved the styling and max height of Selectize inputs. (#13065, #13176)
  • Selectize inputs now support click-and-drag selection. (#13273)
  • Selectize single-select inputs now automatically select the current value on focus. (#13273)
  • It’s now possible to create new entries from entry select modals when a custom source is selected, if the source is configured to only show entries from one section. (#11499)
  • The Entries index page now shows a primary “New entry” button when a custom source is selected, if the source is configured to only show entries from one section. (#13390)
  • Invalid Dropdown fields now automatically select their default option and get marked as changed (if they have a default option). (#13540)

Accessibility

  • Image assets’ thumbnails and <img> tags generated via craft\element\Asset::getImg() no longer use the assets’ titles as alt fallback values. (#12854)
  • Element index pages now have visually-hidden “Sources” headings for screen readers. (#12961)
  • Element metadata fields now have visually-hidden “Metadata” headings for screen readers. (#12961)
  • Structure elements within element indexes now convey their levels to screen readers. (#13020)
  • Non-image asset thumbnails in the control panel now have alt attributes set to the file extension. (#12724)
  • Improved copy-text buttons for screen readers. (#13073)
  • Improved the contrast of asset file type icons. (#13262)

Administration

  • Added the “Slug Translation Method” setting to entry types. (#8962, #13291)
  • Added the “Show the Status field” setting to entry types. (#12837, #13265)
  • Added the setup/message-tables command, which can be run to set the project up for database-stored static translations via DbMessageSource. (#13542)
  • Entry types created via the entrify/global-set command now have “Show the Status field” disabled by default. (#12837)
  • Added the defaultCountryCode config setting. (#13478)
  • Custom element sources can now be configured to only appear for certain sites. (#13344)
  • The “My Account” page no longer shows a “Require a password reset on next login” checkbox.
  • The Asset Indexes utility no longer shows the “Cache remote images” option on ephemeral environments. (#13202)
  • It’s now possible to configure UK addresses to show a “County” field. (#13361)
  • The “Login Page Logo” and “Site Icon” general settings’ image previews now have checkered backgrounds. (#13210, #13229)
  • Empty field layout tabs are no longer pruned out. (#13132)

Development

  • Added a new _globals global Twig variable for front-end templates, which can be used to store custom values in a global scope. (#13050, #12951)
  • The |replace Twig filter now supports passing in a hash with regular expression keys. (#12956)
  • {% exit %} tags now support passing a message after the status code. (#13166)
  • Built-in element types’ GraphQL queries now support passing null to relatedToAssets, relatedToEntries, relatedToUsers, relatedToCategories, relatedToTags, and relatedToAll arguments. (#7954)
  • Elements now include custom field values when being iterated over, and when being merged. (#13009)
  • Dropdown and Radio Buttons fields now have a “Column Type” setting, which will be set to varchar for existing fields, and defaults to “Automatic” for new fields. (#13025, #12954)
  • Successful users/login JSON responses now include information about the logged-in user. (#13374)

Extensibility

  • Filesystem types can now register custom file uploaders. (#13313)
  • When applying a draft, the canonical elements’ getDirtyAttributes() and getDirtyFields() methods now return the attribute names and field handles that were modified on the draft for save events. (#12967)
  • Admin tables can be configured to pass custom query params to the data endpoint. (#13416)
  • Admin tables can now be programatically reloaded. (#13416)
  • Native element sources can now define a defaultFilter key, which defines the default filter condition that should be applied when the source is selected. (#13499)
  • Added craft\addresses\SubdivisionRepository. (#13361)
  • Added craft\base\Element::showStatusField(). (#13265)
  • Added craft\base\Element::thumbSvg(). (#13262)
  • Added craft\base\ElementInterface::getIsSlugTranslatable().
  • Added craft\base\ElementInterface::getSlugTranslationDescription().
  • Added craft\base\ElementInterface::getSlugTranslationKey().
  • Added craft\base\ElementInterface::getThumbHtml().
  • Added craft\base\ElementInterface::modifyCustomSource().
  • Added craft\base\ElementInterface::setDirtyFields().
  • Added craft\base\ElementInterface::setFieldValueFromRequest(). (#12935)
  • Added craft\base\FieldInterface::normalizeValueFromRequest(). (#12935)
  • Added craft\base\FieldLayoutProviderInterface. (#13250)
  • Added craft\base\FsInterface::getShowHasUrlSetting(). (#13224)
  • Added craft\base\FsInterface::getShowUrlSetting(). (#13224)
  • Added craft\base\FsTrait::$showHasUrlSetting. (#13224)
  • Added craft\base\FsTrait::$showUrlSetting. (#13224)
  • Added craft\behaviors\EventBehavior. (#13502)
  • Added craft\controllers\AssetsControllerTrait.
  • Added craft\elements\db\ElementQuery::EVENT_BEFORE_POPULATE_ELEMENT.
  • Added craft\events\DefineAddressSubdivisionsEvent. (#13361)
  • Added craft\events\MoveElementEvent::$action. (#13429)
  • Added craft\events\MoveElementEvent::$targetElementId. ([#13429...
Read more