All Versions
336
Latest Version
Avg Release Cycle
7 days
Latest Release
507 days ago

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 to null, 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

    • ๐Ÿ›  Fixed a bug where Edit Entry pages would get a โ€œCreate a new entryโ€ heading when editing an existing draft entry.
    • ๐Ÿ›  Fixed a bug where user impersonation URLs only worked for active users. (#7475)
    • ๐Ÿ›  Fixed a bug where craft\elements\db\ElementQuery::draftOf() didnโ€™t accept passing in '*'. (#7470)
  • 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(), and stderr() 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.
  • 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 via composer create-project craftcms/craft can now initiate the setup process automatically, if using Composer 2.
    • craft\console\Controller::$interactive is now set to false automatically for non-interactive shells.

    ๐Ÿ›  Fixed

    • ๐Ÿ›  Fixed a bug where the migrate/all command wasnโ€™t working when executed from a Composer script in a non-interactive shell, unless --interactive=0 was explicitly passed. (#7381)
    • ๐Ÿ›  Fixed an error that occurred when saving a Categories field with a branch limit. (#7449)
  • 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 and users/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, and relatedToUsers 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 return true 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 and restore commands to db/backup and db/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, and timestamp 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 in config/app.php, rather than the entire log component config.
    • The _includes/forms/field.html control panel template and craft\helpers\Cp::fieldHtml() now accept a fieldset variable/config key, which can be set to true 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 and craft\helpers\Cp::fieldHtml() now accept an instructionsPosition 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 and craft\helpers\Cp::fieldHtml() now accept a fieldLabel variable/config key, which will take precedence over label.
    • The checkboxField macro within the _includes/forms.html control panel template now returns a <fieldset> if a fieldLabel config key was passed.
    • ๐Ÿ’ป craft\base\ElementExporterInterface::export() can now return raw response data, a callable, or a resource, if isFormattable() returns false. 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(), and getIndexName() 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 with template:.
    • ๐Ÿฑ craft\helpers\Gql::isSchemaAwareOf(), extractAllowedEntitiesFromSchema(), canSchema(), extractEntityAllowedActions(), canMutateEntries(), canMutateTags(), canMutateGlobalSets(), canMutateCategories(), canMutateAssets(), canQueryEntries(), canQueryAssets(), canQueryCategories(), canQueryTags(), canQueryGlobalSets(), and canQueryUsers() 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 to false 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, and trace 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 and restore 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() and getDateModified() 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 or BaseContentFixture 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(), and getIndexName() 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-encode DateTime 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 includes htm or html.
  • 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 or aria-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 via Craft::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 as criteria. (#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 the graphql/dump-schema and graphql/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 have tabindex="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 a status 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 and siteUrl 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 to false.
    • ๐Ÿ›  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 removing class and style attributes when they were set to false or null. (#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)