Skip to content

Releases: craftcms/cms

6.0.0-alpha.1

06 May 18:48
6.0.0-alpha.1
799dd2c

Choose a tag to compare

6.0.0-alpha.1 Pre-release
Pre-release

Development

  • Reference tags now support fallback values when no attribute is specified. (#17688)
  • Deprecated support for categories, global sets, and tags. (#18009)

Extensibility

  • Added CraftCms\Cms\Support\Arr.
  • Added CraftCms\Cms\Support\DateTimeHelper.
  • Added CraftCms\Cms\Support\File.
  • Added CraftCms\Cms\Support\Facades\Path.
  • Added CraftCms\Cms\Support\Facades\Markdown.
  • Added CraftCms\Cms\Support\Path.
  • Added CraftCms\Cms\Support\Str.
  • Added CraftCms\Cms\Support\URL.
  • Added CraftCms\Cms\action_url(), CraftCms\Cms\cp_url(), and CraftCms\Cms\site_url() helper functions.
  • craft\services\Elements::stopCollectingCacheInfo() no longer sets the returned duration to the cacheDuration config setting if a duration wasn’t explicitly declared. (#16796)
  • Deprecated craft\helpers\ArrayHelper. CraftCms\Cms\Support\Arr should be used instead.
  • Deprecated craft\helpers\ConfigHelper. CraftCms\Cms\Support\Config should be used instead.
  • Deprecated craft\helpers\DateTimeHelper. CraftCms\Cms\Support\DateTimeHelper should be used instead.
  • Deprecated craft\helpers\Diff. CraftCms\Cms\Support\Diff should be used instead.
  • Deprecated craft\helpers\ElementHelper. CraftCms\Cms\Element\ElementHelper should be used for core element helper APIs, CraftCms\Cms\Element\ElementSources for source lookup, CraftCms\Cms\Element\ElementAttributeRenderer for attribute rendering, CraftCms\Cms\Element\Drafts for provisional draft helpers, CraftCms\Cms\Field\Enums\TranslationMethod for translation helpers, and Illuminate\Support\Facades\Context with CraftCms\Cms\Element\Drafts::CONTEXT_PREVIEW_USER_ID for preview-user context.
  • Deprecated craft\helpers\Html. CraftCms\Cms\Support\Html should be used instead.
  • Deprecated craft\helpers\HtmlPurifier. CraftCms\Cms\Support\HtmlSanitizer\HtmlSanitizers should be used for HTML sanitization, and CraftCms\Cms\Support\Str should be used for UTF-8 cleanup instead.
  • Deprecated craft\helpers\HtmlPurifier::process(). CraftCms\Cms\Support\HtmlSanitizer\HtmlSanitizers::sanitize() should be used instead.
  • Deprecated craft\helpers\HtmlPurifier::cleanUtf8().
  • Deprecated craft\helpers\HtmlPurifier::convertToUtf8(). CraftCms\Cms\Support\Str::convertToUtf8() should be used instead.
  • Deprecated craft\helpers\HtmlPurifier::configure(). CraftCms\Cms\Support\HtmlSanitizer\HtmlSanitizers::defaults() or a custom sanitizer registration should be used instead.
  • Deprecated config/craft/htmlpurifier/*.json sanitizer config files. Sanitizers should be registered on CraftCms\Cms\Support\HtmlSanitizer\HtmlSanitizers instead.
  • Deprecated craft\services\Path. CraftCms\Cms\Support\Path should be used instead.
  • Deprecated craft\helpers\SessionHelper. Illuminate\Support\Facades\Session should be used instead.
  • Deprecated craft\helpers\Sequence. CraftCms\Cms\Support\Sequence should be used instead.
  • Deprecated craft\helpers\StringHelper. CraftCms\Cms\Support\Str should be used instead.
  • Deprecated Craft::$app->getConfig()->getGeneral(). CraftCms\Cms\Config\GeneralConfig should be used instead. This can be used through dependency injection or through app(CraftCms\Cms\Config\GeneralConfig::class).
  • Deprecated craft.app.config.general in Twig. app.config.craft.general should be used instead.
  • Deprecated craft\helpers\App::env(), CraftCms\Cms\Support\Env::get() should be used instead.
  • Deprecated craft\markdown\Markdown, craft\markdown\GithubMarkdown, craft\markdown\MarkdownExtra, and craft\markdown\PreEncodedMarkdown. CraftCms\Cms\Support\Facades\Markdown should be used instead.
  • Deprecated craft\helpers\DateRange. CraftCms\Cms\Shared\Enums\DateRangeType and CraftCms\Cms\Shared\Enums\DateRangePeriod should be used instead.
  • Deprecated craft\helpers\Cp. One of the following classes should be used instead:
    • CraftCms\Cms\Cp\Alerts
    • CraftCms\Cms\Cp\FormFields
    • CraftCms\Cms\Cp\Html\ContentHtml
    • CraftCms\Cms\Cp\Html\ElementHtml
    • CraftCms\Cms\Cp\Html\ElementIndexHtml
    • CraftCms\Cms\Cp\Html\MenuHtml
    • CraftCms\Cms\Cp\Html\PreviewHtml
    • CraftCms\Cms\Cp\Html\StatusHtml
    • CraftCms\Cms\Cp\Icons
    • CraftCms\Cms\Cp\RequestedSite
  • Deprecated craft\helpers\Json. CraftCms\Cms\Support\Json should be used instead.
  • Deprecated craft\services\Composer. CraftCms\Cms\Support\Composer should be used instead.
  • Deprecated craft\enums\Color. CraftCms\Cms\Support\Enums\Color should be used instead.
  • Deprecated craft\enums\AttributeStatus. CraftCms\Cms\Element\Enums\AttributeStatus should be used instead.
  • Deprecated craft\enums\CmsEdition. CraftCms\Cms\Edition should be used instead.
  • Deprecated craft\enums\ElementIndexViewMode. CraftCms\Cms\Element\Enums\ElementIndexViewMode should be used instead.
  • Deprecated craft\enums\LicenseKeyStatus. CraftCms\Cms\Support\Enums\LicenseKeyStatus should be used instead.
  • Deprecated craft\enums\MenuItemType. CraftCms\Cms\Element\Enums\MenuItemType should be used instead.
  • Deprecated craft\enums\PropagationMethod. CraftCms\Cms\Element\Enums\PropagationMethod should be used instead.
  • Deprecated craft\enums\TimePeriod. CraftCms\Cms\Support\Enums\TimePeriod should be used instead.
  • Deprecated craft\services\Gc. CraftCms\Cms\GarbageCollection\GarbageCollection should be used instead.
  • Deprecated craft\services\Api. CraftCms\Cms\Support\Api should be used instead.
  • Deprecated craft\helpers\Api. CraftCms\Cms\Support\Api should be used instead.
  • Deprecated craft\nameparsing\CustomLanguage. CraftCms\Cms\Shared\Nameparser\CustomLanguage should be used instead.
  • Deprecated craft\helpers\App. The following classes/methods should be used instead:
    • General helpers

    • App:devMode() -> app()->hasDebugModeEnabled()
    • App:parseBooleanEnv() --> \CraftCms\Cms\Support\Env::parseBoolean()
    • App:normalizeValue() --> \CraftCms\Cms\normalizeValue()
    • App:maxPowerCaptain() --> \CraftCms\Cms\maxPowerCaptain()
    • App:silence() --> \CraftCms\Cms\silence()
    • App:backtrace() --> \CraftCms\Cms\backtraceAsString()
    • Env

    • App:env() --> \CraftCms\Cms\Support\Env::get()
    • App:parseEnv() --> \CraftCms\Cms\Support\Env::parse()
    • PHP

    • App:phpVersion() --> \CraftCms\Cms\Support\PHP::version()
    • App:extensionVersion() --> \CraftCms\Cms\Support\PHP::extensionVersion()
    • App:phpConfigValueAsBool() --> \CraftCms\Cms\Support\PHP::configValueAsBool()
    • App:phpConfigValueInBytes() --> \CraftCms\Cms\Support\PHP::configValueInBytes()
    • App:phpSizeToBytes() --> \CraftCms\Cms\Support\PHP::sizeToBytes()
    • App:phpConfigValueAsPaths() --> \CraftCms\Cms\Support\PHP::configValueAsPaths()
    • App:normalizePhpPaths() --> \CraftCms\Cms\Support\PHP::normalizePaths()
    • App:isPathAllowed() --> \CraftCms\Cms\Support\PHP::isPathAllowed()
    • App:phpExecutable() --> \CraftCms\Cms\Support\PHP::executable()
    • App:testIniSet() --> \CraftCms\Cms\Support\PHP::testIniSet()
    • App:checkForValidIconv() --> \CraftCms\Cms\Support\PHP::checkForValidIconv()
    • App:supportsIdn() --> \CraftCms\Cms\Support\PHP::supportsIdn()
    • License

    • App:licenseKey() --> app(\CraftCms\Cms\License\License::class)->key()
    • App:licensingIssues() --> app(\CraftCms\Cms\License\License::class)->issues()
    • App:licenseShunCookieName() --> app(\CraftCms\Cms\License\License::class)->shunCookieName()
    • App:licensingIssuesHash() --> app(\CraftCms\Cms\License\License::class)->issuesHash()
  • Deprecated Craft::createGuzzleClient(). CraftCms\Cms\Support\Facades\Http::create() should be used instead.
  • Deprecated craft\helpers\FileHelper. CraftCms\Cms\Support\File should be used instead.
  • Deprecated craft\helpers\UrlHelper. CraftCms\Cms\Support\URL should be used instead.

Deprecator

  • Added CraftCms\Cms\Support\Facades\Deprecator.
  • Added CraftCms\Cms\Deprecator\Commands\ClearDeprecations.
  • Removed craft\console\controllers\ClearDeprecationsController.php.
  • Deprecated craft\services\Deprecator. CraftCms\Cms\Deprecator\Deprecator should be used instead.
  • Deprecated craft\models\DeprecationError. CraftCms\Cms\Deprecator\Models\DeprecationError should be used instead.
  • Deprecated craft\errors\DeprecationException. CraftCms\Cms\Deprecator\Exceptions\DeprecationException should be used instead.

Console commands

  • Added php craft twig:cache - Precompile Twig views
  • Added php craft twig:clear - Clear precompiled Twig views
  • craft\console\controllers\EnvController has been removed in favor of the classes below:
    • CraftCms\Cms\Console\Commands\Env\EnvRemoveCommand => php craft env:remove
    • CraftCms\Cms\Console\Commands\Env\EnvSetCommand => php craft env:set
    • CraftCms\Cms\Console\Commands\Env\EnvShowCommand => php craft env:show
  • craft\console\controllers\IndexAssetsController has been removed in favor of the classes below:
    • CraftCms\Cms\Asset\Commands\CleanupAssetIndexesCommand => php craft index-assets:cleanup
    • CraftCms\Cms\Asset\Commands\IndexAllAssetsCommand => php craft index-assets:all
    • CraftCms\Cms\Asset\Commands\IndexOneAssetCommand => php craft index-assets:one
  • craft\console\controllers\BaseSystemStatusController, craft\console\controllers\OnController, and craft\console\controllers\OffController have been removed in favor of the classes below:
    • CraftCms\Cms\Console\Commands\System\OnCommand => php craft on
    • `CraftCms\Cms\Cons...
Read more

5.9.22

29 Apr 17:14
5.9.22
516d9f4

Choose a tag to compare

  • Fixed a bug where dependencies required by composer.json were getting updated when installing/updating plugins. (#18755)
  • Fixed a bug where element thumbnails weren’t always getting loaded when they became visible.
  • Fixed a bug where two-step verification setup was working even if the user failed to re-authenticate, if they already had an elevated session. (#18753)
  • Fixed a bug where changes to Table fields’ “Table Columns” settings would cause existing data to be lost, if the “Static Rows” setting was enabled. (#18764)
  • Fixed a moderate-severity authorization bypass vulnerability. (GHSA-7h62-6v23-v8fm)

4.17.15

29 Apr 17:11
4.17.15
609a87b

Choose a tag to compare

  • Fixed a bug where dependencies required by composer.json were getting updated when installing/updating plugins. (#18755)
  • Fixed a moderate-severity authorization bypass vulnerability. (GHSA-7h62-6v23-v8fm)

5.9.21

23 Apr 17:30
5.9.21
887cc87

Choose a tag to compare

  • Fixed a bug where entries weren’t redirecting back to their section’s page’s URL by default.
  • Fixed a bug where the resourceBasePath and resourceBaseUrl config settings weren’t being respected for console requests. (#18685)
  • Fixed a bug where eager-loadable GraphQL fields could be populated with the wrong field’s results, if they followed a fragment with a *Interface type condition. (#18708)
  • Fixed a bug where users with permission to edit entries, but not view peer entries in a section, weren’t allowed to edit the authors for entries in the section. (#18717)
  • Fixed a bug where reference tags weren’t working with generated fields. (#18692)
  • Fixed errors that could occur when applying project config changes. (#18720)
  • Fixed a bug where it wasn’t always possible to sign into a user account that had the same email address as an inactive user. (#18723)
  • Fixed a bug where relational fields’ element query results weren’t always limited to the selected relations if the id param was overridden. (#15570)
  • Fixed an error that could occur when executing a queue job. (#18739)
  • Fixed high-severity authorization bypass vulnerabilities. (GHSA-x5m4-g2cq-52pq, GHSA-3w32-23wj-rxg3, GHSA-qh45-9g5p-m2v4)
  • Fixed moderate-severity permission escalation vulnerabilities. (GHSA-qq2c-2q8j-jh27, GHSA-43cq-c2gq-pfpw)

4.17.14

23 Apr 17:27
4.17.14
a8eda73

Choose a tag to compare

  • Fixed high-severity authorization bypass vulnerabilities. (GHSA-3w32-23wj-rxg3, GHSA-qh45-9g5p-m2v4)

5.9.20

14 Apr 15:49
5.9.20
3156467

Choose a tag to compare

  • Fixed an issue that prevented Craft from being installed. (#18700)
  • Fixed a bug where nested element cards weren’t showing validation errors. (#18690)
  • Fixed a bug where read-only Matrix fields in Index mode weren’t respecting the Default Table Columns setting. (#18684)
  • Fixed a bug where nested entries could be lost when reverting content from a revision. (#18691)
  • Fixed a bug where nested entries weren’t getting loaded when previewing a revision, if queried with eagerly(). (#18693)

4.17.13.1

14 Apr 15:46
4.17.13.1
ee0815f

Choose a tag to compare

  • Fixed an issue that prevented Craft from being installed. (#18700)

5.9.19

07 Apr 17:52
5.9.19
0a5c4b8

Choose a tag to compare

  • Most classes can now be instantiated via the create() Twig function. (#18376)
  • Added craft\helpers\ProjectConfig::pathDepth().
  • craft\services\Fields::deleteLayout() and deleteLayoutById() now have $hardDelete arguments.
  • Deprecated craft\services\ProjectConfig::getPendingChangeSummary().
  • Fixed a bug where element search query caches weren’t getting invalidated when elements’ search keywords were indexed. (#18275)
  • Fixed a bug where disabled sites weren’t getting loaded when running Codeception tests. (#18638)
  • Fixed a bug where custom entry index page icons weren’t getting stored properly if the source name contained periods. (#18631)
  • Fixed a bug where copying nested entries on a revision wasn’t working. (#18648)
  • Fixed a bug where Matrix fields in Blocks view could have “Duplicate selected blocks” and “Delete selected blocks” field-level actions. (#18652)
  • Fixed a bug where the submit button within Live Preview was labelled “Save” rather than “Create entry” when editing an unpublished draft. (#18579)
  • Fixed a bug where recent changes could be lost when creating an element or applying a draft, if there were validation errors. (#18657)
  • Fixed a bug where nested elements would get soft-deleted after running the entrify/global-set command. (#18650)
  • Fixed a bug where the “Max Authors” section setting was visible for Single sections.
  • Fixed an exception that would be thrown when attempting to access undefined keys within craft\fields\data\JsonData objects from Twig. (#18656)
  • Fixed a bug where address cards could be missing their address preview. (#18632)
  • Fixed a bug where the Save button’s spinner wouldn’t appear right away when saving a nested element in a slideout. (#18664)
  • Fixed a bug where the server check script wasn’t treating GD as a requirement. (craftcms/server-check#30)
  • Fixed a bug where tooltips could be instantiated multiple times within Link fields. (#18666)
  • Fixed a bug where localized nested element content could be overwritten when the owner element was propagated to a new site. (#18659)

4.17.13

07 Apr 17:51
4.17.13
964fb38

Choose a tag to compare

  • Most classes can now be instantiated via the create() Twig function. (#18376)
  • Fixed a bug where element search query caches weren’t getting invalidated when elements’ search keywords were indexed. (#18275)

5.9.18

26 Mar 22:23
5.9.18
c14474f

Choose a tag to compare

  • Improved error logging when logging in with passkeys. (#18627)
  • Added craft\controllers\ElementIndexesController::$fieldLayouts.
  • craft\services\ElementSources::getTableAttributes() now has a $fieldLayouts argument.
  • Fixed a bug where GraphQL results were getting cached even if they contained transform generation URLs. (#18581)
  • Fixed a bug where aria-activedescendant, aria-flowto, and aria-owns attributes weren’t getting namespaced by {% namespace %} tags. (#18577)
  • Fixed a bug where sites with missing enabled values were being treated as enabled. (#18572)
  • Fixed a bug where GraphQL fields within fragments weren’t getting eager-loaded if the fragment’s type condition referenced an interface (e.g. on EntryInterface) rather than a specific type name. (#18588)
  • Fixed a bug where relation fields were getting marked as translatable if they used a custom translation method, even if the rendered translation key was blank. (#18580)
  • Fixed a bug where section and field chips in the “Used by” column of the Entry Types index page weren’t getting hyperlinked. (#18589)
  • Fixed a bug where exceptions thrown when sending emails weren’t getting handled properly. (#18597)
  • Fixed a bug where unordered lists weren’t getting styled correctly within Tip/Warning/Markdown field layout UI elements. (#18598)
  • Fixed an error that could occur when upgrading to Craft 5. (#18576)
  • Fixed a bug where nested Matrix entries’ Title fields were getting validation errors if blank, even if the nested entry was disabled. (#18611)
  • Fixed an infinite recursion bug that could occur if the loginPath, logoutPath, setPasswordPath, or verifyEmailPath config settings were set to a callable that called the sites service. (#18605)
  • Fixed a bug where Matrix fields in Index view mode could be missing custom field columns. (#18590)
  • Fixed a JavaScript error that could occur when opening a modal. (#18612)
  • Fixed a bug where element chips and cards weren’t getting refreshed when a provisional draft’s changes were discarded in a different tab.
  • Fixed a bug where element attributes weren’t always updating when content changes were made.
  • Fixed a bug where successive edits to nested elements were forgotten. (#18624)
  • Fixed a bug where nested elements weren’t getting duplicated when a new site was added to the owner element. (#18621)
  • Fixed a bug where nested entries were getting assigned new IDs if they were edited multiple times for the same owner element draft. (#18461)
  • Fixed a SQL error that could occur when editing an element draft that had upstream changes. (#18626)
  • Fixed a bug where custom sources’ labels weren’t being translated within the document title. (#18629)
  • Fixed moderate-severity information disclosure vulnerabilities. (GHSA-gj2p-p9m4-c8gw, GHSA-33m5-hqp9-97pw)
  • Fixed a moderate-severity RCE vulnerability. (GHSA-qrgm-p9w5-rrfw)