Important
This update contains breaking changes for plugins. See #19574, #19563, #19588, #19585, and #19650 for details.
Control Panel UI
- Added inline editing to element index tables. (#19759)
- Added exports to element indexes. (#19759)
- Control panel success, notice, and error messages now go through a single message system instead of several different ones, and are no longer shown twice or lost between pages.
- Messages now stack, newest first, and spread out on hover or focus. A “Skip to messages” link reaches them from the keyboard. They can be swiped away, errors and messages with actions stay until dismissed, and errors are announced to screen readers immediately.
- Improved element index searches to update results as users type. (#19754)
- Added support for controller actions and named Laravel routes in section and Matrix site settings. (#19762)
- Rearranged and cleaned up the control panel’s page shell layout, with improved mobile support. (#19648)
- Control panel pages can now set
contentMaxWidthandcenterContentoptions. (#19648) - Added flyout menus to the global control panel nav, for accessing sub-pages of non-selected sections. (#19648)
- Added close buttons to element detail tabs. (#19648)
- Element editor slideouts now have action menus and “Open in a new tab” buttons. (#19748)
- Removed the legacy control panel stylesheet from Inertia pages. (#19648)
ElementEditornow supports rendering as a full page in addition to a slideout. (#19648)- Improved the overall accessibility of the control panel. (#19699)
- Improved the accessibility of element indexes. (#19520, #19749)
- Replaced core inline element editing inputs with Form API controls rendered by Vue, with plugin field HTML compatibility handled by the Yii adapter. (#19590)
- Improved the styling for collapsible field groups.
- Improved the layout and dark mode styling of user edit screens. (#19765)
- Improved the styling of control panel tables and lightswitches. (#19766)
- Improved disabled secondary form actions with explanatory tooltips.
- The “Assets” system settings nav item is now listed under “Content”, and “Globals”, “Categories”, and “Tags” are now listed under a new “Deprecated” heading, if those concepts are supported for the project. (#19670)
- Added reusable server-built form modals and the
formModalelement action behavior. (#19768) - Added optional
sidebarFormandmetadataHtmlprops toForm.vuepages, allowing sidebar controls to be saved alongside the main form. (#19778) - Added support for
CraftCms\Cms\Http\Responses\CpScreenResponse::addAltAction()submissions on Inertia Form pages and slideouts. (#19779) - Added the
<craft-timeline-item>web component. (#19629) - Added the
placeholderproperty to<craft-thumbnail>, for an image to show while the thumbnail loads. (#19750) - Added
CraftCms\Cms\Form\Controls\Combobox\CreateOptionfor creating and selecting resources in comboboxes, including user photo volumes. (#19777) - Added the
--c-thumbnail-image-radiuscustom property to<craft-thumbnail>, and its other custom properties can now be set on an ancestor. (#19758) - Content in
<craft-chip>’sprefixslot no longer replaces its thumbnail, icon, and status; it’s shown before them. (#19758) - Migrated the reassign entries, replace relations, and replace references modals to the Form API. (#19589)
- Added
CraftCms\Cms\Form\Nodes\Callout::padding(), supported by PHP and Vue form rendering. (#19773) - Restored Score sorting for element index searches and preserved previous sort fields as tie-breakers. (#19731)
Assets
- Migrated Control Panel uploads to the native Uppy picker and shared upload sessions, including user photos.
- Added support for upload sessions, tus and direct S3 multipart transports, and an extensible JavaScript upload API. (#19604)
- Added background uploads in the Assets index that continue during Control Panel navigation, with persistent progress, retry, cancellation, and filename-conflict controls.
- The image editor now supports Undo/Redo. (#19600)
- Added
crop,fit,stretch, andletterboxmodes tocraft-thumbnail, and removed size-dependent asset thumbnail cropping. - Added a “Revert to original” button to the image editor. (#19600)
- Image assets now store color data sampled from their file when it’s uploaded, replaced, or indexed, including the image’s dominant color and a grid of the average colors of its regions. (#19740, #19750)
- Asset edit sidebars now fill the space around image previews with a gradient between the colors of the image’s left and right edges. (#19740, #19750)
- Image thumbnails and previews in the control panel now show a blurred placeholder based on the image’s colors while they load. (#19750)
- Control panel uploads now sample image colors in the browser and send them along, so the server doesn’t need to sample the file itself. (#19751)
<img>tags returned byCraftCms\Cms\Asset\Elements\Asset::getImg()now have a blurred placeholder as their background, unless the image has transparent regions. (#19750)- Image assets now have BlurHash strings, available via
asset.blurhashin templates and theblurhashfield in GraphQL queries. (#19755) - Added the
blurhash,colors, andplaceholderDataUrlfields to assets in GraphQL queries. (#19740, #19750, #19755) - Added an optional
$modeargument to core thumbnail APIs, defaulting toFitfor thumbnail HTML andCropforCraftCms\Cms\Asset\Assets::getThumbUrl(). Implementations ofCraftCms\Cms\Component\Contracts\ThumbableandCraftCms\Cms\Field\Contracts\ThumbableFieldInterface, and overrides of thumbnail layout methods andthumbUrl(), must update their signatures for Craft 6, including through existing Yii aliases; existing calls remain valid. The Yii Assets service wrapper and legacy thumbnail event are unchanged. - Added
CraftCms\Cms\Asset\Elements\Asset::$colors. (#19740, #19750) - Added
CraftCms\Cms\Asset\Elements\Asset::getBlurhash(). (#19755) - Added
CraftCms\Cms\Asset\Elements\Asset::getPlaceholderDataUrl(). (#19750) - Added
CraftCms\Cms\Asset\Elements\Asset::$uploadColors. (#19751) - Added
CraftCms\Cms\Image\Blurhash. (#19755) - Added
CraftCms\Cms\Image\ColorGrid. (#19755) - Added
CraftCms\Cms\Image\Data\ImageColors. (#19740, #19750) - Added
CraftCms\Cms\Image\Images::colors(). (#19740, #19750) - Changed
users/upload-user-phototo start an upload session using JSON file metadata instead of multipart file data. - Removed the
assets/uploadandassets/replace-filemultipart endpoints and legacy uploader events and overrides.
Conditions
- Added support for nested condition groups. (#19587)
- Removed the “Show unpermitted entries” setting from Entries, Link, and Markdown fields, in favor of the “Viewable” condition rule in the “Selectable Entries Condition” setting. (#19611, #19622)
- Removed the “Show unpermitted files” and “Allowed File Types” settings from Assets, Link, and Markdown fields, in favor of “Viewable” and “File Type” condition rules in the “Selectable Assets Condition” setting. (#19611, #19622)
- Added a “Selectable {Type} Condition” setting to Link and Markdown fields’ Entry and Asset link types. (#19622)
- Added
CraftCms\Cms\Condition\BaseConditionGroup. (#19587) - Added
CraftCms\Cms\Condition\ConditionBuilderPayload. (#19587) - Added
CraftCms\Cms\Condition\ConditionBuilderRenderer. (#19587) - Added
CraftCms\Cms\Condition\ConditionBuilder. (#19587) - Added
CraftCms\Cms\Condition\ConditionRulePayload. (#19587) - Added
CraftCms\Cms\Condition\Contracts\ConditionComponentInterface. (#19587) - Added
CraftCms\Cms\Condition\Contracts\ConditionGroupInterface. (#19587) - Added
CraftCms\Cms\Condition\Contracts\ConditionInterface::createGroup(). (#19587) - Added
CraftCms\Cms\Condition\Contracts\ConditionRuleInterface::getForm(), which replacesgetHtml(). (#19588) - Added
CraftCms\Cms\Condition\Contracts\ConditionRuleInterface::isSelectableForCondition(). (#19563) - Added
CraftCms\Cms\Condition\Enums\GroupOperator. (#19587) - Added
CraftCms\Cms\Element\Conditions\Contracts\ElementQueryConditionRuleInterface, which element condition rules that modify element queries should now implement. (#19563) - Added
CraftCms\Cms\Element\Conditions\ElementCondition::$forQuery. (#19563) - Added
CraftCms\Cms\Element\Conditions\ElementCondition. (#19587) - Removed
CraftCms\Cms\Condition\Contracts\ConditionRuleInterface::getHtml().getForm()must be implemented instead. (#19588) - Removed
CraftCms\Cms\Element\Conditions\Contracts\ElementConditionRuleInterface::getExclusiveQueryParams()andmodifyQuery().ElementQueryConditionRuleInterface::modifyQuery()should be implemented instead, which now accepts the underlying query builder directly. (#19563) - Removed
CraftCms\Cms\Element\Conditions\ElementCondition::$queryParams. (#19563)
Fields
- Added a “Default Row Values” setting to Table fields. (#3621)
- Added support for disabling Matrix entries for individual sites. (#19686)
- Restored Matrix fields’ configured Cards and Cards Grid view modes in element forms.
- Restored Matrix fields’ configured Index view mode in element forms.
CraftCms\Cms\Field\Contracts\FieldInterface::modifyQuery()now accepts anIlluminate\Database\Query\Builderobject for its$queryargument, and has a newCraftCms\Cms\Element\Queries\Contracts\ElementQueryInterface $elementQueryargument, and avoidreturn type. (#19562, #19585)- Moved legacy relation-field settings HTML and entry-title input HTML into the Yii adapter. (#19591)
- Restored “Copy value from site” functionality. (#19683)
Entries & Sections
- Added the “Show the Post Date field” and “Show the Expiry Date field” entry type settings. (#17675)
- Entry types’ Color fields now show a dropdown menu. (#19760)
Workflows
- Added publishing workflows, which control when drafts may be applied to entries. Workflows are configured from Settings → Workflows and assigned to sections. (Craft Pro and Enterprise only.) (#19667)
- Changes to enabled entries in sections with a workflow are now saved as drafts, which must be submitted for review and approved by each workflow stage before they can be applied. (#19667)
- Added the “User Review” workflow stage type, which supports per-group approval requirements, carried-over approvals, change requests, and email notifications for reviewers. (#19667)
- Added a “Workflow” element details tab, for submitting drafts for review, reviewing them, and viewing workflow activity history. (#19667)
- Added
CraftCms\Cms\Workflow\Contracts\WorkflowStageInterfaceandCraftCms\Cms\Workflow\Stages\WorkflowStage, for creating custom workflow stage types. (#19667) - Added
CraftCms\Cms\Workflow\WorkflowStageTypes, for registering custom workflow stage types. (#19667) - Added
CraftCms\Cms\Workflow\Contracts\WorkflowableInterface, which element types can implement to support workflows. (#19667) - Added
CraftCms\Cms\Workflow\WorkflowsandCraftCms\Cms\Support\Facades\Workflows. (#19667) - Added the
CraftCms\Cms\Workflow\Events\WorkflowTransitioning,WorkflowTransitioned, andWorkflowCommentedevents. (#19667)
Elements
- Added the
autoEagerLoadElementsgeneral config setting (trueby default), which determines whether element queries should be automatically lazy eager-loaded. (#19637) - Added Markdown comments to element activity timelines, with support for editing, removing, structured user mentions, and email notifications.
- Added
CraftCms\Cms\Activity\Contracts\ShouldBeRetained, allowing activity event types such as comments to opt out of activity garbage collection. - Restored expand/collapse and drag interactions on structure element index views. (#19691)
Users & Auth
- Added support for sending queued Laravel notifications to
CraftCms\Cms\User\Elements\Userelements. (#19541) - Added the
authGuardandauthPasswordBrokergeneral config settings, allowing Craft authentication to use a dedicated Laravel guard, provider, and password broker. (#19598)
Filesystems
- Removed Craft-managed filesystems and their control panel settings. Volumes and Craft asset transformers now reference Laravel filesystem disks configured in
config/filesystems.php, and each defines whether its assets have public URLs. Existing filesystem references are migrated to matching disks automatically, with an actionable error if a disk isn’t configured. (#19650) - Added
CraftCms\Cms\Asset\Models\Volume::$hasUrls, which determines whether the volume’s assets have public URLs. (#19650) - Added
CraftCms\Cms\Config\GeneralConfig::$uploadSessionDiskandgetUploadSessionDisk(), which determine the disk used to stage upload sessions. (#19650) - Renamed
CraftCms\Cms\Config\GeneralConfig::$tempAssetUploadFsto$tempAssetUploadDisk, andgetTempAssetUploadFs()togetTempAssetUploadDisk(), which now reference a Laravel filesystem disk exclusively. (#19650) - Renamed
CraftCms\Cms\Cp\SelectOptions::getFsOptions()togetDiskOptions(), which now returns Laravel filesystem disk options exclusively. (#19650) - Removed
CraftCms\Cms\Asset\Assets::getTempAssetUploadFs()andCraftCms\Cms\Asset\AssetsHelper::isTempUploadFs().Assets::getTempAssetUploadDisk()should be used instead, which now returns a Laravel filesystem disk. (#19650) - Removed
CraftCms\Cms\Cp\Components\FilesystemSelectandCraftCms\Cms\Form\Controls\FilesystemSelect. (#19650) - Removed
CraftCms\Cms\Filesystem\Filesystems,FilesystemTypes,Contracts\FsInterface,Filesystems\Filesystem(and itsDiskFilesystem,Local,MissingFs, andTempimplementations),Resources\FsResource,Events\FilesystemRenamed, andCraftCms\Cms\Support\Facades\Filesystems. Laravel filesystem disks should be configured and referenced directly instead; Craft filesystem types registered throughcraft\base\Fsremain supported for legacy plugins via the Yii adapter. (#19650) - Removed
CraftCms\Cms\Http\Controllers\Settings\FilesystemsControllerandCraftCms\Cms\Http\ViewModels\FilesystemsEditViewModel, along with the Filesystems control panel settings page. (#19650) - Removed
CraftCms\Cms\Plugin\Concerns\HasFilesystemTypes. Plugins can no longer register custom Craft filesystem types. (#19650)
Plugins & Extensibility
- Added
CraftCms\Cms\Form\Controls\Text::suffix()for display-only suffix text in PHP and Vue form controls. (#19770) - Added
CraftCms\Cms\Element\Data\ElementSiteSettings, the shared base for element URI and route settings. (#19762) - Added support for fluent plugin settings classes. (#19574)
- Added support for refreshable standard plugin settings forms and conditional configuration of core form nodes. (#19545)
- Added
CraftCms\Cms\Form\Nodes\Group::expanded(), allowing collapsible section groups to start expanded in Vue and HTML forms. (#19772) - Added
CraftCms\Cms\Route\CurrentElement, a contextual attribute for injecting the matched element into controller actions and route closures. (#19762) - Added
CraftCms\Cms\Contracts\PluginInterface::createSettings(), which replacescreateSettingsModel(). (#19574) - Added
CraftCms\Cms\Dashboard\Widgets\Widget::component()andprops(), which replacegetBodyHtml(). (#19564) - Added
CraftCms\Cms\Support\Url::stripCpTrigger(). (#19724) CraftCms\Cms\Support\Url::removeParam()now accepts an array of param names. (#19724)- Removed
CraftCms\Cms\Contracts\PluginInterface::createSettingsModel().createSettings()must be implemented instead. (#19574) - Removed
CraftCms\Cms\Dashboard\Widgets\Widget::getBodyHtml().component()andprops()must be implemented instead. (getBodyHtml()remains supported through the Yii adapter.) (#19564) - Removed
CraftCms\Cms\Support\Url::baseUrl(),cpHost(),encodeParams(),host(),isFullUrl(),removeParams(), androotRelativeUrl(). (They remain available oncraft\helpers\UrlHelperthrough the Yii adapter.) (#19724) - Added
Cp.$elementDetailsTabs, allowing plugins to register control panel element-details tabs. (#19646) - Added
CraftCms\Cms\Support\Flash::all(),make(), andpush(), and a$targetargument toFlash::success(),error(), andnotice()for showing a message in an inline outlet rather than the default message display. - Added the
messagesInertia shared prop, which carries every flashed control panel message with its type, settings, and id. - Added
useMessages()anduseMessageOutlet()for showing control panel messages from Vue, and thecraft-messagewindow event for showing them from anywhere else. asSuccess()andasFailure()JSON responses now include amessageslist on control panel requests, andasSuccess()no longer also flashes the message to the session for JSON responses.asFailure()now flashes its message even when the response has validation errors.- Deprecated the
flashInertia shared prop.messagesshould be used instead. - Removed
useFlash(),useFlashMessages(), and theFlashMessagesVue component.useMessages()should be used instead. - Stopped loading the deprecated
XRegExplibrary by default. Plugins that require it can registercraft\web\assets\xregexp\XregexpAsset. (#19621)
System
- Improved performance of element queries, control panel rendering, asset transforms, date formatting, and queue status checks, and fixed related SQLite index and timezone issues.
- Added
CraftCms\Cms\ProjectConfig\ProjectConfig::getPendingChanges(). - Replaced the project config implementation with separate change handling, storage, and rebuild components.
- Removed HTMX.
- Base site URLs, including
url(''),siteUrl(''), and homepage URLs, now respect theaddTrailingSlashesToUrlsconfig setting, so they no longer end with a trailing slash by default. ThesiteUrlTwig variable still always ends with a trailing slash. (#19723) - Fixed
CraftCms\Cms\Support\Env::parse()to preserve unknown aliases rather than throw an exception. (#19535) - Fixed a bug where validating filesystem attributes could resolve
CraftCms\Cms\Filesystem\Filesystems\Filesystem::getRootUrl(). (#19535) - Fixed a bug where nested Content Block fields’ content could be lost during a batched resave that included revisions. (#19543)
- Fixed a bug where
resaveandupdate-statusescommands reported skipped revisions as root element lookup errors. - Fixed a bug where visiting the logout path while signed out would store it as the post-login redirect, so signing in would immediately sign the user back out. (#19551)
- Fixed a bug where submitting a form after signing in through an elevated or expired session modal could fail CSRF validation.
- Fixed a bug where authenticated control panel requests to Yii2 adapter controller actions were treated as unauthenticated. (#19556)
- Fixed a bug where save errors using shortened field paths could fail to appear on Controls within nested Forms. (#19565)
- Fixed a bug where failed plugin installation or uninstallation could leave project config writable. (#19566)
- Fixed a bug where cached template resolution could ignore the current site, registered template roots, or lookup options. (#19568)
- Fixed a bug where orphan cleanup could delete the wrong rows for composite foreign keys. (#19568)
- Fixed a bug where deleting a site could transfer its content despite selecting the delete option. (#19568)
- Fixed a bug where object templates could render through an outdated Twig environment or behave differently after caching. (#19568)
- Fixed a bug where preparing Composer changes could leave
composer.jsonpartially modified after a failure. (#19568) - Fixed a bug where worker events or progress updates could reactivate cancelled queue jobs. (#19568)
- Fixed a bug where cached search term normalization could use the wrong language. (#19568)
- Fixed a bug where nested Twig namespace tags or exceptions could leave the wrong input namespace active. (#19568)
- Fixed decimal rounding errors involving high-precision values, scientific notation, and negative numbers. (#19568)
- Fixed a bug where generating a URL for another site could leave that site selected after an exception. (#19568)
- Fixed a bug where percentage formatting could lose decimal precision during multiplication. (#19568)
- Fixed a bug where nested cache collection could extend expiration deadlines or ignore expired dependencies. (#19568)
- Fixed a bug where support request emails could omit errors encountered while preparing their attachments. (#19568)
- Fixed a bug where parallel test cleanup could delete another worker’s files. (#19568)
- Fixed a bug where command-line update listings could evaluate update criticality more than once using incomplete update information. (#19568)
- Fixed a bug where preparing a control panel response could discard or leak an input namespace. (#19568)
- Fixed a bug where screen rendering could generate action menu items twice, producing duplicate events or inconsistent action IDs. (#19568)
- Fixed a bug where indexing large asset volumes could exceed memory or database parameter limits. (#19568)
- Fixed a bug where asset folder lookups could return stale or inconsistent results after folders were saved or deleted. (#19568)
- Fixed a bug where concurrent image downloads could delete each other’s temporary files, and failed downloads could leave temporary files behind. (#19568)
- Fixed a bug where loading an image transform index could lose its output format. (#19568)
- Fixed a bug where asset factories could create assets and their folders in different volumes. (#19568)
- Fixed a bug where Money field conditions could compare incorrect units or lose precision. (#19568)
- Fixed a bug where numeric conditions could ignore zero-valued bounds. (#19568)
- Fixed a bug where splitting relation criteria could discard field and source site restrictions. (#19568)
- Fixed a bug where cached field layouts could retain outdated custom field handles or identities. (#19568)
- Fixed a bug where Link fields could lose labels and attributes during normalization or localization. (#19568)
- Fixed a bug where generated field propagation could retain old element state and run during later element operations. (#19568)
- Fixed a bug where validation errors could replace generated field handles and cause subsequent validation failures. (#19568)
- Fixed a bug where JSON fields could misinterpret valid objects containing
__ERROR__or__VALUE__keys. (#19568) - Fixed a bug where repairing a field layout UID could undo repairs to its tab and element UIDs. (#19568)
- Fixed a bug where field usage metadata could lose field layout UIDs and produce incorrect links or empty groups. (#19568)
- Fixed a bug where queued resaves could handle null field defaults differently from inline resaves. (#19568)
- Fixed a bug where duplicating an entry could apply submitted changes to the original entry. (#19568)
- Fixed a bug where the first access to lazily loaded entry authors could return no authors. (#19568)
- Fixed a bug where entries deleted with their entry type or section could fail to be restored with it. (#19568)
- Fixed a bug where removing supported sites from a section could leave obsolete entry site data. (#19568)
- Fixed a bug where sections’ site settings tables didn’t have status switches.
- Fixed a bug where creating a section from the command line could ignore a selected existing entry type. (#19568)
- Fixed a bug where element queries could select the wrong site variant when requesting unique results across sites. (#19568)
- Fixed a bug where bulk duplication could save partial results after a validation failure. (#19568)
- Fixed a bug where element indexes could select automatic sources outside their available source collection. (#19568)
- Fixed a bug where element indexes could discard the selected source’s status criteria. (#19568)
- Fixed a bug where component overrides could affect other instances of the same component. (#19568)
- Fixed a bug where element query results could eager-load relations twice. (#19568)
- Fixed a bug where cloned element queries could use callbacks that still read criteria from the original query. (#19568)
- Fixed a bug where failed structure moves could leave locks held and block subsequent operations. (#19568)
- Fixed an error that occurred when deeply duplicating descendants. (#19568)
- Fixed database errors and incorrect ordering when repairing structures. (#19568)
- Fixed a bug where structure repair previews could differ from the repairs that would be applied. (#19568)
- Fixed a bug where user group metadata could be saved before permission elevation was checked. (#19568)
- Fixed a bug where rejected user permission changes could leave some permissions updated. (#19568)
- Fixed a bug where verification email delivery addresses could alter account identity or be lost when notifications were queued. (#19568)
- Fixed inconsistent account eligibility checks when signing into the control panel with OAuth. (#19568)
- Fixed a bug where named OAuth providers could overwrite each other’s configuration. (#19568)
- Fixed a bug where failed account updates could leave in-memory account state inconsistent with persisted data. (#19568)
- Fixed a bug where failed filesystem resolution could leave a previously generated disk available with outdated configuration. (#19568)
- Fixed inconsistent plugin license statuses, issues, and trial information when reading cached metadata. (#19568)
- Fixed a bug where nested GraphQL mutation inputs could affect how sibling inputs were normalized. (#19568)
- Fixed a bug where switching GraphQL schemas could reuse types, arguments, or loaders from the previous schema. (#19568)
- Fixed a bug where resetting generated GraphQL state could unnecessarily invalidate cached query results. (#19568)
- Fixed a bug where removing false, zero, or empty-string project config values could leave their database rows behind.
- Fixed a bug where saving project config repeatedly could persist the same changes more than once. (#19568)
- Fixed a bug where project config path processing state could leak between application instances. (#19568)
- Fixed an error that could occur when creating relation fields. (#19571)
- Fixed a bug where no confirmation dialog was shown when deleting entry types and custom fields. (#19582)
- Fixed user photo asset selections not being saved, and restricted the photo selector to images in the configured volume and subfolder. (#19603)
- Fixed a bug where field types could remain unchanged or switch to an unintended option when their combobox query was submitted with Return. (#19614)
- Fixed a bug where brand icons, including the Markdown field type icon, were not displayed in combobox options. (#19614)
- Fixed a bug where creating an entry type from an entry type select field opened an empty slideout. (#19617)
- Fixed a bug where unpaginated Inertia admin tables could show nonfunctional pagination controls. (#19618)
- Fixed a bug where Save and continue editing left newly created control panel items on their creation page. (#19619)
- Fixed a bug where the “Structure” sorting option was missing from structure element indexes. (#19620)
- Fixed a bug where Asset link type settings were ignored by Link and Markdown fields. (#19623)
- Fixed duplicate plus icons on user management actions. (#19627)
- Fixed a bug where Markdown fields could collapse when initialized inside hidden containers. (#19635)
- Fixed a bug where the account navigation sidebar was missing when editing a user. (#19643)
- Fixed a bug where saved drafts without canonical elements were missing from element indexes. (#19649)
- Fixed a bug where Matrix Index views could show content from the wrong site.
- Fixed a bug where reopening a Matrix entry from an Index view could show its canonical content instead of the owner draft’s content.
- Fixed an error that occurred when upgrading to Craft 6. (#19658)
- Fixed a bug where users in single-site installations could be denied access to localized elements because they lacked an unavailable site permission. (#19666)
- Fixed a bug where unsaved drafts could not be deleted from element indexes. (#19668)
- Fixed a bug where modifier-clicking or middle-clicking on some control panel links wasn’t opening the link in a new tab.
- Fixed a bug where modifier-clicking or middle-clicking the New Entry button didn’t open the creation page in a new tab. (#19669)
- Fixed an error that occurred when loading the Users index if a user belonged to a user group. (#19673)
- Fixed an error that could occur when rendering element table rows with strict Twig variables enabled. (#19679)
- Fixed an error that occurred when moving folders directly beneath an asset volume’s root folder. (#19680)
- Fixed a bug where folders in the Assets index couldn’t be selected, created, renamed, moved, or deleted. (#19682)
- Fixed a bug where assets and folders couldn’t be moved by dragging them onto a folder in the Assets index. (#19682)
- Fixed a bug where clicking a folder in the Assets index didn’t navigate into it or keep the breadcrumbs in sync. (#19682)
- Fixed a bug where the Assets index search couldn’t be expanded to include subfolders. (#19682)
- Fixed a bug where Shift+Space didn’t preview the selected file in the Assets index. (#19682)
- Fixed a bug where the “Preview file” modal was unstyled.
- Fixed a bug where clicking an asset in the Assets index didn’t open its editor. (#19682)
- Fixed a bug where the Assets index’s folder dialogs could render behind other overlays, lose their centering, or not focus their name field. (#19682)
- Fixed multiple bugs with Table fields, including new columns moving or defaulting to Checkbox, settings rows not being draggable, and element edit forms failing when the field value was null. (#19687)
- Fixed a bug where combobox fields rendered through the Form API displayed their label twice. (#19694)
- Fixed a bug where visually-hidden labels, headings, and status messages were visible on some control panel pages.
- Fixed a bug where saving an element draft could send a redundant autosave request. (#19704)
- Fixed a bug where pressing Ctrl/Cmd + S in a slideout could also save the page behind it. (#19705)
- Fixed various bugs with Customize Sources modals. (#19713)
- Fixed an error that could occur when saving elements, if their field layouts still referenced legacy component classes. (#19719)
- Fixed an error that could occur when rendering field settings.
- Fixed a bug where migrations that wrote to the project config had to be defensive about its
readOnlystate. (#19726) - Fixed a bug where Shift-selecting a shorter range didn’t deselect items outside the new range. (#19727)
- Fixed a bug where select inputs could lose their selected value if their options were loaded asynchronously. (#19728)
- Fixed a bug where table rows could stop being draggable after their reorder handles were replaced. (#19729)
- Fixed a bug where plugin-provided download element actions didn’t trigger file downloads from element indexes. (#19730)
- Fixed a bug where asset indexing left temporary copies of remote images behind. (#19740)
- Fixed a bug where uploaded and replaced assets’ modification dates came from their temporary files rather than the stored files.
- Fixed an accessibility issue where the Date, Time, and Time zone inputs within
<craft-input-date-time>didn’t have individual accessible names. (#19741) - Fixed a bug where the Delete element action reported success when some elements couldn't be deleted. (#19743)
- Fixed a bug where element index sort direction buttons did nothing. (#19744)
- Fixed an error in the Yii adapter during installation or updates when
CRAFT_SITEorX-Craft-Sitereferenced a missing site. (#19745) - Fixed a bug where the Edit and View bulk actions did nothing on element indexes. (#19747)
- Fixed an error that occurred when using an icon picker. (#19752)
- Fixed a validation error that occurred when saving an entry type with a color. (#19753)
- Fixed a validation error that occurred when saving a Color field with no color palette, even if “Allow custom colors” was enabled.
- Fixed a bug where element index selection ranges could use a stale anchor after clearing selection or switching view modes. (#19754)
- Fixed a bug where element index searches could move keyboard focus after a page load. (#19754)
- Fixed a bug where element selector modals could display results from an outdated request. (#19754)
- Fixed a bug where element selector modals requested search results on every keystroke. (#19754)
- Fixed a bug where element chips didn’t show their status indicators, and their thumbnails weren’t sized, spaced, or centered for the chip. (#19758)
- Fixed a bug where money inputs could be hidden within fields or submit their values under the wrong name. (#19767)
- Fixed a bug where reactive controls in element editors didn’t refresh their field layouts, including nested form scopes. (#19769)
- Fixed a bug where Form API field instructions displayed Markdown and inline HTML as plain text in Vue forms. (#19771)
- Fixed a bug where
<craft-callout>boxes didn’t span all columns in grid layouts. (#19773) - Fixed a bug where
<craft-input>fields with amaxlengthweren’t sized to fit it, which made the element index pagination’s page input overlap the “Next page” button. - Fixed a bug where condition builders passed raw condition values to form change listeners. (#19774)
- Fixed a bug where failed settings saves could lose input and validation errors when a successful save would redirect to another page. (#19775)
- Fixed a bug where card designer previews could fail to render because the preview request omitted the element type. (#19776)