|
1 | 1 | # Release Notes for Craft CMS 4
|
2 | 2 |
|
| 3 | +## 4.15.0-beta.1 - 2025-04-08 |
| 4 | + |
| 5 | +### Content Management |
| 6 | +- Condition rules for Checkboxes, Dropdown, Multi-select, and Radio Buttons fields now include “has a value” and “is empty” operators. ([#17015](https://github.com/craftcms/cms/pull/17015)) |
| 7 | +- The Assets index page now prompts for confirmation when moving more than 50 assets, or assets totalling more than 50MB, at once. ([#16908](https://github.com/craftcms/cms/pull/16908)) |
| 8 | +- The success notification displayed after an asset move now includes an “Undo” button, if less than 50 assets/50MB were involved in the move. ([#16908](https://github.com/craftcms/cms/pull/16908)) |
| 9 | +- Window scrolling is now blocked when a modal window is open. ([#16768](https://github.com/craftcms/cms/pull/16768)) |
| 10 | + |
| 11 | +### Administration |
| 12 | +- Added the `db/repair` command. ([#16812](https://github.com/craftcms/cms/pull/16812)) |
| 13 | +- Added the `--batch-size` option for `resave/*` commands. ([#16586](https://github.com/craftcms/cms/issues/16586)) |
| 14 | +- The `plugin/install` command now accepts an `edition` argument, and prompts for the default edition if none is specified. ([#17030](https://github.com/craftcms/cms/pull/17030)) |
| 15 | +- The `plugin/uninstall` command now reports if no plugin is installed with the provided handle. ([#17030](https://github.com/craftcms/cms/pull/17030)) |
| 16 | +- The `users/create` command now prompts to send an activation email, or outputs an activation URL. ([#16794](https://github.com/craftcms/cms/pull/16794)) |
| 17 | +- Dragging headings within the Customize Sources modal now also drags any subsequent sources. ([#16737](https://github.com/craftcms/cms/issues/16737)) |
| 18 | +- When switching field types, any field settings which are defined by the same base class are now preserved. ([#16783](https://github.com/craftcms/cms/pull/16783)) |
| 19 | + |
| 20 | +### Development |
| 21 | +- Added the `searchTermOptions` GraphQL query argument. ([#16979](https://github.com/craftcms/cms/pull/16979)) |
| 22 | +- Added the `revisionNotes` GraphQL entry mutation argument. ([#16943](https://github.com/craftcms/cms/issues/16943)) |
| 23 | + |
| 24 | +### Extensibility |
| 25 | +- Global nav items and breadcrumbs can now have `aria-label` attributes via an `ariaLabel` property. |
| 26 | +- Added `craft\base\ElementInterface::getSerializedFieldValuesForDb()`. |
| 27 | +- Added `craft\base\FieldInterface::serializeValueForDb()`. |
| 28 | +- Added `craft\base\conditions\BaseMultiSelectConditionRule::$includeEmptyOperators`. |
| 29 | +- Added `craft\db\Connection::getIsMaria()`. |
| 30 | +- Added `craft\db\Table::SEARCHINDEXQUEUE_FIELDS`. |
| 31 | +- Added `craft\db\Table::SEARCHINDEXQUEUE`. |
| 32 | +- Added `craft\db\mysql\QueryBuilder::jsonContains()`. |
| 33 | +- Added `craft\db\mysql\QueryBuilder::jsonExtract()`. |
| 34 | +- Added `craft\db\pgsql\QueryBuilder::jsonContains()`. |
| 35 | +- Added `craft\db\pgsql\QueryBuilder::jsonExtract()`. |
| 36 | +- Added `craft\queue\ReleasableQueueInterface`. ([#16672](https://github.com/craftcms/cms/pull/16672)) |
| 37 | +- Added `craft\records\User::haveIndexAttributesChanged()`. |
| 38 | +- Added `craft\services\Search::indexElementIfQueued()`. |
| 39 | +- Added `craft\services\Search::queueIndexElement()`. |
| 40 | +- `craft\cache\ElementQueryTagDependency` now merges cache tags provided by the element query with any tags already set on its `$tags` property. |
| 41 | + |
| 42 | +### System |
| 43 | +- `craft\queue\Queue::release()` and `releaseAll()` now call `release()` and `releaseAll()` on the proxied queue if it implements `craft\queue\ReleasableQueueInterface`. ([#16672](https://github.com/craftcms/cms/pull/16672)) |
| 44 | +- The `changedattributes` and `changedfields` tables are now cleaned up during garbage collection. ([#16531](https://github.com/craftcms/cms/pull/16531)) |
| 45 | +- The `resourcepaths` table is now truncated when clearing control panel resources, via the Caches utility or the `clear-caches/cp-resources` command. ([#16514](https://github.com/craftcms/cms/issues/16514)) |
| 46 | +- Date values for custom fields are now represented as ISO-8601 date strings (with time zones) within element exports. ([#16629](https://github.com/craftcms/cms/pull/16629)) |
| 47 | +- “Updating search indexes” queue jobs no longer do anything if search indexes were already updated for the element since the job was created. ([#16644](https://github.com/craftcms/cms/pull/16644)) |
| 48 | +- User caches are no longer invalidated on login attempts or when user management actions are taken. ([#16937](https://github.com/craftcms/cms/pull/16937)) |
| 49 | +- Batchable queue jobs now spawn new batches when their execution time is getting uncomfortably close to their TTR duration. ([#16947](https://github.com/craftcms/cms/pull/16947)) |
| 50 | +- Updated Yii to 2.0.52. |
| 51 | +- Updated yii2-debug to 2.1.26. |
| 52 | +- Updated Axios to 1.8.4. |
| 53 | +- Fixed a bug where `CRAFT_WEB_URL` and `CRAFT_WEB_ROOT` environment variables could be overridden by `@web` and `@webroot` aliases define by the `aliases` config setting. ([#16980](https://github.com/craftcms/cms/pull/16980)) |
| 54 | + |
3 | 55 | ## 4.14.14 - 2025-04-08
|
4 | 56 |
|
5 | 57 | - Fixed a bug where `craft\services\Assets::EVENT_BEFORE_REPLACE_ASSET` and `EVENT_BEFORE_REPLACE_ASSET` events weren’t getting triggered when replacing an asset file via GraphQL. ([#17005](https://github.com/craftcms/cms/issues/17005))
|
|
0 commit comments