- Added support for Markdown-based custom Dashboard widgets in the application's
resources/widgets/directory. (#19319) - Replaced
pixelandtonic/imaginewithintervention/imagefor image manipulation. - Added support for the libvips image driver via the optional
intervention/image-driver-vipspackage. - Added BMP, HEIC, ICO, JPEG 2000, JPEG XL, and TIFF image transform formats when supported by the active image driver.
- Added support for configuring field layout field instruction positions.
- Added fluent APIs for creating and modifying
CraftCms\Cms\FieldLayout\FieldLayout,CraftCms\Cms\FieldLayout\FieldLayoutTab, and field layout elements. - Changed
craft:resave:allto discover registeredcraft:resave:*Artisan commands directly, rather than relying on a resolving event. (#19270) - Changed the My Account → Addresses page to a full Inertia/Vue page, rendering nested-element cards from data instead of server-rendered HTML. (#19324)
- Changed
CraftCms\Cms\Cp\FormFields::textFromConfig()to accept an optionalCraftCms\Cms\Cp\Components\Inputinstance as a second argument, so callers can build on an existing component instead of always creating a plainInput. (#19323) - Changed
CraftCms\Cms\Search\Events\SearchPerformedto be a readonly, immutable event; its$resultsand$scoresproperties can no longer be overridden by listeners.CraftCms\Cms\Search\Events\SearchScoresResolvingshould be used to override scores instead. (#19308) - Added
CraftCms\Cms\Asset\AssetFileKinds. (#19270) - Added
CraftCms\Cms\Cp\Components\Button::action(), for declarative click actions. (#19324) - Added
CraftCms\Cms\Cp\Components\Button::inherit(). (#19306) - Added
CraftCms\Cms\Cp\Components\InputColor. (#19323) - Added
CraftCms\Cms\Cp\Components\InputPassword. (#19323) - Added
CraftCms\Cms\Cp\Data\NavItem::group(). (#19350) - Added
CraftCms\Cms\Cp\Enums\ButtonVariant. (#19306) - Added
CraftCms\Cms\Cp\FormFields::colorFromConfig(). (#19323) - Added
CraftCms\Cms\Cp\FormFields::passwordFromConfig(),passwordHtml(), andpasswordFieldHtml(). (#19323) - Added
CraftCms\Cms\Cp\Html\ElementHtml::elementCardLabelHtml(),elementCardActionsHtml(),elementCardThumbHtml(), andelementCardThumbAlignment(). (#19324) - Added
CraftCms\Cms\Cp\Settings::registerSetting()andregisterReadOnlySetting(). (#19270) - Added
CraftCms\Cms\Dashboard\WidgetTypes. (#19270) - Added
CraftCms\Cms\Database\Commands\MigrateCommand::registerMigrator(). (#19270) - Added
CraftCms\Cms\Element\ElementTypes. (#19270) - Added
CraftCms\Cms\Element\NestedElementManager::getCardsData()andgetIndexData(). (#19324) - Added
CraftCms\Cms\Field\FieldTypes. (#19270) - Added
CraftCms\Cms\Field\LinkTypes. (#19270) - Added
CraftCms\Cms\Field\NestedEntryFieldTypes. (#19270) - Added
CraftCms\Cms\FieldLayout\NativeFields. (#19270) - Added
CraftCms\Cms\Filesystem\FilesystemTypes. (#19270) - Added
CraftCms\Cms\Gql\GqlArguments. (#19270) - Added
CraftCms\Cms\Gql\GqlDirectives. (#19270) - Added
CraftCms\Cms\Gql\GqlMutations. (#19270) - Added
CraftCms\Cms\Gql\GqlQueries. (#19270) - Added
CraftCms\Cms\Gql\GqlTypes. (#19270) - Added
CraftCms\Cms\Image\ImageTransformers. (#19270) - Added
CraftCms\Cms\Image\Raster::getInterventionImage(). - Added
CraftCms\Cms\Plugin\Plugin::$filesystemTypes. (#19307) - Added
CraftCms\Cms\Plugin\Plugin::$gqlDirectives. (#19307) - Added
CraftCms\Cms\Plugin\Plugin::$gqlMutations. (#19307) - Added
CraftCms\Cms\Plugin\Plugin::$gqlQueries. (#19307) - Added
CraftCms\Cms\Plugin\Plugin::$gqlTypes. (#19307) - Added
CraftCms\Cms\Plugin\Plugin::$linkTypes. (#19307) - Added
CraftCms\Cms\Plugin\Plugin::$siteTemplateRoots. (#19307) - Added
CraftCms\Cms\Plugin\Plugin::getCacheOptions(). (#19307) - Added
CraftCms\Cms\Plugin\Plugin::getCacheTags(). (#19307) - Added
CraftCms\Cms\Plugin\Plugin::getNativeFields(). (#19307) - Added
CraftCms\Cms\Plugin\Plugin::getSystemMessages(). (#19307) - Added
CraftCms\Cms\Search\Events\SearchResultsResolving. (#19308) - Added
CraftCms\Cms\Search\Events\SearchScoresResolving. (#19308) - Added
CraftCms\Cms\Support\Facades\AuthMethods. (#19270) - Added
CraftCms\Cms\SystemMessage\SystemMessages::register(). (#19270) - Added
CraftCms\Cms\Twig\Variables\Cp::color()andpassword(). (#19323) - Added
CraftCms\Cms\User\UserPermissions::registerPermissionGroup(). (#19270) - Added
CraftCms\Cms\Utility\Utilities\ClearCaches::add()andaddTag(). (#19270) - Added
CraftCms\Cms\Utility\UtilityTypes. (#19270) - Added
CraftCms\Cms\View\TemplateCacheCollectors. (#19270) - Added
CraftCms\Cms\View\TemplateRoots. (#19270) - Removed
CraftCms\Cms\Support\Concerns\EvaluatesClosuresand support for closure values in fluent CP component and field layout builder APIs. - Changed
CraftCms\Cms\FieldLayout\LayoutElements\BaseField::label()to accept an optional label and return the field layout element when one is passed. Overrides must accept the new optional argument. - Changed
CraftCms\Cms\Image\Raster::getTextBox()to return awidthandheightarray. - Renamed the protected
CraftCms\Cms\FieldLayout\LayoutElements\BaseField::instructions(),tip(), andwarning()methods toinstructionsText(),tipText(), andwarningText(). - Removed
CraftCms\Cms\Asset\Events\AssetFileKindsResolving.CraftCms\Cms\Asset\AssetFileKinds::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Auth\Events\AuthMethodsResolving.CraftCms\Cms\Auth\AuthMethods::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Cp\Events\RegisterCpSettingsandCraftCms\Cms\Cp\Events\RegisterReadonlyCpSettings.CraftCms\Cms\Cp\Settings::registerSetting()andregisterReadOnlySetting()should be used instead. (#19270) - Removed
CraftCms\Cms\Dashboard\Events\WidgetTypesResolving.CraftCms\Cms\Dashboard\WidgetTypes::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Database\Events\MigratorsResolving.CraftCms\Cms\Database\Commands\MigrateCommand::registerMigrator()should be used instead. (#19270) - Removed
CraftCms\Cms\Element\Events\ElementResaveCommandsResolving. A normal Artisan command in thecraft:resavenamespace should be registered instead. (#19270) - Removed
CraftCms\Cms\Element\Events\ElementTypesResolving.CraftCms\Cms\Element\ElementTypes::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Field\Events\FieldTypesResolving.CraftCms\Cms\Field\FieldTypes::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Field\Events\LinkTypesResolving.CraftCms\Cms\Field\LinkTypes::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Field\Events\NestedEntryFieldTypesResolving.CraftCms\Cms\Field\NestedEntryFieldTypes::register()should be used instead. (#19270) - Removed
CraftCms\Cms\FieldLayout\Events\NativeFieldsResolving.CraftCms\Cms\FieldLayout\NativeFields::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Filesystem\Events\FilesystemTypesResolving.CraftCms\Cms\Filesystem\FilesystemTypes::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Gql\Events\GqlArgumentHandlersResolving.CraftCms\Cms\Gql\GqlArguments::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Gql\Events\GqlDirectivesResolving.CraftCms\Cms\Gql\GqlDirectives::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Gql\Events\GqlMutationsResolving.CraftCms\Cms\Gql\GqlMutations::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Gql\Events\GqlQueriesResolving.CraftCms\Cms\Gql\GqlQueries::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Gql\Events\GqlTypesResolving.CraftCms\Cms\Gql\GqlTypes::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Image\Events\ImageTransformersResolving.CraftCms\Cms\Image\ImageTransformers::register()should be used instead. (#19270) - Removed
CraftCms\Cms\Image\Images::MINIMUM_IMAGICK_VERSIONandcraft\services\Images::MINIMUM_IMAGICK_VERSION. - Removed
CraftCms\Cms\Image\Raster::getImagineImage(). - Removed
CraftCms\Cms\Search\Events\ScoringResultsin favor of the following new events: (#19308)CraftCms\Cms\Search\Events\SearchResultsResolvingCraftCms\Cms\Search\Events\SearchScoresResolving
- Removed
CraftCms\Cms\SystemMessage\Events\SystemMessagesResolving.CraftCms\Cms\SystemMessage\SystemMessages::register()should be used instead. (#19270) - Removed
CraftCms\Cms\User\Events\UserPermissionsResolving.CraftCms\Cms\User\UserPermissions::registerPermissionGroup()should be used instead. (#19270) - Removed
CraftCms\Cms\Utility\Events\ClearCachesOptionsResolvingandCraftCms\Cms\Utility\Events\ClearCachesTagOptionsResolving.CraftCms\Cms\Utility\Utilities\ClearCaches::add()andaddTag()should be used instead. (#19270) - Removed
CraftCms\Cms\Utility\Events\UtilitiesResolving.CraftCms\Cms\Utility\UtilityTypes::register()should be used instead. (#19270) - Removed
CraftCms\Cms\View\Events\CpTemplateRootsResolvingandCraftCms\Cms\View\Events\SiteTemplateRootsResolving.CraftCms\Cms\View\TemplateRoots::register()should be used instead. (#19270) - Removed
CraftCms\Cms\View\Events\TemplateCacheCollectorsResolving.CraftCms\Cms\View\TemplateCacheCollectors::register()should be used instead. (#19270) - Added the
@craftcms/ui/factorymodule, a jQuery-free layer of typed element factories that mirror thesrc/Cp/ComponentsPHP builders. (#19323) - Added
createTextInput()andcreateCopyTextPrompt()to the@craftcms/ui/factorymodule. (#19333) - Added
turnOn(),turnOff(), andturnIndeterminate()methods to the<craft-switch>web component. (#19323) - Added a
groupproperty to the<craft-nav-item>web component, for rendering a subnav as a non-collapsible semantic grouping. (#19350) - Added
Garnish.CustomSelectandGarnish.MenuBtnto@craftcms/garnish, jQuery-free TypeScript ports of the legacy floating listbox menu and menu-button classes. (#19352) - Moved the
Craft.ComponentSelectInputcontrol panel JavaScript class out of the core bundle into ayii2-adaptercompatibility asset, since<craft-component-select>is now used everywhere in core; thecomponentSelect.twigjsClassescape hatch still works for plugin subclasses. (#19333) - Moved the
Craft.AssetMover,Craft.AssetSelectorModal,Craft.BaseElementSelectInput,Craft.BaseElementSelectorModal,Craft.BaseUploader,Craft.Chart,Craft.CpModal,Craft.CustomizeSourcesModal,Craft.DataTableSorter,Craft.ElementActionTrigger,Craft.ElementDeletionManager,Craft.ElementTableSorter,Craft.EntrySelectInput,Craft.Grid,Craft.PreviewFileModal,Craft.Tabs,Craft.TagSelectInput,Craft.Uploader, andCraft.VolumeFolderSelectorModalcontrol panel JavaScript classes from the legacy jQuery bundle to TypeScript modules. (#19352) - Changed
<craft-nav-item>to render as a<span>instead of an<a>when it has nohref, droppingaria-currentin that case. (#19350) - Changed element index table rows and cards so clicking anywhere on them (other than an interactive control) selects them, extending the selection range on shift-click just like clicking a row’s checkbox. (#19351)
- Deprecated the
Craft.LightSwitch,Craft.InfoIcon,Craft.ColorInput,Craft.PasswordInput,Craft.IconPicker,Craft.SlidePicker,Craft.SlideRuleInput, andCraft.Tooltipcontrol panel JavaScript classes, along with the.infoiconjQuery plugin. The corresponding@craftcms/uiweb components should be used instead. (#19323) - Removed the
Craft.AccordionandCraft.EnvVarGeneratorcontrol panel JavaScript classes. (#19323) - Removed the
Craft.DeleteUserModalcontrol panel JavaScript class. It was deprecated in 5.10.0 and unused. (#19352) - Fixed a bug where Blade templates rendered through Craft used path-based view names, preventing named Laravel view composers from running. (#19177)
- Fixed a bug where the
accentsemantic color used by colorable elements (e.g.craft-callout,[data-color]) rendered red instead of blue, due to a drifted color mapping in@craftcms/ui. (#19306) - Fixed a styling issue. (#19296)
- Fixed a bug where Yii adapter plugins could cause legacy Control Panel assets to be omitted. (#19302)
- Fixed a bug where assets’ Alternative Text values could not be cleared. (#19310)
- Fixed a bug where element deletion confirmation dialogs could display unresolved pluralization syntax. (#19311)
- Fixed a bug where replacing an asset would fail silently. (#19312)
- Fixed JavaScript errors that could occur throughout the control panel. (#19313)
- Fixed a bug where
forms.checkboxField()andCraftCms\Cms\Cp\FormFields::checkboxFieldHtml()rendered an empty field. (#19338) - Fixed a bug where Utility pages weren’t rendering, and were logging
$ is not definedandwindow.Cp.config is not a functionerrors to the console. (#19340) - Fixed a bug where
actionClientrequests for bare action paths could corrupt the?site=query string on multi-site installs. (#19342) Craft.cp.announce()now accepts live regions that are plain elements as well as jQuery collections. (#19340)