# Release Notes for Craft CMS 3.x ## 3.9.15 - 2025-04-10 [CRITICAL] - Fixed an RCE vulnerability. ## 3.9.14 - 2024-12-19 [CRITICAL] - Fixed an RCE vulnerability. ## 3.9.13 - 2024-04-03 - The Craft 4 Upgrade utility now shows the upgrade status and latest compatible version for abandoned plugins. - Fixed a bug where the Updates utility could include submit buttons without labels for abandoned plugins. ## 3.9.12 - 2024-03-19 - Craft no longer shows an alert when an installed Craft/plugin edition is a lower tier than the licensed edition. ## 3.9.11 - 2024-03-05 - Fixed a bug where `craft\web\Request::getIsPreview()` was returning `true` for requests with expired tokens. ([#14066](https://github.com/craftcms/cms/discussions/14066)) - Fixed a bug where asset conflict resolution modals were closing prematurely if there were multiple conflicts. ([#14045](https://github.com/craftcms/cms/issues/14045), [#14405](https://github.com/craftcms/cms/issues/14405)) - Fixed a bug where the Shift + Spacebar keyboard shortcut for previewing assets was only working for the first selected asset, rather than the focussed one. - Fixed a potential SSTI vulnerability. ## 3.9.10 - 2024-01-02 - Fixed a bug where meta fields weren’t immediately showing change indicators when entries were autosaved. - Fixed a bug where the `index-assets/one` command was overly-destructive when run with a subpath and the `--delete-missing-assets` option. ([#14087](https://github.com/craftcms/cms/issues/14087)) - Fixed a privilege escalation vulnerability. ## 3.9.6 - 2023-11-16 - Fixed a privilege escalation vulnerability. ## 3.9.5 - 2023-10-17 - Added `pgpassword` and `pwd` to the list of keywords that Craft will look for when determining whether a value is sensitive and should be redacted from logs, etc. - Fixed a bug where the `defaultDirMode` config setting wasn’t being respected when the `storage/runtime/` and `storage/logs/` folders were created. ([#13756](https://github.com/craftcms/cms/issues/13756)) - Fixed a bug where the `CRAFT_VENDOR_PATH`, `CRAFT_BASE_PATH`, `CRAFT_CONFIG_PATH`, `CRAFT_CONTENT_MIGRATIONS_PATH`, `CRAFT_STORAGE_PATH`, `CRAFT_TEMPLATES_PATH`, `CRAFT_TRANSLATIONS_PATH`, and `CRAFT_TESTS_PATH` PHP constants weren’t being respected if the directories didn’t exist. - Fixed RCE vulnerabilities. ## 3.9.4 - 2023-09-26 - Added `craft\helpers\App::phpExecutable()`. - Added `craft\helpers\Component::cleanseConfig()`. - `craft\helpers\Component::createComponent()` now filters out `as X` and `on X` keys from the component config. - Improved the reliability of Composer operations when PHP is running via FastCGI. ([#13681](https://github.com/craftcms/cms/issues/13681)) - Fixed an RCE vulnerability. ## 3.9.3 - 2023-09-14 - Added the `maxGraphqlBatchSize` config setting. ([#13693](https://github.com/craftcms/cms/issues/13693)) - Fixed a bug where page sidebars and detail panes weren’t scrolling properly if their height was greater than the main content pane height. ([#13637](https://github.com/craftcms/cms/issues/13637)) ## 3.9.2 - 2023-09-12 - 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](https://github.com/craftcms/cms/issues/3619)) - Improved the scrolling behavior for page sidebars and detail panes. ([#13637](https://github.com/craftcms/cms/issues/13637)) - Fixed an error that could occur when saving an element with an Assets field from a console command. ([#13623](https://github.com/craftcms/cms/issues/13623)) - Fixed a bug where the “Active Trials” section in the Plugin Store cart modal wasn’t listing plugins in trial. ([#13661](https://github.com/craftcms/cms/issues/13661)) - Fixed two RCE vulnerabilities. ## 3.9.1 - 2023-08-23 - Fixed an error that could occur when Craft was performing a Composer operation, if no `HOME` environment variable was set for PHP. ([#13590](https://github.com/craftcms/cms/issues/13590)) ## 3.9.0 - 2023-08-22 - Updated Yii to 2.0.48.1. ([#13444](https://github.com/craftcms/cms/pull/13444)) - Loosened the Composer constraint to `^2.2.19`. ([#13396](https://github.com/craftcms/cms/discussions/13396)) - Internal Composer operations now use a bundled `composer.phar` file, rather than Composer’s PHP API. ([#13519](https://github.com/craftcms/cms/pull/13519)) - `craft\services\Assets::getAllDescendantFolders()` now has an `$asTree` argument. ([#13535](https://github.com/craftcms/cms/discussions/13535)) - Fixed a bug where asset exports could be blank if only subfolders were selected. ## 3.8.17 - 2023-08-08 - Fixed a bug where `Craft.BaseElementIndexView::this.canSelectElement()` wasn’t getting applied for lazy-loaded elements. - Fixed a bug where setting an element query’s `status` param to `archived` would always yield zero results. ([#13465](https://github.com/craftcms/cms/issues/13465)) - Fixed a bug where `update` commands could fail on some environments. - Fixed an information disclosure vulnerability. ## 3.8.16 - 2023-07-18 - The “Access the control panel” user permission now includes a warning that the permission grants view-only access to user data and most content. - Fixed an RCE vulnerability. ## 3.8.15 - 2023-07-03 - The control panel footer now includes a message about active trials, with a link to purchase the licenses. - Fixed an error that occurred when passing arguments to an element’s `prev` and `next` fields via GraphQL. ([#13334](https://github.com/craftcms/cms/issues/13334)) - Fixed an RCE vulnerability. ## 3.8.14 - 2023-06-13 - The `_includes/forms/date` and `_includes/forms/time` templates now accept a `timeZone` variable. - Fixed an error that could occur when updating a plugin with the `craft update` command, if it provided a new migration but still had the same schema version. - Fixed an error that occurred when rendering editable tables with Date or Time columns. ([#13270](https://github.com/craftcms/cms/issues/13270)) ## 3.8.13 - 2023-05-24 - Fixed a bug where asset sources weren‘t immediately showing a source path on a clear `localStorage` cache. - Fixed a JavaScript error that could occur when searching within an asset index, when there was no source path. ([#13241](https://github.com/craftcms/cms/issues/13241)) - Fixed a bug where Date fields with “Show Time Zone” enabled were displaying their values in the system’s time zone within element indexes. ([#13233](https://github.com/craftcms/cms/issues/13233)) ## 3.8.12 - 2023-05-23 - Asset indexes now remember their previously-selected source path. ([#13147](https://github.com/craftcms/cms/issues/13147)) - Added `craft\base\ElementInterface::sourcePath()`. - Improved `craft\helpers\FileHelper::getExtensionByMimeType()` for some ambiguous, web-friendly MIME types. - Removed the OAuth 2.0 Client library, as it’s no longer used in core. - Fixed a bug where activation emails sent to newly-created users could link to the front-end site, if they were granted control panel access via a user group. ([#13204](https://github.com/craftcms/cms/issues/13204)) - Fixed a bug where it wasn’t possible to drag Verbb Navigation nodes via their drag handles. ([#12896](https://github.com/craftcms/cms/issues/12896)) - Fixed a bug where Date fields could display the wrong date. ([#13233](https://github.com/craftcms/cms/issues/13233)) - Deprecated the `Craft.startsWith()` JavaScript method. `String.prototype.startsWith()` should be used instead. ## 3.8.11 - 2023-05-15 - Fixed a SQL error that could occur when updating to Craft 3.8 on PostgreSQL. ([#13186](https://github.com/craftcms/cms/issues/13186)) - Fixed a JavaScript error that occurred for Matrix inputs with static blocks. ([#13194](https://github.com/craftcms/cms/issues/13194)) - Fixed the vertical alignment of element labels. ([#13168](https://github.com/craftcms/cms/issues/13168)) ## 3.8.10.2 - 2023-05-10 - Fixed a bug where it wasn’t possible to add new Matrix blocks via the “Add a block” menu. ([#13177](https://github.com/craftcms/cms/issues/13177)) ## 3.8.10 - 2023-05-09 - Fixed a “Double-instantiating a menu button on an element” console warning that occurred on pages with Matrix fields. ([#6338](https://github.com/craftcms/cms/issues/6338)) - Fixed an error that could occur when running tests. ([#13076](https://github.com/craftcms/cms/issues/13076)) ## 3.8.9 - 2023-05-02 - Volumes no longer validate if their field layout contains a field called `extension`, `filename`, `height`, `kind`, `size`, or `width`. - Fixed a bug where queue-runner Ajax requests triggered on the front end weren’t getting closed before running the queue, potentially causing long front-end load delays. - Fixed a bug where long element titles weren’t wrapping. ([#13143](https://github.com/craftcms/cms/issues/13143)) - Fixed a user enumeration timing attack vulnerability. ## 3.8.8 - 2023-04-25 - Fixed a bug where it was possible to select a disallowed volume as the Default Asset Location in Assets field settings. ([#13072](https://github.com/craftcms/cms/issues/13072)) - Fixed a bug where it was possible to upload files to Assets fields outside of the allowed volumes, if the Default Asset Location was set to a disallowed volume. ([#13072](https://github.com/craftcms/cms/issues/13072)) - Fixed an error that could occur if a Plain Text field had over 1,000,000 bytes. ([#13083](https://github.com/craftcms/cms/issues/13083)) - Fixed a bug where relational field values weren’t yielding any results for event handlers immediately after a draft had been merged. ([#13087](https://github.com/craftcms/cms/issues/13087)) - Fixed a bug where element labels could bleed out of their container. ([#13099](https://github.com/craftcms/cms/issues/13099)) - Fixed an error that occurred if `yii\web\UrlManager::addRules()` was called on a console request. ([#13109](https://github.com/craftcms/cms/issues/13109)) - Fixed a bug where it was possible to select the current folder as the target when moving a volume folder, resulting in the folder and its contents being lost. ([#13118](https://github.com/craftcms/cms/issues/13118)) - Fixed a bug where custom field values weren’t getting saved for assets in the local temp upload location. ([#12695](https://github.com/craftcms/cms/issues/12695)) ## 3.8.7 - 2023-04-11 - Improved the control panel styling when the Debug Toolbar is enabled. - Boolean config settings that are set to the strings `'true'`, `'false'`, or `'null'` are now converted to `true`, `false`, and `null`. ([#13063](https://github.com/craftcms/cms/issues/13063)) - `craft\web\View::renderObjectTemplate()` now trims the returned template output. - Fixed a bug where the Entries index page was listing unpublished drafts created by other users, even if the current user didn’t have permission to edit them. - Fixed a bug where Matrix fields weren’t counting disabled blocks when enforcing their Min Blocks settings. ([#13059](https://github.com/craftcms/cms/issues/13059)) - Fixed a bug where volume folder modals’ sidebars and content were being cut off. ([#13074](https://github.com/craftcms/cms/issues/13074)) ## 3.8.6 - 2023-04-04 - Content tab menus now reveal when a tab contains validation errors, and invalid tabs’ menu options get the same warning icon treatment as inline tabs do. ([#12971](https://github.com/craftcms/cms/issues/12971)) - Element index bulk action spinners are now centered on the viewport. ([#12972](https://github.com/craftcms/cms/issues/12972)) - All control panel errors are new presented via error notifications rather than browser alerts. ([#13024](https://github.com/craftcms/cms/issues/13024)) - Fixed a bug where Assets fields weren’t respecting their View Mode setting when viewing entry revisions. ([#12948](https://github.com/craftcms/cms/issues/12948)) - Fixed a bug where some relational fields were showing duplicate selected relations. ([#12949](https://github.com/craftcms/cms/issues/12949)) - Fixed a bug where asset pagination was broken when there was more than 100 subfolders. ([#12969](https://github.com/craftcms/cms/issues/12969)) - Fixed a bug where entry index pages’ “Revision Notes” and “Last Edited By” columns weren’t getting populated for disabled entries. ([#12981](https://github.com/craftcms/cms/issues/12981)) - Fixed a JavaScript error that occurred when closing a disclosure menu within Live Preview. ([#12992](https://github.com/craftcms/cms/issues/12992)) - Fixed a bug where assets were getting relocated to the root volume folder when renamed. ([#12995](https://github.com/craftcms/cms/issues/12995)) - Fixed a bug where it wasn’t possible to preview entries on another domain when the system was offline. ([#12979](https://github.com/craftcms/cms/issues/12979)) - Fixed a bug where users were able to access volumes they didn’t have permission to view via Assets fields. ([#13006](https://github.com/craftcms/cms/issues/13006)) - Fixed a bug where soft hyphens, non-breaking spaces, zero-width characters, invisible characters, and byte order marks weren’t getting stripped from sanitized asset filenames. ([#13029](https://github.com/craftcms/cms/pull/13029)) - Fixed a bug where the Plugin Store wasn’t accurately reporting installed plugins’ license statuses. ([#12986](https://github.com/craftcms/cms/issues/12986)) - Fixed a bug where the Plugin Store wasn’t handling 403 API responses for cart operations properly, once a cart had been handed off to Craft Console and assigned to an organization. ([#12916](https://github.com/craftcms/cms/issues/12916)) - Fixed an XSS vulnerability. ## 3.8.5 - 2023-03-21 - Fixed a bug where relation data was getting deleted when running garbage collection on PostgreSQL. ([#9905](https://github.com/craftcms/cms/issues/9905)) - Fixed a bug where Lightswitch fields’ “OFF Label” and “ON Label” settings weren’t getting translated. ([#12942](https://github.com/craftcms/cms/issues/12942)) - Fixed a bug where `craft\events\DefineUserContentSummaryEvent::$userId` was never set for `craft\controllers\EVENT_DEFINE_CONTENT_SUMMARY` events. ([#12944](https://github.com/craftcms/cms/issues/12944)) - Updated svg-sanitizer to 0.16. ([#12943](https://github.com/craftcms/cms/issues/12943)) ## 3.8.4 - 2023-03-20 - The `|json_encode` Twig filter now calls `craft\helpers\Json::encode()` internally, improving error handling. ([#12919](https://github.com/craftcms/cms/issues/12919)) - `craft\helpers\Json::encode()` no longer sets the `JSON_UNESCAPED_SLASHES` flag by default. - Fixed a JavaScript error that occurred when resolving an asset move conflict. ([#12920](https://github.com/craftcms/cms/issues/12920)) - Fixed a bug where volume subfolders were being shown when viewing soft-deleted assets. ([#12927](https://github.com/craftcms/cms/issues/12927)) - Fixed a bug where structure data was getting deleted when running garbage collection on PostgreSQL. ([#12925](https://github.com/craftcms/cms/issues/12925)) ## 3.8.3 - 2023-03-16 - Customize Sources modals no longer hide when the Esc key is pressed on the surrounding area is clicked on. ([#12895](https://github.com/craftcms/cms/issues/12895)) - Added `craft\helpers\FileHelper::uniqueName()`. - Fixed an error that occurred when uploading an asset with a filename over 250 characters long. ([#12889](https://github.com/craftcms/cms/issues/12889)) - Fixed an error that could occur when preparing licensing alerts, if any licenses were invalid. ([#12899](https://github.com/craftcms/cms/issues/12899)) - Fixed a bug where it wasn’t possible to drag nested Neo blocks. ([#12896](https://github.com/craftcms/cms/issues/12896)) - Fixed a bug where fields with reduced widths in Matrix blocks were becoming full-width while dragged. ([#12909](https://github.com/craftcms/cms/issues/12909)) - Fixed a bug where multi-edition plugins weren’t showing their edition labels within the Plugin Store cart. ([#12910](https://github.com/craftcms/cms/issues/12910)) ## 3.8.2 - 2023-03-14 - Fixed a bug where it wasn’t always possible to access entry or category edit pages if the `slugWordSeparator` config setting was set to `/`. ([#12871](https://github.com/craftcms/cms/issues/12871)) - Fixed a bug where `craft\helpers\Html::parseTagAttribute()` wasn’t decoding attribute values, which could lead to double-encoded attributes, e.g. when using the `|attr` filter. ([#12887](https://github.com/craftcms/cms/issues/12887)) - Fixed XSS vulnerabilities. - Fixed an SSRF vulnerability. ## 3.8.1 - 2023-03-09 - Fixed a bug where it wasn’t possible to select subfolders on the Assets index page. ([#12802](https://github.com/craftcms/cms/issues/12802)) - Fixed a bug where element index search inputs were losing focus when the element listing was updated. ([#12846](https://github.com/craftcms/cms/issues/12846)) - Fixed a bug where the database driver was being referenced as “MySQL” when using MariaDB. ([#12827](https://github.com/craftcms/cms/issues/12827)) - Fixed a bug where users weren’t able to select assets within Assets fields, if they didn’t have full permissions for the volume. ([#12851](https://github.com/craftcms/cms/issues/12851)) - Fixed a bug where the Assets index page’s URL would get updated incorrectly when renaming a subfolder. - Added `craft\db\Connection::getDriverLabel()`. ## 3.8.0 - 2023-03-08 ### Content Management - Volume subfolders are now displayed within the element listing pane on asset indexes, rather than as nested sources in the sidebar. ([#12558](https://github.com/craftcms/cms/pull/12558), [#9171](https://github.com/craftcms/cms/discussions/9171), [#5809](https://github.com/craftcms/cms/issues/5809)) - Asset indexes now display the current subfolder path above the element listing. ([#12558](https://github.com/craftcms/cms/pull/12558)) - Assets and folders can now be drag-and-dropped simultaneously. ([#12792](https://github.com/craftcms/cms/pull/12792)) - Reduced the likelihood of accidentally triggering an asset drag operation. ([#12792](https://github.com/craftcms/cms/pull/12792)) - Reduced the likelihood of accidentally dropping dragged assets/folders on an unintended target. ([#12792](https://github.com/craftcms/cms/pull/12792)) - It’s now possible to move volume folders and assets to a new location via a new “Move…” bulk element action, rather than via drag-and-drop interactions. ([#12558](https://github.com/craftcms/cms/pull/12558)) - It’s now possible to sort asset indexes by image width and height. ([#12653](https://github.com/craftcms/cms/pull/12653)) ### Administration - Most licensing issues are now consolidated into a single control panel alert, with a button to resolve them all with a single purchase on Craft Console. ([#12768](https://github.com/craftcms/cms/pull/12768)) - Added the `users/unlock` console command. ([#12345](https://github.com/craftcms/cms/discussions/12345)) - The `utils/prune-revisions` console command now has a `--section` option. ([#8783](https://github.com/craftcms/cms/discussions/8783)) ### Development - Added the `revisionNotes` field to elements queried via GraphQL. ([#12610](https://github.com/craftcms/cms/issues/12610)) - `craft\elements\Asset::getMimeType()` now has a `$transform` argument, and assets’ `mimeType` GraphQL fields now support a `@transform` directive. ([#12269](https://github.com/craftcms/cms/discussions/12269), [#12397](https://github.com/craftcms/cms/pull/12397), [#12522](https://github.com/craftcms/cms/pull/12522)) ### Extensibility - Added support for private plugins. ([#12716](https://github.com/craftcms/cms/pull/12716), [#8908](https://github.com/craftcms/cms/discussions/8908)) - Element source definitions can now include a `defaultSourcePath` key. - Added `craft\base\ApplicationTrait::getEditionHandle()`. - Added `craft\base\Element::indexElements()`. - Added `craft\base\ElementInterface::findSource()`. - Added `craft\base\ElementInterface::indexElementCount()`. - Added `craft\db\Migration::dropForeignKeyIfExists()`. - Added `craft\models\VolumeFolder::getHasChildren()`. - Added `craft\models\VolumeFolder::setHasChildren()`. - Added `craft\services\Assets::createFolderQuery()`. - Added `craft\services\Assets::foldersExist()`. - Added `craft\services\Search::normalizeSearchQuery()`. - Added `Craft.AssetMover`. - Added `Craft.BaseElementIndex::getSourcePathActionLabel()`. - Added `Craft.BaseElementIndex::getSourcePathActions()`. - Added `Craft.BaseElementIndex::getSourcePathLabel()`. - Added `Craft.BaseElementIndex::onSourcePathChange()`. - Added `Craft.BaseElementIndex::sourcePath`. - Added `Craft.BaseElementSelectorModal::getElementIndexParams()`. - Added `Craft.BaseElementSelectorModal::getIndexSettings()`. - Added `Craft.BaseElementSelectorModal::hasSelection()`. - Added `Craft.VolumeFolderSelectorModal`. - Deprecated `craft\helpers\Assets::sortFolderTree()`. - Deprecated `craft\services\Assets::getFolderTreeByFolderId()`. - Deprecated `craft\services\Assets::getFolderTreeByVolumeIds`. - The custom `activate` jQuery event will now trigger when the Return key is pressed. - The custom `activate` jQuery event will no longer trigger for Ctrl/Command-clicks. ### System - Fixed a database deadlock error that could occur when updating a relation or structure position for an element that was simultaneously being saved. ([#9905](https://github.com/craftcms/cms/issues/9905)) ## 3.7.68 - 2023-03-07 - Fixed a bug where `craft\events\RegisterElementSourcesEvent::$context` wasn’t always set to `modal` when defining the available element sources for an element selection modal. - Fixed a styling bug where multi-line checkbox labels within the Customize Sources modal weren’t wrapping properly. ([#12717](https://github.com/craftcms/cms/issues/12717)) - Fixed a bug where asset thumbnails within collapsed Matrix blocks weren’t loading when the block was expanded. ([#12720](https://github.com/craftcms/cms/issues/12720)) - Fixed a bug where custom fields’ database columns would get deleted when applying project config changes, if the field type wasn’t present. ([#12760](https://github.com/craftcms/cms/issues/12760)) - Fixed a bug where Assets, Categories, and Tags fields weren’t respecting their “Allow self relations” settings. ([#12769](https://github.com/craftcms/cms/issues/12769)) - Fixed a bug where dynamically-generated entry titles weren’t always generated with the site’s formatting locale in place. ([12780](https://github.com/craftcms/cms/issues/12780)) - Fixed a bug where element titles weren’t getting a pointer cursor or underlines on hover, when selected on an element index page. - Fixed a bug where it wasn’t possible to close modals that were opened by a custom select menu via the `Esc` key. ([#12814](https://github.com/craftcms/cms/pull/12814)) - Fixed an XSS vulnerability. ## 3.7.67 - 2023-02-17 - Fixed a bug where clicking on the scrollbar of a disclosure menu would close it. ([#12681](https://github.com/craftcms/cms/issues/12681)) - Fixed an error that could occur when loading the Plugin Store, if there wasn’t a `.env` file. ([#12687](https://github.com/craftcms/cms/issues/12687)) ## 3.7.66 - 2023-02-14 - HTML Purifier now allows `oembed` tags. ([ckeditor#59](https://github.com/craftcms/ckeditor/issues/59)) - Added `craft\htmlpurifier\VideoEmbedUrlDef`. - Fixed a bug where entries that aren’t propagated to the primary site weren’t showing revision notes. ([#12641](https://github.com/craftcms/cms/issues/12641)) - Fixed a bug where HTML tags weren’t getting stripped from auto-generated Handle and URI Format setting values. - Fixed a JavaScript error that could occur if an object with `null` values was passed to `Craft.compare()`. - Fixed a bug where `craft\elements\db\ElementQuery::toArray()` was calling getter methods whose names conflicted with custom field handles. ([#12635](https://github.com/craftcms/cms/pull/12635)) ## 3.7.65.2 - 2023-02-08 - Fixed a PHP error that could occur if relational fields were getting eager-loaded for elements that the fields didn’t belong to. ([#12648](https://github.com/craftcms/cms/issues/12648)) ## 3.7.65.1 - 2023-02-08 - Fixed a PHP error that occurred after performing a Composer action within Craft. ([#12647](https://github.com/craftcms/cms/issues/12647)) - Fixed a bug where element attributes weren’t getting eager-loaded. ([#12646](https://github.com/craftcms/cms/pull/12646), [#12645](https://github.com/craftcms/cms/issues/12645)) ## 3.7.65 - 2023-02-07 - Updated Composer to 2.2.19, fixing a PHP error that could occur when performing a Composer action within Craft, when the autoload classmap was generated with Composer 2.5. ([#12482](https://github.com/craftcms/cms/issues/12482)) - Fixed a bug where Matrix blocks weren’t getting eager-loaded. ([#12631](https://github.com/craftcms/cms/issues/12631)) - Fixed a PHP error that could occur when calling `craft\services\Assets::getAllDescendantFolders()` for the root folder. ([craftcms/feed-me#1231](https://github.com/craftcms/feed-me/issues/1231)) ## 3.7.64.1 - 2023-02-05 - Fixed a bug where `craft\behaviors\CustomFieldBehavior::$owner` was getting nullified by `craft\base\Element::fieldByHandle()`. ([#12624](https://github.com/craftcms/cms/issues/12624)) ## 3.7.64 - 2023-02-03 - Improved the performance of the “Generating pending image transforms” queue job. ([#12274](https://github.com/craftcms/cms/issues/12274)) - Added more reserved field handles to avoid conflicts with `craft\base\Element` properties. ([#12577](https://github.com/craftcms/cms/issues/12577)) - Control panel requests no longer override the `pageTrigger` config setting value to `'p'`. ([#12598](https://github.com/craftcms/cms/issues/12598), [#12614](https://github.com/craftcms/cms/pull/12614)) - Fixed field status badge styling in some contexts. ([#12403](https://github.com/craftcms/cms/issues/12403)) - Fixed a bug where exporting elements with multiple field layouts as a CSV file using the “Expanded” export type would result in mismatched column values. - Fixed a bug where cancelling a conflicting volume folder move would result in the moved folder getting deleted. - Fixed a bug where Date and Number fields could be misinterpreted in category Live Preview requests, if the site’s language used different date/number formats than the user’s formatting locale. - Fixed a bug where the horizontal scroll position wasn’t being retained when refreshing Live Preview. ([#12504](https://github.com/craftcms/cms/issues/12504)) - Fixed a bug where HTML tags within field labels, instructions, tips, and warnings weren’t always getting escaped. - Fixed a bug where the sidebar scroll position wasn’t retained when selecting a new source on element index pages. ([#12523](https://github.com/craftcms/cms/issues/12523)) - Fixed a bug where `resave/*` commands’ output didn’t take the offset into account. ([#12526](https://github.com/craftcms/cms/issues/12526)) - Fixed a bug where warnings were getting logged for video assets that were “missing” their dimensions. - Fixed a bug where `craft\services\Assets::getAllDescendantFolders()` could return unexpected results for folders that contained an underscore. - Fixed a bug where accessing a custom field’s magic property on an element would return the field’s raw database value rather than `null`, if it didn’t belong to the element’s field layout anymore. ([#12539](https://github.com/craftcms/cms/issues/12539), [#12578](https://github.com/craftcms/cms/pull/12578)) - Fixed a bug where `craft\image\Raster::getIsTransparent()` wasn’t working. ([#12565](https://github.com/craftcms/cms/issues/12565)) - Fixed a bug where the component name comments in project config YAML files would always lag behind the current project config a little. ([#12576](https://github.com/craftcms/cms/issues/12576), [#12581](https://github.com/craftcms/cms/pull/12581)) - Fixed a SQL error that occurred when creating a database backup using the default backup command, when running MySQL 5.7.41+ or 8.0.32+. ([#12557](https://github.com/craftcms/cms/issues/12557), [#12560](https://github.com/craftcms/cms/pull/12560)) - Fixed a bug where database backups weren’t respecting SSL database connection settings if they were specified when using MySQL. ([#10351](https://github.com/craftcms/cms/issues/10351), [#11753](https://github.com/craftcms/cms/issues/11753), [#12596](https://github.com/craftcms/cms/pull/12596)) - Fixed a bug where element indexes could stop showing their loading spinner prematurely if the element listing needed to be reloaded multiple times in rapid succession. ([#12595](https://github.com/craftcms/cms/issues/12595)) - Fixed a bug where element indexes would show show an expand/collapse toggle for structured elements that only had unsaved draft children, which aren’t actually shown. ([#11253](https://github.com/craftcms/cms/issues/11253)) - Added `craft\helpers\Db::escapeForLike()`. - Added `craft\web\twig\variables\Paginate::$pageTrigger`. ([#12614](https://github.com/craftcms/cms/pull/12614)) - `craft\services\Assets::getAllDescendantFolders()` now has a `$withParent` argument, which can be passed `false` to omit the parent folder from the results. ([#12536](https://github.com/craftcms/cms/issues/12536)) - Deprecated `craft\helpers\DateTimeHelper::timeZoneAbbreviation()`. - Deprecated `craft\helpers\DateTimeHelper::timeZoneOffset()`. ## 3.7.63.1 - 2023-01-09 - Fixed a bug where editing certain Matrix/Neo/Super Table fields could result in content loss. ([#12445](https://github.com/craftcms/cms/issues/12445)) ## 3.7.63 - 2023-01-04 - Template caching is no longer enabled for tokenized requests. ([#12458](https://github.com/craftcms/cms/issues/12458)) - Elisions are now stripped from search keywords. ([#12467](https://github.com/craftcms/cms/issues/12467), [#12474](https://github.com/craftcms/cms/pull/12474)) - Added support for HEIC/HEIF images. ([#9115](https://github.com/craftcms/cms/discussions/9115)) - The `allowedFileExtensions` config setting now includes `heic`, `heif`, and `hevc` by default. ([#12490](https://github.com/craftcms/cms/discussions/12490)) - It’s now possible to assign aliases `children` fields queried via GraphQL. ([#12494](https://github.com/craftcms/cms/pull/12494)) - Added `craft\helpers\Image::isWebSafe()`. - Added `craft\services\Images::getSupportsHeic()`. - `Craft.MatrixInput` now fires `blockSortDragStop`, `beforeMoveBlockUp`, `moveBlockUp`, `beforeMoveBlockDown`, and `moveBlockDown` events. ([#12498](https://github.com/craftcms/cms/pull/12498)) - Fixed an error that could occur when processing template caches in a console request, if a globally-scoped template cache was processed before it. - Fixed a bug where some custom field property types in `craft\behaviors\CustomFieldBehavior` were incorrect. - Fixed an error that could occur if a Matrix sub-field’s handle was too long. ([#12422](https://github.com/craftcms/cms/issues/12422)) - Updated Imagine to 1.3.3. ## 3.7.62 - 2022-12-13 - Fixed a bug where it wasn’t possible to enter `0` in Number fields and numeric column cells within editable tables, using certain keyboard layouts. ([#12412](https://github.com/craftcms/cms/issues/12412)) - Fixed a JavaScript error that could occur when autosaving an entry draft. ([#12445](https://github.com/craftcms/cms/issues/12445)) - Added `Craft.filterInputVal()`. - Added `Craft.filterNumberInputVal()`. ## 3.7.61 - 2022-11-17 - Fixed an error that occurred if an arrow function was passed to the `|sort` Twig filter. ([#12334](https://github.com/craftcms/cms/issues/12334)) - Fixed a bug where nested fields set to numbers could be inadvertently changed when an entry draft was created. - `craft\services\Fields::getFieldsWithContent()` and `getFieldsWithoutContent()` now have `$context` arguments. ## 3.7.60 - 2022-11-16 - Fixed an information disclosure vulnerability. - Fixed an XSS vulnerability. - Fixed a bug where `resave/*` commands weren’t catching exceptions thrown when applying the `--set` and `--to` options. ([#12262](https://github.com/craftcms/cms/issues/12262)) - Fixed a bug where the `|group` Twig filter was logging a deprecation warning when passed an element query. - Fixed a bug where `craft\elements\Entry::getIsEditable()` was returning `false` for enabled entries, if the logged-in user had the “Publish live changes” permission but not “Publish live changes for other authors’ entries”. ([#12315](https://github.com/craftcms/cms/issues/12315)) - Fixed a bug where element indexes were showing the labels of empty Dropdown options when selected. ([#12319](https://github.com/craftcms/cms/issues/12319)) - Fixed an error that occurred when saving an entry via GraphQL, if a parent entry was assigned that didn’t exist on the requested site. ([#12291](https://github.com/craftcms/cms/issues/12291)) - Fixed a bug where fields set to numbers could be inadvertently changed when an entry draft was created. - Added `craft\services\Fields::getFieldsWithoutContent()`. ## 3.7.59 - 2022-10-27 - Asset folder and file names are now converted to ASCII using the primary site’s language for character mappings, regardless of the current user’s preferred language, when the `convertFilenamesToAscii` config setting is enabled. ([#12207](https://github.com/craftcms/cms/discussions/12207)) - Fixed a JavaScript 404 error that occurred when users’ Language was set to Chinese. ([#12194](https://github.com/craftcms/cms/issues/12194)) - Fixed an error that could occur during garbage collection, if any nested volume folders were missing their path. ([#12195](https://github.com/craftcms/cms/issues/12195)) ## 3.7.58 - 2022-10-25 ### Fixed - Fixed a bug where Entry URI Format and Template inputs were editable within sections’ Site Settings tables, for disabled sites. ## 3.7.57 - 2022-10-18 ### Fixed - Fixed an error that could occur when running tests. ([#12088](https://github.com/craftcms/cms/issues/12088)) - Fixed a bug where the “Your session has ended” modal could be shown on the control panel’s login page. ([#12121](https://github.com/craftcms/cms/issues/12121)) - Fixed an error that could occur in the control panel. ([#12133](https://github.com/craftcms/cms/issues/12133)) - Fixed a bug where image transforms that used the `fit` mode but didn’t specify a width or height weren’t getting their missing dimension set on the asset. ([#12137](https://github.com/craftcms/cms/issues/12137)) ## 3.7.56 - 2022-10-11 ### Added - Added the `--as-json` option to the `help` command. ([#12017](https://github.com/craftcms/cms/pull/12017), [#12074](https://github.com/craftcms/cms/pull/12074)) - Added `craft\helpers\ElementHelper::isAttributeEmpty()`. - Added `craft\queue\jobs\ResaveElements::$ifEmpty`. - Added `craft\queue\jobs\ResaveElements::$set`. - Added `craft\queue\jobs\ResaveElements::$to`. - Added `craft\queue\jobs\ResaveElements::$touch`. ### Changed - When passing a PHP callback function to the `--to` option of a `resave/*` command, the `$element` argument is now optional. ### Deprecated - Deprecated `craft\web\assets\focusvisible\FocusVisibleAsset`. ([#12037](https://github.com/craftcms/cms/pull/12037)) ### Fixed - Fixed a bug where `resave/*` commands weren’t respecting the `--set`, `--to`, or `--touch` options when `--queue` was passed. ([#11974](https://github.com/craftcms/cms/issues/11974)) - Fixed an error that could occur when passing an element query to a `relatedTo` param, if the parent element query contained any closures. ([#11981](https://github.com/craftcms/cms/issues/11981)) - Fixed a bug where unsaved drafts could be unintentionally deleted when saved, if a plugin or module was blocking the save via `EVENT_BEFORE_SAVE`. ([#12015](https://github.com/craftcms/cms/issues/12015)) - Fixed a bug where “Propagating tags” jobs would fail if two tags had similar titles. - Fixed a bug where image transforms weren’t getting sized correctly in some cases when `upscaleImages` was disabled. ([#12023](https://github.com/craftcms/cms/issues/12023)) - Fixed a bug where table cells within Redactor fields could appear to be focused when they weren’t. ([#12001](https://github.com/craftcms/cms/issues/12001), [#12037](https://github.com/craftcms/cms/pull/12037)) - Fixed a bug where alerts saying a folder can’t be renamed due to a naming conflict were showing the old folder name instead of the new one. ([#12049](https://github.com/craftcms/cms/pull/12049)) - Fixed a bug where Edit Entry pages were listing other authors’ drafts in the revision menu, for users who didn’t have permission to edit them. - Fixed a bug where some GraphQL results could be missing if multiple sets of nested elements were being queried using the same alias. ([#11982](https://github.com/craftcms/cms/issues/11982)) ### Security - Fixed information disclosure vulnerabilities. ## 3.7.55.3 - 2022-10-03 ### Security - Updated Twig to 2.15. ([#12022](https://github.com/craftcms/cms/issues/12022)) ## 3.7.55.2 - 2022-09-22 ### Security - Fixed an XSS vulnerability. ## 3.7.55.1 - 2022-09-21 ### Fixed - Fixed a bug where the “New category” button could be missing from the Categories index page. ([#11977](https://github.com/craftcms/cms/issues/11977)) - Fixed a bug where `Craft::t()` and the `|t` Twig filter were modifying digit-dash-digit sequences. ([#11980](https://github.com/craftcms/cms/issues/11980)) - Fixed PHP errors that occurred if `webonyx/graphql-php` 14.11.17 was installed. ([#11979](https://github.com/craftcms/cms/issues/11979), [webonyx/graphql-php#1221](https://github.com/webonyx/graphql-php/issues/1221)) ## 3.7.55 - 2022-09-20 ### Added - Added `craft\helpers\Image::targetDimensions()`. ### Removed - Removed the Punycode PHP library. ([#11948](https://github.com/craftcms/cms/issues/11948)) ### Fixed - Fixed a bug where image transforms weren’t always getting applied properly to all animation frames. ([#11937](https://github.com/craftcms/cms/pull/11937)) - Fixed a bug where animated WebP images would lose their animation frames when transformed. ([#11937](https://github.com/craftcms/cms/pull/11937)) - Fixed a bug where image transform dimensions could be calculated incorrectly when `upscaleImages` was `false`. ([#11837](https://github.com/craftcms/cms/issues/11837)) - Fixed an error that occurred when setting a non-numeric `width` or `height` on an image transform. ([#11837](https://github.com/craftcms/cms/issues/11837)) - Fixed a bug where `relatedTo*` arguments weren’t supported by `children` fields in GraphQL. ([#11918](https://github.com/craftcms/cms/issues/11918)) - Fixed a bug where Image Editor and slideout action buttons were obstructed when the Debug Toolbar was enabled. ([#11965](https://github.com/craftcms/cms/issues/11965)) - Fixed an error that occurred when installing Craft when MySQL’s `sql_require_primary_key` setting was enabled. ([#11374](https://github.com/craftcms/cms/discussions/11374)) - Fixed a bug where invalid entries could be duplicated via the “Save as a new entry” action, despite the duplication appearing to have failed with validation errors. ([#11959](https://github.com/craftcms/cms/issues/11959)) - Fixed a PHP error that could occur in a potential race condition when calling `craft\helpers\FileHelper::clearDirectory()`. - Fixed a bug where Structure section entries that were duplicated via the “Save as a new entry” action on a provisional draft weren’t being placed within the structure properly. - Fixed a bug where element’s `searchScore` properties would be set to `null` when their original score was below 1, rather than rounding to 0 or 1. ([#11973](https://github.com/craftcms/cms/issues/11973)) ## 3.7.54 - 2022-09-13 ### Changed - Control panel menus now automatically reposition themselves when the window is resized. - `resave/*` commands now have a `--touch` option. When passed, elements’ `dateUpdated` timestamps will be updated as they’re resaved. ([#11849](https://github.com/craftcms/cms/discussions/11849)) - Underscores within query param values that begin/end with `*` are now escaped, so they aren’t treated as wildcard characters by the `like` condition. ([#11898](https://github.com/craftcms/cms/issues/11898)) - `craft\services\Elements::resaveElements()` now has a `$touch` argument. ### Fixed - Fixed a bug where element caches weren’t being invalidated during garbage collection, so hard-deleted elements could appear to still exist. - Fixed an error that could occur when rendering front-end templates if there was a problem connecting to the database. ([#11855](https://github.com/craftcms/cms/issues/11855)) - Fixed a bug where it was possible to save an asset with a focal point outside its cropped area. ([#11875](https://github.com/craftcms/cms/issues/11875)) - Fixed a bug where the Assets index page wasn’t handling failed uploads properly. ([#11866](https://github.com/craftcms/cms/issues/11866)) - Fixed a UI bug where renaming a newly-created volume subfolder didn’t appear to have any effect. - Fixed a bug where empty URL fields would be marked as changed, even when no change was made to them. ([#11908](https://github.com/craftcms/cms/issues/11908)) - Fixed a bug where transforming an animated GIF into a WebP file would only include the first frame. ([#11889](https://github.com/craftcms/cms/issues/11889)) ### Security - Password inputs no longer temporarily reveal the password when the Alt key is pressed. ([#11930](https://github.com/craftcms/cms/issues/11930)) ## 3.7.53.1 - 2022-08-26 ### Fixed - Fixed a PHP error that occurred when garbage collection was run on web requests. ([#11829](https://github.com/craftcms/cms/issues/11829)) ## 3.7.53 - 2022-08-26 ### Added - Added `craft\services\Gc::removeEmptyTempFolders()`. ### Changed - If a plugin’s license key is set to an empty environment variable, its trial license key will now be stored in `.env` rather than the project config. ([#11830](https://github.com/craftcms/cms/issues/11830)) - Empty subfolders within the temporary upload volume are now removed during garbage collection. ([#10746](https://github.com/craftcms/cms/issues/10746)) ### Fixed - Fixed a bug where the “Edit files uploaded by other users” volume permission was useless unless the “Upload files” permission had been granted. ([#11818](https://github.com/craftcms/cms/issues/11818)) - Fixed a bug where the “Save and add another” entry action was being shown for users without the “Create entries” section permission. ([#11819](https://github.com/craftcms/cms/issues/11819)) ## 3.7.52 - 2022-08-23 ### Changed - Improved console output for the `gc` command. - The `gc` command now runs garbage collection for data caches. - Exception JSON responses now include `name` and `code` keys. ([#11799](https://github.com/craftcms/cms/discussions/11799)) ### Fixed - Fixed a bug where `iframeResizer.contentWindow.js` was getting loaded for all preview requests, not just Live Preview, and even when `useIframeResizer` was disabled. ([#11778](https://github.com/craftcms/cms/issues/11778)) - Fixed a bug where deleted relations and Matrix blocks could persist if the edit form was submitted before they had been fully animated away. ([#11789](https://github.com/craftcms/cms/issues/11789)) - Fixed a PHP error that could occur if `craft\services\Assets::getUserTemporaryUploadFolder()` was called when there was no logged-in user account. ([#11751](https://github.com/craftcms/cms/issues/11751)) ## 3.7.51 - 2022-08-09 ### Added - Added the `project-config/export` command. ([#11733](https://github.com/craftcms/cms/pull/11733)) ### Deprecated - Deprecated `craft\services\Categories::pruneDeletedField()`. ([#11054](https://github.com/craftcms/cms/discussions/11054), [#9567](https://github.com/craftcms/cms/issues/9567)) - Deprecated `craft\services\Globals::pruneDeletedField()`. ([#11054](https://github.com/craftcms/cms/discussions/11054), [#9567](https://github.com/craftcms/cms/issues/9567)) - Deprecated `craft\services\Sections::pruneDeletedField()`. ([#11054](https://github.com/craftcms/cms/discussions/11054), [#9567](https://github.com/craftcms/cms/issues/9567)) - Deprecated `craft\services\Tags::pruneDeletedField()`. ([#11054](https://github.com/craftcms/cms/discussions/11054), [#9567](https://github.com/craftcms/cms/issues/9567)) - Deprecated `craft\services\Users::pruneDeletedField()`. ([#11054](https://github.com/craftcms/cms/discussions/11054), [#9567](https://github.com/craftcms/cms/issues/9567)) - Deprecated `craft\services\Volumes::pruneDeletedField()`. ([#11054](https://github.com/craftcms/cms/discussions/11054), [#9567](https://github.com/craftcms/cms/issues/9567)) ### Fixed - Fixed a bug where the `project-config/apply` command could appear to end prematurely. - Fixed a bug where not all project config changes would be applied if a field or site was deleted. ([#9567](https://github.com/craftcms/cms/issues/9567)) - Fixed an error that could occur when saving an element to a disabled site. ([#10499](https://github.com/craftcms/cms/issues/10499), [#11741](https://github.com/craftcms/cms/issues/11741)) - Fixed a bug where `$` characters in database connection passwords weren’t being escaped property when backing up/restoring the database. ([#11750](https://github.com/craftcms/cms/issues/11750)) - Fixed a bug where system messages provided by Yii weren’t getting translated in some cases. ([#11712](https://github.com/craftcms/cms/issues/11712)) ## 3.7.50 - 2022-07-26 ### Changed - Treating element queries as arrays is no longer deprecated. ([#11625](https://github.com/craftcms/cms/discussions/11625)) - Using the `|length` filter on an element query is no longer deprecated. ([#11625](https://github.com/craftcms/cms/discussions/11625)) ### Security - Fixed an XSS vulnerability. ## 3.7.49 - 2022-07-26 ### Added - The control panel is now translated into Ukrainian. - Added `craft\helpers\Template::resolveTemplatePathAndLine()`. ### Changed - Deprecation warnings’ stack traces now show source templates’ paths and line numbers. - Matrix block previews now show selected option labels rather than their raw values. ([#11659](https://github.com/craftcms/cms/issues/11659)) - Exception JSON responses now include the previous exception details, recursively. ([#11694](https://github.com/craftcms/cms/discussions/11694)) ### Fixed - Fixed a bug where deprecation warnings for treating an element query as an array weren’t getting logged with an origin, if they involved Twig’s `|batch` filter. ([#11597](https://github.com/craftcms/cms/issues/11597)) - Fixed a bug where `{% js %}`, `{% script %}`, and `{% css %}` tags weren’t registering JavaScript and CSS code properly when used within a `{% cache %}` tag that contained an ungenerated image transform. ([#11602](https://github.com/craftcms/cms/issues/11602)) - Fixed a bug where the “User saved” notification was translated for the former language, when changing the current user’s language preference. - Fixed a JavaScript error that occurred when removing a category from a Categories field, if any of its descendants were selected as well. ([#11641](https://github.com/craftcms/cms/issues/11641)) - Fixed a bug where links to config settings from **Settings** → **General** didn’t include the correct setting anchors. ([#11665](https://github.com/craftcms/cms/pull/11665)) - Fixed styling issues with Live Preview in Firefox. ### Security - Fixed an information disclosure vulnerability. ## 3.7.48 - 2022-07-12 ### Changed - Relation fields now focus on the next related element’s “Remove” button when an element is removed. ([#11577](https://github.com/craftcms/cms/issues/11577)) ### Fixed - Fixed a bug where Craft’s Composer commands could produce a malformed `composer.json` file. ([#11564](https://github.com/craftcms/cms/issues/11564)) - Fixed a bug where date range inputs weren’t working on mobile. ([#11571](https://github.com/craftcms/cms/issues/11571)) - Fixed a bug where the “Craft Support” Dashboard widget wasn’t being labeled properly in the widget settings HUD and delete confirmation dialog. ([#11573](https://github.com/craftcms/cms/discussions/11573)) - Fixed a bug where treating element queries as arrays wasn’t always logging deprecation warnings. - Fixed a bug where the project config cache was getting invalidated on each public GraphQL API request. - Fixed a bug where the “Status” label on Edit User pages was blank for suspended users. - Fixed an error that could occur when an image transform was configured with a non-integer width or height. ([#11587](https://github.com/craftcms/cms/issues/11587)) ## 3.7.47.1 - 2022-07-06 ### Fixed - Fixed a bug where asset bundles weren’t getting registered on the front end. ([#11555](https://github.com/craftcms/cms/issues/11555)) ## 3.7.47 - 2022-07-05 ### Changed - Template caching is now supported for console requests, for `{% cache %}` tags that have the `globally` param. ([#11551](https://github.com/craftcms/cms/issues/11551)) - Updated Composer to 2.2.15. ([#11538](https://github.com/craftcms/cms/issues/11538)) ### Fixed - Fixed focus styling issues with the Edit Route modal. ## 3.7.46 - 2022-06-28 ### Added - Added `craft\fields\BaseOptionsField::encodeValue()`. ### Changed - `canonical` is now a reserved field handle. ([#11503](https://github.com/craftcms/cms/issues/11503)) - `craft\fields\BaseOptionsField::translatedOptions()` now has an `$encode` argument. ### Fixed - Fixed a bug where `Garnish.setFocusWithin()` wasn’t working if the first focusable element was a checkbox. ([#11498](https://github.com/craftcms/cms/discussions/11498)) - Fixed a bug where Matrix blocks could be saved in the wrong order. - Fixed a bug where Checkboxes, Dropdown, Multi-select, and Radio Buttons fields could lose their values if their option values were set to integers. ([#11461](https://github.com/craftcms/cms/issues/11461)) ## 3.7.45.2 - 2022-06-24 ### Fixed - Fixed a SQL error that could occur on MySQL 5. ([#11493](https://github.com/craftcms/cms/issues/11493)) - Fixed a bug where Craft’s Composer commands weren’t ensuring that `config.allow-plugins.yiisoft/yii2-composer` was `true` in `composer.json`. ([#11399](https://github.com/craftcms/cms/issues/11399)) ## 3.7.45.1 - 2022-06-21 ### Fixed - Fixed a bug where it wasn’t possible to rename assets. - Fixed a bug where a provisional draft could be created for an entry if its form was interacted with before the page had fully initialized. ([#11466](https://github.com/craftcms/cms/issues/11466)) - Fixed exact phrase searching on PostgreSQL. ([#11486](https://github.com/craftcms/cms/issues/11486)) ## 3.7.45 - 2022-06-21 ### Changed - Improved performance when working with temp asset folders. - Temp asset folders are no longer created until they’re actually needed. ([#11427](https://github.com/craftcms/cms/issues/11427)) - Element index queries are no longer cached if they contain a search term. - Search inputs within field layout designers now prevent the containing form from being submitted when the Return key is pressed. ([#11415](https://github.com/craftcms/cms/discussions/11415)) ### Fixed - Fixed a bug where element types’ `actions()` methods were getting called for all `element-indexes/*` action requests. - Fixed a bug where the `install` command would run non-interactively even if not all needed options were passed, resulting in an error after the database tables had been added. ([#11305](https://github.com/craftcms/cms/issues/11305)) - Fixed a viewport clipping bug on the control panel’s Login page. ([#11372](https://github.com/craftcms/cms/pull/11372)) - Fixed a bug where filtering an element query by a relational field using `:empty:`/`:notempty:` wasn’t factoring in the field’s “Which site should entries be related from?” setting properly. - Fixed a bug where filtering an element query by a relational field using `:empty:`/`:notempty:` wasn’t factoring in the source elements’ site IDs, for fields set to manage relations on a per-site basis. ([#11418](https://github.com/craftcms/cms/issues/11418)) - Fixed a bug where the Temporary Uploads asset source wasn’t including subfolders. - Fixed a bug where file upload progress bars weren’t always going away when an upload error occurred. - Fixed a bug where Pashto was not being treated as an RTL langauge. ([#11428](https://github.com/craftcms/cms/issues/11428)) - Fixed a bug where the `upscaleImages` config setting wasn’t being respected for transforms where only a single image dimension was specified. ([#11398](https://github.com/craftcms/cms/issues/11398)) - Fixed an error that could occur when executing a GraphQL query, if a section didn’t have any entry types. ([#11273](https://github.com/craftcms/cms/issues/11273)) - Fixed an error that could occur when changing the primary site on installs with a large number of users. ([#11459](https://github.com/craftcms/cms/issues/11459)) - Fixed a bug where Assets fields within Vizy fields weren’t getting relocated from the user’s temp uploads folder. ([#11462](https://github.com/craftcms/cms/issues/11462)) ### Security - Environment-aware control panel fields no longer suggest environment variables that begin with `HTTP_`. - The Sendmail mailer no longer validates if the Sendmail Command setting is set to an enivornment variable that begins with `HTTP_`. ## 3.7.44 - 2022-06-03 ### Changed - Read/write splitting is now disabled for all console requests. - The `db/restore` command now prompts to clear data caches after the import is complete. ([#11327](https://github.com/craftcms/cms/issues/11327)) - Entry queries no longer factor in seconds when looking for currently-live entries, without excluding entries that were published in the past minute. ([#5389](https://github.com/craftcms/cms/issues/5389)) ### Fixed - Fixed an error that could occur on PHP 8.1. ([#11345](https://github.com/craftcms/cms/pull/11345)) - Fixed a bug where project config paths that contained slashes weren’t getting handled properly. ([#10774](https://github.com/craftcms/cms/issues/10774)) - Fixed a bug where the Login page had a tab-focusable “Skip to content” button. ([#11375](https://github.com/craftcms/cms/issues/11375)) ## 3.7.43 - 2022-05-20 ### Changed - Reversed the order of Lightswitch fields’ “ON Label” and “OFF Label” settings. ([#11259](https://github.com/craftcms/cms/issues/11259)) - `craft\services\Elements::duplicateElement()` now has a `$trackDuplication` argument. - `craft\services\Matrix::duplicateBlocks()` now has a `$trackDuplications` argument. ### Fixed - Fixed a bug where editable tables’ delete buttons’ `aria-label` attributes weren’t getting updated when table rows were reordered or deleted. - Fixed a bug where editable tables’ delete buttons weren’t visually disabled when the minimum number of rows had been reached. - Fixed a bug where all eager-loaded `srcset`-style transform sizes were relative to the first eager-loaded transform, rather than the prior one. ([#11209](https://github.com/craftcms/cms/issues/11209)) - Fixed a bug where eager-loaded `srcset`-style transform sizes didn’t reference the prior eager-loaded transform’s `format`, `interlace`, `mode`, `position`, or `quality` settings. ([#11264](https://github.com/craftcms/cms/issues/11264)) - Fixed a bug where the web-based installation wizard wouldn’t show the database connection screen if a connection could be established but no database was selected. ([#11245](https://github.com/craftcms/cms/issues/11245)) - Fixed an error that could occur when applying a multi-site draft with relational fields. ([#11220](https://github.com/craftcms/cms/issues/11220)) - Fixed a bug where Matrix blocks could be deleted from newly-created multi-site entries, if the edit page was reloaded. ([#10906](https://github.com/craftcms/cms/issues/10906)) ## 3.7.42 - 2022-05-11 ### Added - Added `craft\events\LocateUploadedFilesEvent`. - Added `craft\fields\Assets::EVENT_LOCATE_UPLOADED_FILES`. ([#11123](https://github.com/craftcms/cms/discussions/11123)) ### Changed - Improved save performance for multi-site elements ([#11113](https://github.com/craftcms/cms/issues/11113)) - Built-in Composer actions now ensure that `composer.json` allows the `craftcms/plugin-installer` Composer plugin. ### Fixed - Fixed a bug where soft-deleted drafts’ search keywords weren’t getting re-indexed if they were restored. - Fixed an error that occurred when transforming an SVG image without specifying a width or height. ([#11122](https://github.com/craftcms/cms/issues/11122)) - Fixed an error that occurred when saving a Number field with a non-numeric value. ([#11164](https://github.com/craftcms/cms/issues/11164)) - Fixed a bug where it wasn’t possible to drag an item to the top in admin tables. ([#10781](https://github.com/craftcms/cms/issues/10781)) - Fixed a bug where entries within Structure sections weren’t expandable if their only descendants were unpublished drafts. - Fixed a bug where expanding a collapsed Structure section entry wouldn’t reveal its descendants, if the parent was a draft. ([#11186](https://github.com/craftcms/cms/issues/11186)) - Fixed a bug where element caches weren’t getting cleared for elements when they were propagated to a newly-created site. ## 3.7.41 - 2022-05-06 ### Changed - The Upgrade utility now lists any uninstalled and unknown plugins. ([#11101](https://github.com/craftcms/cms/discussions/11101)) ### Fixed - Fixed an error that occurred when attempting to delete a global set. ([#11100](https://github.com/craftcms/cms/issues/11100)) - Fixed an error that could occur when applying a draft. ([#11083](https://github.com/craftcms/cms/issues/11083)) - Fixed a bug where element queries weren’t returning any results if an element attribute table wasn’t joined in, and the element query was set to an abstract element class. ([#11105](https://github.com/craftcms/cms/issues/11105)) ## 3.7.40.1 - 2022-05-04 ### Fixed - Fixed a bug where empty fields could be marked as changed, even when no change was made to them. ([#11078](https://github.com/craftcms/cms/issues/11078)) ## 3.7.40 - 2022-05-03 > **Warning** > If you are currently running Craft 3.7.39, you will need to [perform this update with Composer](https://craftcms.com/knowledge-base/updating-from-craft-3-7-39). ### Added - Added the “Craft 4 Upgrade” utility. - Added `craft\helpers\Db::extractGlue()`. - Added `craft\helpers\Db::normalizeParam()`. - Added `craft\utilities\Upgrade`. - Added `craft\web\assets\upgrade\UpgradeAsset`. ### Changed - Improved database performance for concurrent requests. ([#10662](https://github.com/craftcms/cms/issues/10662)) - The Crop tool in the image editor no longer displays the (incorrect) crop dimensions. ([#11046](https://github.com/craftcms/cms/issues/11046)) - Asset queries’ `volume` params now support passing an array of `craft\base\VolumeInterface` objects. - Category queries’ `group` params now support passing an array of `craft\models\CategoryGroup` objects. - Entry queries’ `section` params now support passing an array of `craft\models\Section` objects. - Entry queries’ `type` params now support passing an array of `craft\models\EntryType` objects. ([#11057](https://github.com/craftcms/cms/issues/11057)) - Matrix block queries’ `field` params now support passing an array of `craft\fields\Matrix` objects. - Tag queries’ `group` params now support passing an array of `craft\models\TagGroup` objects. - Options passed to the `_includes/forms/select` control panel template can now specify a `hidden` key. ([#11053](https://github.com/craftcms/cms/pull/11053)) - `craft\services\Fields::getLayoutsByType()` now memoizes its results. ([#11037](https://github.com/craftcms/cms/pull/11037)) - Downgraded Composer to 2.2.12, fixing an error that occurred when updating Craft or installing/updating/uninstalling plugins. ### Removed - Removed the `--propagate` option from `resave/*` commands, which didn’t have any effect. ([#11032](https://github.com/craftcms/cms/discussions/11032)) ### Fixed - Fixed a bug where “Name” and “Handle” were not getting translated properly in field, volume, and global set validation errors. ([#11029](https://github.com/craftcms/cms/issues/11029)) - Fixed a bug where passing an array of `craft\models\UserGroup` objects to a user query’s `group` param had no effect. - Fixed a bug where passing an array that began with `not` into a user query’s `group` param wouldn’t return users that had no user groups. - Fixed a bug where it wasn’t possible to order elements by `rand()`/`random()` via GraphQL. ([#11063](https://github.com/craftcms/cms/issues/11063)) - Fixed a bug where empty Date and Number fields would be marked as changed, even when no change was made to them. ([#10804](https://github.com/craftcms/cms/issues/10804)) ## 3.7.39 - 2022-04-26 ### Added - The Caches utility now has a “Compiled classes” option. ([#10281](https://github.com/craftcms/cms/pull/10281)) - Added the `folderPath` asset query param. - Added `craft\services\Assets::getTempVolumeAndSubpath()`. - Added `craft\services\Assets::createTempAssetQuery()`. - Added `craft\services\Fields::updateColumn()`. - Added `craft\services\Sections::getEntryTypeByUid()`. ### Changed - Fields’ search indexes are now immediately removed when their “Use this field’s values as search keywords” settings are disabled. - User groups’ permission lists are now sorted alphabetically when saved to the project config. ([#10408](https://github.com/craftcms/cms/issues/10408)) - Improved dropdown menu styling for Firefox. - Improved GraphQL performance. - `{% nav %}` tags now skips elements whose immediate parent weren’t included in the output. ([#10925](https://github.com/craftcms/cms/issues/10925)) - Asset, entry, and category selection modals now clear the search results when a new element is created. ([#11015](https://github.com/craftcms/cms/issues/11015)) - Asset and entry selection modals now sort the elements by Date Created (descending) when a new element is created, to ensure it is immediately visible and selected. ### Fixed - Fixed a bug where Matrix blocks could lose their Date field values, if multiple Date fields had with the same handle across different block types. ([#10884](https://github.com/craftcms/cms/issues/10884)) - Fixed a bug where Matrix block menus were getting truncated if they were too large to fit within the content pane. ([#10883](https://github.com/craftcms/cms/issues/10883)) - Fixed a bug where Assets fields weren’t respecting their dynamic folder path settings for unpublished drafts, if the Temp Upload Location asset setting was set to a volume. ([#9619](https://github.com/craftcms/cms/issues/9619)) - Fixed an error that could occur when saving an Assets field for a draft. - Fixed a bug where element queries weren’t being limited to return elements of the configured type, if no element type-specific tables were joined in. - Fixed a bug where element thumbnails weren’t loading for all but the initial content tab. ([#10918](https://github.com/craftcms/cms/issues/10918)) - Fixed a bug where Matrix fields’ Min Blocks settings weren’t getting enforced for empty Matrix fields. - Fixed an error that could occur when saving Matrix fields with either Min Blocks or Max Blocks configured, but not both, if the Intl extension wasn’t installed. ([#10922](https://github.com/craftcms/cms/issues/10922)) - Fixed a bug where the system name container was taking up the full viewport height in Safari 13. ([#10930](https://github.com/craftcms/cms/issues/10930)) - Fixed a bug where Matrix sub-fields were losing their column suffixes after they were resaved. ([#10973](https://github.com/craftcms/cms/issues/10973)) - Fixed a bug where saving a Matrix field without any block types would result in no changes made to the previously-configured block types, rather than displaying a validation error. ([#10989](https://github.com/craftcms/cms/issues/10989)) ### Security - The `redirect` controller action now requires the passed-in `url` param to be hashed. ([#10994](https://github.com/craftcms/cms/issues/10994)) ## 3.7.38 - 2022-04-06 ### Added - Added `craft\helpers\ArrayHelper::onlyContains()`. - Added `craft\test\Craft::assertNotPushedToQueue()`. ([#10510](https://github.com/craftcms/cms/pull/10510)) ### Changed - Duplicated elements no longer have “copy” appended to the end of their titles. ([#10707](https://github.com/craftcms/cms/pull/10707)) - User queries’ `group` and `groupId` params now support passing an array that begins with `and`, to only return users that are in all of the subsequent user groups. - `Craft.BaseElementSelectorModal` now has `bodyAction` and `indexSettings` settings. ([#4348](https://github.com/craftcms/cms/pull/4348)) ### Fixed - Fixed a bug where color pickers weren’t clickbale within Table fields. ([#10775](https://github.com/craftcms/cms/issues/10775)) - Fixed a bug where multi-site elements weren’t getting all of their titles duplicated correctly. ([#10702](https://github.com/craftcms/cms/issues/10702)) - Fixed deprecation errors that occurred when validating relational and Matrix fields. ([#10815](https://github.com/craftcms/cms/issues/10815)) - Fixed an error that occurred if field instructions contained any unclosed HTML tags. ([#10290](https://github.com/craftcms/cms/issues/10290)) - Fixed a bug where the selected volume subfolder would get included in folder drag-and-drop operations. ([#10745](https://github.com/craftcms/cms/issues/10745)) - Fixed a bug where slideouts weren’t closing when clicked out of, after being opened for the second time. ([#10586](https://github.com/craftcms/cms/issues/10586)) - Fixed a bug where `Craft.appendHeadHtml()` wasn’t pruning out `` tags that were already present in the DOM. - Fixed a bug where image transforms weren’t always getting generated for disabled sites. ([#10498](https://github.com/craftcms/cms/issues/10498)) - Fixed a bug where it wasn’t possible to scroll the content pane horizontally if any fields took up more than 100% of its width. ([#10849](https://github.com/craftcms/cms/issues/10849)) ## 3.7.37 - 2022-03-16 ### Changed - Improved the styling of copy buttons in the control panel. ([#10732](https://github.com/craftcms/cms/discussions/10732)) - In-app Plugin Store purchases are now completed on `id.craftcms.com` rather than within the control panel. ### Fixed - Fixed a bug where two users could be created with the same username and email, if the **Save** button was double-clicked. ([#9835](https://github.com/craftcms/cms/issues/9835), [#10661](https://github.com/craftcms/cms/issues/10661)) - Fixed an error that could occur when updating from an earlier version than Craft 3.5.6. ([#10685](https://github.com/craftcms/cms/issues/10685)) - Fixed an error that could occur when rendering an exception view for another error. ([#10712](https://github.com/craftcms/cms/issues/10712)) - Fixed a bug where pressing Spacebar on copy buttons in admin tables didn’t activate them. - Fixed a style issue for Safari. ([#10748](https://github.com/craftcms/cms/pull/10748)) ## 3.7.36 - 2022-03-03 ### Changed - `{% js %}` and `{% css %}` tags can now import URLs that don’t end in `.js` or `.css`, so long as they begin with `https://` or `http://`. ([#10666](https://github.com/craftcms/cms/discussions/10666)) - The `plugin/list` command now shows plugins’ package names. ([#10667](https://github.com/craftcms/cms/discussions/10667)) ### Fixed - Fixed a bug that prevented moving assets between volumes. ([#10668](https://github.com/craftcms/cms/issues/10668)) ## 3.7.35 - 2022-03-01 ### Added - Added `craft\errors\BusyResourceException`. - Added `craft\errors\StaleResourceException`. ### Changed - Improved Live Preview accessibility. ([#7476](https://github.com/craftcms/cms/issues/7476)) - Improved error reporting when trying to upload an Asset from a disallowed location. ([#10633](https://github.com/craftcms/cms/issues/10633)) - The `resave/entries` command now supports a `--revisions` flag. ([#10634](https://github.com/craftcms/cms/issues/10634)) ### Fixed - Fixed an error that occurred when initializing an element with custom field values that weren’t included in its field layout. ([#10622](https://github.com/craftcms/cms/issues/10622)) - Fixed a PHP 8 compatibility bug. - Fixed a bug where drafts weren’t getting propagated when a section was enabled for new sites. ([#10634](https://github.com/craftcms/cms/issues/10634)) - Fixed a bug where moving files and folders from the Assets index page wouldn’t ever resolve properly if there was an unexpected server error. - Fixed a bug where disclosure menus could be shorter than their contents. ([#10639](https://github.com/craftcms/cms/issues/10639)) - Fixed potential race conditions that could result in old project config data getting cached. ([#7795](https://github.com/craftcms/cms/issues/7795)) - Fixed a bug where numerically-indexed array keys weren’t always consecutive after the project config was rebuilt. ([#10512](https://github.com/craftcms/cms/issues/10512)) ## 3.7.34 - 2022-02-22 ### Added - Added `craft\helpers\App::phpConfigValueAsPaths()`. - Added `craft\helpers\App::normalizePhpPaths()`. - Added `craft\helpers\App::isPathAllowed()`. ### Changed - Improved date and time input accessibility. ([#10575](https://github.com/craftcms/cms/pull/10575)) - Craft no longer attempts to write a license key file when `CRAFT_EPHEMERAL` is set to `true`. ([#10558](https://github.com/craftcms/cms/pull/10558)) - Craft no longer attempts to write project config YAML files when `CRAFT_EPHEMERAL` is set to `true`. ([#10558](https://github.com/craftcms/cms/pull/10558)) - Craft no longer publishes asset bundles when `CRAFT_EPHEMERAL` is set to `true`. ([#10558](https://github.com/craftcms/cms/pull/10558)) ### Fixed - Fixed a bug where Date fields weren’t displaying properly. - Fixed a bug where some GraphQL API query arguments would break element queries. ([#10580](https://github.com/craftcms/cms/issues/10580)) - Fixed a PHP 8.1 compatibility bug. ([#10594](https://github.com/craftcms/cms/issues/10594)) - Fixed a bug where Matrix action menus were causing horizontal scrollbars within Live Preview. ([#10601](https://github.com/craftcms/cms/issues/10601)) - Fixed a PHP warning that would occur when running Craft in Dev Mode, if the `open_basedir` PHP setting was set. ([#10581](https://github.com/craftcms/cms/issues/10581)) - Fixed a bug where the “View” button on Edit Category pages wasn’t getting linked to a tokenized preview page for disabled sites. - Fixed a bug where asset subfolder toggles weren’t visible when their source was focused. ([#10617](https://github.com/craftcms/cms/issues/10617)) - Fixed a bug where Live Preview would close when the Esc key was pressed, when a modal window was open. ([#10623](https://github.com/craftcms/cms/issues/10623)) ### Security - Craft now HTML-encodes user’ names in the default system email messages. ## 3.7.33 - 2022-02-15 [CRITICAL] > **Note** > The way CSRF tokens are generated has changed in this release, so all users will be logged out during the update. ### Added - Added support for PHP 8.1. - Added the `users/logout-all` console command. - Added `Garnish.prefersReducedMotion()`. ### Changed - Lightswitch inputs are no longer animated for browsers that have requested reduced motion. ([#10532](https://github.com/craftcms/cms/pull/10532)) - Reverted the 3.7.32 change to plugin settings. ([#10533](https://github.com/craftcms/cms/issues/10533)) - Improved accessibility for the Craft Support widget. ([#7290](https://github.com/craftcms/cms/issues/7290)) - The `graphql/api` controller action now supports passing the GraphQL bearer token via an `X-Craft-Authorization` header, in addition to `Authorization`. ([#10539](https://github.com/craftcms/cms/discussions/10539)) - `craft\helpers\App::parseBooleanEnv()` now treats `0` and `1` as boolean values. ([#10524](https://github.com/craftcms/cms/issues/10524)) - Updated GraphiQL to 1.5.16. - Updated Yii to 2.0.45. - Updated svg-sanitizer to 0.15. ## Fixed - Fixed a bug where admin tables would display the wrong handle values after an item was deleted. ([#10538](https://github.com/craftcms/cms/issues/10538)) - Fixed a bug where entries and Matrix blocks weren’t necessarily getting propagated from the primary site, when they were activated for a new site via a setting change. ([#10561](https://github.com/craftcms/cms/issues/10561)) - Fixed an error that occurred when testing queue jobs. ([#10569](https://github.com/craftcms/cms/pull/10569)) ### Security - Fixed a potential CSRF security issue. ## 3.7.32 - 2022-02-09 ### Added - Added `craft\base\FieldInterface::getInputId()`. - Added `craft\db\Migration::createIndexIfMissing()`. - Added `craft\db\Migration::dropIndexIfExists()`. - Added `craft\services\Users::canSuspend()`. - Added `craft\validators\SiteIdValidator::$allowDisabled`. ### Changed - Improved element query performance. ([#10418](https://github.com/craftcms/cms/discussions/10418)) - Improved asset transform eager-loading performance. ([#10427](https://github.com/craftcms/cms/discussions/10427)) - The “Suspend” and “Unsuspend” user actions are now smarter about when they should be available, based on the selected users. - Plugin settings forms now display the values stored in the project config, even if they’ve been overridden by the plugin’s config file. - Improved the styling of field tips and warnings. - The Edit Field page will now instantiate a new field instance of the expected field type, if it had been previously saved while the field type was missing. ([#10437](https://github.com/craftcms/cms/issues/10437)) ### Fixed - Fixed a bug where Date and Time fields’ labels weren’t referencing the correct input IDs. - Fixed a bug where the last control panel breadcrumb could be collapsed under a “More…” menu when there was enough room to display it. ([#10495](https://github.com/craftcms/cms/issues/10495)) - Fixed a bug where it was possible for non-admins to suspend/unsuspend admins from the Users index page. ([#10422](https://github.com/craftcms/cms/issues/10422)) - Fixed a bug where the `project-config/apply` command output could get mangled. ([#9900](https://github.com/craftcms/cms/issues/9900)) - Fixed an error that could occur when saving an entry programmatically on a front-end request, if any sites were disabled. ([#10499](https://github.com/craftcms/cms/issues/10499)) - Fixed a bug where Date and Time inputs weren’t clearable on mobile. ([#10500](https://github.com/craftcms/cms/issues/10500)) - Fixed a bug where Date and Time fields created by JavaScript weren’t getting native `date` and `time` inputs on mobile. - Fixed a JavaScript error on the Edit User page. ([#10509](https://github.com/craftcms/cms/issues/10509)) - Fixed a bug where it was possible to save a custom field whose type was missing. ([#10437](https://github.com/craftcms/cms/issues/10437)) ### Security - Fixed a GraphQL API vulnerability. ## 3.7.31 - 2022-02-08 ### Added - Added the `clear-deprecations` command. ([#10430](https://github.com/craftcms/cms/discussions/10430)) - Added the `plugin/list` command. ([#10470](https://github.com/craftcms/cms/pull/10470)) - Added the `users/activation-url` and `users/password-reset-url` commands. ([#10482](https://github.com/craftcms/cms/pull/10482)) - Added the `revisionId` field to drafts when queried via GraphQL. ([#10462](https://github.com/craftcms/cms/pull/10462)) - Added `craft\web\View::registerJsWithVars()`. ### Changed - Improved focus styles in the control panel. ([#10398](https://github.com/craftcms/cms/pull/10398)) - Improved Matrix field accessibility for screen readers. ([#10480](https://github.com/craftcms/cms/pull/10480)) - Improved Table field accessibility for screen readers. ([#10502](https://github.com/craftcms/cms/pull/10502)) - Handles within admin tables are now displayed as copy-buttons. ([#10475](https://github.com/craftcms/cms/discussions/10475)) - Craft no longer sends a `Permissions-Policy: interest-cohort=()` header by default, as Google has [abandoned](https://blog.google/products/chrome/get-know-new-topics-api-privacy-sandbox/) its FLoC proposal. - Craft no longer attempts to create the `cpresources` folder when `CRAFT_EPHEMERAL` is set to `true`. ([#10412](https://github.com/craftcms/cms/issues/10412)) - Video assets’ focal points are no longer suppressed, if they were set by a plugin or module. ([#10415](https://github.com/craftcms/cms/discussions/10415)) - Plugins are now consistently loaded in the same order across all environments. ([#10441](https://github.com/craftcms/cms/issues/10441)) - Element exporters’ `export()` methods can now return an array or generator function, even if `isFormattable()` returns `true`. ([#10484](https://github.com/craftcms/cms/pull/10484)) - `Craft.BaseElementSelectorModal` now supports a `fullscreen` setting. ### Fixed - Fixed a bug where Craft would not display an appropriate error message if a Local volume was pointing to a broken symlink. ([#10396](https://github.com/craftcms/cms/issues/10396) - Fixed an error that could occur when calling an element’s `getUrl()` method for a disabled site. ([#10421](https://github.com/craftcms/cms/issues/10421)) - Fixed a JavaScript error that occurred after saving an unpublished draft. - Fixed a bug where Live Preview wasn’t always showing changes for entries that weren’t live. ([#10455](https://github.com/craftcms/cms/issues/10455)) - Fixed a bug where it wasn’t possible to restore a soft-deleted global set with project config. ([#10458](https://github.com/craftcms/cms/issues/10458)) - Fixed right-to-left layout styling bugs. ([#10459](https://github.com/craftcms/cms/issues/10459), [#10439](https://github.com/craftcms/cms/issues/10439)) - Fixed a bug where entry revision menus would show newly-added sites as enabled even if they were disabled by default. - Fixed a bug where `craft\base\Element::getCanonical()` wasn’t memoizing its result based on the `$anySite` argument. - Fixed a JavaScript error. ([#10428](https://github.com/craftcms/cms/issues/10428)) - Fixed a bug where Dashboard widget flip animations weren’t always working in Firefox. - Fixed an error that could occur if an element’s `getSupportedSites()` method returned info for a site that didn’t exist or was soft-deleted. - Fixed GraphiQL layout issues for users with a RTL language set. ([#10465](https://github.com/craftcms/cms/pull/10465)) ## 3.7.30.1 - 2022-01-21 ### Fixed - Fixed a bug where the “New category” button on the Categories index page wasn’t working. ([#10399](https://github.com/craftcms/cms/issues/10399)) - Fixed an error that occurred when saving an Assets field with a file that was in a temporary location within the `storage/` folder, if the `storage/` folder didn’t live within the project root. ([#10401](https://github.com/craftcms/cms/issues/10401)) ## 3.7.30 - 2022-01-20 > **Warning** > The `mutex` component now uses a file-based driver by default. Load-balanced environments should [switch to a different driver](https://craftcms.com/knowledge-base/configuring-load-balanced-environments#mutex-locks). ### Added - Added `craft\mutex\Mutex`. - Added `craft\mutex\MutexTrait`. - Added `craft\mutex\NullMutex`. ### Changed - When a draft is published, Craft now automatically reloads other browser tabs that are opened to the same Edit Entry page. ([#10381](https://github.com/craftcms/cms/issues/10381)) - Improved modal and slideout accessibility for screen readers. ([#10384](https://github.com/craftcms/cms/pull/10384), [#10234](https://github.com/craftcms/cms/pull/10234)) - The `mutex` component is now set to `craft\mutex\Mutex` by default, and should no longer be overridden directly. Its nested `mutex` property should be [overridden instead](https://craftcms.com/knowledge-base/configuring-load-balanced-environments#mutex-locks). - `craft\helpers\App::mutexConfig()` is no longer deprecated. ### Deprecated - Deprecated `craft\helpers\App::dbMutexConfig()`, as database-based mutex locking is no longer recommended. - Deprecated `craft\mutex\DbMutexTrait`. - Deprecated `craft\mutex\MysqlMutex`. - Deprecated `craft\mutex\PgsqlMutex`. ### Fixed - Fixed a bug where Craft could generate `CustomFieldBehavior` classes that were missing the available fields. ([#6013](https://github.com/craftcms/cms/issues/6013)) - Fixed a bug where Live Preview iframes weren’t full-height when `useIframeResizer` was disabled. ([#10380](https://github.com/craftcms/cms/issues/10380)) - Fixed an error that could occur if an Assets field was saved while set to a file stored in `storage/runtime/assets/tempuploads/`. ([#10382](https://github.com/craftcms/cms/issues/10382)) - Fixed a bug where it wasn’t possible to apply a numeric namespace to input names. ([#6656](https://github.com/craftcms/cms/pull/6656)) ## 3.7.29 - 2022-01-18 ### Added - `resave/*` commands now support bulk-setting an attribute/custom field value via new `--set`, `--to`, and `--if-empty` options. ([#10356](https://github.com/craftcms/cms/pull/10356)) - Added `craft\fieldlayoutelements\BaseField::statusId()`. - Added `craft\helpers\App::parseEnv()` and `parseBooleanEnv()`, replacing their `Craft` class counterparts. ([#10319](https://github.com/craftcms/cms/discussions/10319)) ### Changed - The Users index page now updates the URL based on the selected source. ([#10336](https://github.com/craftcms/cms/issues/10336)) - Live Preview no longer reloads the iframe when the device type is changed. ([#10353](https://github.com/craftcms/cms/discussions/10353)) - `admins`, `all`, and `new` are now reserved user group handles. - The content in the `resourcepaths` table is now excluded from database backups by default. - User caches are now invalidated after login attempts. ([#10313](https://github.com/craftcms/cms/discussions/10313)) - Assets fields’ “Upload files” buttons now have `aria-describedby` attributes when appropriate. - Color fields’ hex inputs now have `aria-label` attributes. - Field status messages are now included in their `aria-describedby` attributes. - User queries will no longer exclude suspended users when `status('pending')` is passed. ([#10361](https://github.com/craftcms/cms/issues/10361)) - Template autosuggest fields now include suggestions for templates in custom site template roots. ([#10372](https://github.com/craftcms/cms/discussions/10372)) ### Deprecated - Deprecated `Craft::parseEnv()`. `craft\helpers\App::parseEnv()` should be used instead. - Deprecated `Craft::parseBooleanEnv()`. `craft\helpers\App::parseBooleanEnv()` should be used instead. ### Fixed - Fixed a bug where admin tables were displaying titles incorrectly. - Fixed a bug where `aria-describedby` attributes were getting namespaced incorrectly when they referenced multiple IDs. - Fixed a bug where “View” links on Edit Entry pages weren’t getting updated when the entry’s preview target URLs changed. ([#10257](https://github.com/craftcms/cms/issues/10257)) - Fixed a bug where `craft\base\ApplicationTrait::getIsMultiSite()` would return `false` on the front end, if there was only one enabled site, but additional disabled sites. - Fixed a bug where `craft\base\Element::getSite()` would throw an exception on the front end, if the element belonged to a disabled site. - Fixed a bug where `craft\services\Sites::getEditableSiteIds()` would exclude disabled sites on the front end. - Fixed a bug where validation errors referenced by `aria-describedby` attributes weren’t getting read out by VoiceOver. ([#10355](https://github.com/craftcms/cms/pull/10355)) - Fixed a bug where element queries’ `withQueries` properties were ignored. ([#10359](https://github.com/craftcms/cms/pull/10359)) - Fixed a bug where fatal PHP errors were not logged to `stderr` when the `CRAFT_STREAM_LOG` PHP constant was set to `true`. ([#10366](https://github.com/craftcms/cms/pull/10366)) - Fixed a bug where Dropdown fields with invalid data would not always display a blank option. ([#10365](https://github.com/craftcms/cms/issues/10365)) ### Security - Fixed an XSS vulnerability. ## 3.7.28 - 2022-01-05 ### Changed - Updated Yii to 2.0.44. ### Fixed - Fixed a Composer error that could occur if `composer.craftcms.com` was missing an expected package/version, but Packagist knew about it. ([#10311](https://github.com/craftcms/cms/issues/10311)) - Fixed a PHP error that could occur when querying for Matrix blocks. ([#10315](https://github.com/craftcms/cms/issues/10315)) - Fixed a bug where Single sections’ drafts would get deleted when their section settings were updated. ([#10307](https://github.com/craftcms/cms/issues/10307)) - Fixed an error that could occur on the Dashboard if there were any Quick Post widgets that included a Title field. ([#10314](https://github.com/craftcms/cms/issues/10314)) ## 3.7.27.2 - 2022-01-06 ### Fixed - Fixed an error that could occur when updating to Craft 3.7.28/Yii 2.0.44 from the control panel. ## 3.7.27.1 - 2022-01-04 ### Fixed - Fixed a PHP error that would occur when creating a new user. ([#10308](https://github.com/craftcms/cms/issues/10308)) ## 3.7.27 - 2022-01-04 ### Added - Added the `setSchemaOnConnect` database connection setting. ([#10273](https://github.com/craftcms/cms/issues/10273)) - Added `craft\errors\InvalidHtmlTagException`. - Added `craft\helpers\Html::encodeInvalidTags()`. - Added `craft\models\FieldLayout::getCustomFieldElements()`. - Added `craft\services\Fields::getLayoutsByIds()`. - Added `craft\web\twig\variables\Image::getContents()`, `getDataUrl()`, `getMimeType()`, and `getPath()`. ([#10268](https://github.com/craftcms/cms/issues/10268)) ### Changed - Improved the performance of the control panel, for installs with a large number of entry types. - A warning is now logged when a password-reset email could not be sent, if `preventUserEnumeration` is enabled. - The `install/check`, `install/craft`, and `setup/db-creds` commands now explicitly check if Craft is installed in the default schema on Postgres. - The `setup/db-creds` command now uses existing environment variable values for its default prompt values, if available. - The `setup/db-creds` command no longer prompts for the database schema on Postgres, unless `setSchemaOnConnect` is enabled. Instead it will determine the appropriate schema to use based on `SHOW search_path`. ([#10273](https://github.com/craftcms/cms/issues/10273)) - The web-based installation wizard no longer shows a field for the database schema on Postgres. ([#10273](https://github.com/craftcms/cms/issues/10273)) - Dashboard widgets’ `data-colspan` attributes are now updated when their colspan changes. ([#10286](https://github.com/craftcms/cms/discussions/10286)) - `craft\base\ApplicationTrait::getIsInstalled()` will now explicitly check if Craft is installed in the default schema on Postgres, when `true` is passed. - `craft\helpers\Html::parseTag()` now throws an `InvalidHtmlTagException` exception when an invalid tag is encountered. (Catching `InvalidArgumentException`s will still work.) - `craft\services\Routes::getProjectConfigRoutes()` now returns a numerically-indexed array of URL rule arrays, with `pattern` keys that define the URI patterns. - `craft\services\Users::getUserPreferences()` and `getUserPreference()` no longer accept `null` passed to the first argument. ### Deprecated - Deprecated `craft\elements\User::mergePreferences()`. ### Fixed - Fixed a bug where the details pane could jump down when scrolling on desktop browsers that are less than 974 pixels wide. - Fixed a bug where soft-deleted Matrix blocks nested within Neo blocks could become duplicated when restored from a prior revision. ([#10256](https://github.com/craftcms/cms/issues/10256)) - Fixed a bug where Color fields’ HSL values could be incorrect. ([#10261](https://github.com/craftcms/cms/issues/10261)) - Fixed a bug where `