All Versions
336
Latest Version
Avg Release Cycle
7 days
Latest Release
505 days ago
Changelog History
Page 12
Changelog History
Page 12
-
v3.6.3 Changes
February 03, 2021➕ Added
- ➕ Added
craft\base\ElementInterface::setUiLabel()
. - ➕ Added
craft\fields\BaseRelationField::tableAttributeHtml()
. - ➕ Added
craft\helpers\Cp::elementPreviewHtml()
.
🔄 Changed
- Entry indexes now include draft entries in the main entry listings. (#7401)
- Entry indexes can now show a “Drafts” column, which lists the entries’ drafts. (#7473)
- The “Publish draft” button on Edit Entry pages can now be activated using a Ctrl/Command + Alt/Option + S keyboard shortcut.
- Entry queries’
drafts
param can now be set tonull
, indicating that both normal entries and drafts can be included in the results. - Entries can now be eager-loaded with
drafts
. craft\helpers\Cp::elementHtml
now has a$showDraftBadge
argument.
✂ Removed
- ✂ Removed
craft\fields\BaseRelationField::elementPreviewHtml()
.
🛠 Fixed
- ➕ Added
-
v3.6.2 Changes
January 29, 2021➕ Added
- ➕ Added
craft\gql\handlers\Site
. - ➕ Added
craft\service\Gql::handleQueryErrors()
.
🔄 Changed
- 🌐 The web-based installer now respects the
postCpLoginRedirect
config setting. (#5648) - 👌 Improved GraphQL error reporting.
- ✅
craft\test\console\CommandTest::stdOut()
,outputCommand()
, andstderr()
now accept an array of possible expected strings. - ⬇️ Downgraded webonyx/graphql-php to 14.4. (#7452)
🛠 Fixed
- 🛠 Fixed a bug where any license key inputs on the Settings → Plugins page that were set to environment variable names would get replaced with the actual license key after a short period of time.
- 🛠 Fixed a bug where some GraphQL queries could not be executed when Dev Mode was disabled. (#7452)
- 🛠 Fixed a bug where GraphQL queries which set
site: '*'
would result in an error. (#5079) - 🛠 Fixed a bug where sections’ Template setting values weren’t getting auto-generated based on the Name setting, for new sections.
- 🛠 Fixed a PHP error that could occur when running the
update
command if specific versions were requested. - 🛠 Fixed an error that could occur if a deprecation warning was logged before Craft was installed.
- ➕ Added
-
v3.6.1 Changes
January 27, 2021➕ Added
- ➕ Added
craft\console\ControllerTrait::checkTty()
.
🔄 Changed
- The
setup/welcome
command that is run automatically after installing Craft viacomposer create-project craftcms/craft
can now initiate the setup process automatically, if using Composer 2. craft\console\Controller::$interactive
is now set tofalse
automatically for non-interactive shells.
🛠 Fixed
- ➕ Added
-
v3.6.0 Changes
January 26, 2021⚡️ > {warning} Read through the Upgrading to Craft 3.6 guide before updating.
➕ Added
- 👍 Craft now supports PHP 8. (#7050)
- Craft now requires PHP 7.2.5 or later.
- 🔌 Commercial plugins now receive license keys automatically when installed as trials.
- 🔌 It’s now possible for admins to purchase Craft and plugin licenses when
allowAdminChanges
is disabled. - 🔌 It’s now possible to browse the Plugin Store when
allowAdminChanges
is disabled. - ➕ Added tablet and phone viewport emulation to Live Preview (Craft Pro only.) (#1006)
- Entries now begin life as “unpublished drafts” rather than “unsaved drafts”. They are no longer ephemeral; they will continue to exist until explicitly published or deleted. (#5661, #7216)
- It’s now possible to delete entries for a specific site, if their section’s propagation method is set to “Let each entry choose which sites it should be saved to”. (#7190)
- ➕ Added the “Copy impersonation URL” user action, which generates a URL that can be pasted into a private window to impersonate the user without losing the current session. (#7281)
- 👉 User indexes can now include a “Groups” column. (#7211)
- 🌐 Volumes now have “Title Translation Method” and “Title Translation Key Format” settings, like entry types. (#7135)
- It’s now possible to set sites’ Name settings to environment variables.
- URL fields now have an “Allowed URL Types” setting, which adds the ability to accept telephone and email URLs. (#5497)
- ➕ Added the “Captions/Subtitles” file kind. (#7304)
- ➕ Added the
users/list-admins
andusers/set-password
commands. (#7067) - ➕ Added the
disableGraphqlTransformDirective
config setting. (#6466) - ➕ Added the
enableGraphqlIntrospection
config setting. (#6466) - ➕ Added the
handleCasing
config setting, which determines the default casing that should be used when autogenerating component handles. (#4276) - ➕ Added the
maxGraphqlComplexity
config setting. (#6466) - ➕ Added the
maxGraphqlDepth
config setting. (#6466) - ➕ Added the
maxGraphqlResults
config setting. (#6466) - ➕ Added the
rasterizeSvgThumbs
config setting. (#7146) - ➕ Added the
sanitizeCpImageUploads
config setting, which determines whether images uploaded via the control panel should be sanitized. (#3060) - ➕ Added the
{% tag %}
Twig tag. - ➕ Added the
withGroups
user query param. - ➕ Added the
relatedToAssets
,relatedToCategories
,relatedToEntries
,relatedToTags
, andrelatedToUsers
arguments to GraphQL queries. (#7110) - ➕ Added the
isUnpublishedDraft
GraphQL field. - ➕ Added
craft\base\ApplicationTrait::getFormattingLocale()
, which returns the locale that should be used for date/time formatting. - ➕ Added
craft\base\ElementExporterInterface::isFormattable()
. - ➕ Added
craft\base\ElementInterface::getIsUnpublishedDraft()
. - ➕ Added
craft\base\FieldInterface::includeInGqlSchema()
. (#7244) - ➕ Added
craft\base\FieldInterface::useFieldset()
, which custom fields can override to returntrue
if a<fieldset>
and<legend>
should be used, rather than a<div>
and<label>
. - ➕ Added
craft\base\VolumeInterface::createDirectory()
. - ➕ Added
craft\base\VolumeInterface::deleteDirectory()
. - ➕ Added
craft\base\VolumeInterface::getDateModified()
. - ➕ Added
craft\base\VolumeInterface::getFileSize()
. - ➕ Added
craft\base\VolumeInterface::renameDirectory()
. - ➕ Added
craft\base\VolumeTrait::$titleTranslationKeyFormat
. - ➕ Added
craft\base\VolumeTrait::$titleTranslationMethod
. - ➕ Added
craft\console\Controller::passwordPrompt()
. - ➕ Added
craft\console\Request::getHadToken()
. - ➕ Added
craft\console\Request::getSiteToken()
. - ➕ Added
craft\console\Request::setToken()
. - ➕ Added
craft\controllers\BaseEntriesController::enforceDeleteEntryPermissions()
. - ➕ Added
craft\elements\db\ElementQueryInterface::afterPopulate()
. - ➕ Added
craft\elements\db\ElementQueryInterface::createElement()
. - Added
craft\elements\Entry::EVENT_DEFINE_ENTRY_TYPES
. (#7136) - ➕ Added
craft\elements\Entry::getAvailableEntryTypes()
. - ➕ Added
craft\events\CreateFieldLayoutFormEvent
. - ➕ Added
craft\events\DefineEntryTypesEvent
. - ➕ Added
craft\events\RegisterGqlArgumentHandlersEvent
. - ➕ Added
craft\events\SearchEvent::$results
. (#7237) - ➕ Added
craft\fieldlayoutelements\AssetTitleField
. - ➕ Added
craft\fieldlayoutelements\BaseField::useFieldset()
. - ➕ Added
craft\fields\Url::TYPE_EMAIL
. - ➕ Added
craft\fields\Url::TYPE_TEL
. - ➕ Added
craft\fields\Url::TYPE_URL
. - ➕ Added
craft\gql\ArgumentManager
. - ➕ Added
craft\gql\base\ArgumentHandler
. - ➕ Added
craft\gql\base\ArgumentHandlerInterface
. - ➕ Added
craft\gql\base\Generator
. - ➕ Added
craft\gql\base\RelationArgumentHandler
. - ➕ Added
craft\gql\ElementQueryConditionBuilder::setArgumentManager()
. - ➕ Added
craft\gql\handlers\RelatedAssets
. - ➕ Added
craft\gql\handlers\RelatedCategories
. - ➕ Added
craft\gql\handlers\RelatedEntries
. - ➕ Added
craft\gql\handlers\RelatedTags
. - ➕ Added
craft\gql\handlers\RelatedUsers
. - ➕ Added
craft\gql\types\input\criteria\Asset
. - ➕ Added
craft\gql\types\input\criteria\Category
. - ➕ Added
craft\gql\types\input\criteria\Entry
. - ➕ Added
craft\gql\types\input\criteria\Tag
. - ➕ Added
craft\gql\types\input\criteria\User
. - ➕ Added
craft\helpers\App::createFormattingLocale()
. - ➕ Added
craft\helpers\App::phpSizeToBytes()
. - ➕ Added
craft\helpers\Cp::checkboxFieldHtml()
. - ➕ Added
craft\helpers\Cp::checkboxSelectFieldHtml()
. - ➕ Added
craft\helpers\Cp::colorFieldHtml()
. - ➕ Added
craft\helpers\Cp::editableTableFieldHtml()
. - ➕ Added
craft\helpers\Cp::lightswitchFieldHtml()
. - ➕ Added
craft\helpers\Cp::renderTemplate()
. - ➕ Added
craft\helpers\Cp::selectFieldHtml()
. - ➕ Added
craft\helpers\Cp::selectHtml()
. - ➕ Added
craft\helpers\Cp::textareaFieldHtml()
. - ➕ Added
craft\helpers\Cp::textFieldHtml()
. - ➕ Added
craft\helpers\Diff
. - ➕ Added
craft\helpers\Gql::eagerLoadComplexity()
. - ➕ Added
craft\helpers\Gql::nPlus1Complexity()
. - ➕ Added
craft\helpers\Gql::singleQueryComplexity()
. - ➕ Added
craft\helpers\Template::paginateQuery()
. - ➕ Added
craft\i18n\I18N::validateAppLocaleId()
. - ➕ Added
craft\i18n\Locale::setDateTimeFormats()
. (#7394) - ➕ Added
craft\log\Dispatcher
. - Added
craft\models\FieldLayout::EVENT_CREATE_FORM
. (#7258) - ➕ Added
craft\models\Site::getName()
. - ➕ Added
craft\models\Site::setBaseUrl()
. - ➕ Added
craft\models\Site::setName()
. - ➕ Added
craft\mutex\MysqlMutex
. - ➕ Added
craft\mutex\PgsqlMutex
. - ➕ Added
craft\services\Assets::$generatePendingTransformsViaQueue
. (#7360) - Added
craft\services\Drafts::EVENT_AFTER_APPLY_DRAFT
. - Added
craft\services\Drafts::EVENT_BEFORE_APPLY_DRAFT
. - ➕ Added
craft\services\Drafts::publishDraft()
. - ➕ Added
craft\services\Globals::deleteSet()
. - ➕ Added
craft\services\Globals::reset()
. - Added
craft\services\Gql::GRAPHQL_COMPLEXITY_CPU_HEAVY
. - Added
craft\services\Gql::GRAPHQL_COMPLEXITY_EAGER_LOAD
. - Added
craft\services\Gql::GRAPHQL_COMPLEXITY_NPLUS1
. - Added
craft\services\Gql::GRAPHQL_COMPLEXITY_QUERY
. - Added
craft\services\Gql::GRAPHQL_COMPLEXITY_SIMPLE_FIELD
. - ➕ Added
craft\services\Structures::applyBranchLimitToElements()
. - ➕ Added
craft\services\Structures::fillGapsInElements()
. - ➕ Added
craft\test\ActiveFixture
. - ➕ Added
craft\test\DbFixtureTrait
. - ➕ Added
craft\test\fixtures\elements\BaseContentFixture
. - ➕ Added
craft\test\fixtures\elements\BaseElementFixture
. - ➕ Added
craft\test\TestSetup::SITE_URL
. - ➕ Added
craft\validators\UrlValidator::URL_PATTERN
. - ➕ Added
craft\web\Request::getHadToken()
. - ➕ Added
craft\web\Request::getSiteToken()
. - ➕ Added
craft\web\Request::setToken()
. - ➕ Added the
Craft.index()
JavaScript method.
🔄 Changed
- Relational fields now include all related elements’ titles as search keywords, including disabled elements. (#7079)
- 👌 Improved the performance of project config change diffs. (#7218)
- 👌 Improved the accessibility of info icons.
- Checkbox and radio button group fields now use
<fieldset>
s and<legend>
s throughout the control panel. - Field containers no longer set the
aria-describedby
attribute, leaving it up to the actual inputs to do so. (#7365) - Number field settings and input values are now fully formatted, unless the Preview Format setting is set to “Unformatted”.
- 🔌 The Settings → Plugin page now shows which developer created each plugin. (#7254)
- Field layout designers will no longer create a new tab if no tab name is entered in the prompt. (#7333)
- Site URLs that are generated on the front-end of disabled sites now include the
siteToken
param, if one was passed to the current page. (#7264) - 🔒 Mutex lock names are now prefixed with the application ID, to avoid lock conflicts if two Craft installs shared the same database. (#7384)
- Action URLs are now always based on the control panel URL when running Craft in headless mode. (#5553)
- ⏪ Renamed the
backup
andrestore
commands todb/backup
anddb/restore
. (#7023) - The
migrate/all
command now lists the migrations that will be applied. (#7381) - The
project-config/apply
command now displays a list of changes it is applying. (#7235) - 0️⃣ The
allowedFileExtensions
config setting now includes several file extensions used by caption and subtitle file formats by default. (#7304) - When applying project config changes, Craft now installs new plugins before uninstalling removed plugins. (#7436)
- The
currency
,filesize
,number
,percentage
, andtimestamp
Twig filters now return the passed-in value verbatim if it wasn’t a valid number. - The
withoutKey
Twig filter can now accept an array, for removing multiple keys at once. (#7230) - 🌲 It’s now possible to add new log targets by overriding
components.log.targets
inconfig/app.php
, rather than the entirelog
component config. - The
_includes/forms/field.html
control panel template andcraft\helpers\Cp::fieldHtml()
now accept afieldset
variable/config key, which can be set totrue
to cause the resulting field to be a<fieldset>
instead of a<div>
, and the label to be a<legend>
instead of a<label>
. - The
_includes/forms/field.html
control panel template andcraft\helpers\Cp::fieldHtml()
now accept aninstructionsPosition
variable/config key, which can be set to'after'
to cause the field instructions to be rerdered after the input instead of before. - The
_includes/forms/field.html
control panel template andcraft\helpers\Cp::fieldHtml()
now accept afieldLabel
variable/config key, which will take precedence overlabel
. - The
checkboxField
macro within the_includes/forms.html
control panel template now returns a<fieldset>
if afieldLabel
config key was passed. - 💻
craft\base\ElementExporterInterface::export()
can now return raw response data, a callable, or a resource, ifisFormattable()
returnsfalse
. If a callable or resource is returned, it will be streamed to the browser. (#7148) - 📜
craft\behaviors\EnvAttributeParserBehavior::$attributes
can now be set to an array with key/value pairs, where the key is the attribute name, and the value is the raw (unparsed) value, or a callable that returns the raw value. - 📜
craft\behaviors\EnvAttributeParserBehavior::$attributes
can now be set to an array with key/value pairs, where the key is the attribute name, and the value is the raw (unparsed) value, or a callable that returns the raw value. craft\db\Connection::getPrimaryKeyName()
,getForeignKeyName()
, andgetIndexName()
now generate completely random object names, rather than basing them on a table name, etc. (#7153)craft\base\ApplicationTrait::getLocale()
now returns the same locale that the application language is set to.- 🛠
craft\helpers\Cp::fieldHtml()
now accepts a control panel template path, prefixed withtemplate:
. - 🍱
craft\helpers\Gql::isSchemaAwareOf()
,extractAllowedEntitiesFromSchema()
,canSchema()
,extractEntityAllowedActions()
,canMutateEntries()
,canMutateTags()
,canMutateGlobalSets()
,canMutateCategories()
,canMutateAssets()
,canQueryEntries()
,canQueryAssets()
,canQueryCategories()
,canQueryTags()
,canQueryGlobalSets()
, andcanQueryUsers()
now have$schema
arguments. - 📜
craft\models\Site::$baseUrl
is now a magic property, which returns the parsed base URL. (#3964) - 📜
craft\models\Site::$name
is now a magic property, which returns the parsed site name. (#3964) - 📜
craft\models\Site::getBaseUrl()
now has a$parse
argument, which can be set tofalse
to return the raw (unparsed) base URL. craft\services\Composer::install()
no longer has an$allowlist
argument.craft\services\Gql::getValidationRules()
now has an$isIntrospectionQuery
argument.Craft.formatNumber()
and other D3-based number formatting now uses a dynamically-generated locale definition based on info pulled from the application’s formatting locale. (#7341)- 🗄 Craft no longer reports PHP deprecation errors.
- 👻 Exception JSON responses now include
exception
,file
,line
, andtrace
keys. (#7406) - 👍 GraphQL queries now support eager-loading for arguments provided as input objects.
- ✅ Made it easier to extend Craft’s Codeception testing module with custom code. (#7339)
- ⚡️ Updated Yii to 2.0.40.
- ⚡️ Updated Guzzle to 7.x, for projects that don’t have any plugins that require Guzzle 6. (#6997)
- ⚡️ Updated Composer to 2.0.8.
- ⚡️ Updated LitEmoji to 2.x.
- ⚡️ Updated the Symfony Yaml component to 5.x.
- ⚡️ Updated svg-sanitizer to 0.14.
- ⚡️ Updated webonyx/graphql-php to 14.x.
🗄 Deprecated
- ⏪ Deprecated the
backup
andrestore
commands. - 🗄 Deprecated the
purgeUnsavedDraftsDuration
config setting. - 🗄 Deprecated the
siteName
config setting. Sites’ Name settings should be set to environment variables instead. - 🗄 Deprecated the
siteUrl
config setting. Sites’ Base URL settings should be set to aliases or environment variables instead. (#3205) - 🗄 Deprecated the
relatedToAll
GraphQL query argument.relatedTo: ["and", ...ids]
should be used instead. - 🗄 Deprecated the
isUnsavedDraft
GraphQL field. - 🗄 Deprecated
craft\base\Element::getIsUnsavedDraft()
.getIsUnpublishedDraft()
should be used instead. - 🗄 Deprecated
craft\base\VolumeInterface::createDir()
.createDirectory()
should be used instead. - 🗄 Deprecated
craft\base\VolumeInterface::deleteDir()
.deleteDirectory()
should be used instead. - 📇 Deprecated
craft\base\VolumeInterface::getFileMetadata()
.getFileSize()
andgetDateModified()
should be used instead. - 🗄 Deprecated
craft\base\VolumeInterface::renameDir()
.renameDirectory()
should be used instead. - 🗄 Deprecated
craft\db\Connection::trimObjectName()
. - 🗄 Deprecated
craft\gql\base\Resolver::getArrayableArguments()
. - 🗄 Deprecated
craft\gql\base\Resolver::prepareArguments()
. - 🗄 Deprecated
craft\helpers\App::logConfig()
. - 🗄 Deprecated
craft\helpers\Template::paginateCriteria()
.paginateQuery()
should be used instead. - 🗄 Deprecated
craft\services\Categories::applyBranchLimitToCategories()
.craft\services\Structures::applyBranchLimitToElements()
should be used instead. - 🗄 Deprecated
craft\services\Categories::fillGapsInCategories()
.craft\services\Structures::fillGapsInElements()
should be used instead. - 🗄 Deprecated
craft\services\Composer::$disablePackagist
. - 🗄 Deprecated
craft\services\Drafts::applyDraft()
.publishDraft()
should be used instead. - Deprecated
craft\services\Drafts::EVENT_AFTER_APPLY_DRAFT
.EVENT_AFTER_PUBLISH_DRAFT
should be used instead. - Deprecated
craft\services\Drafts::EVENT_BEFORE_APPLY_DRAFT
.EVENT_BEFORE_PUBLISH_DRAFT
should be used instead. - 🗄 Deprecated
craft\services\Drafts::purgeUnsavedDrafts()
. - ✅ Deprecated
craft\test\Fixture
.craft\test\ActiveFixture
should be used instead. - 🗄 Deprecated
craft\web\View::$minifyCss
. - 🗄 Deprecated
craft\web\View::$minifyJs
. - 🗄 Deprecated
craft\web\View::renderTemplateMacro()
.
✂ Removed
- ✂ Removed the “Placeholder” setting from URL fields. (#7303)
- ✂ Removed
craft\controllers\ElementIndexesController::actionCreateExportToken()
. - ✂ Removed
craft\controllers\ExportController
. - ✂ Removed
craft\services\Api::getComposerWhitelist()
. - ✂ Removed
craft\test\fixtures\elements\ElementFixture
.craft\test\fixtures\elements\BaseElementFixture
orBaseContentFixture
should be used instead. - ✂ Removed
craft\test\fixtures\FieldLayoutFixture::deleteAllByFieldHandle()
. - ✂ Removed
craft\test\fixtures\FieldLayoutFixture::extractTabsFromFieldLayout()
. - ✂ Removed
craft\test\fixtures\FieldLayoutFixture::getTabsForFieldLayout()
. - ✂ Removed
craft\test\fixtures\FieldLayoutFixture::linkFieldToLayout()
. - ✂ Removed Minify and jsmin-php.
🛠 Fixed
- 🛠 Fixed an error that occurred when a schema change was made within a transaction, if using MySQL and PHP 8. (#7174)
- 🛠 Fixed a bug where asset queries’
withTransforms
param wasn’t being respected for eager-loaded assets. (#6140) - 🛠 Fixed a bug where
craft\db\Connection::getPrimaryKeyName()
,getForeignKeyName()
, andgetIndexName()
could generate non-unique object names. (#7153) - 🛠 Fixed a bug where number strings were not correctly typecast to the right PHP numeric type when using the Number GraphQL type.
- 🛠 Fixed a bug where it wasn’t possible to save a Global set with a predefined UID.
- 🛠 Fixed a bug where
craft\helpers\Db::prepareValuesForDb()
would omit or JSON-encodeDateTime
objects, depending on the PHP version, rather than converting them to ISO-8601-formatted strings. - 🛠 Fixed a bug where info icons’ content was focusable before the icon was activated. (#7257)
- 🛠 Fixed a bug where generated URLs would include the token from the current request, even if it had expired or met its usage limit.
- 🛠 Fixed a bug where Number field settings and input values could be stored incorrectly if the user’s formatting locale used a different decimal character that the application language.
- 🛠 Fixed a MySQL deadlock error that could occur when running background jobs. (#7179)
🔒 Security
- 0️⃣ The default
allowedFileExtensions
config setting value no longer includeshtm
orhtml
.
-
v3.6.0.1 Changes
January 26, 2021🛠 Fixed
- 🛠 Fixed an error that could occur when validating dates. (#7443)
-
v3.5.19 Changes
January 26, 2021🔄 Changed
- 👍 The control panel is now fully translated in all supported languages.
🛠 Fixed
- 🛠 Fixed a bug where Date fields with existing values were always considered dirty when saving an entry. (#7404)
-
v3.5.19.1 Changes
January 28, 2021🛠 Fixed
- 🛠 Fixed an error that could occur when validating dates. (#7459)
-
v3.5.18 Changes
January 19, 2021🔄 Changed
- 👌 Improved the accessibility of lightswitches in the control panel. (#7313)
- 👌 Improved the accessibility of the Login page. (#7268, #7287, #7288)
- 👌 Improved the accessibility of Number fields. (#7367)
- ➕ Added
aria-label
oraria-hidden
attributes to control panel icons, where appropriate. (#7302) - 🍱 Dynamic subfolder paths in Assets fields can now output
:ignore:
to avoid an invalid subpath error if no segment is intended. (#7353) - 👌 Improved the error message that is output when running the
clear-caches/cp-resources
command, if the@webroot
alias isn’t explicitly set. (#7286) craft\i18n\I18N::getFormatter()
now instantiates the formatter viaCraft::createObject()
. (#7341)
🛠 Fixed
- 🛠 Fixed a bug where auto-created Matrix blocks were taking over the focus when creating a new entry. (#7363)
- 🛠 Fixed an error that could occur due to a race condition when generating
CustomFieldBehavior
classes. (#7379) - 🛠 Fixed a bug where field layout tabs’ settings buttons could become inaccessible if the tab name began with a long word without any hyphens. (#7298)
- 🛠 Fixed a bug where Dropdown, Multi-select, and Number fields’ inputs weren’t getting
id
attributes that matched their labels’for
attributes. (#7319) - 🛠 Fixed a bug where week day and month names were being translated based on the current formatting locale, rather than the current language. (#7312)
- 🛠 Fixed a bug where Matrix blocks weren’t getting validated when autosaving entry drafts.
- 🛠 Fixed an error that could occur when saving elements with Matrix fields, if there were any custom fields whose handles conflicted with
craft\elements\db\ElementQuery
getter methods, such ascriteria
. (#7335) - 🛠 Fixed a bug where it wasn’t possible to upload some file types via GraphQL mutations. (#7327)
- 🛠 Fixed an error that could occur on console requests if Craft didn’t think it was installed yet. (#7309)
- 🛠 Fixed a bug where clearing control panel resources would delete the
.gitignore
file as well. (#7361) - 🛠 Fixed a bug where user registration forms could get a “Username cannot be blank” error even if the
useEmailAsUsername
config setting was enabled. (#7357) - 🛠 Fixed a bug where
craft\elements\Asset::getSrcset()
could return the wrong value if the asset had a named transform set on it. (#7352) - 🛠 Fixed a bug where the “All” checkbox label was getting HTML-encoded when using
Craft.ui.createCheckboxSelect()
. - 🛠 Fixed a bug where
Craft.formatNumber()
could format numbers based on the user’s preferred language rather than the preferred formatting locale.
-
v3.5.17 Changes
December 15, 2020➕ Added
- Edit Section and Edit Entry Type pages now have a “Save and continue editing” Save menu option, and the Ctrl/Command + S keyboard shortcut is now assigned to that. (#2872)
- ➕ Added the
fullSchema
option to thegraphql/dump-schema
andgraphql/print-schema
commands. (#7226)
🔄 Changed
- 👌 Improved accessibility throughout the control panel. (#7231)
- The Username, First Name, Last Name, Email, and New Password fields on Edit User pages now prevent LastPass from autofilling them. (#7177)
- Field layout elements’ settings HUDs now automatically set the focus on the first text input when opened. (#7175)
- Field instructions within the details pane are now replaced with info icons. (#7180)
- 💻 Panes with
overflow: auto
and no focusable content within them now havetabindex="0"
attributes, so their content can be keyboard-scrollable on Chromium and WebKit-based browsers. (#7236) - The
generateTransformsBeforePageLoad
config setting is now automatically enabled when rendering emails. (#7267) - It’s now possible to pass arrays to relational fields’ element query params which begin with
':empty:'
, to fetch elements where the relational field is either empty or has a certain value. (#7256) users/set-password
requests now include astatus
key in JSON responses, set to the user’s status. (#7239)
🛠 Fixed
- 🛠 Fixed a bug where
craft\base\Field::isFresh()
could return the wrong result. - 🛠 Fixed a bug where required Checkboxes, Dropdown, Multi-select, and Radio Button fields within Matrix blocks could cause validation errors. (#7205)
- 🛠 Fixed a bug where assets could be uploaded to a folder named after the primary site rather than the selected site, when uploaded via an Assets field in a global set, if the field had a dynamic upload path that contained
{site.handle}
. (#7213) - 🛠 Fixed a PHP error that could occur when running functional tests. (#7207)
- 🛠 Fixed a bug where the plugin installer wasn’t always handling plugins’ post-install redirects correctly. (#7204)
- 🛠 Fixed a bug where the
siteName
andsiteUrl
config settings could get hard-coded into the project config when the project config was rebuilt. (#7208) - 🛠 Fixed a bug where sites’ Name setting would show the
siteName
config setting value rather than the stored value, if it was set. - 🛠 Fixed a bug where
craft\elements\Asset::getSrcset()
would not respect some of the properties of the transform set on the asset. (#7193) - 🛠 Fixed a bug where WebP images were not transformable, even if the server was configured for it. (#7170)
- 🛠 Fixed a bug where the image editor could save an image incorrectly, if the
upscaleImages
config setting was set tofalse
. - 🛠 Fixed a bug where it wasn’t possible to install a plugin if it had a row in the
plugins
table, but it wasn’t in the project config. (#7229) - 🛠 Fixed a bug where Craft wasn’t always respecting plugins’
minVersionRequired
. (#7191) - 🛠 Fixed a bug where
craft\elements\db\ElementQuery::getCriteria()
wasn’t including custom field criteria values. (#7225) - 🛠 Fixed a MySQL deadlock error that could occur when running background jobs. (#7179)
- 🛠 Fixed a bug where Craft was responding to set-password requests for pending users as if they had been activated, even if something prevented them from being activated. (#7239)
- 🛠 Fixed a bug where the
|attr
Twig filter wasn’t removingclass
andstyle
attributes when they were set tofalse
ornull
. (#7234) - 🛠 Fixed a bug where eager-loading would load incorrect elements in some cases when using GraphQL API.
- 🛠 Fixed a bug where select inputs could bleed out of their container divs. (#7183)
- 🛠 Fixed a bug where Edit Entry pages would show “Save and add another” and “Save as a new entry” action options for users who didn’t have permission to create new entries in the section. (#7232)
- 🛠 Fixed a bug where some control panel SVG icons had conflicting IDs. (#7247)
- 🛠 Fixed a bug where it wasn’t possible to set multiple options on Checkboxes and Multi-select fields when saving elements via GraphQL mutations. (#7197)
- 🛠 Fixed a bug where users were able to delete entries if they had the “Delete other authors’ entries” permission but not the “Delete entries” permission. (#7233)
- 🛠 Fixed a bug where Checkboxes, Dropdown, Multi-select, and Radio Buttons fields’ values weren’t getting translated on element indexes. (#7271)
-
v3.5.17.1 Changes
December 17, 2020🛠 Fixed
- 🛠 Fixed a bug where search keywords weren’t getting normalized based on the selected site when searching for elements in the control panel. (#3145)
- 🛠 Fixed a bug where element indexes’ custom header column headings weren’t translatable. (#7272)
- 🛠 Fixed a bug where the
gc
command would delete all soft-deleted items when--interactive=0
was passed. (#7280) - 🛠 Fixed an error that occurred when uploading a file directly to an Assets field within a new Matrix block. (#7284)