a:2:{i:0;a:2:{s:3:"cms";a:7:{s:6:"status";s:7:"expired";s:8:"releases";a:85:{i:0;a:4:{s:7:"version";s:6:"4.14.3";s:8:"critical";b:0;s:5:"notes";s:607:"
- Added
craft\db\ExpressionBuilder
.
- Added
craft\db\ExpressionInterface
.
- Added compatibility with codeception/module-yii2 1.1.6+. (#16580)
- Fixed a bug where
craft\db\QueryBatcher::getSlice()
wasn’t using the database connection passed to the class constructor. (#16579)
- Fixed a bug where collapsed elements within element indexes in structure view weren’t showing their expand/collapse toggles.
";s:4:"date";s:19:"2025-01-29T00:00:00";}i:1;a:4:{s:7:"version";s:6:"4.14.2";s:8:"critical";b:0;s:5:"notes";s:1325:"
- Fixed a bug where Entries fields’ entry select modals could show expand/collapse toggles for Structure sections, for elements that didn’t have any selectable descendants. (#16506)
- Fixed a bug where changes to custom fields within Matrix blocks weren’t getting merged into existing drafts for the same owner element. (#16519)
- Fixed a bug where native fields (e.g. Title) were showing changed statuses when viewing revisions, if they had been updated since the time the revision was created.
- Fixed a bug where eager-loading element queries could create an excessive amount of cache invalidation tags.
- Fixed a bug where it was possible to enable elements for new sites with validation errors. (#16505)
- Fixed a bug where setting
transaction: true
in the Codeception configuration wasn’t rolling back database DML changes after a test. (#16546)
- Fixed a bug where ʻokina characters weren’t being removed in auto-generated slugs. (#16548)
";s:4:"date";s:19:"2025-01-28T00:00:00";}i:2;a:4:{s:7:"version";s:6:"4.14.1";s:8:"critical";b:0;s:5:"notes";s:177:"
- Fixed a bug where all multi-byte characters were getting stripped out of search indexes. (#16457)
";s:4:"date";s:19:"2025-01-22T00:00:00";}i:3;a:4:{s:7:"version";s:8:"4.14.0.2";s:8:"critical";b:0;s:5:"notes";s:156:"
- Fixed an error that occurred when creating a new Structure section. (#16476)
";s:4:"date";s:19:"2025-01-21T00:00:00";}i:4;a:4:{s:7:"version";s:8:"4.14.0.1";s:8:"critical";b:0;s:5:"notes";s:172:"
- Fixed an error that occurred when referencing a single section entry by its handle. (#16474)
";s:4:"date";s:19:"2025-01-21T00:00:00";}i:5;a:4:{s:7:"version";s:6:"4.14.0";s:8:"critical";b:0;s:5:"notes";s:3968:"Content Management
- The global sidebar no longer shows “Failed” for queue jobs, for users that don’t have access to the Queue Manager. (#16184)
Administration
- Added the
elements/delete-all-of-type
command. (#16423)
- Added the
utils/delete-empty-volume-folders
command. (#16388)
- The Queue Manager utility now shows jobs’ class names. (#16228)
Development
- Added the
primarySite
global Twig variable. (#16370)
- The
duration
Twig filter now has a language
argument. (#16332)
- Added support for specifying the current site via an
X-Craft-Site
header set to a site ID or handle. (#16367)
- Deprecated the
ucfirst
Twig filter. capitalize
should be used instead.
Extensibility
- Added
craft\helpers\Image::EXIF_IFD0_ROTATE_0_MIRRORED
.
- Added
craft\helpers\Image::EXIF_IFD0_ROTATE_0
.
- Added
craft\helpers\Image::EXIF_IFD0_ROTATE_180_MIRRORED
.
- Added
craft\helpers\Image::EXIF_IFD0_ROTATE_270_MIRRORED
.
- Added
craft\helpers\Image::EXIF_IFD0_ROTATE_90_MIRRORED
.
- Added
craft\models\AssetIndexingSession::$forceStop
. (#16435)
GuzzleHttp\Client
is now instantiated via Craft::createObject()
. (#16366)
craft\helpers\DateTimeHelper::humanDuration()
now has a $language
argument. (#16332)
System
- Database rows with foreign keys referencing nonexistent rows are now deleted via garbage collection.
- Pages which contain image transform generation URLs now set no-cache headers. (#16195)
- Action requests (such as
actions/app/health-check
) now send no-cache headers by default. (#16364)
- Image cleansing now preserves the original image quality, if known.
- Fixed a bug where
craft\config\GeneralConfig::safeMode()
set Safe Mode to false
by default.
- Fixed a bug where Craft wasn’t auto-rotating or flipping images uploaded with a mirrored EXIF orientation.
- Fixed a bug where asset indexing could get stuck in an infinite loop if the index data was deleted. (#16435)
- Updated Twig to 3.15. (#16207)
- Fixed an error that could occur when setting
relatedTo*
GraphQL arguments to null
. (#16433)
- Fixed a bug where old structure data wasn’t getting soft-deleted when a section was assigned a new structure UUID when applying project config changes. (#16450)
- Fixed a bug where
craft\events\DefineAssetUrlEvent::$transform
wasn’t always defined for assets’ EVENT_BEFORE_DEFINE_URL
and EVENT_DEFINE_URL
events. (#16464)
";s:4:"date";s:19:"2025-01-21T00:00:00";}i:6;a:4:{s:7:"version";s:7:"4.13.10";s:8:"critical";b:0;s:5:"notes";s:630:"
- Fixed a bug where the control panel could display a notice about the Craft CMS license belonging to a different domain, even when accessing the control panel from the correct domain. (#16396)
- Fixed a bug where Unicode special characters weren’t getting stripped out of search keywords. (#16430)
- Fixed an error that could occur when setting
relatedTo*
GraphQL arguments to null
. (#16431)
";s:4:"date";s:19:"2025-01-14T00:00:00";}i:7;a:4:{s:7:"version";s:6:"4.13.9";s:8:"critical";b:0;s:5:"notes";s:556:"
- Fixed a bug where custom fields could cause validation errors when running the
users/create
command.
- Fixed a bug where deleting a volume folder wasn’t fully deleting asset data in descendant folders.
- Fixed a bug where
ancestors
, children
, descendants
, and parent
eager-loading wasn’t working on some environments. (#16381, #16382)
";s:4:"date";s:19:"2025-01-06T00:00:00";}i:8;a:4:{s:7:"version";s:6:"4.13.8";s:8:"critical";b:0;s:5:"notes";s:774:"
- Fixed a bug where asset edit page URLs contained spaces if the asset filename contained spaces. (#15236)
- Fixed a bug where custom fields were getting included in rendered field layout forms, even if their
getInputHtml()
method returned an empty string.
- Fixed a bug where the password input on the Set Password page wasn’t including the “Show” button.
- Fixed a SQL error that could occur if an element was saved with a title longer than 255 characters.
- Fixed a bug where some UI messages began with a lowercase letter in some languages. (#16354)
- Fixed an RCE vulnerability.
";s:4:"date";s:19:"2025-01-02T00:00:00";}i:9;a:4:{s:7:"version";s:6:"4.13.7";s:8:"critical";b:0;s:5:"notes";s:787:"
- Fixed a bug where elements’
getPrev()
and getNext()
methods could cause duplicate queries. (#16329)
- Fixed a bug where assets that were shorter than the preview thumb container weren’t getting vertically centered within it.
- Fixed a bug where it was possible to set a focal point on SVGs, even though focal points on SVGs aren’t supported. (#16258)
- Fixed a bug where
ancestors
, children
, descendants
, and parent
eager-loading wasn’t working for previewed elements. (#16327)
";s:4:"date";s:19:"2024-12-17T00:00:00";}i:10;a:4:{s:7:"version";s:6:"4.13.6";s:8:"critical";b:0;s:5:"notes";s:558:"
- Fixed a bug where blank user group descriptions weren’t getting omitted from project config data. (#16272)
- Fixed a bug where pressing Return when a color text input within an editable table was focused was submitting the form rather than moving focus to the next row.
- Fixed a JavaScript error that occurred on the Plugins index page, if there were any missing plugins associated with the Craft CMS license and no plugins were Composer-installed yet.
";s:4:"date";s:19:"2024-12-10T00:00:00";}i:11;a:4:{s:7:"version";s:6:"4.13.5";s:8:"critical";b:0;s:5:"notes";s:395:"
- Fixed a bug where asset, category, and entry sources defined by the
EVENT_REGISTER_SOURCES
event didn’t have any custom fields available to them, unless the EVENT_REGISTER_FIELD_LAYOUTS
event was also used to define the available field layouts for the event-defined source. (#16256)
";s:4:"date";s:19:"2024-12-03T00:00:00";}i:12;a:4:{s:7:"version";s:6:"4.13.4";s:8:"critical";b:0;s:5:"notes";s:1325:"
- Reduced the likelihood of a deadlock error occurring when updating search indexes. (#15221)
- The PHP Info utility is no longer shown in environments where the
phpinfo()
function is disabled. (#16229)
- Fixed an error that could occur when duplicating an element with an Assets field that had a dynamic subpath. (#16214)
- Fixed a bug where renaming asset folders could move them to the webroot on Windows. (#16215)
- Fixed a bug where Matrix fields’ content tables weren’t getting renamed properly when applying project config changes. (#16227)
- Fixed a bug where utilities’
isSelectable()
methods weren’t being respected.
- Fixed an exception that could be thrown when displaying entry indexes, if any
EVENT_INIT
or EVENT_DEFINE_BEHAVIORS
entry event handlers were calling getSection()
or getType()
on the entry. (#16254)
";s:4:"date";s:19:"2024-12-02T00:00:00";}i:13;a:4:{s:7:"version";s:6:"4.13.3";s:8:"critical";b:0;s:5:"notes";s:973:"
- Element indexes now sort by ID by default, for sources that don’t define a default sort option.
- Fixed a bug where element indexes were sorting by the first sortable attribute alphabetically by default, rather than the first sortable attribute defined by the element type.
- Fixed a bug where bulk asset actions where shown as available when subfolders were selected, when they shouldn’t have. (#16151)
- Fixed a bug where
craft\events\ApplyFieldSaveEvent::$field
wasn’t being set consistently by craft\services\Fields::EVENT_BEFORE_APPLY_FIELD_SAVE
. (#16156)
- Fixed a bug where the address field layout’s project config data wasn’t getting recreated when running
project-config/rebuild
. (#16189)
";s:4:"date";s:19:"2024-11-22T00:00:00";}i:14;a:4:{s:7:"version";s:6:"4.13.2";s:8:"critical";b:1;s:5:"notes";s:251:"
- Fixed an error that could occur if an invalid folder ID was passed to
craft\services\Assets::deleteFoldersByIds()
. (#16147)
- Fixed an RCE vulnerability.
";s:4:"date";s:19:"2024-11-19T00:00:00";}i:15;a:4:{s:7:"version";s:8:"4.13.1.1";s:8:"critical";b:0;s:5:"notes";s:107:"
";s:4:"date";s:19:"2024-11-18T00:00:00";}i:16;a:4:{s:7:"version";s:6:"4.13.1";s:8:"critical";b:0;s:5:"notes";s:500:"
- Fixed a JavaScript error that could occur on element edit pages. (#16055)
- Fixed a Twig deprecation error. (#16107)
- Fixed a bug where
craft\services\Structures::fillGapsInElements()
wasn’t working properly if the elements weren’t passed in hierarchical order. (#16085)
";s:4:"date";s:19:"2024-11-18T00:00:00";}i:17;a:4:{s:7:"version";s:6:"4.13.0";s:8:"critical";b:0;s:5:"notes";s:4577:"Administration
- Added the “Language” element condition rule. (#15952)
- Added
pc/*
commands as an alias of project-config/*
.
- Added the
--except
, --minor-only
, and --patch-only
options to the update
command. (#15829)
Development
- Added the
encodeUrl()
Twig function. (#15838)
- Added support for passing aliased field handles into element queries’
select()
/addSelect()
methods. (#15827)
- Added support for appending subpaths to environment variable names in environmental settings (e.g.
$PRIMARY_SITE_URL/uploads
).
Extensibility
- Added
craft\base\RequestTrait::getIsWebRequest()
. (#15690)
- Added
craft\events\ApplyFieldSaveEvent
. (#15872)
- Added
craft\events\DefineAddressCountriesEvent
. (#15711)
- Added
craft\filters\BasicHttpAuthLogin
. (#15720)
- Added
craft\filters\BasicHttpAuthStatic
. (#15720)
- Added
craft\filters\ConditionalFilterTrait
. (#15948)
- Added
craft\filters\UtilityAccess
.
- Added
craft\helpers\Session::addFlash()
.
- Added
craft\helpers\Session::getAllFlashes()
.
- Added
craft\helpers\Session::getFlash()
.
- Added
craft\helpers\Session::hasFlash()
.
- Added
craft\helpers\Session::removeAllFlashes()
.
- Added
craft\helpers\Session::removeFlash()
.
- Added
craft\helpers\UrlHelper::encodeUrl()
. (#15838)
- Added
craft\log\MonologTarget::getAllowLineBreaks()
.
- Added
craft\log\MonologTarget::getFormatter()
.
- Added
craft\log\MonologTarget::getLevel()
.
- Added
craft\log\MonologTarget::getMaxFiles()
.
- Added
craft\log\MonologTarget::getName()
.
- Added
craft\log\MonologTarget::getProcessor()
.
- Added
craft\log\MonologTarget::getUseMicrosecondTimestamps()
.
- Added
craft\services\Addresses::EVENT_DEFINE_ADDRESS_COUNTRIES
. (#15711)
- Added
craft\services\Addresses::getCountryList()
. (#15711)
- Added
craft\services\Fields::EVENT_BEFORE_APPLY_FIELD_SAVE
. (#15872)
- Added
craft\services\Gc::deleteOrphanedFieldLayouts()
.
- Added
craft\web\View::registerCpTwigExtension()
.
- Added
craft\web\View::registerSiteTwigExtension()
.
- Improved support for creating log targets for third party logging services. (#14974)
- Deprecated the
enableBasicHttpAuth
config setting. craft\filters\BasicHttpAuthLogin
should be used instead. (#15720)
- Added the
serializeForm
event to Craft.ElementEditor
. (#15794)
System
Location
headers added via craft\web\Response::redirect()
are now set to encoded URLs. (#15838)
- Fixed a bug where orphaned field layouts weren’t getting garbage collected. (#16032)
- Fixed a bug where the
utils/fix-field-layout-uids
command was misidentifying missing/duplicate UUID issues.
";s:4:"date";s:19:"2024-11-12T00:00:00";}i:18;a:4:{s:7:"version";s:6:"4.12.9";s:8:"critical";b:0;s:5:"notes";s:561:"
- Fixed a bug where entry/category drafts weren’t retaining new parent selections.
- Fixed a bug where the “Related To” condition rule would lose track of the selected element if it belonged to a different site. (#16005)
- Fixed a bug where the GraphQL tokens index was saying tokens never expired. (#16029)
- Fixed styling issues. (#15965)
";s:4:"date";s:19:"2024-11-06T00:00:00";}i:19;a:4:{s:7:"version";s:6:"4.12.8";s:8:"critical";b:0;s:5:"notes";s:927:"
- The
install
command now runs through database connection setup, if Craft can’t yet connect to the database. (#15943)
- Fixed a bug where admin table header cells weren’t indicating when they were sorted. (#15897)
- Fixed an error that occurred when creating a database backup, if the System Name contained any quote-like characters. (#15933)
- Fixed a bug where buttons could bleed out of their containers. (#15931, #15946)
- Fixed a PHP error. (#15915)
- Fixed an information disclosure vulnerability.
";s:4:"date";s:19:"2024-10-22T00:00:00";}i:20;a:4:{s:7:"version";s:6:"4.12.7";s:8:"critical";b:0;s:5:"notes";s:64:"
- Fixed a privilege escalation vulnerability.
";s:4:"date";s:19:"2024-10-15T00:00:00";}i:21;a:4:{s:7:"version";s:8:"4.12.6.1";s:8:"critical";b:0;s:5:"notes";s:186:"
- Custom field condition rules are now ignored if they reference a field with an incompatible type. (#15850)
";s:4:"date";s:19:"2024-10-09T00:00:00";}i:22;a:4:{s:7:"version";s:6:"4.12.6";s:8:"critical";b:0;s:5:"notes";s:1690:"
- The Plugin Store now displays plugin ratings and reviews. (#15860)
- An
InvalidConfigException
is now thrown if the defaultCountryCode
config setting is set to an empty string. (#15812)
- Fixed an error that could occur when saving an element, if a Date field’s time zone input was focused.
- Fixed a bug where the time zones listed in Date fields weren’t labelled properly based on the selected date. (#15805)
- Fixed an error that could occur if a native element property was attempted to be eager-loaded. (#15822)
- Fixed errors that could occur if a custom source or field condition referenced a custom field whose type had changed. (#15850)
- Fixed a bug where disclosure menus weren’t sticking to their trigger element as it was scrolled, if it was within a slideout or other inline-scrollable container. (#15852)
- Fixed a bug where the default backup command for MySQL was exporting triggers twice. (#15854)
- Fixed a bug where Multi-select fields were saving the selected options in the user-selected order rather than the field-defined order. (#15857)
- Fixed a missing authorization vulnerability.
";s:4:"date";s:19:"2024-10-08T00:00:00";}i:23;a:4:{s:7:"version";s:6:"4.12.5";s:8:"critical";b:0;s:5:"notes";s:465:"
- Fixed a bug where entries’
deletedWithEntryType
values in the entries
table weren’t getting set back to null
after being restored.
- Fixed a bug where it wasn’t possible to discard changes for related elements via slideouts, if they didn’t exist in the primary site. (#15798)
- Fixed an information disclosure vulnerability.
";s:4:"date";s:19:"2024-09-27T00:00:00";}i:24;a:4:{s:7:"version";s:8:"4.12.4.1";s:8:"critical";b:0;s:5:"notes";s:114:"
- Fixed a JavaScript error. (#15784)
";s:4:"date";s:19:"2024-09-24T00:00:00";}i:25;a:4:{s:7:"version";s:6:"4.12.4";s:8:"critical";b:0;s:5:"notes";s:993:"
- Auto-generated handles, slugs, etc. now update immediately when the source input is changed. (#15754)
- Fixed a bug where Table fields’ Default Values table could lose existing rows if they only consisted of Dropdown columns without configured options.
- Fixed a bug where custom fields’
required
properties were always false
. (#15752)
- Fixed a bug where
craft\helpers\StringHelper::toHandle()
was allowing non-alphanumeric/underscore characters through. (#15772)
- Fixed a bug where entries were getting auto-saved while dragging elements within element select inputs.
- Fixed a bug where the
maxBackups
config setting wasn’t working. (#15780)
";s:4:"date";s:19:"2024-09-23T00:00:00";}i:26;a:4:{s:7:"version";s:6:"4.12.3";s:8:"critical";b:0;s:5:"notes";s:487:"
- Fixed a data deletion bug that occurred during garbage collection on PostgreSQL. (#14891)
- Fixed a bug where image constraint labels weren’t translated within the Image Editor.
- Fixed a bug where image orientation labels weren’t getting translated for screen readers within the Image Editor.
- Fixed a PHP error. (#14635)
";s:4:"date";s:19:"2024-09-14T00:00:00";}i:27;a:4:{s:7:"version";s:6:"4.12.2";s:8:"critical";b:0;s:5:"notes";s:319:"
- Updated Twig to 3.14. (#15704)
- Fixed a bug where soft-deleted structures weren’t getting hard-deleted via garbage collection. (#15705)
- Fixed an RCE vulnerability.
";s:4:"date";s:19:"2024-09-11T00:00:00";}i:28;a:4:{s:7:"version";s:6:"4.12.1";s:8:"critical";b:0;s:5:"notes";s:1242:"
- Added
craft\services\Security::isSystemDir()
.
- Fixed a bug where
craft\helpers\StringHelper::lines()
was returning an array of Stringy\Stringy
objects, rather than strings.
- Fixed styling issues with Template field layout UI elements’ selector labels.
- Fixed a validation error that could occur when saving a relational field, if the “Maintain hierarchy” setting had been enabled but was no longer applicable. (#15666)
- Fixed a bug where formatted addresses weren’t using the application locale consistently. (#15668)
- Fixed a bug where Tip and Warning field layout UI elements would display in field layouts even if they had no content. (#15681)
- Fixed an error that could occur when reverting an element’s content from a revision, if the element had been added to additional sites since the time the revision was created. (#15679)
- Fixed an information disclosure vulnerability.
";s:4:"date";s:19:"2024-09-06T00:00:00";}i:29;a:4:{s:7:"version";s:6:"4.12.0";s:8:"critical";b:0;s:5:"notes";s:3439:"Content Management
- Element conditions can now have a “Site Group” rule, if there are two or more site groups. (#15625)
Development
- Country field values and
craft\elements\Address::getCountry()
now return the country in the current application locale.
Extensibility
- Added
craft\base\ApplicationTrait::getEnvId()
. (#15313)
- Added
craft\base\ElementInterface::getRootOwner()
. (#15534)
- Added
craft\elements\conditions\SiteGroupConditionRule
.
- Added
craft\helpers\Session::close()
.
- Added
craft\services\Sites::getEditableSitesByGroupId()
.
craft\helpers\Session
methods are now safe to call on console requests.
- Deprecated
craft\helpers\ElementHelper::rootElement()
. craft\base\ElementInterface::getRootOwner()
should be used instead.
- Deprecated
craft\db\mysql\Schema::quoteDatabaseName()
.
- Deprecated
craft\db\pgqsl\Schema::quoteDatabaseName()
.
System
- MySQL mutex locks and PHP session names are now namespaced using the application ID combined with the environment name. (#15313)
- Craft now sends
X-Robots-Tag: none
headers for preview requests. (#15612, #15586)
x-craft-preview
and x-craft-live-preview
params are now hashed, and craft\web\Request::getIsPreview()
will only return true
if the param validates. (#15605)
- Generated URLs no longer include
x-craft-preview
or x-craft-live-preview
query string params based on the requested URL, if either were set to an unverified string. (#15605)
- The PHP session is now closed before making API requests. (#15643)
- Updated Twig to 3.12. (#15568)
- Fixed a SQL error that occurred when running the
db/convert-charset
command if there were any custom database views or sequences. (#15598)
- Fixed a bug where
craft\helpers\Db::supportsTimeZones()
could return false
on databases that supported time zone conversion. (#15592)
- Fixed a bug where Assets fields were validating settings that weren’t applicable depending on the “Restrict assets to a single location” setting. (#15545)
- Fixed a bug where
null
values within associative arrays were ignored when applying project config data. (#10512)
";s:4:"date";s:19:"2024-09-03T00:00:00";}i:30;a:4:{s:7:"version";s:6:"4.11.5";s:8:"critical";b:0;s:5:"notes";s:750:"
- Fixed a bug where it wasn’t possible to override named transforms in GraphQL queries. (#15572)
- Fixed a bug where address subdivision fields could be incorrectly labelled and/or populated with the wrong options. (#15551, #15584)
- Fixed a bug where Country fields were displaying the selected country code within element index tables, rather than the country name.
- Fixed a bug where
{% cache %}
tags were caching content for Live Preview requests. (#15586)
";s:4:"date";s:19:"2024-08-26T00:00:00";}i:31;a:4:{s:7:"version";s:6:"4.11.4";s:8:"critical";b:0;s:5:"notes";s:1380:"
- Updated jQuery UI to 1.14.0. (#15558)
- Fixed a bug where
craft\helpers\App::env()
and normalizeValue()
could return incorrect results for values that looked like floats. (#15533)
- Fixed a bug where the
users/set-password
action wasn’t respecting redirect
params. (#15538)
- Fixed a bug where the “Default Values” Table field setting wasn’t escaping column headings. (#15552)
- Fixed a bug where Craft couldn’t be installed with existing project config files, if any plugins specified their schema version via
composer.json
. (#15559)
- Fixed a bug where Money fields’ min, max, and default values weren’t being set to the correct currency. (#15565, #15566)
- Fixed a bug where PHP-originated Craft Console API requests weren’t timing out if the API was down. (#15571)
";s:4:"date";s:19:"2024-08-21T00:00:00";}i:32;a:4:{s:7:"version";s:6:"4.11.3";s:8:"critical";b:0;s:5:"notes";s:278:"
- Fixed a bug where the system name in the control panel’s global sidebar was getting hyperlinked even if the primary site didn’t have a URL. (#15525)
- Fixed a right-to-left styling issue.
";s:4:"date";s:19:"2024-08-13T00:00:00";}i:33;a:4:{s:7:"version";s:6:"4.11.2";s:8:"critical";b:0;s:5:"notes";s:602:"
- Fixed an error that could occur if a new element was saved recursively. (#15517)
- Fixed a bug where plugins were being instantiated at the beginning of Craft installation requests, rather than after Craft was installed. (#15506)
- Fixed a bug where an unhelpful error message was output when
config/general.php
returned an array with unsupported config settings. (#15514)
";s:4:"date";s:19:"2024-08-12T00:00:00";}i:34;a:4:{s:7:"version";s:6:"4.11.1";s:8:"critical";b:0;s:5:"notes";s:433:"
- Fixed a PHP error that could occur when generating URLs via console requests. (#15374)
- Fixed a bug where
craft\filters\Headers
and craft\filters\Cors
were applied to control panel requests rather than site requests. (#15495)
- Fixed a JavaScript error.
";s:4:"date";s:19:"2024-08-07T00:00:00";}i:35;a:4:{s:7:"version";s:8:"4.11.0.2";s:8:"critical";b:0;s:5:"notes";s:73:"
- Fixed an error that could occur on console requests.
";s:4:"date";s:19:"2024-08-06T00:00:00";}i:36;a:4:{s:7:"version";s:8:"4.11.0.1";s:8:"critical";b:0;s:5:"notes";s:198:"
- Fixed an error that occurred when accessing custom config settings defined in
config/custom.php
. (#15481)
";s:4:"date";s:19:"2024-08-06T00:00:00";}i:37;a:4:{s:7:"version";s:6:"4.11.0";s:8:"critical";b:0;s:5:"notes";s:7070:"Content Management
- Entry and category conditions now have a “Has Descendants” rule. (#15276)
- “Replace file” actions now display success notices on complete. (#15217)
- Double-clicking on folders within asset indexes and folder selection modals now navigates the index/modal into the folder. (#15238)
- When propagating an element to a new site, relation fields no longer copy relations for target elements that wouldn’t have been selectable from the propagated site based on the field’s “Related elements from a specific site?” and “Show the site menu” settings. (#15459)
Administration
- Added the
env
, env/set
, and env/remove
commands. (#15431)
- New sites’ Base URL settings now default to an environment variable name based on the site name. (#15347)
- Craft now warns against using the
@web
alias for URL settings, regardless of whether it was explicitly defined. (#15347)
Development
- Added the
withCustomFields
element query param.
- Added support for application-type based
general
and db
configs (e.g. config/general.web.php
). (#15346)
general
and db
config files can now return a callable that modifies an existing config object. (#15346)
- Added the
lazyGqlTypes
config setting. (#15429)
- The
allowedGraphqlOrigins
config setting is now deprecated. craft\filters\Cors
should be used instead. (#15397)
- The
permissionsPolicyHeader
config settings is now deprecated. craft\filters\Headers
should be used instead. (#15397)
{% cache %}
tags now cache any asset bundles registered within them.
- Country field values are now set to
CommerceGuys\Addressing\Country\Country
objects. (#15455, #15463)
- Auto-populated section and category group Template settings are now suffixed with
.twig
.
x-craft-preview
/x-craft-live-preview
URL query string params are now added to generated URLs for Live Preview requests, so craft\web\Request::getIsPreview()
continues to return true
on subsequent pages loaded within the iframe. (#15447)
Extensibility
- Added
craft\config\GeneralConfig::addAlias()
. (#15346)
- Added
craft\elements\Address::getCountry()
. (#15463)
- Added
craft\elements\Asset::$sanitizeOnUpload
. (#15430)
- Added
craft\filters\Cors
. (#15397)
- Added
craft\filters\Headers
. (#15397)
- Added
craft\helpers\App::configure()
.
- Added
craft\models\ImageTransform::$indexId
.
- Added
craft\web\View::clearAssetBundleBuffer()
.
- Added
craft\web\View::startAssetBundleBuffer()
.
- Added
Craft.EnvVarGenerator
.
craft\helpers\UrlHelper::cpUrl()
now returns URLs based on the primary site’s base URL (if it has one), for console requests if the baseCpUrl
config setting isn’t set, and the @web
alias wasn’t explicitly defined. (#15374)
craft\services\Config::setDotEnvVar()
now accepts false
for its value
argument, which removes the environment variable from the .env
file.
- Deprecated
craft\web\assets\elementresizedetector\ElementResizeDetectorAsset
.
System
- Improved the performance of element indexes in structure view.
- The control panel now displays Ajax response-defined error messages when provided, rather than a generic “server error” message. (#15292)
- Craft no longer sets the
Permissions-Policy
header on control panel responses. (#15348)
- Control panel
resize
events now use ResizeObserver.
- Twig templates no longer attempt to preload singles for global variable names. (#15468)
- Craft no longer ensures that the
cpresources
folder is writable.
- Front-end queue runner scripts are now injected before the
</body>
tag, rather than at the end of the response HTML.
graphql/api
requests no longer update the schema’s lastUsed
timestamp if it was already updated within the last minute. (#15464)
- Updated Yii to 2.0.51.
- Updated yii2-debug to 2.1.25.
- Updated svg-sanitizer to 0.19.
- Updated Axios to 0.28.1. (#15448)
- Fixed a bug where error messages returned by the
users/send-password-reset-email
action weren’t accounting for the useEmailAsUsername
config setting. (#15425)
- Fixed a bug where
$element->isNewForSite
was always false
from fields’ normalizeValue()
methods when propagating an element to a new site.
- Fixed a bug where
assets/generate-transforms
requests could generate the wrong transform, if another transform index with the same parameters existed. (#15402, #15477)
";s:4:"date";s:19:"2024-08-06T00:00:00";}i:38;a:4:{s:7:"version";s:6:"4.10.8";s:8:"critical";b:0;s:5:"notes";s:1222:"
- Fixed a PHP error. (#14635)
- Fixed a PHP error that could occur when running Codeception tests. (#15445)
- Fixed a bug where
deleteAsset
, deleteCategory
, deleteEntry
, and deleteTag
GraphQL mutations were returning null
rather than true
or false
. (#15465)
- Fixed a styling issue. (#15473)
- Fixed a bug where
exists()
element queries weren’t working if distinct
, groupBy
, having,
or union
params were set on them during query preparation. (#15001, #15223)
- Fixed a bug where users’
username
properties weren’t getting set if useEmailAsUsername
was enabled. (#15475)
";s:4:"date";s:19:"2024-08-05T00:00:00";}i:39;a:4:{s:7:"version";s:6:"4.10.7";s:8:"critical";b:0;s:5:"notes";s:1059:"
- Fixed a bug where element index result counts weren’t getting updated when the element list was refreshed but pagination was preserved. (#15367)
- Fixed a PHP error that occurred when making a field layout component conditional on a Time or CKEditor field. (craftcms/ckeditor#267)
- Fixed an error that occurred when editing a user via a slideout, if the current user didn’t have permission to edit the primary site. (#15408)
- Fixed a bug where editable tables with single-select checkbox columns weren’t deselecting the selected option automatically. (#15415)
- Fixed a styling issue. (#15422)
- Fixed a bug where category groups’ Template settings weren’t being auto-populated for new groups.
";s:4:"date";s:19:"2024-07-29T00:00:00";}i:40;a:4:{s:7:"version";s:6:"4.10.6";s:8:"critical";b:0;s:5:"notes";s:1009:"
craft\helpers\UrlHelper::actionUrl()
now returns URLs based on the primary site’s base URL (if it has one), for console requests if the @web
alias wasn’t explicitly defined.
- Fixed a bug where it wasn’t possible to expand/collapse descendants of disabled table rows within element select modals. (#15337)
- Fixed a bug where PhpStorm autocomplete wasn’t working when chaining custom field methods defined by
CustomFieldBehavior
. (#15336)
- Fixed a bug where new Matrix blocks created on newly-created elements weren’t getting duplicated to all other sites for the owner element. (#15321)
- Fixed a bug where focus could jump unexpectedly when a slideout was opened. (#15314)
";s:4:"date";s:19:"2024-07-16T00:00:00";}i:41;a:4:{s:7:"version";s:6:"4.10.5";s:8:"critical";b:0;s:5:"notes";s:1454:"Craft now sends no-cache headers for requests that generate/retrieve a CSRF token. If your Craft install is behind a static caching service like Cloudflare, enable the asyncCsrfInputs config setting to avoid a significant cache hit reduction. (#15293, #15281)
- Craft now sends no-cache headers for any request that calls
craft\web\Request::getCsrfToken()
. (#15293, #15281)
- Fixed a bug where structures’ Max Levels settings weren’t being enforced when dragging elements with collapsed descendants. (#15310)
- Fixed a bug where
craft\helpers\ElementHelper::isDraft()
, isRevision()
, and isDraftOrRevision()
weren’t returning true
if a nested draft/revision element was passed in, but the root element was canonical. (#15303)
- Fixed a bug where focus could be trapped within slideout sidebars. (#15314)
";s:4:"date";s:19:"2024-07-11T00:00:00";}i:42;a:4:{s:7:"version";s:6:"4.10.4";s:8:"critical";b:0;s:5:"notes";s:741:"
- Craft now sends no-cache headers for any request that generates a CSRF token. (#15281, verbb/formie#1963)
- Fixed a JavaScript error that occurred when creating a new custom element source, preventing the Default Sort and Default Table Columns fields from showing up.
- Fixed a bug where the control panel was getting asynchronous CSRF inputs if the
asyncCsrfInputs
config setting was enabled.
- Fixed a bug where Craft’s Twig implementation wasn’t respecting sandboxing rules for object properties. (#15278)
";s:4:"date";s:19:"2024-07-02T00:00:00";}i:43;a:4:{s:7:"version";s:6:"4.10.3";s:8:"critical";b:0;s:5:"notes";s:1185:"
- Previewing PDF/video assets without public URLs now displays a “Preview not supported.” message. (#15235)
- Added
Garnish.once()
and Garnish.Base::once()
, for registering event handlers that should only be triggered one time.
- Fixed a bug where Edit Asset pages showed a “View” button for assets without URLs. (#15235)
- Fixed a bug where asset indexes attempted to link to assets without URLs. (#15235)
- Fixed a bug where queue job tracking and element activity tracking could stop working after a user session expired and then was reauthenticated.
- Fixed an error that occurred if an element select input was initialized without a
name
value.
- Fixed a bug where Selectize inputs could be immediately focused and marked as dirty when opening an element editor slideout, if they were the first focusable element in the field layout. (#15245)
";s:4:"date";s:19:"2024-06-27T00:00:00";}i:44;a:4:{s:7:"version";s:6:"4.10.2";s:8:"critical";b:0;s:5:"notes";s:1001:"
- Added
craft\base\conditions\BaseNumberConditionRule::$step
.
- Added
Garnish.muteResizeEvents()
.
- Fixed a JavaScript performance degradation bug. (#14510)
- Fixed a bug where scalar element queries weren’t working if
distinct
, groupBy
, having,
or union
params were set on them during query preparation. (#15001)
- Fixed a bug where Edit Asset pages would warn about losing unsaved changes when navigating away, if the file was replaced but nothing else had changed.
- Fixed a bug where Edit Asset pages would show a notification with a “Reload” button after the file was replaced.
- Fixed a bug where Number fields’ condition rules weren’t allowing decimal values. (#15222)
";s:4:"date";s:19:"2024-06-18T00:00:00";}i:45;a:4:{s:7:"version";s:6:"4.10.1";s:8:"critical";b:0;s:5:"notes";s:918:"
- Added
craft\web\View::getModifiedDeltaNames()
.
craft\web\View::registerDeltaName()
now has a $forceModified
argument.
- Fixed a bug where changed field values could be forgotten within Matrix fields, if a validation error occurred. (#15190)
- Fixed a bug where the
graphql/create-token
command was prompting for the schema name, when it meant the token name. (#15205)
- Fixed an error that could occur when applying a draft. (#15211)
- Fixed a bug where keyboard shortcuts weren’t getting registered properly for modals and slideouts opened via a disclosure menu. (#15209)
";s:4:"date";s:19:"2024-06-17T00:00:00";}i:46;a:4:{s:7:"version";s:6:"4.10.0";s:8:"critical";b:0;s:5:"notes";s:6301:"Content Management
- Relational field condition rules no longer factor in the target elements’ statuses or sites. (#14989)
- “Save and continue editing” actions now restore the page’s scroll position on reload.
Administration
- Added the
--format
option to the db/backup
and db/restore
commands for PostgreSQL installs. (#14931)
- The
db/restore
command now autodetects the backup format for PostgreSQL installs, if --format
isn’t passed. (#14931)
- The
install
command and web-based installer now validate the existing project config files at the outset, and abort installation if there are any issues.
- The web-based installer now displays the error message when installation fails.
- GraphQL schema edit pages now have a “Save and continue editing” alternate action.
- The system edition can now be defined by a
CRAFT_EDITION
environment variable. (#15094)
- The rebrand assets path can now be defined by a
CRAFT_REBRAND_PATH
environment variable. (#15110)
Development
- Added the
{% expires %}
tag, which simplifies setting cache headers on the response. (#14969)
- Added
craft\elements\ElementCollection::find()
, which can return an element or elements in the collection based on a given element or ID. (#15023)
- Added
craft\elements\ElementCollection::fresh()
, which reloads each of the collection elements from the database. (#15023)
- The
collect()
Twig function now returns a craft\elements\ElementCollection
instance if all of the items are elements.
craft\elements\ElementCollection::contains()
now returns true
if an element is passed in and the collection contains an element with the same ID and site ID; or if an integer is passed in and the collection contains an element with the same ID. (#15023)
craft\elements\ElementCollection::countBy()
, collapse()
, flatten()
, keys()
, pad()
, pluck()
, and zip()
now return an Illuminate\Support\Collection
object. (#15023)
craft\elements\ElementCollection::diff()
and intersect()
now compare the passed-in elements to the collection elements by their IDs and site IDs. (#15023)
craft\elements\ElementCollection::flip()
now throws an exception, as element objects can’t be used as array keys. (#15023)
craft\elements\ElementCollection::map()
and mapWithKeys()
now return an Illuminate\Support\Collection
object, if any of the mapped values aren’t elements. (#15023)
craft\elements\ElementCollection::merge()
now replaces any elements in the collection with passed-in elements, if their ID and site ID matches. (#15023)
craft\elements\ElementCollection::only()
and except()
now compare the passed-in values to the collection elements by their IDs, if an integer or array of integers is passed in. (#15023)
craft\elements\ElementCollection::unique()
now returns all elements with unique IDs, if no key is passed in. (#15023)
Extensibility
- Improved type definitions for
craft\db\Query
, element queries, and craft\elements\ElementCollection
.
- Added
craft\db\getBackupFormat()
.
- Added
craft\db\getRestoreFormat()
.
- Added
craft\db\setBackupFormat()
.
- Added
craft\db\setRestoreFormat()
.
- Added
craft\events\InvalidateElementcachesEvent::$element
.
- Added
craft\fields\BaseRelationField::existsQueryCondition()
.
- Added
craft\helpers\DateTimeHelper::relativeTimeStatement()
.
- Added
craft\helpers\DateTimeHelper::relativeTimeToSeconds()
.
- Added
craft\helpers\StringHelper::indent()
.
- Added
craft\queue\Queue::getJobId()
.
craft\elements\ElementCollection::with()
now supports collections made up of multiple element types.
- Added the
reloadOnBroadcastSave
setting to Craft.ElementEditor
. (#14814)
System
- Improved the performance of
exists()
element queries.
- The Debug Toolbar now pre-serializes objects stored as request parameters, fixing a bug where closures could prevent the entire Request panel from showing up. (#14982)
- Batched queue jobs now verify that they are still reserved before each step, and before spawning additional batch jobs. (#14986)
- Updated Yii to 2.0.50. (#15124)
- Updated inputmask to 5.0.9.
- Updated punycode to 2.3.1.
";s:4:"date";s:19:"2024-06-12T00:00:00";}i:47;a:4:{s:7:"version";s:5:"4.9.7";s:8:"critical";b:0;s:5:"notes";s:333:"
- Fixed a bug where the
db/backup
command could fail on Windows. (#15090)
- Fixed an error that could occur when applying project config changes if a site was deleted. (#14373)
";s:4:"date";s:19:"2024-06-05T00:00:00";}i:48;a:4:{s:7:"version";s:5:"4.9.6";s:8:"critical";b:0;s:5:"notes";s:705:"
- Added
craft\helpers\Gql::isIntrospectionQuery()
.
- Fixed a bug where some condition rules weren’t getting added when applying project config changes, if they depended on another component which hadn’t been added yet. (#15037)
- Fixed a bug where the
craft\base\Element::EVENT_DEFINE_ADDITIONAL_BUTTONS
event wasn’t being respected for user edit pages. (#15095)
- Fixed a bug where GraphQL queries could be misidentified as introspection queries. (#15100)
";s:4:"date";s:19:"2024-06-03T00:00:00";}i:49;a:4:{s:7:"version";s:5:"4.9.5";s:8:"critical";b:0;s:5:"notes";s:1936:"
- Scalar element queries now set
$select
to the scalar expression, and $orderBy
, $limit
, and $offset
to null
, on the element query. (#15001)
- Added
craft\fieldlayoutelements\TextareaField::inputTemplateVariables()
.
- Fixed a bug where
craft\helpers\Assets::prepareAssetName()
wasn’t sanitizing filenames if $preventPluginModifications
was true
.
- Fixed a bug where element queries’
count()
methods were factoring in the limit
param when searching with orderBy
set to score
. (#15001)
- Fixed a bug where soft-deleted elements that belonged to a revision could be deleted by garbage collection. (#14995)
- Fixed a bug where soft-deleted structure data associated with elements that belonged to a revision could be deleted by garbage collection. (#14995)
- Fixed a bug where element edit pages’ scroll positions weren’t always retained when automatically refreshed.
- Fixed a bug where the
up
command could remove component name comments from the project config YAML files, for newly-added components. (#15012)
- Fixed a bug where assets’ Alternative Text fields didn’t expand to match the content height. (#15026)
- Fixed a bug where
craft\helpers\UrlHelper::isAbsoluteUrl()
was returning true
for Windows file paths. (#15043)
";s:4:"date";s:19:"2024-05-22T00:00:00";}i:50;a:4:{s:7:"version";s:5:"4.9.4";s:8:"critical";b:0;s:5:"notes";s:551:"
- Fixed a bug where
craft\elements\db\ElementQuery::exists()
would return true
if setCachedResult()
had been called, even if an empty array was passed.
- Fixed a bug where it wasn’t possible to interact with disabled Matrix blocks. (#15002)
- Fixed an infinite recursion bug that could occur when
craft\web\Response::redirect()
was called. (#15014)
";s:4:"date";s:19:"2024-05-17T00:00:00";}i:51;a:4:{s:7:"version";s:5:"4.9.3";s:8:"critical";b:0;s:5:"notes";s:1092:"
- Fixed a SQL error that could occur when applying or rebuilding the project config.
- Fixed a bug where adjacent selected table rows were getting extra spacing in Firefox.
- Fixed a SQL error that could occur when creating revisions after garbage collection was run. (#14309)
- Fixed a bug where the
serve
command wasn’t serving paths with non-ASCII characters. (#14977)
- Fixed a bug where element chips within element selection tables had insufficient contrast. (#14963)
- Fixed a bug where
craft\helpers\Html::explodeStyle()
and normalizeTagAttributes()
weren’t handling styles with encoded images via url()
properly. (#14964)
- Fixed a bug where the
db/backup
command would fail if the destination path contained a space.
";s:4:"date";s:19:"2024-05-14T00:00:00";}i:52;a:4:{s:7:"version";s:5:"4.9.2";s:8:"critical";b:0;s:5:"notes";s:964:"
- Fixed a bug where the
db/backup
command would prompt for password input on PostgreSQL. (#14945)
- Fixed a bug where pressing Shift + Spacebar wasn’t reliably opening the asset preview modal on the Assets index page. (#14943)
- Fixed a bug where pressing Shift + Spacebar within an asset preview modal wasn’t closing the modal.
- Fixed a bug where pressing arrow keys within asset preview modals wasn’t retargeting the preview modal to adjacent assets. (#14943)
- Fixed a bug where entry selection modals could have a “New entry” button even if there weren’t any sections enabled for the selected site. (#14923)
";s:4:"date";s:19:"2024-05-07T00:00:00";}i:53;a:4:{s:7:"version";s:5:"4.9.1";s:8:"critical";b:0;s:5:"notes";s:607:"
- Fixed a bug where disclosure menus weren’t releasing their
scroll
and resize
event listeners on hide. (#14911, #14510)
- Fixed a bug where MySQL backups weren’t restorable on certain environments. (#14925)
- Fixed a bug where
app/resource-js
requests weren’t working for guest requests. (#14908)
";s:4:"date";s:19:"2024-05-02T00:00:00";}i:54;a:4:{s:7:"version";s:5:"4.9.0";s:8:"critical";b:0;s:5:"notes";s:4559:"Content Management
- It’s now possible to preview revisions. (#14521)
- Element conditions can now include condition rules for Time fields. (#14616)
- Sort options are now sorted alphabetically within element indexes, and custom fields’ options are now listed in a “Fields” group. (#14725)
- Unselected table column options are now sorted alphabetically within element indexes.
Administration
- Improved the behavior of the URI input within Edit Route modals. (#14884)
- The “Upgrade Craft CMS” page in the Plugin Store no longer lists unsupported editions.
- Added the
asyncCsrfInputs
config setting. (#14625)
- Added the
backupCommandFormat
config setting. (#14897)
- The
backupCommand
config setting can now be set to a closure, which will be passed a mikehaertl\shellcommand\Command
object. (#14897)
resave
commands now support an --if-invalid
option. (#14731)
Development
- Added the
safeMode
config setting. (#14734)
- Added the
language
element query param, which filters the resulting elements based on their sites’ languages. (#14631)
- GraphQL responses now include full exception details, when Dev Mode is enabled or an admin is signed in with the “Show full exception views when Dev Mode is disabled” preference enabled. (#14527)
craft\helpers\Html::csrfInput()
and the csrfInput
Twig function now support passing an async
key to the options
array, overriding the default behavior per the asyncCsrfInputs
config setting. (#14625)
Extensibility
- Added
craft\services\ProjectConfig::getAppliedChanges()
. (#14851)
- Added
craft\services\Sites::getSitesByLanguage()
.
- Added
craft\web\ErrorHandler::exceptionAsArray()
.
- Added
craft\web\ErrorHandler::showExceptionDetails()
.
- Added
craft\web\Request::getBearerToken()
. (#14784)
craft\base\NameTrait::prepareNamesForSave()
no longer updates the name properties if fullName
, firstName
, and lastName
are already set. (#14665)
System
- Batched queue jobs now set their progress based on the total progress across all batches, rather than just the current batch. (#14817)
- Craft now calls
setlocale()
based on the target language, so that SORT_LOCALE_STRING
behaves as expected. (#14509, #14513)
- Improved the performance of scalar element queries like
count()
.
- Fixed a bug where
craft\elements\db\ElementQuery::count()
could return the wrong number if the query had a cached result, with offset
or limit
params.
- Console requests no longer filter out info logs. (#14280, #14434)
- Fixed a styling issue with Categories and Entries fields when “Maintain Hierarchy” was enabled.
- Fixed a bug where Delete actions weren’t working in admin tables. (craftcms/commerce#3444)
";s:4:"date";s:19:"2024-04-30T00:00:00";}i:55;a:4:{s:7:"version";s:6:"4.8.11";s:8:"critical";b:0;s:5:"notes";s:742:"
- Fixed a bug where element caches weren’t getting invalidated when an element was moved within a structure. (#14846)
- Fixed a bug where CSV’s header rows weren’t using the configured delimiter. (#14855)
- Fixed a bug where editable table cell text styling could change after initial focus. (#14857)
- Fixed a bug where conditions could list rules with duplicate labels.
- Fixed a bug where admin tables weren’t displaying disabled statuses. (#14861)
";s:4:"date";s:19:"2024-04-29T00:00:00";}i:56;a:4:{s:7:"version";s:6:"4.8.10";s:8:"critical";b:0;s:5:"notes";s:1469:"
- Fixed a SQL error that could occur when converting a field to a Lightswitch field on PostgreSQL. (#14792)
- Fixed a bug where the Database Backup utility was present when the
backupCommand
config setting was set to false
.
- Fixed an error that occurred when running the
db/convert-charset
command, if any tables contained char
or varchar
foreign key columns. (#14815)
- Fixed a bug where parsed first/last names could have different casing than the full name that was submitted. (#14723)
- Fixed a bug where
craft\helpers\UrlHelper::isAbsoluteUrl()
was returning false
for URLs with schemes other than http
or https
, such as mailto
and tel
. (#14830)
- Fixed a JavaScript error that occurred when opening Live Preview, if an Assets field’s “Upload files” button had been pressed. (#14832)
- Fixed a bug where Twig’s spread operator (
...
) wasn’t working with attribute accessors. (#14827)
";s:4:"date";s:19:"2024-04-23T00:00:00";}i:57;a:4:{s:7:"version";s:5:"4.8.9";s:8:"critical";b:0;s:5:"notes";s:602:"
- Fixed a bug where element queries with the
relatedTo
param set to a list of element IDs were overly complex.
- Fixed a bug where redundant Matrix block revisions were getting created.
- Fixed a bug where Twig’s spread operator (
...
) wasn’t working when the preloadSingles
config setting was enabled. (#14783)
- Fixed a bug where Live Preview wasn’t retaining the scroll position properly. (#14218)
";s:4:"date";s:19:"2024-04-10T00:00:00";}i:58;a:4:{s:7:"version";s:5:"4.8.8";s:8:"critical";b:0;s:5:"notes";s:1081:"
- Fixed a bug where
craft\helpers\ElementHelper::siteStatusesForElement()
wasn’t working for soft-deleted elements. (#14753)
- Fixed a bug where the Queue Manager was listing delayed jobs before others. (#14755)
- Fixed a bug where LTR and RTL characters weren’t getting stripped from sanitized asset filenames. (#14711)
- Fixed a bug where admin table row reordering wasn’t working in Safari. (#14752)
- Fixed a bug where the
utils/fix-field-layout-uids
command wasn’t looking at field layouts defined with a fieldLayout
key in the project config.
- Fixed a bug where element indexes’ View menus could show the “Sort by” field when the structure view was selected. (#14780)
";s:4:"date";s:19:"2024-04-09T00:00:00";}i:59;a:4:{s:7:"version";s:5:"4.8.7";s:8:"critical";b:0;s:5:"notes";s:563:"
- The Craft 5 Upgrade utility now shows the upgrade status and latest compatible version for abandoned plugins.
- Fixed a “Double-instantiating a checkbox select on an element” JavaScript warning. (#14707)
- Fixed a bug where
craft\cache\DbCache
was attempting to store values beyond the cache.data
column’s storage capacity.
- Fixed a bug where the Updates utility could include submit buttons without labels for abandoned plugins.
";s:4:"date";s:19:"2024-04-03T00:00:00";}i:60;a:4:{s:7:"version";s:5:"4.8.6";s:8:"critical";b:0;s:5:"notes";s:61:"
- Added the “Craft 5 Upgrade” utility.
";s:4:"date";s:19:"2024-03-26T00:00:00";}i:61;a:4:{s:7:"version";s:5:"4.8.5";s:8:"critical";b:0;s:5:"notes";s:851:"
- Selectize inputs no longer automatically select the hovered option on Tab press. (selectize/selectize.js#2085)
- The
setup/cloud
command now ensures that the environment and composer.json
are configured to use PHP 8.1+.
- Fixed a JavaScript error that could occur if another error occurred when performing an element action.
- Fixed a bug where filesystems’
afterSave()
and afterDelete()
methods weren’t getting called. (#14634)
- Fixed an error that could occur on
elements/recent-activity
Ajax requests when editing an element. (#14635)
";s:4:"date";s:19:"2024-03-22T00:00:00";}i:62;a:4:{s:7:"version";s:5:"4.8.4";s:8:"critical";b:0;s:5:"notes";s:133:"
- Craft no longer shows an alert when an installed Craft/plugin edition is a lower tier than the licensed edition.
";s:4:"date";s:19:"2024-03-19T00:00:00";}i:63;a:4:{s:7:"version";s:5:"4.8.3";s:8:"critical";b:0;s:5:"notes";s:538:"
craft\helpers\DateTime::toDateTime()
now attempts to create a DateTime
object by passing the passe-in value into its constructor.
- Fixed a bug where navigating back after creating an entry or applying a draft would return a 404 error. (#14587)
- Fixed a bug where action URLs weren’t respecting the subpath specified by the
@web
alias, if it wasn’t present in the local URL to index.php
.
";s:4:"date";s:19:"2024-03-15T00:00:00";}i:64;a:4:{s:7:"version";s:5:"4.8.2";s:8:"critical";b:0;s:5:"notes";s:958:"
- Entry queries are now ordered by
postDate DESC, id DESC
by default, rather than just postDate DESC
, to ensure their order is consistent when two entries have the same post date.
- Fixed a bug where
craft\helpers\DateRange::dateIntervalByTimePeriod()
wasn’t accounting for DST changes.
- Fixed a bug where programmatically-updated
<textarea>
s weren’t triggering autosaves. (craftcms/ckeditor#172)
- Fixed a JavaScript error that could occur when navigating between asset folders, when a JavaScript-based uploader was registered. (#14542)
- Fixed a bug where action URLs were getting duplicate URI segments if Craft was installed in a subpath within the webroot. (#14559)
";s:4:"date";s:19:"2024-03-12T00:00:00";}i:65;a:4:{s:7:"version";s:5:"4.8.1";s:8:"critical";b:0;s:5:"notes";s:784:"
- Fixed a bug where some characters were getting misinterpreted as elisions when normalizing search keywords.
- Fixed a bug where
craft\helpers\UrlHelper::actionUrl()
was using the site URL rather than the requested URL. (#14440)
- Fixed a bug where
craft\helpers\Html::parseTagAttribute()
wasn’t handling attribute values with newlines. (#14498)
- Fixed a bug where the “Filesystem Type” setting wasn’t toggling type-specific settings when editing a filesystem via a slideout. (#14522)
- Fixed a potential SSTI vulnerability.
";s:4:"date";s:19:"2024-03-05T00:00:00";}i:66;a:4:{s:7:"version";s:5:"4.8.0";s:8:"critical";b:0;s:5:"notes";s:3511:"Trialing Craft and plugin updates with expired licenses is allowed now, on non-public domains.
When licensing issues occur on public domains, the control panel will now become temporarily inaccessible for logged-in users, alerting them to the problems and giving them an opportunity to resolve them. (The front end will not be impacted.)
Content Management
- Assets fields’ selection modals now open to the last-viewed location by default, if their Default Upload Location doesn’t specify a subpath. (#14382)
- Element sources no longer display
0
badges.
Administration
- Color fields now have a “Presets” settings. (#14463)
- It’s now possible to update expired licenses from the Updates utility, on non-public domains.
- The
queue/run
command now supports a --job-id
option.
update all
and update <handle>
commands now support a --with-expired
option.
Development
- The GraphQL API is now available for Craft Solo installs.
- The
{% js %}
and {% css %}
tags now support .js.gz
and .css.gz
URLs. (#14243)
- Relation fields’ element query params now factor in the element query’s target site(s). (#14258, #14348, #14304)
- Element queries’
level
param now supports passing an array which includes null
. (#14419)
Extensibility
- Added
craft\services\ProjectConfig::EVENT_AFTER_WRITE_YAML_FILES
. (#14365)
- Added
craft\services\Relations::deleteLeftoverRelations()
. (#13956)
- Added
craft\services\Search::shouldCallSearchElements()
. (#14293)
System
- Relations for fields that are no longer included in an element’s field layout are now deleted after element save. (#13956)
- The Sendmail email transport type now uses the
sendmail_path
PHP ini setting by default. (#14433)
- Composer installation commands suggested by the Plugin Store now include a minimum version constraint.
- Fixed a bug where it wasn’t possible to eager-load Matrix block revisions, or load them via GraphQL. (#14448)
- Fixed a PHP warning that could occur when publishing asset bundles on Dev Mode. (#14455)
- Fixed a bug where the Updates utility and Updates widget weren’t handling update check failures.
- Updated Twig to 3.8.
";s:4:"date";s:19:"2024-02-26T00:00:00";}i:67;a:4:{s:7:"version";s:5:"4.7.4";s:8:"critical";b:0;s:5:"notes";s:1924:"
- The Plugin Store now shows “Tested on Cloud” and “Supports GraphQL” labels for plugins when appropriate.
- Fixed a JavaScript error that could occur when switching between asset sources, if the user had permission to upload assets to some but not others. (#14403)
- Fixed a bug where setting
showSiteMenu
to true
on element index templates was being treated as 'auto'
. (#14404)
- Fixed a SQL error that occurred when setting the Max Length of a URL field beyond what’s allowed by a
varchar
column. (#14408)
- Fixed a bug where
data-target
and data-reverse-target
attributes weren’t getting properly namespaced if they included a class name selector.
- Fixed the type annotation for
craft\behaviors\CustomFieldBehavior::$fieldHandles
. (#14421)
- Fixed a bug where the Shift + Spacebar keyboard shortcut for previewing assets was only working for the first selected asset, rather than the focused one.
- Fixed a JavaScript error that could occur when previewing an image.
- Fixed a bug where PHP errors that occurred during bootstrap weren’t getting logged to
stderr
for console requests. (#14424)
- Fixed a bug where disabled elements and drafts weren’t automatically getting propagated to newly-created sites, when appropriate.
- Fixed a bug where the selected tab wasn’t being remembered when switching sites on element edit pages. (#4018)
";s:4:"date";s:19:"2024-02-22T00:00:00";}i:68;a:4:{s:7:"version";s:5:"4.7.3";s:8:"critical";b:0;s:5:"notes";s:1096:"
- Updated the bundled
composer.phar
to Composer 2.7.1. (CVE-2024-24821)
- Fixed a bug where read/write splitting was always getting disabled for GraphQL POST requests. (#14324)
- Fixed a bug where GraphQL schema edit pages could include empty category headings.
- Fixed a bug where asset slideouts weren’t showing validation errors on the Filename field. (#14329)
- Fixed a bug where element slideouts would open when long-pressing on an element’s “Remove” button within an element select input.
- Fixed a bug where relations weren’t getting deleted when an element was deleted for a site. (#14347)
- Fixed a SQL error that occurred when saving a Number field with Decimals set to more than 30 on MySQL. (#14370)
";s:4:"date";s:19:"2024-02-15T00:00:00";}i:69;a:4:{s:7:"version";s:7:"4.7.2.1";s:8:"critical";b:0;s:5:"notes";s:295:"
- Craft now requires Composer ^2.7.0. (CVE-2024-24821)
- Fixed a PHP error that could occur when using Checkboxes or Multi-select fields. (#14326)
";s:4:"date";s:19:"2024-02-08T00:00:00";}i:70;a:4:{s:7:"version";s:5:"4.7.2";s:8:"critical";b:0;s:5:"notes";s:1440:"
- It’s now possible to select the temp asset volume within Assets fields, if the temp upload location includes a subpath. (#14246)
- Fixed a bug where it wasn’t possible to set the “Formatting Locale” user preference back to “Same as language” once another value had been selected.
- Fixed a bug where layout components provided by disabled plugins weren’t getting omitted. (#14236)
- Fixed a bug where “Move to the left” and “Move to the right” actions within field layout designers weren’t always getting enabled when they should, if a new tab was added.
- Fixed a bug where “Move to the left” and “Move to the right” actions within field layout designers were labelled incorrectly for right-to-left languages.
- Fixed a bug where users with “Create entries” permission but not “Delete entries” weren’t allowed to delete their own unpublished drafts. (#14294)
- Fixed a bug where Yii-provided Chinese translations weren’t getting picked up in the control panel. (#14287)
- Fixed an alignment bug with sortable structure views. (#14299)
";s:4:"date";s:19:"2024-02-07T00:00:00";}i:71;a:4:{s:7:"version";s:5:"4.7.1";s:8:"critical";b:0;s:5:"notes";s:754:"
- Unpublished drafts no longer show “Created at” or “Updated at” metadata values. (#14204)
- Fixed a bug where empty Dropdown fields were getting treated as dirty when unchanged.
- Fixed a bug where Recent Entries widgets were getting mangled when new entries were created via Quick Post widgets.
- Fixed an error that occurred when adding a Dropdown field condition rule, if the field contained any optgroups. (#14224)
- Fixed a bug where Dropdown field condition rules weren’t displaying
0
options. (#14232)
";s:4:"date";s:19:"2024-01-29T00:00:00";}i:72;a:4:{s:7:"version";s:5:"4.7.0";s:8:"critical";b:0;s:5:"notes";s:2308:"Assets fields with “All” selected for the available sources will no longer include the temp asset volume, if there is one.
Content Management
- Admin tables now have sticky footers. (#14149)
Administration
- Added “Save and continue editing” actions to all core settings pages with full-page forms. (#14168)
- It’s no longer possible to select the temp asset volume within Assets fields. (#11405, #14141)
- Added the
utils/prune-orphaned-matrix-blocks
command. (#14154)
Extensibility
- Added
craft\base\ElementInterface::beforeDeleteForSite()
.
- Added
craft\base\ElementInterface::afterDeleteForSite()
.
- Added
craft\base\FieldInterface::beforeElementDeleteForSite()
.
- Added
craft\base\FieldInterface::afterElementDeleteForSite()
.
System
- Reduced the system font file size, and prevented the flash of unstyled type for it. (#13879)
- Log message timestamps are now set to the system time zone. (#13341)
- Database backups no longer include data from the
phpsessions
table, if it exists. (#13589)
- Selectize inputs now use the
auto_position
plugin. (#14160)
- Fixed a bug where paths passed to
craft\web\CpScreenResponseBehavior::editUrl()
weren’t getting resolved to absolute URLs.
- Fixed a bug where deleting an entry for a site wasn’t propagating to Matrix blocks for that entry/site. (#13948)
";s:4:"date";s:19:"2024-01-23T00:00:00";}i:73;a:4:{s:7:"version";s:5:"4.6.1";s:8:"critical";b:0;s:5:"notes";s:1448:"
craft\log\MonologTarget
instances are now created via Craft::createObject()
. (#13341)
- Fixed a bug where
craft\helpers\Db::prepareValueForDb()
wasn’t converting objects to arrays for JSON columns.
- Fixed a bug where Checkboxes, Multi-select, Dropdown, and Radio Buttons fields weren’t displaying
0
options within element indexes or condition rules. (#14127, #14143)
- Fixed a bug where
craft\db\Migration::renameTable()
was renaming the table for the primary database connection, rather than the migration’s connection. (#14131)
- Fixed a bug where
Craft.FormObserver
wasn’t working reliably for non-<form>
containers.
- Fixed a bug where Selectize inputs were triggering autosaves, even when the value didn’t change.
- Fixed a bug where custom source labels weren’t getting translated. (#14137)
- Fixed a bug where Dropdown columns within Table fields were loosing their options when the field was edited. (#14134)
";s:4:"date";s:19:"2024-01-16T00:00:00";}i:74;a:4:{s:7:"version";s:5:"4.6.0";s:8:"critical";b:0;s:5:"notes";s:5112:"Content Management
- Added live conditional field support to asset edit pages, as well as asset, user, and tag slideouts. (#14115)
- Added the “Country” field type. (#13789)
- It’s now possible to delete volume folders using the “Delete” asset action. (#13086)
- Date range condition rules are now inclusive of their end dates. (#13435)
- Custom field condition rules now show their field handles, for users with the “Show field handles in edit forms” preference enabled. (#13300)
- Element conditions now include condition rules for fields with duplicate names, for users with the “Show field handles in edit forms” preference enabled. (#13300)
- Improved element search performance. (#14055)
- Improved the performance of large editable tables. (#13852)
Administration
- Edit Field pages now have a “Save and add another” action. (#13865)
- Added the
disabledUtilities
config setting. (#14044)
- Added the
showFirstAndLastNameFields
config setting. (#14097)
resave
commands now pass an empty string (''
) to fields’ normalizeValue()
methods when --to
is set to :empty:
. (#13951)
- The
sections/create
command now supports --name
, --handle
, --type
, --no-versioning
, --uri-format
, and --template
options, and can now be run non-interactively. (#13864)
- The
index-assets/one
and index-assets/all
commands now accept a --delete-empty-folders
option. (#13947)
Extensibility
- Added partial support for field types storing data in JSON columns (excluding MariaDB). (#13916)
- Added
craft\base\conditions\ConditionRuleInterface::getLabelHint()
.
- Added
craft\helpers\AdminTable::moveToPage()
. (#14051)
- Added
craft\helpers\App::dbMutexConfig()
.
- Added
craft\helpers\ElementHelper::searchableAttributes()
.
- Added
craft\services\Elements::setElementUri()
.
- Added
craft\services\Elements::EVENT_SET_ELEMENT_URI
. (#13930)
- Added
craft\services\Search::createDbQuery()
.
craft\base\MemoizableArray
now supports passing a normalizer method to the constructor, which will be lazily applied to each array item once, only if returned by all()
or firstWhere()
. (#14104)
craft\elements\actions\DeleteAssets
is no longer deprecated.
craft\helpers\ArrayHelper::firstWhere()
now has a $valueKey
argument, which can be passed a variable by reference that should be set to the resulting value’s key in the array.
- Deprecated
craft\helpers\App::mutexConfig()
.
- Added
Craft.FormObserver
. (#14114)
- Admin tables now have
footerActions
, moveToPageAction
, onCellClicked
, onCellDoubleClicked
, onRowClicked
, onRowDoubleClicked
, and paginatedReorderAction
settings. (#14051)
System
- “Updating search indexes” jobs are no longer queued when saving elements with change tracking enabled, if no searchable fields or attributes were changed. (#13917)
queue/get-job-info
action requests no longer create a mutex lock.
- The
mutex
driver is now set to yii\mutex\MysqlMutex
or yii\mutex\PgsqlMutex
by default, once again. (#14102)
";s:4:"date";s:19:"2024-01-09T00:00:00";}i:75;a:4:{s:7:"version";s:6:"4.5.15";s:8:"critical";b:0;s:5:"notes";s:1483:"- Fixed a bug where the “Save and add another” element action wasn’t redirecting to a new element edit page, when editing an unpublished draft.
- Fixed a bug where
craft\helpers\DateTimeHelper::nextYear()
and lastYear()
weren’t returning the correct dates. (#14109)
- Fixed a bug where image transforms weren’t getting created for remote assets, if
maxCachedCloudImageSize
was set to 0
. (#14100)
- Fixed a SQL error that could occur when updating existing elements via GraphQL mutations. (#14113)
- Fixed a bug where Assets fields weren’t preselecting the default upload location when first opening the asset selection modal. (#14112, #14116)
- Fixed a bug where Assets fields weren’t tracking their selected source path on a per-field basis. (#14112, #14116)
- Fixed a bug where
craft\fields\BaseRelationField::normalizeValue()
wasn’t retaining eager-loaded values. (#14117)
";s:4:"date";s:19:"2024-01-09T00:00:00";}i:76;a:4:{s:7:"version";s:6:"4.5.14";s:8:"critical";b:0;s:5:"notes";s:1834:"
- Improved the performance of input namespacing.
- The Licensing Issues alert now includes a “Refresh” button. (#14080)
relatedToAssets
, relatedToCategories
, relatedToEntries
, relatedToTags
, and relatedToUsers
are now reserved user field handles. (#14075)
craft\services\Security::$sensitiveKeywords
is no longer case-sensitive. (#14064)
- Fixed a bug where the
index-assets/cleanup
command accepted --cache-remote-images
, --create-missing-assets
, and --delete-missing-assets
options, even though they didn’t do anything.
- Fixed a bug where automatically-created relations could be lost when a new site was added to an entry. (#14065)
- Fixed a bug where
craft\web\Request::getIsPreview()
was returning true
for requests with expired tokens. (#14066)
- Fixed a bug where asset conflict resolution modals were closing prematurely if there were multiple conflicts. (#14045)
- Fixed a bug where meta fields weren’t showing change indicators.
- Fixed a bug where the
index-assets/one
command was overly-destructive when run with a subpath and the --delete-missing-assets
option. (#14087)
- Fixed a privilege escalation vulnerability.
";s:4:"date";s:19:"2024-01-02T00:00:00";}i:77;a:4:{s:7:"version";s:6:"4.5.13";s:8:"critical";b:0;s:5:"notes";s:1465:"
- Address fields now have the appropriate
autocomplete
values when editing an address that belongs to the current user. (#13938)
- The
|markdown
and |md
filters now accept an encode
argument, which can be set to true
to HTML-encode the content before parsing it as Markdown.
- Added the
pre-encoded
Markdown flavor, which can be used when the content has already been HTML-encoded.
- Added
craft\elements\Address::getBelongsToCurrentUser()
.
- Fixed a bug where
{% namespace %}
tags weren’t respecting namespaces set to 0
. (#13943)
- Fixed an error that could occur when using a custom asset uploader. (#14029)
- Fixed an error that could occur when saving an asset using
SCENARIO_CREATE
, if Asset::$tempFilePath
wasn’t set. (#14041)
- Fixed a bug where some HTML entities within Tip and Warning field layout elements colud get double-encoded. (#13959)
- Fixed an infinite recursion bug. (#14033)
";s:4:"date";s:19:"2023-12-15T00:00:00";}i:78;a:4:{s:7:"version";s:6:"4.5.12";s:8:"critical";b:0;s:5:"notes";s:3186:"
- It’s no longer possible to dismiss asset conflict resolution modals by pressing Esc or clicking outside of the modal. (#14002)
- Improved performance for sites with lots of custom fields in non-global contexts. (#13992)
- Username, Full Name, and Email fields now have the appropriate
autocomplete
values when editing the current user. (#13941)
- Queue job info is now broadcasted to other browser tabs opened to the same control panel. (#13990)
- Volumes’ Asset Filesystem settings now list filesystems that are already selected by another volume, as disabled options. (#14004)
- Added
craft\db\Connection::onAfterTransaction()
.
- Added
craft\errors\MutexException
. (#13985)
- Added
craft\fieldlayoutelements\TextField::$inputType
. (#13988)
- Deprecated
craft\fieldlayoutelements\TextField::$type
. $inputType
should be used instead. (#13988)
- Fixed a bug where WebP image transforms weren’t respecting transform quality settings. (#13998)
- Fixed a bug where
craft\base\ApplicationTrait::onAfterRequest()
callbacks weren’t necessarily triggered if an EVENT_AFTER_REQUEST
handler got in the way.
- Fixed a bug where keyboard shortcuts could stop working. (#14011)
- Fixed a bug where the
craft\services\Elements::EVENT_AUTHORIZE_VIEW
event wasn’t always triggered when editing elements. (#13981)
- Fixed a bug that prevented Live Preview from opening for edited entries, when the
autosaveDrafts
config setting was disabled. (#13921)
- Fixed a bug where JavaScript-based slug generation wasn’t working consistently with PHP. (#13971)
- Fixed a bug where asset upload failure notifications could be ambiguous if a server connection issue occurred. (#14003)
- Fixed a “Changes to the project config are not possible while in read-only mode.” error that could occur when adimn changes were disallowed. (#14018)
- Fixed a bug where it was possible to create a volume without a filesystem selected. (#14004)
- Fixed a privilege escalation vulnerability.
";s:4:"date";s:19:"2023-12-12T00:00:00";}i:79;a:4:{s:7:"version";s:8:"4.5.11.1";s:8:"critical";b:0;s:5:"notes";s:155:"
- Fixed a PHP error that occurred due to a conflict with psr/log v3. (#13963)
";s:4:"date";s:19:"2023-11-23T00:00:00";}i:80;a:4:{s:7:"version";s:6:"4.5.11";s:8:"critical";b:0;s:5:"notes";s:1582:"
- Date fields with “Show Time Zone” enabled will now remember IANA-formatted time zones set via GraphQL. (#13893)
- Added
craft\gql\types\DateTime::$setToSystemTimeZone
.
craft\gql\types\DateTime
now supports JSON-encoded objects with date
, time
, and timezone
keys.
craft\web\Response::setCacheHeaders()
now includes the public
directive in the Cache-Control
header. (#13922)
- Fixed a bug where ↑ and ↓ key presses would set focus to disabled menu options. (#13911)
- Fixed a bug where elements’
localized
GraphQL field wasn’t returning any results for drafts or revisions. (#13924)
- Fixed a bug where dropdown option labels within Table fields weren’t getting translated. (#13914)
- Fixed a bug where “Updating search indexes” jobs were getting queued for Matrix block revisions. (#13917)
- Fixed a bug where control panel resources weren’t getting published on demand. (#13935)
- Fixed privilege escalation vulnerabilities.
";s:4:"date";s:19:"2023-11-16T00:00:00";}i:81;a:4:{s:7:"version";s:6:"4.5.10";s:8:"critical";b:0;s:5:"notes";s:2330:"
- Added the
db/drop-table-prefix
command.
- Top-level disabled related/nested elements are now included in “Extended” element exports. (#13496)
- Related element validation is no longer recursive. (#13904)
- Addresses’ owner elements are now automatically set on them during initialization, if they were queried with the
owner
address query param.
- Entry Title fields are no longer shown when “Show the Title field” is disabled and there’s a validation error on the
title
attribute. (#13876)
- Improved the reliability of image dimension detection. (#13886)
- The default backup command for PostgreSQL no longer passes in
--column-inserts
to pg_dump
.
- Log contexts now include the environment name. (#13882)
- Added
craft\web\AssetManager::$cacheSourcePaths
.
- Fixed a bug where disclosure menus could be positioned off-screen on mobile.
- Fixed a bug where element edit pages could show a context menu when it wasn’t necessary.
- Fixed a bug where the “Delete entry for this site” action wasn’t deleting the canonical entry for the selected site, when editing a provisional draft.
- Fixed an error that occurred when cropping an image that was missing its dimension info. (#13884)
- Fixed an error that occurred if a filesystem didn’t have any settings. (#13883)
- Fixed a bug where related element validation wansn’t ensuring that related elements were loaded in the same site as the source element when possible. (#13907)
- Fixed a bug where sites weren’t always getting queried in the same order, if multiple sites’
sortOrder
values were the same. (#13896)
";s:4:"date";s:19:"2023-11-07T00:00:00";}i:82;a:4:{s:7:"version";s:5:"4.5.9";s:8:"critical";b:0;s:5:"notes";s:444:"
- Fixed a bug where it was possible to change the status for entries that didn’t show the Status field, via bulk editing. (#13854)
- Fixed a PHP error that could occur when editing elements via slideouts. (#13867)
- Fixed an error that could occur if no
storage/
folder existed.
";s:4:"date";s:19:"2023-10-23T00:00:00";}i:83;a:4:{s:7:"version";s:5:"4.5.8";s:8:"critical";b:0;s:5:"notes";s:1437:"
- Improved the styling and accessibility of revision pages. (#13857, #13850)
- Added the
focalPoint
argument to asset save mutations. (#13846)
- The
up
command now accepts a --no-backup
option.
{% cache %}
tags now store any <meta>
tags registered with yii\web\View::registerMetaTag()
. (#13832)
- Added
craft\errors\ExitException
.
- Added
craft\web\View::startMetaTagBuffer()
.
- Added
craft\web\View::clearMetaTagBuffer()
.
- Added support for modifying the application config via a global
craft_modify_app_config()
function. (#13855)
- Fixed a bug where
{% exit %}
tags without a status code weren’t outputting any HTML that had already been output in the template. (#13848)
- Fixed a bug where it wasn’t possible to Ctrl/Command-click on multiple elements to select them. (#13853)
";s:4:"date";s:19:"2023-10-20T00:00:00";}i:84;a:4:{s:7:"version";s:5:"4.5.7";s:8:"critical";b:0;s:5:"notes";s:4400:"
- Field containers are no longer focusable unless a corresponding validation message is clicked on. (#13782)
- Improved element save performance.
- Added
pgpassword
and pwd
to the list of keywords that Craft will look for when determining whether a value is sensitive and should be redacted from logs, etc.
- Added
craft\events\DefineCompatibleFieldTypesEvent
.
- Added
craft\services\Fields::EVENT_DEFINE_COMPATIBLE_FIELD_TYPES
. (#13793)
- Added
craft\web\assets\inputmask\InputmaskAsset
.
craft\web\Request::accepts()
now supports wildcard (e.g. application/*
). (#13759)
Craft.ElementEditor
instances are now configured with an elementId
setting, which is kept up-to-date when a provisional draft is created. (#13795)
- Added
Garnish.isPrimaryClick()
.
- Fixed a bug where relational fields’ element selector modals weren’t always getting set to the correct site per the field’s “Relate entries from a specific site?” setting. (#13750)
- Fixed a bug where Dropdown fields weren’t visible when viewing revisions and other static forms. (#13753, craftcms/commerce#3270)
- Fixed a bug where the
defaultDirMode
config setting wasn’t being respected when the storage/runtime/
and storage/logs/
folders were created. (#13756)
- Fixed a bug where the “Save and continue editing” action wasn’t working on Edit User pages if they contained a Money field. (#13760)
- Fixed a bug where relational fields’ validation messages weren’t using the actual field name. (#13807)
- Fixed a bug where element editor slideouts were appearing behind element selector modals within Live Preview. (#13798)
- Fixed a bug where element URIs weren’t getting updated for propagated sites automatically. (#13812)
- Fixed a bug where dropdown input labels could overflow out of their containers. (#13817)
- Fixed a bug where the
transformGifs
and transformSvgs
config settings weren’t always being respected when using @transform
GraphQL directives. (#13808)
- Fixed a bug where Composer operations were sorting
require
packages differently than how Composer does it natively, when config.sort-packages
was set to true
. (#13806)
- Fixed a MySQL error that could occur when creating a Plain Text field with a high charcter limit. (#13781)
- Fixed a bug where entries weren’t always being treated as live for View and Preview buttons, when editing a non-primary site. (#13746)
- Fixed a bug where Ctrl-clicks were being treated as primary clicks in some browsers. (#13823)
- Fixed a bug where some language options were showing “false” hints. (#13837)
- Fixed a bug where Craft was tracking changes to elements when they were being resaved. (#13761)
- Fixed a bug where sensitive keywords weren’t getting redacted from log contexts.
- Fixed RCE vulnerabilities.
";s:4:"date";s:19:"2023-10-17T00:00:00";}}s:10:"renewalUrl";s:72:"https://console.craftcms.com/accounts/geniusesforhire/licenses/cms/86034";s:12:"renewalPrice";s:7:"99.0000";s:15:"renewalCurrency";s:3:"USD";s:13:"phpConstraint";s:6:"^8.0.2";s:11:"packageName";s:12:"craftcms/cms";}s:7:"plugins";a:5:{s:8:"freeform";a:7:{s:6:"status";s:7:"expired";s:8:"releases";a:171:{i:0;a:4:{s:7:"version";s:5:"5.9.5";s:8:"critical";b:0;s:5:"notes";s:792:"Added
- Added
FreeformPostForwardingInterface
interface for GraphQL to handle new Post Forwarding integration type.
- Added
FreeformGoogleTagManagerInterface
interface for GraphQL to handle new Google Tag Manager integration type.
Fixed
- Fixed a bug where Table fields were incorrectly marked as required, even when they were not supposed to be.
- Fixed a bug where Dropdown and Radio column types in Table fields were breaking in the form builder.
- Fixed a bug where the new Post Forwarding integration type (
postForwarding
) was not supported in GraphQL.
- Fixed a bug where the new Google Tag Manager integration type (
gtm
) was not supported in GraphQL.
";s:4:"date";s:19:"2025-01-31T00:00:00";}i:1;a:4:{s:7:"version";s:5:"5.9.4";s:8:"critical";b:0;s:5:"notes";s:430:"Fixed
- Fixed a bug where element integrations were being disabled if the Stripe integration was enabled for the same form.
- Fixed a PHP 8.0 compatibility issue for Craft 4 sites.
- Fixed a bug where the
duplicate
conditional check was not working correctly on Cookie checks.
- Fixed a bug where the Freeform Data Export page would not work on sites using PostgreSQL.
";s:4:"date";s:19:"2025-01-30T00:00:00";}i:2;a:4:{s:7:"version";s:5:"5.9.3";s:8:"critical";b:0;s:5:"notes";s:482:"Added
- Added diagnostic checks for Minimum Submit Time and Form Submit Expiration.
- Added support for the
sqrt
function (square root) in the Calculation field logic.
Fixed
- Fixed a bug where the
duplicate
conditional check was not working correctly on form load.
- Fixed a bug where user registration forms were not validating existing usernames and email addresses.
";s:4:"date";s:19:"2025-01-29T00:00:00";}i:3;a:4:{s:7:"version";s:5:"5.9.2";s:8:"critical";b:0;s:5:"notes";s:550:"Fixed
- Fixed a bug where the Stripe field was not factoring in default values in Radio fields when set as the dynamic amount field.
- Fixed a bug where the File Drag & Drop field was not displaying all errors.
- Fixed a bug where the form builder and dashboard would not display any forms for a user who did not have access to the primary site.
- Fixed unnecessary captcha triggers in Stripe calls.
- Fixed a bug where the breadcrumbs Site switcher was not displaying correctly in Craft 5.
";s:4:"date";s:19:"2025-01-24T00:00:00";}i:4;a:4:{s:7:"version";s:7:"5.9.1.2";s:8:"critical";b:0;s:5:"notes";s:119:"Fixed
- Fixed a bug where the Calculation field logic was not editable in the form builder.
";s:4:"date";s:19:"2025-01-23T00:00:00";}i:5;a:4:{s:7:"version";s:7:"5.9.1.1";s:8:"critical";b:0;s:5:"notes";s:109:"Fixed
- Fixed a compatibility issue with the Monolog 2.x dependency in Craft 4.x.
";s:4:"date";s:19:"2025-01-23T00:00:00";}i:6;a:4:{s:7:"version";s:5:"5.9.1";s:8:"critical";b:0;s:5:"notes";s:148:"Changed
- Updated the integration logging to include extensive Stripe webhook logging.
- Updated the plugin icon.
";s:4:"date";s:19:"2025-01-23T00:00:00";}i:7;a:4:{s:7:"version";s:5:"5.9.0";s:8:"critical";b:0;s:5:"notes";s:2841:"Added
- Added the ability to mark specific field columns as required inside Table fields.
- Added Info and Debugging logging for integrations.
- Added an Integrations Log to the settings menu so admins can easily view and clear the log from the control panel.
- Added the ability to hide specific options from Element and Predefined sources for multi-option field types (via the Limited Users feature).
- Added the ability to limit the Forms element field type by specific forms.
- Added a setting to turn off Automatic Purge Unfinalized Assets queue jobs.
- Added counter for the number of Saved submissions on each form card on the dashboard.
- Added a Tailwind 3 Dark mode sample template.
- Added Site awareness and Integration logging level to the Diagnostics page.
- Added support for more features in the Express edition of Freeform:
- All captchas, including Javascript Test and all reCAPTCHA, hCaptcha and Turnstile options.
- All export file types, including Excel, CSV, XML, JSON and Text.
- Access to Quick Export.
- Added support for more features in the Lite edition of Freeform:
- All export file types, including Excel, CSV, XML, JSON and Text.
- Access to Quick Export and Export Profiles.
- Verified support for Craft 5.6.x.
Changed
- Refactored all exporting features and improved memory efficiency.
- Refactored all queue job runners into feature bundles and prevented duplicate jobs from happening.
- Updated various translations throughout the control panel.
- Updated all sample template CSS and JS, including the Javascript Test to be minified.
Fixed
- Fixed a bug where integrations were not using Craft's guzzle configuration (
httpProxy
).
- Fixed a bug where custom button rendering incorrectly displayed Back buttons.
- Fixed a bug where the Save & Continue Later feature was visible on Express and Lite editions.
- Fixed a bug where the Convert to Custom Values button was incorrectly showing for Limited Users when hidden.
- Fixed a bug where the Spam Protection Behavior setting was showing incorrectly on the Diagnostics page.
- Fixed a bug where Email Field notifications were attempting to be sent when the Email field was hidden by Conditional Rules.
- Fixed a compatibility issue with the integration
options
column type for sites using older versions of MariaDB.
";s:4:"date";s:19:"2025-01-21T00:00:00";}i:8;a:4:{s:7:"version";s:5:"5.8.7";s:8:"critical";b:0;s:5:"notes";s:159:"Fixed
- Fixed a bug where the PDF Templates feature could error in the form builder and notification templates area for some users.
";s:4:"date";s:19:"2025-01-15T00:00:00";}i:9;a:4:{s:7:"version";s:5:"5.8.6";s:8:"critical";b:0;s:5:"notes";s:444:"Fixed
- Fixed a bug where mouse clicks were not affecting Conditional Rules on Number fields (e.g. up/down arrows).
- Fixed a bug where the Usage in Elements tab in the form builder was crashing when no Freeform Form fields existed.
- Fixed a conflict issue with a CSS class in the control panel.
- Fixed a bug where some basic translations for GraphQL permission settings were missing.
";s:4:"date";s:19:"2025-01-08T00:00:00";}i:10;a:4:{s:7:"version";s:5:"5.8.5";s:8:"critical";b:0;s:5:"notes";s:169:"Fixed
- Fixed a bug where sites using the multi-site feature would see multiple copies of submissions when using the Export Profiles feature.
";s:4:"date";s:19:"2024-12-27T00:00:00";}i:11;a:4:{s:7:"version";s:5:"5.8.4";s:8:"critical";b:0;s:5:"notes";s:608:"Fixed
- Fixed a bug where sites using the multi-site feature would see multiple copies of submissions when using Quick Export.
- Fixed a bug where allowing spam submissions could error when using multi-sites.
- Fixed a bug where the Last Number for the Numbers predefined option would always be
20
.
- Fixed a bug where the
m241126_113656_UpdateTableLayoutProperties.php
migration could error about undefined array keys.
- Fixed a bug where the Freeform observer started before the document was ready.
";s:4:"date";s:19:"2024-12-23T00:00:00";}i:12;a:4:{s:7:"version";s:5:"5.8.3";s:8:"critical";b:0;s:5:"notes";s:495:"Fixed
- Fixed a bug where the initial field value wasn't used in the Calculation field.
- Fixed an issue where the resource URLs for sample formatting templates were not fully compatible with Craft Cloud sites.
- Fixed a bug where Status was not available in Quick Export.
- Fixed issues with the Stripe webhook.
- Fixed a bug where the form builder Usage in Elements tab was not always loading correctly.
";s:4:"date";s:19:"2024-12-16T00:00:00";}i:13;a:4:{s:7:"version";s:5:"5.8.2";s:8:"critical";b:0;s:5:"notes";s:280:"Fixed
- Fixed a bug where a user with individual form permissions would not have access to a form they just duplicated.
- Fixed a bug where the automatic purging of old submissions queue job could fail if an empty string was passed for an asset.
";s:4:"date";s:19:"2024-12-11T00:00:00";}i:14;a:4:{s:7:"version";s:5:"5.8.1";s:8:"critical";b:0;s:5:"notes";s:775:"Added
- Added Italian translation.
Changed
- Changed the English translation from
en-US
to en
.
Fixed
- Fixed a bug where spammy submissions were still being saved to the database when the Spam Folder was disabled.
- Fixed a bug where fresh installs between 5.7.0 and 5.8.0 were missing a new
options
column in the freeform_email_marketing_fields
and freeform_crm_fields
database tables. Added a migration for affected installs.
- Fixed a bug where the form name link on the CP submission details page was not linked correctly.
- Fixed a bug where translations for the Error Log notice were missing.
";s:4:"date";s:19:"2024-12-10T00:00:00";}i:15;a:4:{s:7:"version";s:5:"5.8.0";s:8:"critical";b:0;s:5:"notes";s:1136:"Added
- Added the ability to use Textareas and Radios inside a Table field.
Changed
- Improved the usability of the Table field in the form builder.
- Improved the usability of the Submit button layout settings to hide unnecessary options in the form builder.
- Updated the sample formatting template assets to load as Asset Bundles to support Craft Cloud setups.
- Optimized all front end Freeform scripts.
- Removed the
axios
dependency.
- Removed the
lodash
dependency.
- Removed the
core-js
polyfills.
- Scripts for Calculation fields now load seperately as
calculation.js
only if the field exists in the form being displayed.
- When using
freeform.loadScripts()
(for manually loading scripts) and Calculation fields, be sure to include the field.calculation
option.
Fixed
- Fixed a bug where multiple primary keys could be defined when MySQL has
sql_generate_invisible_primary_key
turned on.
";s:4:"date";s:19:"2024-12-03T00:00:00";}i:16;a:4:{s:7:"version";s:5:"5.7.4";s:8:"critical";b:0;s:5:"notes";s:383:"Changed
- Updated the Mailchimp integration to include additional error logging around Contact Tags.
Fixed
- Fixed a bug in the Freeform 4.x migration where form submission table names were not always being named correctly.
- Fixed a bug in the Freeform 4.x migration where original form handles were not being preserved.
";s:4:"date";s:19:"2024-11-29T00:00:00";}i:17;a:4:{s:7:"version";s:5:"5.7.3";s:8:"critical";b:0;s:5:"notes";s:1195:"Added
- Added translations for the Usage in Elements feature.
Changed
- Updated the
phpoffice/phpspreadsheet
dependency to include ^2.0
and ^3.0
.
- Updated the Salesforce Lead Update Duplicate Leads setting to skip empty values in the new data when overwriting an existing Lead record.
Fixed
- Fixed a bug where Matrix relation titles would not always display correctly in the Usage in Elements tab. Set
Entry ID#
as a title fallback for Matrix relations without a title.
- Fixed a bug where the Pipedrive integration was not correctly mapping to Lead fields.
- Fixed a bug where required field validation wasn't working correctly when using
is one of
and is not one of
conditional rules logic.
- Fixed a bug where the Freeform 4.x migration could fail if a form name was too long.
- Fixed a bug where the Stripe payment status was not updating for previously declined cards.
- Fixed a bug where the Stripe instructions guide had some errors.
";s:4:"date";s:19:"2024-11-22T00:00:00";}i:18;a:4:{s:7:"version";s:5:"5.7.2";s:8:"critical";b:0;s:5:"notes";s:1805:"Added
- Added a Usage in Elements tab to each form's settings in the form builder, displaying which elements use that form in the Freeform Form element type (Craft 5 only).
- Added detection and mapping of predefined options to applicable fields in the Salesforce integration.
- Added detection and mapping of predefined options to applicable fields in the HubSpot integration.
- Added an accessibility check for reduced motion on form scroll.
- Verified support for Craft 5.5.x.
Changed
- Updated composer.json to no longer force
^1.33
of the phpstan/phpdoc-parser
package to workaround an issue in the symfony/property-access
package now that the issue is resolved.
Fixed
- Fixed a bug where the Constant Contact integration could not map to standard fields if no custom fields existed.
- Fixed a bug where user permission checks for creating and deleting forms were not working.
- Fixed a bug where some integrations might lose their
refresh_token
.
- Fixed an autoloading warning issue.
- Fixed a bug where the sample formatting templates' validation errors were not always working correctly when multiple forms with the same template existed in the same template.
- Fixed a bug in the Freeform 4.x migration where it wasn't converting extended ASCII characters in form or field handles.
- Fixed a bug where Quick Export could fail if there were invalid or stale field IDs.
- Fixed a bug where exporting submissions to Excel format could sometimes fail.
- Fixed a bug where the Constant Contact integration instructions were not up to date with the latest setup flow.
";s:4:"date";s:19:"2024-11-15T00:00:00";}i:19;a:4:{s:7:"version";s:5:"5.7.1";s:8:"critical";b:0;s:5:"notes";s:655:"Added
- Added
EVENT_DEFINE_SIDEBAR_HTML
in the Freeform Submissions CP view. Thanks @mofman!
Changed
- Updated CRM integrations in the form builder to include separators for objects to improve clarity.
- Updated composer.json to force the
phpstan/phpdoc-parser
package to ^1.33
to work around an issue in the symfony/property-access
package.
Fixed
- Fixed a bug where labels in the Jira integration would sometimes error about array values.
- Fixed a bug where some forms could error when duplicating forms.
";s:4:"date";s:19:"2024-11-12T00:00:00";}i:20;a:4:{s:7:"version";s:7:"5.7.0.1";s:8:"critical";b:0;s:5:"notes";s:124:"Fixed
- Fixed a bug where the translation table migration wouldn't work with prefixed databases.
";s:4:"date";s:19:"2024-11-10T00:00:00";}i:21;a:4:{s:7:"version";s:5:"5.7.0";s:8:"critical";b:0;s:5:"notes";s:1141:"Added
- Added support for site-aware translatable forms inside the form builder (Pro).
- Added PDF Templates that can be dynamically generated and attached to submission notifications (Pro).
- Added the ability to designate where to render a visible captcha in your template.
- Added a Jira Cards integration (Pro).
- Added the ability to set custom error messages for Required validation on fields.
- Added support for overwriting existing Salesforce Lead records if the email address matches.
- Added a fallback formatting template for forms with a missing or invalid formatting template configured.
- Added a check for
asyncCsrfInputs
on the Diagnostics page.
Fixed
- Fixed a bug where associated assets were not removed when submissions were deleted in the control panel or via the Submission Purge feature.
- Fixed a bug where the mailer service was resetting template mode too early.
- Fixed a bug where there could be a possible infinite loop in the Submission element.
";s:4:"date";s:19:"2024-11-09T00:00:00";}i:22;a:4:{s:7:"version";s:5:"5.6.8";s:8:"critical";b:0;s:5:"notes";s:101:"Fixed
- Fixed a bug where Webhook URLs were not processing ENV variables.
";s:4:"date";s:19:"2024-10-25T00:00:00";}i:23;a:4:{s:7:"version";s:5:"5.6.7";s:8:"critical";b:0;s:5:"notes";s:604:"Added
- Added support for sending file uploads to Salesforce objects.
- Added complete translations for the Salesforce integration.
Fixed
- Fixed a bug where the CP Submissions index would error when displaying File Upload and File Upload Drag & Drop fields.
- Fixed a bug where Hidden and Invisible fields were not included in Freeform Data exports.
- Fixed a bug where the
dateCreated
, dateUpdated
and uid
columns were missing when persisting rule conditions on a PostgreSQL install.
";s:4:"date";s:19:"2024-10-23T00:00:00";}i:24;a:4:{s:7:"version";s:5:"5.6.6";s:8:"critical";b:0;s:5:"notes";s:826:"Fixed
- Fixed a bug where the Javascript Test was not checking for the presence of the input before updating its value.
- Fixed a bug where email notification jobs did not consider the site ID used when submitting the form.
- Fixed a bug where Invisible fields could not have their values overridden at the template level.
- Fixed a bug where Stripe
payments.amount
only showed whole numbers.
- Fixed a bug where Stripe
payments.id
and payments.resourceId
were not available to use.
- Fixed a bug where the GTM integration would fail if another script also uses the
form
global variable.
- Fixed a bug where the Freeform 4.x migration was missing a check for
targetFieldHash
before using it.
";s:4:"date";s:19:"2024-10-18T00:00:00";}i:25;a:4:{s:7:"version";s:5:"5.6.5";s:8:"critical";b:0;s:5:"notes";s:874:"Added
- Added support for Cloudflare Turnstile spam protection captcha.
Changed
- Updated the sample Grid and Flexbox formatting templates to allow for compatibility between Group fields and Conditional Rules.
Fixed
- Fixed a bug where the Decimal Count setting for the Calculation field type was not seeing
0
as a valid value.
- Fixed a bug where the Freeform 4.x migration was converting status colors to
gray
instead of grey
while in Craft 4.x.
- Fixed a bug where the Send Success Email from Stripe to Submitter setting was not respected and Stripe would continue sending email receipts.
- Fixed a bug where using the List view on the forms dashboard could trigger an error for some customers.
";s:4:"date";s:19:"2024-10-11T00:00:00";}i:26;a:4:{s:7:"version";s:5:"5.6.4";s:8:"critical";b:0;s:5:"notes";s:1153:"Added
- Added support for Is One Of and Is Not One Of rule types for conditional rules, allowing you to perform advanced conditional checks on multi-option field types.
- Added a Decimal Count setting to the Calculation field type for the ability to automatically round result values.
- Added support for PKCE (Proof Key for Code Exchange) in the Pardot integration.
Changed
- Improved the form builder to remember the last opened items for the Notifications, Rules and Integrations tabs.
- Updated the French translation.
Fixed
- Fixed a bug where Export Notifications were not working.
- Fixed a bug where disabling email notifications inside the form builder would not disable them.
- Fixed a bug where duplicating a form would exclude email notifications, conditional rules and integrations.
- Fixed a bug where a default error message was not set for the Regex field type.
- Fixed a bug where the Freeform 4.x migration was not migrating or setting a default error message for Regex fields.
";s:4:"date";s:19:"2024-10-07T00:00:00";}i:27;a:4:{s:7:"version";s:5:"5.6.3";s:8:"critical";b:0;s:5:"notes";s:492:"Added
- Added a new Stripe
EVENT_AFTER_UPDATE_PAYMENT_METADATA
event that allows additional metadata to be attached to a payment intent when a submission is created.
Fixed
- Fixed a bug where custom fields were not showing for mapping in the Pipedrive CRM integration.
- Fixed a bug where mapping a field handle of
name
to a Stripe integration will prevent the Stripe field from loading in the front end.
";s:4:"date";s:19:"2024-09-27T00:00:00";}i:28;a:4:{s:7:"version";s:5:"5.6.2";s:8:"critical";b:0;s:5:"notes";s:640:"Fixed
- Fixed a bug where the Export Freeform data utility was not loading correctly in Craft 4.
- Fixed a bug where email notification templates could not be assigned to forms in the form builder for some users.
- Fixed a bug where the form "Cards" icon was not showing in the button on the form dashboard page.
- Fixed a bug where form submission and spam counters were not displaying in the dashboard for users and groups without read or manage permissions.
- Fixed a bug where links to modify forms in the List view of the dashboard did not account for user and group permissions.
";s:4:"date";s:19:"2024-09-20T00:00:00";}i:29;a:4:{s:7:"version";s:5:"5.6.1";s:8:"critical";b:0;s:5:"notes";s:124:"Fixed
- Fixed a bug where file-based email notification templates were not being read correctly.
";s:4:"date";s:19:"2024-09-18T00:00:00";}i:30;a:4:{s:7:"version";s:5:"5.6.0";s:8:"critical";b:0;s:5:"notes";s:1463:"Added
- Added a utility for granularly exporting and importing Freeform data (beta), including forms, submissions, templates, integrations, and Freeform settings.
- Added the ability to organize form cards into groups on the Forms dashboard page.
- Added the ability to switch the Forms dashboard page from Cards to a List table view.
- Added the ability to check in Twig to see if an integration is enabled for a form. Use
{% if form.isIntegrationEnabled("integrationHandle") %}
.
- Added template-level overrides for POST Forwarding, allowing for Twig in the POST Forwarding URL and error phrase.
- Added the ability to hide advanced settings for Submit buttons with the Limited Users feature.
- Added compatibility of Hubspot tracking code to the Hubspot CRM integration.
- Added French translation. Thanks @scandella!
- Added German translation.
Changed
- Updated all sample formatting templates to load all scripts and styles via URLs to aid with strict content security policies. Added a migration for the Grid and Flexbox formatting template names in forms and the demo templates.
- Updated Status column styling to match Craft 5 for CP submissions/spam indexes.
Fixed
- Fixed various issues with missing translation strings.
- Fixed style issues on Payment cards in the CP submissions index.
";s:4:"date";s:19:"2024-09-17T00:00:00";}i:31;a:4:{s:7:"version";s:6:"5.5.10";s:8:"critical";b:0;s:5:"notes";s:297:"Fixed
- Fixed a compatibility issue with Campaign 3.x on Craft 5.x.
- Fixed a bug where an error could occur when creating new forms on some MySQL installs.
- Fixed a bug where the Diagnostics page could error on integration reporting if using PostgreSQL.
";s:4:"date";s:19:"2024-09-06T00:00:00";}i:32;a:4:{s:7:"version";s:5:"5.5.9";s:8:"critical";b:0;s:5:"notes";s:1082:"Added
- Added support for migrating Submit button labels in the Freeform 4.x migration.
- Added support for migrating conditional rules on Submit buttons in the Freeform 4.x migration.
- Verified support for Craft 5.4.x.
Changed
- Various updates to Dutch translations.
Fixed
- Fixed a bug where uploading assets to submissions in the control panel would incorrectly mark them as unfinalized assets to be deleted
- Fixed a bug where the Forms element field type was not alphabetically ordering the list of forms.
- Fixed a bug where some types of conditional rules on fields were not migrating properly in the Freeform 4.x migration.
- Fixed a bug where the Constant Contact integration was not implementing the refresh token interface.
- Fixed a bug where the Pardot integration was missing the
pardot_api
scope.
Security
- Updated the
phpoffice/phpspreadsheet
dependency to correct an XSS vulnerability.
";s:4:"date";s:19:"2024-09-04T00:00:00";}i:33;a:4:{s:7:"version";s:5:"5.5.8";s:8:"critical";b:0;s:5:"notes";s:128:"Fixed
- Fixed a bug where some headers were missing in the Pardot integration authorization request.
";s:4:"date";s:19:"2024-08-30T00:00:00";}i:34;a:4:{s:7:"version";s:5:"5.5.7";s:8:"critical";b:0;s:5:"notes";s:722:"Changed
- Updated Webhooks to improve the inclusion of file metadata.
- Updated the Stripe dependency versions to include
v14
and v15
.
- Changed Freeform so it does not set
noCache
headers on every request. Includes support for Craft's asyncCsrfInputs
feature.
Fixed
- Fixed a bug where the
site
parameter would lose track of the active site on nav links in the control panel when using the multi-site feature. For this to work correctly, you must enable the Site-Aware Forms setting.
- Fixed a bug where Freeform scripts were being attached to non-Freeform forms.
";s:4:"date";s:19:"2024-08-14T00:00:00";}i:35;a:4:{s:7:"version";s:5:"5.5.6";s:8:"critical";b:0;s:5:"notes";s:459:"Added
- Added Keap CRM integration.
- Add a
queuePriority
setting to set the Craft queue priority of Freeform jobs.
- Verified support for Craft 5.3.x.
Fixed
- Fixed issues with permissions when using the Craft Team edition.
- Fixed a bug where custom field types were not showing in the Express edition.
- Fixed some minor styling issues on the diagnostics page.
";s:4:"date";s:19:"2024-08-10T00:00:00";}i:36;a:4:{s:7:"version";s:5:"5.5.5";s:8:"critical";b:0;s:5:"notes";s:593:"Changed
- Refactored exception catching. Added a failsafe which performs a token refresh flow once if an access token returns an unauthorized response.
Fixed
- Fixed a bug where the Bypass All Spam Checks for Logged in Users setting did not correctly bypass all spam checks for logged-in users when a form is cached.
- Fixed a bug where moving fields around in the builder layout would sometimes not work correctly.
- Fixed a bug where the Surveys & Polls link in form cards was broken.
";s:4:"date";s:19:"2024-07-30T00:00:00";}i:37;a:4:{s:7:"version";s:5:"5.5.4";s:8:"critical";b:0;s:5:"notes";s:724:"Added
- Added
freeform.loadScripts()
template function for manually loading Freeform scripts (e.g. Freeform JS, reCAPTCHA, JS Test, etc).
Changed
- Changed form deleting from a
DELETE
to POST
request for better compatibility with server permissions.
Fixed
- Fixed a bug where Webhooks were being triggered on submissions sent to the Spam Folder.
- Fixed a bug where the CP Submissions chart was not showing for users with no settings access permissions.
- Fixed a bug where integration field mapping wasn't always cleaning up correctly.
- Fixed some Dutch translation language bugs.
";s:4:"date";s:19:"2024-07-11T00:00:00";}i:38;a:4:{s:7:"version";s:5:"5.5.3";s:8:"critical";b:0;s:5:"notes";s:982:"Added
- Added support for mapping URLs, email addresses, and phone numbers to the Craft URL field type for element integrations.
- Added a
loadFormSpecificScripts
template function for manually loading additional form-specific scripts (e.g. reCAPTCHA, JS Test, etc).
Changed
- Updated integrations to fail gracefully on the front end when a user submits the form. If there's a configuration issue or error for the integration, the form will continue to process for the user and log an error in the Freeform error log.
- Updated integrations to no longer encrypt setting values configured with an ENV variable. Instead, the ENV variable will be stored in the database to continue working in multiple environments.
Fixed
- Fixed a bug where email notification jobs would fail when the Store Submission Data setting was disabled for the form.
";s:4:"date";s:19:"2024-07-04T00:00:00";}i:39;a:4:{s:7:"version";s:5:"5.5.2";s:8:"critical";b:0;s:5:"notes";s:658:"Changed
- Improved field error validation on multi-page forms using Element integrations. If required element fields are not present on the current Freeform form page, their error validation will happen at the end of the form instead.
- Improved integration error messages in the settings page.
Fixed
- Fixed a bug where email notifications were not rendering all fields from all pages.
- Fixed a bug where email notification jobs did not contain submission object data (if using that to render submission data).
- Fixed a potential ordering issue when dragging fields between rows.
";s:4:"date";s:19:"2024-07-03T00:00:00";}i:40;a:4:{s:7:"version";s:5:"5.5.1";s:8:"critical";b:0;s:5:"notes";s:808:"Changed
- Updated the form deletion process to include a delete confirmation modal to prevent accidental deletion of forms.
Fixed
- Fixed a bug that caused the Email Notification and Integration jobs to break when the Store Submitted Data setting was disabled.
- Fixed a bug that intermittently prevented integrations using OAuth from working.
- Fixed a bug where the Spam Blocking integrations page was not visible while admin changes were not allowed.
- Fixed a bug where going to a previous page in multi-page forms would not retain any data entered on the current page.
- Fixed a bug where the Move, Duplicate, and Archive form card buttons were displaying for the Express edition, which is not relevant.
";s:4:"date";s:19:"2024-06-27T00:00:00";}i:41;a:4:{s:7:"version";s:5:"5.5.0";s:8:"critical";b:0;s:5:"notes";s:2055:"Added
- Added the ability to bulk insert options into option-based field types (Checkboxes, Dropdown, etc).
- Added the ability to archive forms. Archived forms will continue to work and be accessible, but will no longer appear prominently on the Forms dashboard page.
- Added file attachments to be included in the POST Forwarding feature.
Changed
- Changed spam blocking to be integrations now. Previously, whenever
allowAdminChanges
was set to false
, it was no longer possible for users to modify blocked keywords, emails and IP addresses. This has been rectified by moving them from the settings to integration types. Users can now create pre-built sets of spam blocks, share them across forms, and manage each individually per form.
- Removed Blocked Keywords, Emails, and IP Addresses from the Spam Protection settings area.
- Added new integration types
Keywords
, Emails
and IP Addresses
.
- Added a migration that migrates previous settings into new integrations and applies them to existing forms.
- Updated the File Drag & Drop field type to use
title
attribute to display error information on files and removed the microtip
library, as it was incompatible with a strict Content Security Policy that doesn't allow inline styles or inline scripts to be used.
Fixed
- Fixed a bug where rearranging fields into different rows in the form builder many times could cause it to stop working correctly.
- Fixed a bug that intermittently prevented integrations using OAuth from working. Added a buffer time for the refresh token check.
- Fixed a bug where failed Webhook integrations would break forms upon submission. Errors are now just logged in the Freeform error log.
- Fixed a bug where Date & Time field validation issues with native HTML types. A new setting has been added.
";s:4:"date";s:19:"2024-06-26T00:00:00";}i:42;a:4:{s:7:"version";s:5:"5.4.2";s:8:"critical";b:0;s:5:"notes";s:272:"Changed
- Updated remaining unnecessary inline
style
attributes to be handled in freeform.css
file instead.
Fixed
- Fixed some visual issues in the settings area of the Limited Users feature.
";s:4:"date";s:19:"2024-06-21T00:00:00";}i:43;a:4:{s:7:"version";s:5:"5.4.1";s:8:"critical";b:0;s:5:"notes";s:129:"Fixed
- Fixed a bug where the form builder would not load correctly on the Express and Lite editions.
";s:4:"date";s:19:"2024-06-19T00:00:00";}i:44;a:4:{s:7:"version";s:5:"5.4.0";s:8:"critical";b:0;s:5:"notes";s:1836:"Added
- Added Limited Users feature (Pro), which allows you to customize the form builder experience for specific users or groups.
- You can choose which field types are available and which settings and page tabs are visible.
- This ensures that these users are not overwhelmed by advanced settings and prevents them from accidentally breaking your forms or site.
- Multiple limited user groups can be created.
- Added ability to set email notifications and integrations to use Craft's queue.
- Added settings to control the Default 'From Name' and 'From Name' when creating new email notification templates.
- Added a chart to the Submissions index page.
- Added full translation support for the form builder and overhauled the English and Dutch translation files to be complete.
Changed
- Updated email notifications and integrations to be now handled by Craft's jobs. These can optionally be queued as well.
- Moved all remaining inline CSS and Javascript into external script files. This does not include inline CSS and JS for sample formatting templates.
- Updated the Date & Time field type to use
date
, time
, and datetime-local
when not using the Flatpickr date/time picker feature.
Fixed
- Fixed a bug where the form Save & Continue feature was not working correctly.
- Fixed a bug where Stripe Payment forms would not scroll to the top of the form if there were errors.
- Fixed a bug that prevented clicking the Back button on a page that contained a Stripe Payment field from working.
- Fixed a bug where conditional rules were not being scoped within each form, which could affect other similar forms.
";s:4:"date";s:19:"2024-06-18T00:00:00";}i:45;a:4:{s:7:"version";s:5:"5.3.5";s:8:"critical";b:0;s:5:"notes";s:730:"Added
- Verified support for Craft 5.2.
- Verified support for the reCAPTCHA Enterprise API and updated the Settings page.
Changed
- Updated Survey & Poll report summary page to limit Text answers to the most recent 20 each to help with performance and readability.
Fixed
- Fixed a bug where the Entries Elements integration was not working correctly on multi-site setups when attempting to map to a section with the primary site disabled.
- Fixed a bug where the spam reason was not displaying correctly for Captchas and JS Test.
- Fixed a bug where 'checked' was available for option-based fields in the GraphQL Explorer.
";s:4:"date";s:19:"2024-06-13T00:00:00";}i:46;a:4:{s:7:"version";s:5:"5.3.4";s:8:"critical";b:0;s:5:"notes";s:293:"Added
- Added a list of active modules to the Freeform Diagnostics page.
Changed
- Minor updates to the plugin icon for better visibility in Craft 5.
Fixed
- Fixed a potential error when uninstalling Freeform 5.
";s:4:"date";s:19:"2024-06-07T00:00:00";}i:47;a:4:{s:7:"version";s:7:"5.3.3.1";s:8:"critical";b:0;s:5:"notes";s:175:"Changed
- Reverted improved Twig template debugging for formatting templates change (5.1.17) for now, as it is causing issues with Windows servers.
";s:4:"date";s:19:"2024-06-05T00:00:00";}i:48;a:4:{s:7:"version";s:5:"5.3.3";s:8:"critical";b:0;s:5:"notes";s:562:"Changed
- Updated the Password field type's Minimum Length setting to suppress Craft's minimum password length message when integrating with a Craft User to handle user registration.
- Updated the Freeform Diagnostics page to include additional checks and improve some existing ones.
Fixed
- Fixed a bug where Windows servers would show an error when attempting to load formatting templates.
- Fixed a bug where a duplicate form filter could sometimes display in the CP Submissions index page.
";s:4:"date";s:19:"2024-06-05T00:00:00";}i:49;a:4:{s:7:"version";s:5:"5.3.2";s:8:"critical";b:0;s:5:"notes";s:510:"Changed
- Updating the Surveys & Polls report/results page to include additional CSS that hides the Craft navbar and header for printing (or saving as PDF).
Fixed
- Fixed a bug where the Table field type's built-in JS and max rows settings inside the form builder did not affect the front end.
- Fixed a bug where en and em dash characters were not saving in submission data on Radios, Dropdown, and Opinion Scale field types.
";s:4:"date";s:19:"2024-05-31T00:00:00";}i:50;a:4:{s:7:"version";s:5:"5.3.1";s:8:"critical";b:0;s:5:"notes";s:147:"Fixed
- Fixed a bug that could cause the Craft search index to break if multiple forms had fields with the same handle.
";s:4:"date";s:19:"2024-05-28T00:00:00";}i:51;a:4:{s:7:"version";s:5:"5.3.0";s:8:"critical";b:0;s:5:"notes";s:1968:"Changed
- Improved the Script Insert feature:
The Static URLs option is no longer available, and the default is now Craft's Asset Bundles (an improved version of As Files). This ensures the best performance and reliability for any site and compatibility with Craft Cloud.
- The file pointers endpoints (_Static URLs) remain available for backward compatibility.
- The manual script loading approach (
loadFreeformPlugin
) will also automatically load Asset Bundle URLs.
- Renamed the Freeform Script Insertion Location and Freeform Script Insert Type settings to Script Insert Location and Script Insert Type, respectively.
- Updated the demo templates:
- The submissions index view now orders submissions in descending order.
- The submission view now includes an enhanced display of assets for File Drag & Drop fields (in addition to regular File fields).
- Various updates to sample formatting templates:
- No longer include vague CSS classes to avoid conflict with other site styles. Added
freeform-form
class to the <form>
tag for all sample templates.
- No longer force overrides for
addButtonLabel
and removeButtonLabel
on Table fields.
- Improved display and positioning of submit buttons on Basic sample templates.
- Improved display of success and error banners on Basic sample templates.
Fixed
- Fixed a bug where the
tableAttributes
template overrides for Table fields were not working.
- Fixed a bug where displaying assets from File fields in CP Submissions was broken.
- Fixed a bug where the Theme setting was mislabeled for File Drag & Drop fields inside the form builder.
";s:4:"date";s:19:"2024-05-24T00:00:00";}i:52;a:4:{s:7:"version";s:5:"5.2.2";s:8:"critical";b:0;s:5:"notes";s:658:"Added
- Added
freeform-stripe-load
event for Payments forms and moved Mutation Observer outside of window.onload
.
Changed
- Updated the Conditional Rules JSON attachment from
<script>
to <div>
with a data attribute for better compatibility with JS frameworks.
Fixed
- Fixed a bug where fetching Payment records (
freeform.payments
) in the Submissions query was not available.
- Fixed a bug where an error about
freeform_feed
would be triggered when attempting to install Freeform.
";s:4:"date";s:19:"2024-05-22T00:00:00";}i:53;a:4:{s:7:"version";s:5:"5.2.1";s:8:"critical";b:0;s:5:"notes";s:121:"Fixed
- Fixed a bug where the Express Forms migration was not working as of Freeform 5.1.19+.
";s:4:"date";s:19:"2024-05-21T00:00:00";}i:54;a:4:{s:7:"version";s:5:"5.2.0";s:8:"critical";b:0;s:5:"notes";s:1233:"Added
- Added optional Site Filtering setting for forms and submissions (Pro). This setting allows you to filter form lists by Sites and prevents other admins from accessing forms that belong to Sites they don't have access to.
- This only controls access to forms and submissions. It does not enable translations per site.
- If you'd like to apply this change retroactively, you should run the
./craft freeform/submissions/resave
CLI command after enabling this setting.
- Added settings for Password field to set a minimum number of characters to be used (Min Length) and whether the password should contain at least one number, one lowercase letter, one uppercase letter, and one special character (Character Variability).
- Added an integration for Google Sheets (Pro).
Changed
- Updated sample formatting templates to use
novalidate
. It was previously incorrectly applied to inputs instead of <form>
.
Fixed
- Fixed a bug where Stripe payment information was unavailable in email notifications.
";s:4:"date";s:19:"2024-05-15T00:00:00";}i:55;a:4:{s:7:"version";s:8:"5.1.19.1";s:8:"critical";b:0;s:5:"notes";s:210:"Fixed
- Fixed a bug where attempting to update to Freeform 5.1.19 could cause the process to crash.
- Fixed input placeholder styles for Bootstrap sample formatting templates.
";s:4:"date";s:19:"2024-05-09T00:00:00";}i:56;a:4:{s:7:"version";s:6:"5.1.19";s:8:"critical";b:0;s:5:"notes";s:761:"Changed
- Updated the Settings → Statuses to no longer have conflicting logic to set the default status for new forms. This is now done in the Settings → Form Builder area in Freeform 5+.
- Improved integration errors to log more meaningful error messages.
Fixed
- Fixed a bug where the Update Notices feature for the Freeform dashboard was not working.
- Fixed a bug where clicking the Source type an additional time would clear any option settings you currently have for Options-based field types.
- Fixed a bug where setting
allowedGraphqlOrigins
to false
in general.php would cause form submissions to crash.
";s:4:"date";s:19:"2024-05-08T00:00:00";}i:57;a:4:{s:7:"version";s:8:"5.1.18.1";s:8:"critical";b:0;s:5:"notes";s:631:"If you are experiencing visual issues with form layouts and styles on the front end, please update Freeform and ensure you're adding the |raw
filter to form.attributes.success
and form.attributes.errors
in any custom formatting templates you may have when not using AJAX.
Changed
- Added the
|raw
filter to form.attributes.success
and form.attributes.errors
in sample formatting templates as they began parsing with an extra set of quotes around them when not using AJAX.
";s:4:"date";s:19:"2024-05-06T00:00:00";}i:58;a:4:{s:7:"version";s:6:"5.1.18";s:8:"critical";b:0;s:5:"notes";s:872:"If you are experiencing visual issues with form layouts and styles on the front end, please update Freeform and ensure you're adding the |raw
filter to form.attributes.row
in any custom formatting templates you may have.
Changed
- Added the
|raw
filter to form.attributes.row
in sample formatting templates as they began parsing with an extra set of quotes around them.
Fixed
- Fixed a bug where forms would fail when loading if a Confirm field was used and the Duplicate Check setting was set to Anyone - Once per Email Address.
- Fixed a bug where the form builder's field association badges for Checkbox, HTML, and Rich Text fields did not display correctly.
";s:4:"date";s:19:"2024-05-06T00:00:00";}i:59;a:4:{s:7:"version";s:6:"5.1.17";s:8:"critical";b:0;s:5:"notes";s:1222:"Added
- Added Assets as an Element source for populating Freeform field options.
- Confirmed compatibility with Craft 5.1.x.
Changed
- Improved Twig template debugging for formatting templates.
- Updated Tailwind formatting template to have instructions below the field label instead of below the input.
- Updated the JSON payload from forms to no longer contain details of the user(s) that created and last updated the form.
- Updated the Field Type Manager to store field types set to hidden in the database instead of the Project Config file.
Fixed
- Fixed a bug where Freeform fields with long handles could cause Craft's search indexing jobs to fail.
- Fixed a bug where Export Notifications would fail if they contained multiple email addresses.
- Fixed a bug where conditional rules were outputted to the browser console.
- Fixed a bug where some integration could fail due to model properties being before EVENT_BEFORE_SAVE.
- Fixed a bug where Notification Persistence would throw errors if the form upsert event has errors.
";s:4:"date";s:19:"2024-05-03T00:00:00";}i:60;a:4:{s:7:"version";s:8:"5.1.16.1";s:8:"critical";b:0;s:5:"notes";s:124:"Fixed
- Fixed a bug where the update migration for 5.1.16 was not automatically being triggered.
";s:4:"date";s:19:"2024-04-29T00:00:00";}i:61;a:4:{s:7:"version";s:6:"5.1.16";s:8:"critical";b:0;s:5:"notes";s:885:"Added
- Added the ability to set conditional rules that can prematurely fully submit the form if matched.
- Added the ability to set conditional rules on Submit, Back and Save buttons.
- Added support for using conditional rules across different pages, e.g. Field C on Page 2 will display if Field A on Page 1 is X.
Changed
- Updated the color of submit buttons inside the form builder to dark gray to prevent confusion with actual action buttons.
Fixed
- Fixed a bug where saving any Freeform settings would clear the Form Builder "defaults" settings.
- Fixed a bug where submissions flagged as spam would still send data off to integrations instead of being queued.
- Fixed some potential issues with submitting Checkbox fields.
";s:4:"date";s:19:"2024-04-26T00:00:00";}i:62;a:4:{s:7:"version";s:6:"5.1.15";s:8:"critical";b:0;s:5:"notes";s:765:"Changed
- Updated GraphQL to include HTML and Rich Text field types.
Fixed
- Fixed a bug where the Export Profiles page in the CP would display an error in Craft 5 when any profiles exist.
- Fixed a bug where Stripe Payment submissions were still processed when flagged as spam by Freeform.
- Fixed a bug where the form builder included two labels for Checkbox fields.
- Fixed a bug where creating a new Site and setting it to be the Primary site (at the same time) would fail due to Freeform.
- Fixed a bug where the old approach of
FreeformField_Submit
and FreeformField_Save
were still showing under fields
in the GraphQL explorer.
";s:4:"date";s:19:"2024-04-24T00:00:00";}i:63;a:4:{s:7:"version";s:6:"5.1.14";s:8:"critical";b:0;s:5:"notes";s:453:"Added
- Added
freeform/submissions/generate
CLI command to allow the creation of fake submission data into forms. Useful for testing and troubleshooting some issues.
- Added support for searching into specific fields in the CP Submission element search bar (e.g.
firstName:bob
). You may need to run ./craft freeform/submissions/resave --update-search-index
once for this to work.
";s:4:"date";s:19:"2024-04-19T00:00:00";}i:64;a:4:{s:7:"version";s:8:"5.1.13.1";s:8:"critical";b:0;s:5:"notes";s:100:"Fixed
- Fixed an issue with the Dotdigital integration.
";s:4:"date";s:19:"2024-04-18T00:00:00";}i:65;a:4:{s:7:"version";s:6:"5.1.13";s:8:"critical";b:0;s:5:"notes";s:888:"Added
- Added Craft element search support for submissions. You may need to run
./craft freeform/submissions/resave --update-search-index
once for this to work.
- Added
freeform/submissions/resave
CLI command to resave all existing submissions.
- Added
freeform/submissions/fix-titles
CLI command to fix the migration of Element titles for sites that have upgraded from Craft 4 to Craft 5. This command needs to be run once after the migration.
Fixed
- Fixed a visual issue with the Quick Export modal styles in Craft 5.
- Fixed a bug where the Express Forms migration utility would not work if there were no fields in a form.
- Fixed a race condition issue where refreshing the browser in the form builder would sometimes show stale or invalid data on section tabs.
";s:4:"date";s:19:"2024-04-17T00:00:00";}i:66;a:4:{s:7:"version";s:6:"5.1.12";s:8:"critical";b:0;s:5:"notes";s:493:"Changed
- Changed all
PUT
requests to POST
requests for sites with strict method allowlists.
- Updated the form builder to include the Craft notice banner for successes and errors when saving the form.
- Updated success/error notices throughout the plugin.
- Updated breadcrumbs throughout the plugin.
Fixed
- Fixed a bug where error validation was not working correctly in the form builder.
";s:4:"date";s:19:"2024-04-12T00:00:00";}i:67;a:4:{s:7:"version";s:6:"5.1.11";s:8:"critical";b:0;s:5:"notes";s:1852:"Changed
- Refactored Captcha loaders and added lazy load support.
- Improved Failure Behavior settings for Captchas inside the form builder.
- Improved display of HTML, Rich Text, Hidden and Invisible field types in the form builder.
- Updated the
fields
and lists
limits in the ActiveCampaign integration.
- Updated the
stripe/stripe-php
dependencies to include ^13.0
.
- Updated the
symfony/property-access
, symfony/finder
, symfony/filesystem
and symfony/expression-language
dependencies to remove 2.8|^3.0|^4.0
.
- Updated the
symfony/serializer
dependency to include ^5.0
and ^7.0
.
- Updated the
hashids/hashids
dependency to include ^5.0
and remove ^2.0
.
- Removed the
composer/composer
dependency requirement.
Fixed
- Fixed an issue with the Dotdigital integration.
- Fixed a deprecation error when viewing the CP Submissions index in Craft 5.
- Fixed an alignment issue with the Submit buttons in the CP Submission and Spam detail pages.
- Fixed a bug where Element integration field mapping was not reliably loading and saving data.
- Fixed a bug where Email Marketing integrations could fail when field mapping is updated.
- Fixed a bug in which the form's Updated date was not correctly updated.
- Fixed a bug where the Javascript Test was loading inside the CP Submission detail page.
- Fixed a bug where an element query could execute before Craft loaded.
";s:4:"date";s:19:"2024-04-11T00:00:00";}i:68;a:4:{s:7:"version";s:6:"5.1.10";s:8:"critical";b:0;s:5:"notes";s:328:"Changed
- Updated the
symfony/property-access
, symfony/finder
, symfony/filesystem
and symfony/expression-language
dependencies to include ^7.0
.
- Updated the
nesbot/carbon
dependency to include ^3.0.0"
.
";s:4:"date";s:19:"2024-04-04T00:00:00";}i:69;a:4:{s:7:"version";s:5:"5.1.9";s:8:"critical";b:0;s:5:"notes";s:1594:"Added
- Added an updated Dotdigital email marketing integration.
- Added an
EVENT_UPDATE_PAYMENT_METADATA
developer event for modifying Stripe metadata.
Changed
- Refactored the form submit and submit button lock process to work reliably when more complex features and flows are active (e.g. Stripe, Captchas, File Drag & Drop, etc).
- Updated the domain extension length maximum from
6
to 15
for Website fields.
- Exposed the Maximum Length field setting for GraphQL.
Fixed
- Fixed a bug where Freeform fields could not map to Salesforce Checkbox fields.
- Fixed an issue with Stripe subscriptions and empty product names. Also added a failsafe for the product name.
- Fixed a bug where the Page tab label editor in the builder was broken when a scrollbar was present (lots of pages).
- Fixed a bug where the Max Length setting was not present for applicable fields.
- Fixed a bug where deleting Group fields could delete other fields that share its row in the builder.
- Fixed a bug where the reCAPTCHA v2 Checkbox was not being validated if left empty on a form with Stripe.
- Fixed a bug where the Submit button was prematurely becoming active again before the Stripe payment form was fully processed.
- Fixed a bug where Captchas were loaded inside the CP submission detail page when enabled.
";s:4:"date";s:19:"2024-04-03T00:00:00";}i:70;a:4:{s:7:"version";s:5:"5.1.8";s:8:"critical";b:0;s:5:"notes";s:978:"Added
- All reCAPTCHA and hCaptcha versions are now available for the Lite edition (as well as Pro).
Changed
- Updated the delete icon display and behavior for managing page tabs in the builder.
Fixed
- Fixed a bug where the form submit button was not always locking correctly with forms using Stripe or File Upload fields.
- Fixed a bug where deleting Group fields in the builder was not also removing the fields inside.
- Fixed a visual issue when editing page tab names in the builder when using the Safari and Firefox browsers.
- Fixed a visual issue for field blocks in the builder when using the Microsoft Edge browser.
- Fixed a bug where long field labels overlapped other field labels in the builder.
- Fixed a bug where conditional rules for forms might not always migrate correctly from Freeform 4.
";s:4:"date";s:19:"2024-03-27T00:00:00";}i:71;a:4:{s:7:"version";s:5:"5.1.7";s:8:"critical";b:0;s:5:"notes";s:457:"Fixed
- Fixed a bug where reCAPTCHA would conflict with forms using Stripe Payments.
- Fixed a bug where mapping a field with a handle of
name
would break the Stripe integration.
- Fixed a bug where running the migration from Freeform 3.x could trigger a
Base table or view already exists
error.
- Fixed some Safari browser stying issues with the horizontal scrollbar for page tabs.
";s:4:"date";s:19:"2024-03-22T00:00:00";}i:72;a:4:{s:7:"version";s:5:"5.1.6";s:8:"critical";b:0;s:5:"notes";s:712:"Added
- Added a Not Like option for filtering on field values in Export Profiles.
Changed
- Improved the form builder so it doesn't prematurely close the property editor when a click and drag happens beyond it (e.g. selecting a value in a text input field to clear and replace it).
Fixed
- Fixed a bug where fields could have conditional rules for each other and cause an infinite loop.
- Fixed a bug where removing conditional rules did not always remove the correct rule set.
- Fixed a bug where using multiple Stripe fields from multiple Stripe accounts in the same form would not work correctly.
";s:4:"date";s:19:"2024-03-20T00:00:00";}i:73;a:4:{s:7:"version";s:7:"5.1.5.1";s:8:"critical";b:0;s:5:"notes";s:142:"Fixed
- Fixed a bug where a change for setting
nocache
headers in Freeform 5.1.5 broke the Craft CLI.
";s:4:"date";s:19:"2024-03-20T00:00:00";}i:74;a:4:{s:7:"version";s:5:"5.1.5";s:8:"critical";b:0;s:5:"notes";s:1176:"Changed
- Updated the CSRF input to send
nocache
headers when rendering.
- Adjusted the Diagnostics page to include PHP 8.2 and 8.3 compatibility.
Fixed
- Fixed a bug where Freeform was opening unnecessary sessions.
- Fixed a bug where page tabs would become inaccessible when the number of tabs exceeds the width of the browser window.
- Fixed a bug where mapping to the Enabled setting on Craft Entry element integrations was not working.
- Fixed a bug where user group selection in the User element integration did not allow multiple choice.
- Fixed a bug where files were not being uploaded for regular File Upload fields when not using AJAX.
- Fixed a bug where the User element integration was not always working when used in edit mode.
- Fixed a bug where changes to email notifications in the form builder were not sticking if you switched to another tab.
- Fixed a bug where the default theme option for Stripe was incorrectly named
default
instead of stripe
, causing console errors in the browser.
";s:4:"date";s:19:"2024-03-19T00:00:00";}i:75;a:4:{s:7:"version";s:5:"5.1.4";s:8:"critical";b:0;s:5:"notes";s:512:"Added
- Added the ability to add attributes to Captcha containers at the template level.
Changed
- Reverted the Campaign Monitor to API tokens (instead of OAuth) to address several complications.
Fixed
- Fixed a bug where the Freeform 4 to 5 migration could fail when creating submission database tables in some circumstances.
- Added clarity to the Activate Users setting for the User element integration.
";s:4:"date";s:19:"2024-03-14T00:00:00";}i:76;a:4:{s:7:"version";s:5:"5.1.3";s:8:"critical";b:0;s:5:"notes";s:513:"Fixed
- Fixed a bug where Dynamic Recipient fields could sometimes fail in the Freeform 4 to 5 migration.
- Fixed a bug where saving submissions via console commands would fail on the saved notes feature.
- Fixed a bug where the Calculations field type was not triggering the Stripe element refresh when set as the dynamic amount field while set as Plain Text.
- Fixed a bug where the Empty Option Label feature was showing on fields other than Dropdowns.
";s:4:"date";s:19:"2024-03-11T00:00:00";}i:77;a:4:{s:7:"version";s:5:"5.1.2";s:8:"critical";b:0;s:5:"notes";s:467:"Fixed
- Fixed a bug where Success Templates were not being mapped in the Freeform 4 to 5 migration.
- Fixed a bug where the Calculations field type was not triggering the Stripe element refresh when set as the dynamic amount field.
- Fixed a bug where changing a form's Form Type had no effect.
- Fixed a bug in conditional rules logic that prevented fields with handles beginning with a number from working correctly.
";s:4:"date";s:19:"2024-03-07T00:00:00";}i:78;a:4:{s:7:"version";s:5:"5.1.1";s:8:"critical";b:0;s:5:"notes";s:1230:"Added
- Added compatibility with Craft 5 beta (in addition to Craft 4.x).
- Added back support for an optional Empty Option Label for Dropdown fields that are populated by Elements or Predefined options.
- Added support for Automatic Spam Purging in the Lite edition of Freeform.
Changed
- Refactored the Submission Purge functionality to use the Craft queue.
- Updated the Stripe dynamic amount field setting to accept Calculation fields.
Fixed
- Fixed a bug where the default Status set inside the builder was not being respected.
- Fixed a bug where only the first File Upload field would work if using multiple File Upload fields in the form.
- Fixed a bug where the Freeform 4 to 5 migration was setting the Success Behavior setting to Reload for all forms instead of matching what was set in Freeform 4.
- Fixed a bug where converting a field with Array data to a different field type without (e.g. Checkboxes to Dropdown) would trigger an error.
- Fixed a bug where the Calculation field was not being added to the Special field group on migration.
";s:4:"date";s:19:"2024-03-06T00:00:00";}i:79;a:4:{s:7:"version";s:5:"5.1.0";s:8:"critical";b:0;s:5:"notes";s:445:"Added
- Added a Calculation field type, which allows you to perform dynamic calculations based on user-input values within forms.
- Added a migration from the Express Forms plugin. It will import forms and fields, submissions, and notification templates.
- Added ability to set dynamic notifications using GraphQL.
Fixed
- Fixed a bug where page buttons were not translatable.
";s:4:"date";s:19:"2024-03-01T00:00:00";}i:80;a:4:{s:7:"version";s:6:"5.0.16";s:8:"critical";b:0;s:5:"notes";s:121:"Fixed
- Fixed a bug where the Stripe payments field would not load correctly when logged out.
";s:4:"date";s:19:"2024-02-28T00:00:00";}i:81;a:4:{s:7:"version";s:6:"5.0.15";s:8:"critical";b:0;s:5:"notes";s:288:"Changed
- Updated all sample formatting templates to include complete Stripe appearance API customization.
Fixed
- Fixed a bug where connecting to new integrations using OAuth 2.0 were not working due to the redirect URI being empty.
";s:4:"date";s:19:"2024-02-27T00:00:00";}i:82;a:4:{s:7:"version";s:8:"5.0.14.1";s:8:"critical";b:0;s:5:"notes";s:105:"Fixed
- Fixed some remaining issues related to the migration from Freeform 4.
";s:4:"date";s:19:"2024-02-23T00:00:00";}i:83;a:4:{s:7:"version";s:6:"5.0.14";s:8:"critical";b:0;s:5:"notes";s:699:"Changed
- Updated the reserved words list to make exceptions for
name
, type
, and username
as they are more likely to be used and don't appear to cause any issues.
Fixed
- Fixed a bug where Confirm fields were present in email notifications.
- Fixed a bug where the Page Skipping feature for Conditional Rules was not working correctly.
- Fixed a bug where forms would error when Freeform Date fields were mapping to Craft date fields (e.g. Post Date, Expiry Date, etc) in Element integrations.
- Fixed a bug where setting a template override for the submission status was not working.
";s:4:"date";s:19:"2024-02-23T00:00:00";}i:84;a:4:{s:7:"version";s:6:"5.0.13";s:8:"critical";b:0;s:5:"notes";s:1225:"Added
- Added a reserved word validator using Craft's reserved words to check against field handles.
- Added the ability to map directly to the Full Name in the Craft User element integration.
Changed
- Updated Confirm fields to no longer store data when targeting a Password field.
Fixed
- Fixed a bug where creating new forms with special or foreign characters would cause the form not to be created due to an invalid form handle.
- Fixed a bug where the Fill Form Values from the GET Query String setting was not being respected.
- Fixed a bug where editing existing users via the Craft User element integration in a Freeform form did not affect First Name and Last Name fields.
- Fixed a bug where the Page Skipping feature for Conditional Rules was not working at all.
- Fixed a bug where the Stripe Payments field was not working with the Tailwind sample formatting template (and potentially some custom templates).
- Fixed a bug where some sample formatting templates showed unnecessary styling wrappers around Stripe Payments fields.
";s:4:"date";s:19:"2024-02-23T00:00:00";}i:85;a:4:{s:7:"version";s:6:"5.0.12";s:8:"critical";b:0;s:5:"notes";s:388:"Added
- Added support for querying conditional rules for fields and pages in GraphQL.
Fixed
- Fixed a bug where migrated forms with a Dynamic Recipients field (not User Select) would trigger an error loading/submitting the form.
- Fixed a bug where Regex fields were triggering an error if left empty when submitting the form.
";s:4:"date";s:19:"2024-02-19T00:00:00";}i:86;a:4:{s:7:"version";s:6:"5.0.11";s:8:"critical";b:0;s:5:"notes";s:933:"Added
- Added a setting to allow users to enable dashes in field handle names.
Fixed
- Fixed several issues related to the migration from Freeform 4, including table prefixes and field handles that are too long getting corrupted.
- Fixed an issue where table prefixes were not being respected on fresh installs.
- Fixed the precedence order for overriding attributes in formatting templates. Overrides in the template loading the form now take precedence over the formatting template overrides within it.
- Fixed a bug where editing/saving a submission inside the control panel could sometimes error about a user ID being
0
.
- Fixed a bug where the Stripe Webhook URL was incorrectly including a CP admin path. Any existing Stripe integrations will need to be manually adjusted.
- Adjusted the JS in a few of the sample templates.
";s:4:"date";s:19:"2024-02-16T00:00:00";}i:87;a:4:{s:7:"version";s:6:"5.0.10";s:8:"critical";b:0;s:5:"notes";s:940:"Added
- Added PKCE (Proof Key for Code Exchange) implementation for integrations using the OAuth2.0 flow.
- Added support for PKCE (Proof Key for Code Exchange) in the Salesforce integration.
Fixed
- Fixed a bug where the CP Submission detail pages were not handling conditional rule logic correctly.
- Fixed a bug where the Send Digest Email job was added to the Craft queue even when turned off.
- Fixed a bug where the Stripe Payments field would not load in the form when the Freeform Script Insertion Location setting was set to Page Header.
- Fixed a bug where the Use Option Labels when Exporting setting was causing exports to fail.
- Fixed a bug where the Freeform was causing Element query executed before Craft is fully initialized errors to be logged in the Craft logs.
";s:4:"date";s:19:"2024-02-08T00:00:00";}i:88;a:4:{s:7:"version";s:5:"5.0.9";s:8:"critical";b:0;s:5:"notes";s:322:"Fixed
- Fixed a bug where the Mailchimp integration was only showing one audience/mailing list.
- Fixed a bug where the
fieldIdPrefix
parameter was not working.
- Fixed a bug where the Conditional Rules value input was not being hidden for empty condition rule types.
";s:4:"date";s:19:"2024-02-07T00:00:00";}i:89;a:4:{s:7:"version";s:5:"5.0.8";s:8:"critical";b:0;s:5:"notes";s:589:"Changed
- Implemented better cache busting for loading script pointers.
- Implemented a unified entry point for loading scripts based on current settings.
- Implemented a single Stripe script loader and mutation observer.
- Updated dropdown settings to have a clearer distinction between mapped/unmapped items.
Fixed
- Fixed a bug where the Stripe Payment field would sometimes not load on the front end.
- Fixed a bug where all old integrations were not being cleared during the migration from Freeform 4.
";s:4:"date";s:19:"2024-02-06T00:00:00";}i:90;a:4:{s:7:"version";s:5:"5.0.7";s:8:"critical";b:0;s:5:"notes";s:561:"Added
- Added support for querying page Submit buttons in GraphQL.
Changed
- Updated the HubSpot integration to use v3 of the API and the private app token approach instead of OAuth flow.
Fixed
- Fixed a bug where hyphens were allowed in form and field handles.
- Fixed a bug where the GraphQL cache was not resetting after making form updates.
- Fixed a bug where
maxLength
was included in Text and Textarea field types in GraphQL when not applicable.
";s:4:"date";s:19:"2024-02-02T00:00:00";}i:91;a:4:{s:7:"version";s:7:"5.0.6.1";s:8:"critical";b:0;s:5:"notes";s:287:"Fixed
- Fixed a bug where integration settings pages were not being displayed in the navigation when
allowAdminChanges
was set to false
.
- Fixed a bug where the Dynamic Template Notifications feature was not working correctly.
";s:4:"date";s:19:"2024-02-01T00:00:00";}i:92;a:4:{s:7:"version";s:5:"5.0.6";s:8:"critical";b:0;s:5:"notes";s:899:"Added
- Added the ability to manually render Submit buttons in forms.
Changed
- Adjusted the Manual Form extra template in the demo templates to use the new manual Submit button approach.
Fixed
- Fixed a bug where the replace syntax for template overrides (e.g.
=class
) was not working correctly.
- Fixed a bug where
0
was not considered a valid value for a Number field with the required
validator.
- Fixed a bug where regular File Upload fields were not working correctly if the field was set to be required.
- Fixed a bug where field values/default values were not returning correctly in GraphQL queries.
- Fixed a bug where some sample formatting templates did not correctly style the File Upload Drag & Drop fields.
";s:4:"date";s:19:"2024-01-31T00:00:00";}i:93;a:4:{s:7:"version";s:5:"5.0.5";s:8:"critical";b:0;s:5:"notes";s:795:"Changed
- Updated form rendering to work when iterating over rows directly in the
form
object for better backward compatibility with the Freeform 4.x approach.
- Updated
form.successMessage
, form.errorMessage
and field.rulesHtmlData
to have fallbacks (that are empty) to prevent hard errors in old formatting templates that use them.
Fixed
- Fixed a bug where user permissions were not correctly being considered on form cards on the Forms dashboard page.
- Fixed a bug where the weekly/daily email Digest feature was not always working correctly.
- Fixed a visual bug where the breadcrumbs in the form builder would formulate incorrectly when refreshing the browser.
";s:4:"date";s:19:"2024-01-30T00:00:00";}i:94;a:4:{s:7:"version";s:5:"5.0.4";s:8:"critical";b:0;s:5:"notes";s:683:"Added
- Added a Page Header option for the Freeform Javascript Insertion Location setting.
Fixed
- Fixed a bug where sites using Postgres would fail during migration.
- Fixed a bug where an error about
includeAttachments
on notification templates could occur for some sites.
- Fixed a bug where Captchas would display on all pages instead of just the last page.
- Fixed a bug where misconfigured options fields could crash the Freeform 4 migration.
- Fixed a visual bug where the breadcrumbs in the form builder could formulate incorrectly when saving the form.
";s:4:"date";s:19:"2024-01-29T00:00:00";}i:95;a:4:{s:7:"version";s:5:"5.0.3";s:8:"critical";b:0;s:5:"notes";s:972:"Changed
- Updated the weekly/daily email Digest to use Craft's queue jobs.
- Updated form rendering to not hard error if
form.customAttributes
is used in an older formatting template. It now logs a notice to the Craft deprecation warning log.
Fixed
- Fixed a bug where manually coded forms were not having the form method being set automatically.
- Fixed a bug where rendering a form through the Freeform Form field on another element could trigger an error.
- Fixed a bug where multi-option fields were not working correctly with Conditional Rule values.
- Fixed a bug where File Upload Drag & Drop fields were not working correctly if the field was set to be required.
- Fixed a bug where mandatory attributes were showing up in the form builder attribute editor.
- Fixed the
extras/manual-form
demo template to work correctly with Freeform 5.
";s:4:"date";s:19:"2024-01-26T00:00:00";}i:96;a:4:{s:7:"version";s:5:"5.0.2";s:8:"critical";b:0;s:5:"notes";s:285:"Added
- Verified compatibility with Craft 4.7.
Fixed
- Fixed a few compatibility issues with PHP 8.0.
- Fixed a bug where the migration could potentially convert a couple of the default fields incorrectly in the first form.
";s:4:"date";s:19:"2024-01-25T00:00:00";}i:97;a:4:{s:7:"version";s:5:"5.0.1";s:8:"critical";b:0;s:5:"notes";s:203:"Fixed
- Fixed an
instanceof
check issue on the Freeform 5 migration.
- Fixed a bug where default form success/error messages were not being added if empty.
";s:4:"date";s:19:"2024-01-23T00:00:00";}i:98;a:4:{s:7:"version";s:5:"5.0.0";s:8:"critical";b:0;s:5:"notes";s:20222:"If upgrading from Freeform 4, please see the special upgrade guide before proceeding.
Added
- Form Builder
- Fields can be saved as Favorites for quick use in other forms.
- Fields from other forms can be searched and reused in your form.
- A Field Type Manager has been added to the form builder. It allows you to show/hide field types, arrange them into groups, and color code them.
- Created/Updated dates and author information are now stored for each form and visible inside the form builder.
- The Limited Users feature allows you to easily customize the form builder experience for specific users or groups, ensuring that these users are not overwhelmed by advanced settings and prevents them from accidentally breaking your forms or site.
- Configure email notifications in the form builder using complex conditional rules based on field data.
- A wide range of form builder settings can now have default values set for them, and can also be locked to that value. For example, you can force the Tailwind 3 formatting template to be used for every form.
- Fields
- The Group field type allows you to nest multiple fields inside. Additionally, conditional rules can be applied to Group fields.
- Fields being populated with Element or Predefined data can now have the data converted to Custom options so they can be modified, added to, removed, reordered, etc.
- Fields can now be individually encrypted.
- Custom field types are available to be created now.
- Email Notifications
- Configure email notifications in the form builder using complex conditional rules based on field data.
- Integrations
- Captchas now include a setting inside the form builder to force a country code, e.g.
en
, de
, etc. If left blank, the locale will be auto-detected.
- Templating
- The Template Overrides feature enables modification of attributes for the form, fields, and buttons, as well as overriding field labels, values, and instructions at the template-level.
- The Settings object allows you to access all of the form's settings assigned to it in the form builder, e.g.
form.settings.errorMessage
.
- The Multipage All Fields formatting template replaces the Bootstrap 5 Multipage All Fields template.
- The
labels
and labelsAsString
methods are now available for all option field types. This allows you to choose between displaying option labels instead of values when loading submission data in front end or email notifications.
- The
implements
method is available to all fields for Twig-friendly implementation checks, e.g. field.implements('options')
.
- The global
freeform
variable allows shorthand for template queries, e.g. freeform.form
instead of craft.freeform.form
.
- Stripe Payments
- The Pro edition now includes fresh support for the newer Stripe Payment Element.
- Support for Stripe Link, Apple Pay, Google Pay, PayPal (within Europe), bank payments, deferred payments and many other options.
- Ability to include more than one Stripe payment element field in a form. When used with conditional rules, you can show/hide one Stripe element at a time (e.g. use a dropdown field to allow the user to choose between one-time or recurring payments).
- Surveys & Polls
- The Freeform Surveys & Polls plugin features are now included in the Pro edition of Freeform. Please see the special upgrade guide before proceeding.
Changed
- Control Panel
- The Dashboard and Forms pages have been combined and redesigned.
- The Email Notifications subnav menu item has been renamed to Notifications.
- All settings and references of
behaviour
have been updated to behavior
.
- Form Builder
- Completely redesigned the form builder.
- Settings and other features are now in full-page tabs to allow for lots of room to configure.
- Fields are specific to forms and added by dragging fresh field types into the layout.
- Reorganized all form settings and behaviors into multiple subsections of a unified Settings tab.
- Reorganized Email Marketing, CRM, Element, Stripe, Captcha, POST Forwarding and Google Tag Manager settings into multiple subsections of a unified Integrations tab.
- The Conditional Rules tab has been greatly improved to include a field map along with visual cues, making configuration faster and less confusing.
- Some of the option values for the Duplicate Check (formerly Limit Form Submission Rate) setting have been changed.
- Fields
- Fields are now created and specific to each form (vs. being global to all forms).
- Fields can be saved as Favorites or searched upon to be reused in other forms.
- Fields can now be changed to other field types at any point, but be aware that data loss could occur when switching incompatible field types.
- The Checkbox Group field type has been renamed to Checkboxes (and
checkboxes
in formatting templates).
- The Radio Group field type has been renamed to Radios (and
radios
in formatting templates).
- The Select field type has been renamed to Dropdown (and
dropdown
in formatting templates).
- The field type handles of
cc_details
, confirmation
, file_drag_and_drop
, multiple_select
, opinion_scale
, and rich_text
have been renamed to credit-card
, confirm
, file-dnd
, multiple-select
, opinion-scale
, and rich-text
, respectively.
- The Dynamic Recipients field type has been replaced with the User Select feature, which provides the ability to assign a notification layer to any Dropdown, Checkboxes, Radios, or Multi-Select field types.
- The Email Marketing/Mailing List special field type has been replaced with the ability to assign the Email Marketing integration to any existing Checkbox or Hidden field. This will also allow you to keep a record in Freeform of whether the mailing list was subscribed to by the user.
- The reCAPTCHA v2 Checkbox and hCaptcha Checkbox special fields are now inserted into the form automatically (before the Submit button).
- The Submit and Save & Continue Later buttons are now automatically inserted at the end of each form page.
- The Opinion Scale field type markup for manual templating has been adjusted slightly.
- Email Notifications
- The form builder now has a Notifications tab dedicated to configuring all types of email notifications (except for template-level ones).
- Integrations
- The Element Connections feature is now referred simply to Element integrations.
- Element integrations are now set up in the Freeform settings area and then configured per form.
- Webhook integrations are now configured per form (but still set up initially in the Freeform settings area).
- Integrations with more than one type have been unified with expanded functionality:
- Salesforce Leads and Salesforce Opportunities are now in a single Salesforce integration.
- Pipedrive Leads and Pipedrive Deals are now in a single Pipedrive integration.
- Zoho Leads and Zoho Deals are now in a single Zoho integration.
- Integrations that map to more than one endpoint allow more flexibility when choosing which endpoints to map to.
- The Salesforce integration has been changed to OAuth validation (instead of username/password).
- The Pipedrive integration has been changed to OAuth validation.
- The dotmailer integration has been updated and renamed to Dotdigital.
- All MailingList/mailing_list, etc, references in the code and database have been renamed to EmailMarketing/email_marketing, etc.
- Settings
- The Formatting Templates, Email Templates and Success Templates settings pages have all been combined into a single Template Manager settings page.
- Reorganized and adjusted settings pages.
- The Limit Form Submission Rate setting has been renamed to Duplicate Check. Available options have been revised and renamed for clarity as well.
- Spam Protection
- The Freeform Honeypot and Javascript Test features have been decoupled, overhauled, and set up as integrations. They can now be enabled/disabled and configured per form. The Javascript Test is now a simpler approach that will streamline use with caching or headless implementations.
- The Javascript Enhancement feature has been renamed to Javascript Test.
- Captchas are now stored as integrations, can have multiple configured per site, and can be turned on/off and further configured at the form level inside the form builder, e.g. stricter settings, different behavior, etc.
- The reCAPTCHA v2 Checkbox and hCaptcha Checkbox special fields are now inserted into the form automatically (before the Submit button).
- Templating
- The
suppress
parameter (for suppressing email notifications and integrations when editing submissions on the front end) has been renamed to disable
and has had the dynamicRecipients
, submitterNotifications
, connections
parameter names changed to userSelectNotifications
, emailFieldNotifications
, and elements
, respectively. An additional conditionalNotifications
parameter has been added to account for the new Conditional Notifications feature.
- All formatting templates have been updated and improved.
- The Bootstrap 5 Multipage All Fields formatting template has been transitioned to a "Basic" non-Bootstrap version, now called Multipage All Fields.
- Form settings and behaviors can now all be accessed in templates via
freeform.settings.settingName
.
- The
option.checked
property has been updated to an approach that compares option.value
to field.value
.
- The
disableRecaptcha
parameter is now disableCaptcha
.
- All references to
loading
(text and/or spinner indicator displayed on the submit button) are now processing
.
- All references to
spinner
(spinner indicator displayed on submit button) are now processingSpinner
, etc.
- The
limitSubmissions
parameter has been renamed to duplicateCheck
and the values have been renamed for clarity.
- The
submissionLimitReached
property in the Form object has been renamed to duplicate
.
- All references to
freeform-file-drag-and-drop
for CSS overrides have been updated to freeform-file-dnd
.
- Javascript
- The defaults for
errorClassBanner
, errorClassList
, errorClassField
and successClassBanner
plugin options for JS overrides have been adjusted to freeform-form-errors
, freeform-errors
, freeform-has-errors
and freeform-form-success
, respectively (ff-
changed to freeform-
).
- GraphQL
- The
FreeformFormInterface
fields showSpinner
, showLoadingText
and loadingText
have been renamed to showProcessingSpinner
, showProcessingText
and processingText
respectively.
Deprecated
- The PHP Sessions and Database Table options for the Freeform Session Context setting are deprecated and are planned to be removed in Freeform 6. Encrypted Payload continues to be the assumed and recommended approach, but can still be overrided to PHP Sessions or Database Table in project config.
Removed
- Control Panel
- The Field Manager area (Freeform → Fields) has been removed, as fields are no longer globally shared unless they are saved as Favorites.
- The Dashboard page has been removed in favor of a redesigned Forms page.
- Exporting "shortcuts" from the Dashboard is no longer available with the removal of the Dashboard page, but many other exporting options are available.
- The What's New feature has been removed in favor of using Craft's Announcements feature.
- The Resources area inside the Freeform control panel has been removed.
- The Form Builder Tutorial and Install Demo Banner settings have been removed.
- The Stats widget has been removed as it isn't very relevant anymore.
- The Form Values widget has been removed.
- Settings
- The Access Fields and Manage Fields permissions have been removed as they are no longer applicable.
- The Display Order of Fields in the Form Builder setting has been removed as it is no longer applicable.
- The following Project Config items have been removed due to the improvements to Form Builder defaults:
defaultTemplates
- use includeSampleTemplates: true
under defaults:
instead.
renderFormHtmlInCpViews
- use previewHtml: true
under defaults:
instead.
twigInHtml
- use twigInHtml: true
under defaults:
instead.
twigInHtmlIsolatedMode
. - use twigIsolation: true
under defaults:
instead.
formattingTemplate
- use value: basic-light/index.twig
under defaults:
→ settings:
→ general:
→ formattingTemplate:
instead.
ajaxByDefault
- - use value: '1'
under defaults:
→ settings:
→ processing:
→ ajax:
instead.
- The
freeformHoneypot
, freeformHoneypotEnhancement
, customHoneypotName
, customErrorMessage
, recaptchaBehaviour
, recaptchaEnabled
, recaptchaErrorMessage
, recaptchaKey
, recaptchaSecret
, recaptchaLazyLoad
, recaptchaMinScore
, recaptchaSize
, recaptchaTheme
and recaptchaType
settings have been removed from Project Config, as Honeypot and Captchas are stored as integrations now.
- The Additional Optional Checks setting for the Update Warnings & Notices feature has been removed.
- The Freeform Session Context setting has been removed. Encrypted Payload continues to be the assumed and recommended approach, but can still be overrided to PHP Sessions or Database Table deprecated options in project config.
- The
freeform_lock
database table has been removed as it is no longer used.
- Templating
- The Bootstrap 3, Bootstrap 4, Bootstrap 5 Multipage All Fields and Tailwind 1 formatting templates have been removed.
- The
overrideValues
parameter for Form queries has been removed. Please use the value
parameter in the new Template Overrides feature.
- The
option.checked
property has been removed. Please use and compare option.value
to field.value
.
- The
disableRecaptcha
template parameter has been removed. Please use disableCaptcha
instead.
- The
limitFormSubmissions
property has been removed from the form
object. Please use form.settings.limitSubmissions
instead.
- The
freeform/fields/create
field creation console command has been removed as it is no longer applicable.
- The following attribute control parameters have been removed and replaced by accessing them via the new
attributes
object: inputClass
, submitClass
, rowClass
, columnClass
, labelClass
, errorClass
, instructionsClass
, class
, id
, name
, method
, and action
.
- GraphQL
- The
extraPostUrl
, extraPostTriggerPhrase
, gtmId
, and gtmEventName
fields have been removed from FreeformFormInterface
in GraphQL. Please use the new interface instead (TBD).
- The
inputAttributes
, labelAttributes
, errorAttributes
, and instructionAttributes
fields have been removed from FreeformFormInterface
in GraphQL. Please use the FreeformAttributesInterface
instead.
- The
hash
field has been removed from FreeformFieldInterface
in GraphQL as it is no longer relevant.
- Stripe Payments
- The Stripe Payment feature has been removed and replaced by all-new support for the newer Stripe Payment Element.
";s:4:"date";s:19:"2024-01-22T00:00:00";}i:99;a:4:{s:7:"version";s:13:"5.0.0-beta.17";s:8:"critical";b:0;s:5:"notes";s:788:"This version is still in beta. Proceed with caution if using in production environments. If upgrading from Freeform 4, please see the special upgrade guide before proceeding.
Added
- Added association badges to fields inside the form builder. These indicate whether the field has any email notifications, conditional rules, or integrations associated with them in the other tabs.
Fixed
- Fixed various issues with MariaDB compatibility.
- Fixed a bug where field searching across other forms would display an error.
- Fixed a bug where the Quick Form widget was not working correctly.
";s:4:"date";s:19:"2024-01-19T00:00:00";}i:100;a:4:{s:7:"version";s:13:"5.0.0-beta.16";s:8:"critical";b:0;s:5:"notes";s:519:"This version is still in beta. Proceed with caution if using in production environments. If upgrading from Freeform 4, please see the special upgrade guide before proceeding.
Fixed
- Fixed several issues with Freeform widgets in the Craft Dashboard.
- Fixed a bug where the summary feed would error if the "Purge Submissions" setting was disabled.
";s:4:"date";s:19:"2024-01-12T00:00:00";}i:101;a:4:{s:7:"version";s:13:"5.0.0-beta.15";s:8:"critical";b:0;s:5:"notes";s:1191:"This version is still in beta. Proceed with caution if using in production environments. If upgrading from Freeform 4, please see the special upgrade guide before proceeding.
Added
- Added created/updated dates and author information for each form inside the form builder.
- Added a field type manager inside the form builder. It allows you to show/hide field types, arrange them into groups, and color code them.
Changed
- Adjusted the summary feed JSON to account for changes in Freeform 5.
Fixed
- Fixed a bug where the Save feature was missing some settings inside the form builder.
- Fixed a bug where moving fields around in the layout could cause data loss for some fields.
- Fixed a bug where the dropdown helper for forms with lots of pages (and not enough screen space to display them all) was not working correctly.
Removed
- Removed the Stats widget as it isn't very relevant anymore.
";s:4:"date";s:19:"2024-01-11T00:00:00";}i:102;a:4:{s:7:"version";s:13:"5.0.0-beta.14";s:8:"critical";b:0;s:5:"notes";s:764:"This version is still in beta and not recommended for production use. If upgrading from Freeform 4, please see the special upgrade guide before proceeding.
Added
- The Freeform Surveys & Polls plugin features are now included in the Pro edition of Freeform. Please see the special upgrade guide before proceeding.
Changed
- Adjusted language for some Dashboard Widget settings.
Fixed
- Fixed some issues with the Export Notifications feature.
";s:4:"date";s:19:"2024-01-05T00:00:00";}i:103;a:4:{s:7:"version";s:13:"5.0.0-beta.13";s:8:"critical";b:0;s:5:"notes";s:1078:"This version is still in beta and not recommended for production use.
This version now includes a migration path from Freeform 4. Please see the special upgrade guide before proceeding.
Added
- Added a migration path from Freeform 4. Please see the special upgrade guide before proceeding.
Fixed
- Fixed various minor issues throughout the form builder and control panel.
- Fixed a performance issue.
- Fixed a bug where the Email Alert feature was not working correctly.
- Fixed a bug where Export Profiles were not working correctly.
- Fixed a bug where the Formatting Template setting in the form builder was not loading
.html
templates.
- Fixed a bug where some Stripe Payments settings were not included.
";s:4:"date";s:19:"2023-12-28T00:00:00";}i:104;a:4:{s:7:"version";s:13:"5.0.0-beta.12";s:8:"critical";b:0;s:5:"notes";s:505:"This version is still in beta and not recommended for production use. There is no migration from Freeform 4 yet, but will be available soon.
Changed
- Updated the Diagnostics page in the control panel.
- Updated behavior of field option populating to skip elements that are missing values when populating by Element data.
Fixed
- Fixed a couple of visual bugs with the Favorite Fields manager.
";s:4:"date";s:19:"2023-12-15T00:00:00";}i:105;a:4:{s:7:"version";s:13:"5.0.0-beta.11";s:8:"critical";b:0;s:5:"notes";s:2382:"This version is still in beta and not recommended for production use. There is no migration from Freeform 4 yet, but will be available soon.
Added
- Added a refresh button to all dynamic dropdowns in the form builder.
Changed
- Updated the form handle and field handles to no longer automatically change when editing the form name and field labels at a later time.
- Updated the Stripe integration to include Appearance customization inside the builder.
- Updated the Stripe field to optionally be required.
Fixed
- Fixed a bug where the Decimal Count and Step settings for the Number field would error on the front end if set to empty.
- Fixed a bug where populating field values with Element options could result in blank labels/values if the element was empty for that field. A fallback is set to
title
or id
on empty options.
- Fixed a bug where the Submissions Export as CSV feature was not working.
- Fixed a bug where Opinion Scale fields were not correctly loading recipient mappings in the builder for User Select notifications.
- Fixed a bug where the Predefined options' Language value for Luba-Katanga was missing.
- Fixed a bug where Favorite field adding was not working correctly.
- Fixed a bug where editing multi-page submissions on the front end was not working correctly.
- Fixed a bug where using a dynamic Amount field for Stripe could break the form if the beginning value was empty or
0
.
Deprecated
- The PHP Sessions and Database Table options for the Freeform Session Context setting are deprecated and are planned to be removed in Freeform 6. Encrypted Payload continues to be the assumed and recommended approach, but can still be overrided to PHP Sessions or Database Table in project config.
Removed
- The Freeform Session Context setting has been removed. Encrypted Payload continues to be the assumed and recommended approach, but can still be overrided to PHP Sessions or Database Table deprecated options in project config.
- Removed the
freeform_lock
database table.
";s:4:"date";s:19:"2023-12-06T00:00:00";}i:106;a:4:{s:7:"version";s:13:"5.0.0-beta.10";s:8:"critical";b:0;s:5:"notes";s:1752:"This version is still in beta and not recommended for production use. There is no migration from Freeform 4 yet, but will be available soon.
This version now includes support for Stripe payments.
Added
- Added support for the Stripe Payment Element.
- Added support for Stripe Link, Apple Pay, Google Pay, PayPal (within Europe), Bank payments, deferred payments and many other options.
- Added ability to include more than one Stripe payment element field in a form. When used with conditional rules, you can show/hide one Stripe element at a time (e.g. use a dropdown field to allow the user to choose between one-time or recurring payments).
- Added setting for captchas inside the form builder to force a country code, e.g.
en
, de
, etc. If left blank, the locale will be auto-detected.
Fixed
- Fixed a bug where saving another Craft element with a value for the Freeform Form field type would error.
- Fixed a bug where the form builder wouldn't let you delete the last email notification for a form.
- Fixed a bug where fields inside of Group fields weren't being ordered/grouped as expected when viewing in the CP, exporting, submissions object on front-end.
- Fixed a bug where the Users element source for field options wasn't loading any options for Labels/Values/Orderby dropdowns.
- Fixed a bug where Dropdown fields were not remembering the option chosen when editing a submission on the front end.
- Fixed a bug where submissions flagged as spam (e.g. from Honeypot) were still sending email notifications.
";s:4:"date";s:19:"2023-12-01T00:00:00";}i:107;a:4:{s:7:"version";s:12:"5.0.0-beta.9";s:8:"critical";b:0;s:5:"notes";s:715:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Added
- Fields can now be individually encrypted.
Changed
- Updated the GraphQL submission mutation to no longer require the custom header.
Fixed
- Fixed a bug where locales were not working correctly when using more than one Date & Time field in the same form.
- Fixed a bug with the ActiveCampaign integration.
- Various other fixes and improvements to GraphQL.
";s:4:"date";s:19:"2023-11-10T00:00:00";}i:108;a:4:{s:7:"version";s:12:"5.0.0-beta.8";s:8:"critical";b:0;s:5:"notes";s:646:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Added
- Added support and checks for a free Express edition.
- Added warning, info and error notices for the forms dashboard.
Changed
- Updated the install Welcome screen.
Fixed
- Fixed some issues with the User element integration.
- Fixed a bug where the Digest feature was not working correctly.
";s:4:"date";s:19:"2023-10-17T00:00:00";}i:109;a:4:{s:7:"version";s:12:"5.0.0-beta.7";s:8:"critical";b:0;s:5:"notes";s:768:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Added
- Added a Favorite fields manager area inside the form builder.
Changed
- Updated modals in the form builder to include stacking escape functionality.
- Updated all settings and references of
behaviour
to behavior
.
Fixed
- Fixed some issues with the Honeypot and Javascript Test for GraphQL.
- Fixed some issues with the installation of Freeform. Temporarily bypassing the Welcome screen.
";s:4:"date";s:19:"2023-10-12T00:00:00";}i:110;a:4:{s:7:"version";s:12:"5.0.0-beta.6";s:8:"critical";b:0;s:5:"notes";s:1451:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Added
- A wide range of form builder settings can now have default values set for them, and can also be locked to that value. For example, you can force the Tailwind 3 formatting template to be used for every form.
- Field options can now be reordered in the form builder.
Changed
- Updated File Upload fields to be realigned with Craft's file kind/extensions defaults. Removed the custom Freeform MIME type checks.
- Moved the
disableCaptcha
and disableHoneypot
template parameters into the disable
parameter feature. Added disabling of Javascript Test as well.
- Various adjustments to language for settings in the control panel.
Fixed
- Fixed a bug where the Send Additional Notification feature (in CP) was not working.
- Fixed a bug where creating or updating integrations would error in the Settings area.
- Fixed some compatibility issues with PHP 8.0.x.
Removed
- The Additional Optional Checks setting for the Update Warnings & Notices feature has been removed.
";s:4:"date";s:19:"2023-10-05T00:00:00";}i:111;a:4:{s:7:"version";s:12:"5.0.0-beta.5";s:8:"critical";b:0;s:5:"notes";s:1123:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Added
- Added singleton integration configurator to Freeform settings.
- Added integrations for Google Tag Manager and POST Forwarding.
Changed
- Overhauled the Honeypot and Javascript Test features to be streamlined, separate, and set up as integrations that can be enabled/disabled and configured per form.
- Made various adjustments to settings language inside the form builder.
- Updated integration guide styling.
- Changed the
suppress
template parameter name to disable
.
Fixed
- Fixed a bug where the error log wasn't showing inside the Freeform control panel.
- Fixed a bug where HTML and Rich Text fields were not showing up clearly in the builder when empty.
- Resolved various visual issues within the builder.
";s:4:"date";s:19:"2023-09-29T00:00:00";}i:112;a:4:{s:7:"version";s:12:"5.0.0-beta.4";s:8:"critical";b:0;s:5:"notes";s:1088:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Added
- Added inline setup guides for all integrations.
- Added a 'Convert to Custom Options' feature for Predefined/Element options.
Changed
- Updated language on setting names in Settings -> Form Builder.
Fixed
- Fixed a bug where Group fields were not showing correctly in the CP Submissions detail view.
- Fixed a bug where Group fields were not showing in the Grid and Flexbox sample formatting templates.
- Fixed a bug where the builder would sometimes break when setting conditional rules on fields with custom options.
- Fixed a bug where User Select notifications were not working correctly.
- Resolved all known issues with GraphQL implementations.
- Resolved all known issues with developer events.
";s:4:"date";s:19:"2023-09-22T00:00:00";}i:113;a:4:{s:7:"version";s:12:"5.0.0-beta.3";s:8:"critical";b:0;s:5:"notes";s:1340:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Added
- The
labels
and labelsAsString
methods are now available for all option field types. This allows you to choose between displaying option labels instead of values when loading submission data in front end or email notifications.
- The
implements
method is available to all fields for Twig-friendly implementation checks, e.g. field.implements('options')
.
Changed
- Improved various features within the form builder.
- Improved the Template Overrides feature.
- The
valueAsString
method no longer takes a parameter.
Fixed
- Fixed various minor display issues in the form builder.
- Fixed various default setting issues in the form builder.
- Fixed various Lite/Pro checks throughout the plugin.
- Fixed a bug where Export Profiles and Export Notifications areas in the CP were erroring.
- Fixed a bug where editing existing submissions in the front end was not working.
";s:4:"date";s:19:"2023-09-15T00:00:00";}i:114;a:4:{s:7:"version";s:12:"5.0.0-beta.2";s:8:"critical";b:0;s:5:"notes";s:1198:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Fixed
- Fixed a bug where the Success Behavior of forms was not working correctly with non-AJAX forms.
- Fixed an issue where fresh installs would encounter an error about the Formatting Template directory not being set.
- Fixed a bug where fields using Elements or Predefined options in the User Select email notifications feature were not populating values in the list for recipient mapping.
- Fixed a visual issue where fields set to show on a single line were not showing that way in the form builder.
- Fixed a visual issue with searching for fields across forms in the builder.
- Fixed a bug where the New Form modal was not correctly using the default formatting template.
- Fixed a bug where the "Stop Submissions After Date" setting was not working correctly.
- Fixed a bug where the ActiveCampaign integrations were not correctly mapped to Contact fields.
";s:4:"date";s:19:"2023-09-07T00:00:00";}i:115;a:4:{s:7:"version";s:12:"5.0.0-beta.1";s:8:"critical";b:0;s:5:"notes";s:19880:"This version is still in beta and not recommended for production use. Stripe Payments are not currently supported and there is no migration from Freeform 4 yet, but these features will be available soon.
Added
- Form Builder
- Fields can be saved as Favorites for quick use in other forms.
- Fields from other forms can be searched and reused in your form.
- A Field Type Manager has been added to the form builder. It allows you to show/hide field types, arrange them into groups, and color code them.
- Created/Updated dates and author information are now stored for each form and visible inside the form builder.
- The Limited Users feature allows you to easily customize the form builder experience for specific users or groups, ensuring that these users are not overwhelmed by advanced settings and prevents them from accidentally breaking your forms or site.
- Configure email notifications in the form builder using complex conditional rules based on field data.
- A wide range of form builder settings can now have default values set for them, and can also be locked to that value. For example, you can force the Tailwind 3 formatting template to be used for every form.
- Fields
- The Group field type allows you to nest multiple fields inside. Additionally, conditional rules can be applied to Group fields.
- Fields being populated with Element or Predefined data can now have the data converted to Custom options so they can be modified, added to, removed, reordered, etc.
- Fields can now be individually encrypted.
- Custom field types are available to be created now.
- Email Notifications
- Configure email notifications in the form builder using complex conditional rules based on field data.
- Integrations
- Captchas now include a setting inside the form builder to force a country code, e.g.
en
, de
, etc. If left blank, the locale will be auto-detected.
- Templating
- The Template Overrides feature enables modification of attributes for the form, fields, and buttons, as well as overriding field labels, values, and instructions at the template-level.
- The Settings object allows you to access all of the form's settings assigned to it in the form builder, e.g.
form.settings.errorMessage
.
- The Multipage All Fields formatting template replaces the Bootstrap 5 Multipage All Fields template.
- The
labels
and labelsAsString
methods are now available for all option field types. This allows you to choose between displaying option labels instead of values when loading submission data in front end or email notifications.
- The
implements
method is available to all fields for Twig-friendly implementation checks, e.g. field.implements('options')
.
- The global
freeform
variable allows shorthand for template queries, e.g. freeform.form
instead of craft.freeform.form
.
- Stripe Payments
- The Pro edition now includes fresh support for the newer Stripe Payment Element.
- Support for Stripe Link, Apple Pay, Google Pay, PayPal (within Europe), bank payments, deferred payments and many other options.
- Ability to include more than one Stripe payment element field in a form. When used with conditional rules, you can show/hide one Stripe element at a time (e.g. use a dropdown field to allow the user to choose between one-time or recurring payments).
- Surveys & Polls
- The Freeform Surveys & Polls plugin features are now included in the Pro edition of Freeform. Please see the special upgrade guide before proceeding.
Changed
- Control Panel
- The Dashboard and Forms pages have been combined and redesigned.
- The Email Notifications subnav menu item has been renamed to Notifications.
- All settings and references of
behaviour
have been updated to behavior
.
- Form Builder
- Completely redesigned the form builder.
- Settings and other features are now in full-page tabs to allow for lots of room to configure.
- Fields are specific to forms and added by dragging fresh field types into the layout.
- Reorganized all form settings and behaviors into multiple subsections of a unified Settings tab.
- Reorganized Email Marketing, CRM, Element, Stripe, Captcha, POST Forwarding and Google Tag Manager settings into multiple subsections of a unified Integrations tab.
- The Conditional Rules tab has been greatly improved to include a field map along with visual cues, making configuration faster and less confusing.
- Some of the option values for the Duplicate Check (formerly Limit Form Submission Rate) setting have been changed.
- Fields
- Fields are now created and specific to each form (vs. being global to all forms).
- Fields can be saved as Favorites or searched upon to be reused in other forms.
- Fields can now be changed to other field types at any point, but be aware that data loss could occur when switching incompatible field types.
- The Checkbox Group field type has been renamed to Checkboxes (and
checkboxes
in formatting templates).
- The Radio Group field type has been renamed to Radios (and
radios
in formatting templates).
- The Select field type has been renamed to Dropdown (and
dropdown
in formatting templates).
- The field type handles of
cc_details
, confirmation
, file_drag_and_drop
, multiple_select
, opinion_scale
, and rich_text
have been renamed to credit-card
, confirm
, file-dnd
, multiple-select
, opinion-scale
, and rich-text
, respectively.
- The Dynamic Recipients field type has been replaced with the User Select feature, which provides the ability to assign a notification layer to any Dropdown, Checkboxes, Radios, or Multi-Select field types.
- The Email Marketing/Mailing List special field type has been replaced with the ability to assign the Email Marketing integration to any existing Checkbox or Hidden field. This will also allow you to keep a record in Freeform of whether the mailing list was subscribed to by the user.
- The reCAPTCHA v2 Checkbox and hCaptcha Checkbox special fields are now inserted into the form automatically (before the Submit button).
- The Submit and Save & Continue Later buttons are now automatically inserted at the end of each form page.
- The Opinion Scale field type markup for manual templating has been adjusted slightly.
- Email Notifications
- The form builder now has a Notifications tab dedicated to configuring all types of email notifications (except for template-level ones).
- Integrations
- The Element Connections feature is now referred simply to Element integrations.
- Element integrations are now set up in the Freeform settings area and then configured per form.
- Webhook integrations are now configured per form (but still set up initially in the Freeform settings area).
- Integrations with more than one type have been unified with expanded functionality:
- Salesforce Leads and Salesforce Opportunities are now in a single Salesforce integration.
- Pipedrive Leads and Pipedrive Deals are now in a single Pipedrive integration.
- Zoho Leads and Zoho Deals are now in a single Zoho integration.
- Integrations that map to more than one endpoint allow more flexibility when choosing which endpoints to map to.
- The Salesforce integration has been changed to OAuth validation (instead of username/password).
- The Pipedrive integration has been changed to OAuth validation.
- The dotmailer integration has been updated and renamed to Dotdigital.
- All MailingList/mailing_list, etc, references in the code and database have been renamed to EmailMarketing/email_marketing, etc.
- Settings
- The Formatting Templates, Email Templates and Success Templates settings pages have all been combined into a single Template Manager settings page.
- Reorganized and adjusted settings pages.
- The Limit Form Submission Rate setting has been renamed to Duplicate Check. Available options have been revised and renamed for clarity as well.
- Spam Protection
- The Freeform Honeypot and Javascript Test features have been decoupled, overhauled, and set up as integrations. They can now be enabled/disabled and configured per form. The Javascript Test is now a simpler approach that will streamline use with caching or headless implementations.
- The Javascript Enhancement feature has been renamed to Javascript Test.
- Captchas are now stored as integrations, can have multiple configured per site, and can be turned on/off and further configured at the form level inside the form builder, e.g. stricter settings, different behavior, etc.
- The reCAPTCHA v2 Checkbox and hCaptcha Checkbox special fields are now inserted into the form automatically (before the Submit button).
- Templating
- The
suppress
parameter (for suppressing email notifications and integrations when editing submissions on the front end) has been renamed to disable
and has had the dynamicRecipients
, submitterNotifications
, connections
parameter names changed to userSelectNotifications
, emailFieldNotifications
, and elements
, respectively. An additional conditionalNotifications
parameter has been added to account for the new Conditional Notifications feature.
- All formatting templates have been updated and improved.
- The Bootstrap 5 Multipage All Fields formatting template has been transitioned to a "Basic" non-Bootstrap version, now called Multipage All Fields.
- Form settings and behaviors can now all be accessed in templates via
freeform.settings.settingName
.
- The
option.checked
property has been updated to an approach that compares option.value
to field.value
.
- The
disableRecaptcha
parameter is now disableCaptcha
.
- All references to
loading
(text and/or spinner indicator displayed on the submit button) are now processing
.
- All references to
spinner
(spinner indicator displayed on submit button) are now processingSpinner
, etc.
- The
limitSubmissions
parameter has been renamed to duplicateCheck
and the values have been renamed for clarity.
- The
submissionLimitReached
property in the Form object has been renamed to duplicate
.
- All references to
freeform-file-drag-and-drop
for CSS overrides have been updated to freeform-file-dnd
.
- Javascript
- The defaults for
errorClassBanner
, errorClassList
, errorClassField
and successClassBanner
plugin options for JS overrides have been adjusted to freeform-form-errors
, freeform-errors
, freeform-has-errors
and freeform-form-success
, respectively (ff-
changed to freeform-
).
Deprecated
- The PHP Sessions and Database Table options for the Freeform Session Context setting are deprecated and are planned to be removed in Freeform 6. Encrypted Payload continues to be the assumed and recommended approach, but can still be overrided to PHP Sessions or Database Table in project config.
Removed
- Control Panel
- The Field Manager area (Freeform → Fields) has been removed, as fields are no longer globally shared unless they are saved as Favorites.
- The Dashboard page has been removed in favor of a redesigned Forms page.
- Exporting "shortcuts" from the Dashboard is no longer available with the removal of the Dashboard page, but many other exporting options are available.
- The What's New feature has been removed in favor of using Craft's Announcements feature.
- The Resources area inside the Freeform control panel has been removed.
- The Form Builder Tutorial and Install Demo Banner settings have been removed.
- The Stats widget has been removed as it isn't very relevant anymore.
- The Form Values widget has been removed.
- Settings
- The Access Fields and Manage Fields permissions have been removed as they are no longer applicable.
- The Display Order of Fields in the Form Builder setting has been removed as it is no longer applicable.
- The following Project Config items have been removed due to the improvements to Form Builder defaults:
defaultTemplates
- use includeSampleTemplates: true
under defaults:
instead.
renderFormHtmlInCpViews
- use previewHtml: true
under defaults:
instead.
twigInHtml
- use twigInHtml: true
under defaults:
instead.
twigInHtmlIsolatedMode
. - use twigIsolation: true
under defaults:
instead.
formattingTemplate
- use value: basic-light/index.twig
under defaults:
→ settings:
→ general:
→ formattingTemplate:
instead.
ajaxByDefault
- - use value: '1'
under defaults:
→ settings:
→ processing:
→ ajax:
instead.
- The
freeformHoneypot
, freeformHoneypotEnhancement
, customHoneypotName
, customErrorMessage
, recaptchaBehaviour
, recaptchaEnabled
, recaptchaErrorMessage
, recaptchaKey
, recaptchaSecret
, recaptchaLazyLoad
, recaptchaMinScore
, recaptchaSize
, recaptchaTheme
and recaptchaType
settings have been removed from Project Config, as Honeypot and Captchas are stored as integrations now.
- The Additional Optional Checks setting for the Update Warnings & Notices feature has been removed.
- The Freeform Session Context setting has been removed. Encrypted Payload continues to be the assumed and recommended approach, but can still be overrided to PHP Sessions or Database Table deprecated options in project config.
- The
freeform_lock
database table has been removed as it is no longer used.
- Templating
- The Bootstrap 3, Bootstrap 4, Bootstrap 5 Multipage All Fields and Tailwind 1 formatting templates have been removed.
- The
overrideValues
parameter for Form queries has been removed. Please use the value
parameter in the new Template Overrides feature.
- The
option.checked
property has been removed. Please use and compare option.value
to field.value
.
- The
disableRecaptcha
template parameter has been removed. Please use disableCaptcha
instead.
- The
limitFormSubmissions
property has been removed from the form
object. Please use form.settings.limitSubmissions
instead.
- The
freeform/fields/create
field creation console command has been removed as it is no longer applicable.
- The following attribute control parameters have been removed and replaced by accessing them via the new
attributes
object: inputClass
, submitClass
, rowClass
, columnClass
, labelClass
, errorClass
, instructionsClass
, class
, id
, name
, method
, and action
.
- GraphQL
- The
extraPostUrl
, extraPostTriggerPhrase
, gtmId
, and gtmEventName
fields have been removed from FreeformFormInterface
in GraphQL. Please use the new interface instead (TBD).
- The
inputAttributes
, labelAttributes
, errorAttributes
, and instructionAttributes
fields have been removed from FreeformFormInterface
in GraphQL. Please use the FreeformAttributesInterface
instead.
- The
hash
field has been removed from FreeformFieldInterface
in GraphQL as it is no longer relevant.
- Stripe Payments
- The Stripe Payment feature has been removed and replaced by all-new support for the newer Stripe Payment Element.
";s:4:"date";s:19:"2023-09-06T00:00:00";}i:116;a:4:{s:7:"version";s:6:"4.1.24";s:8:"critical";b:0;s:5:"notes";s:206:"Added
- Verified support for Craft 4.14.x.
Changes
- Updated the plugin icon.
- Updated some internal dependencies to prevent security warnings.
";s:4:"date";s:19:"2025-01-24T00:00:00";}i:117;a:4:{s:7:"version";s:6:"4.1.23";s:8:"critical";b:0;s:5:"notes";s:220:"Added
- Verified support for Craft 4.13.x.
Changed
- Updated the
phpoffice/phpspreadsheet
dependency to include ^2.0
and ^3.0
.
";s:4:"date";s:19:"2024-11-19T00:00:00";}i:118;a:4:{s:7:"version";s:6:"4.1.22";s:8:"critical";b:0;s:5:"notes";s:462:"Added
- Verified support for Craft 4.12.x.
Fixed
- Fixed a bug where uploading assets to submissions in the control panel would incorrectly mark them as unfinalized assets to be deleted.
- Fixed a bug where an error could occur when creating new forms on some MySQL installs.
Security
- Updated
axios
dependencies to address potential security vulnerabilities.
";s:4:"date";s:19:"2024-09-06T00:00:00";}i:119;a:4:{s:7:"version";s:6:"4.1.21";s:8:"critical";b:0;s:5:"notes";s:141:"Fixed
- Fixed a bug where the
layoutJson
column change migration in 4.1.20 would fail on PostgreSQL.
";s:4:"date";s:19:"2024-08-14T00:00:00";}i:120;a:4:{s:7:"version";s:6:"4.1.20";s:8:"critical";b:0;s:5:"notes";s:545:"Changed
- Updated Diagnostics page to verify compatibility for Craft 4.10.x.
- Updated the Website field validation to allow longer domain extensions.
- Changed the
layoutJson
column in the freeform_forms
database table to longtext
to handle larger forms.
Fixed
- Fixed a bug where the Bypass All Spam Checks for Logged in Users setting did not correctly bypass all spam checks for logged-in users when a form is cached.
";s:4:"date";s:19:"2024-07-30T00:00:00";}i:121;a:4:{s:7:"version";s:6:"4.1.19";s:8:"critical";b:0;s:5:"notes";s:349:"Changed
- Updated Diagnostics page to verify compatibility for PHP 8.2 and Craft 4.9.x.
- Removed the Resources subnav link.
Fixed
- Fixed a bug where en and em dash characters were not saving in submission data on Radio, Select, and Opinion Scale field types.
";s:4:"date";s:19:"2024-05-31T00:00:00";}i:122;a:4:{s:7:"version";s:6:"4.1.18";s:8:"critical";b:0;s:5:"notes";s:181:"Fixed
- Fixed a bug where setting
allowedGraphqlOrigins
to false
in general.php would cause form submissions to crash.
";s:4:"date";s:19:"2024-05-08T00:00:00";}i:123;a:4:{s:7:"version";s:6:"4.1.17";s:8:"critical";b:0;s:5:"notes";s:634:"Added
- Added Craft element search support for submissions. You may need to run
./craft freeform/submissions/resave --update-search-index
once for this to work.
- Added
freeform/submissions/resave
CLI command to resave all existing submissions.
Changed
- Updated GraphQL to include HTML and Rich Text field types.
Fixed
- Fixed a bug where setting a Calendar Event to be All Day in the Calendar Events integration was not working.
- Fixed a bug where submission saving in the console could fail.
";s:4:"date";s:19:"2024-04-29T00:00:00";}i:124;a:4:{s:7:"version";s:6:"4.1.16";s:8:"critical";b:0;s:5:"notes";s:209:"Changed
- Updated the CSRF input to send
nocache
headers when rendering.
Fixed
- Fixed a bug where Freeform was opening unnecessary sessions.
";s:4:"date";s:19:"2024-04-04T00:00:00";}i:125;a:4:{s:7:"version";s:8:"4.1.15.1";s:8:"critical";b:0;s:5:"notes";s:132:"Fixed
- Fixed a bug where Automatic Spam Purge Craft queue jobs would fail when using a database prefix.
";s:4:"date";s:19:"2024-03-01T00:00:00";}i:126;a:4:{s:7:"version";s:6:"4.1.15";s:8:"critical";b:0;s:5:"notes";s:375:"Added
- Added support for Automatic Spam Purging in the Lite edition of Freeform.
Changed
- Refactored the Submission Purge functionality to use the Craft queue.
Fixed
- Fixed a bug where the Fill Form Values from the GET Query String setting was not being respected.
";s:4:"date";s:19:"2024-03-01T00:00:00";}i:127;a:4:{s:7:"version";s:6:"4.1.14";s:8:"critical";b:0;s:5:"notes";s:292:"Fixed
- Fixed a bug where Dynamic Recipients fields were not correctly selecting the option chosen when viewing submissions in the CP detail page.
- Fixed a bug where the Field Manager would force
camelCase
without exceptions for field handles.
";s:4:"date";s:19:"2024-02-09T00:00:00";}i:128;a:4:{s:7:"version";s:6:"4.1.13";s:8:"critical";b:0;s:5:"notes";s:322:"Changed
- Updated all references to field names in the control panel and exported files to use the default field label as a fallback if the field label is blank in the form settings. To preserve legacy functionality, rendering forms on the front end will continue showing the field label blank.
";s:4:"date";s:19:"2023-11-23T00:00:00";}i:129;a:4:{s:7:"version";s:8:"4.1.12.1";s:8:"critical";b:0;s:5:"notes";s:160:"Fixed
- Fixed a bug where some Freeform widgets would error in the Craft dashboard due to a change in the previous version (4.1.12).
";s:4:"date";s:19:"2023-11-15T00:00:00";}i:130;a:4:{s:7:"version";s:6:"4.1.12";s:8:"critical";b:0;s:5:"notes";s:464:"Changed
- Updated GraphQL mutations to support multiple email marketing mailing list fields.
Fixed
- Fixed an issue where submission purge logic was not always working reliably.
- Fixed a bug where form heading Success and Error messages were not being escaped.
- Fixed a bug where removing a field from a form was not automatically removing it from any configured export profiles for that form.
";s:4:"date";s:19:"2023-11-09T00:00:00";}i:131;a:4:{s:7:"version";s:6:"4.1.11";s:8:"critical";b:0;s:5:"notes";s:270:"Changed
- Updated the GraphQL submission mutation to no longer require the custom header.
Fixed
- Fixed a bug where locales were not working correctly when using more than one Date & Time field in the same form.
";s:4:"date";s:19:"2023-10-24T00:00:00";}i:132;a:4:{s:7:"version";s:6:"4.1.10";s:8:"critical";b:0;s:5:"notes";s:260:"Changed
- Updated File Upload fields to be realigned with Craft's file kind/extensions defaults. Removed the custom Freeform MIME type checks.
- Updated existing feature announcement integrations to be visible to Admins only.
";s:4:"date";s:19:"2023-10-05T00:00:00";}i:133;a:4:{s:7:"version";s:5:"4.1.9";s:8:"critical";b:0;s:5:"notes";s:308:"Changed
- Updated the Salesforce integration to allow mapping to encrypted fields in Salesforce.
- Updated the Craft compatibility check in the Diagnostics page to include Craft 4.5.x.
Fixed
- Fixed a bug where hCaptcha was not working correctly.
";s:4:"date";s:19:"2023-09-29T00:00:00";}i:134;a:4:{s:7:"version";s:5:"4.1.8";s:8:"critical";b:0;s:5:"notes";s:204:"Changed
- Updated
stripe/stripe-php
dependency to align with Craft Commerce.
- Updated the Stripe Payments integration to support mapping Phone field types.
";s:4:"date";s:19:"2023-09-15T00:00:00";}i:135;a:4:{s:7:"version";s:5:"4.1.7";s:8:"critical";b:0;s:5:"notes";s:506:"Added
- Added support for
.stl
files in the Freeform file helper validation.
Changed
- Updated the Pipedrive Leads integration to use the new Notes endpoint.
Fixed
- Fixed a bug where not all Stripe validation errors were accounted for and could cause the form to break.
- Fixed a bug where CRM integration errors were sometimes too long to be logged in Freeform. Updated the column size to resolve this.
";s:4:"date";s:19:"2023-09-08T00:00:00";}i:136;a:4:{s:7:"version";s:5:"4.1.6";s:8:"critical";b:0;s:5:"notes";s:392:"Added
- Exposed all remaining form settings/properties for GraphQL queries, including
successMessage
and errorMessage
.
Changed
- Refactored the Freeform lock service to use Yii's cache to prevent performance issues.
Fixed
- Fixed issues with reCAPTCHA when querying forms via GraphQL.
";s:4:"date";s:19:"2023-07-20T00:00:00";}i:137;a:4:{s:7:"version";s:5:"4.1.5";s:8:"critical";b:0;s:5:"notes";s:92:"Added
- Added conditional rule logic for form fields in GraphQL.
";s:4:"date";s:19:"2023-07-11T00:00:00";}i:138;a:4:{s:7:"version";s:5:"4.1.4";s:8:"critical";b:0;s:5:"notes";s:246:"Added
- Added support for mapping to multiple groups/interests in the Mailchimp integration.
Fixed
- Fixed a bug where the element query was being executed before Craft was fully initialized.
";s:4:"date";s:19:"2023-07-05T00:00:00";}i:139;a:4:{s:7:"version";s:5:"4.1.3";s:8:"critical";b:0;s:5:"notes";s:158:"Fixed
- Fixed a bug where server-side field validation error messages were replaced with a GraphQL query error in production mode.
";s:4:"date";s:19:"2023-06-28T00:00:00";}i:140;a:4:{s:7:"version";s:5:"4.1.2";s:8:"critical";b:0;s:5:"notes";s:134:"Fixed
- Fixed a bug where forms using reCAPTCHA v2 Checkbox or hCaptcha Checkbox could behave incorrectly.
";s:4:"date";s:19:"2023-06-26T00:00:00";}i:141;a:4:{s:7:"version";s:5:"4.1.1";s:8:"critical";b:0;s:5:"notes";s:514:"Changed
- Updated the Diagnostics page to still show when the
allowAdminChanges
setting is set to false
.
Fixed
- Fixed a bug where the Submission Purge console commands were not working correctly.
- Fixed a bug where the Submission Purge feature was not removing associated Asset files as well.
- Fixed a bug where an error would occur when dynamically creating a sub-directory for file uploads upon submission of form.
";s:4:"date";s:19:"2023-06-22T00:00:00";}i:142;a:4:{s:7:"version";s:5:"4.1.0";s:8:"critical";b:0;s:5:"notes";s:1474:"If currently using GraphQL and/or headless javascript frameworks such as Vue.js, Next.js, React JS, etc, please proceed carefully and test your forms thoroughly after updating.
Added
- Added support for GraphQL Mutations.
- Added interactive demos for Vue.js, React JS, and Next.js frameworks.
Changed
- Changed the way reCAPTCHA is handled in headless setups.
Deprecated
- Deprecated
FormInterface
for GraphQL. Please use FreeformFormInterface
instead.
- Deprecated
FieldInterface
for GraphQL. Please use FreeformFieldInterface
instead.
- Deprecated
PageInterface
for GraphQL. Please use FreeformPageInterface
instead.
- Deprecated
RowInterface
for GraphQL. Please use FreeformRowInterface
instead.
- Deprecated
OptionsInterface
for GraphQL. Please use FreeformOptionInterface
instead.
- Deprecated
ScalesInterface
for GraphQL. Please use FreeformOpinionScaleInterface
instead.
- Deprecated
KeyValueMapInterface
for GraphQL. Please use FreeformAttributeInterface
instead.
- Deprecated
hash
and timestamp
in FreeformHoneypotInterface
for GraphQL. Please do not use.
";s:4:"date";s:19:"2023-06-13T00:00:00";}i:143;a:4:{s:7:"version";s:6:"4.0.26";s:8:"critical";b:0;s:5:"notes";s:204:"Fixed
- Fixed a bug that could cause issues when using the JS Honeypot enhancement.
- Fixed a bug where an error would sometimes occur when opening the Diagnostics page.
";s:4:"date";s:19:"2023-06-12T00:00:00";}i:144;a:4:{s:7:"version";s:6:"4.0.25";s:8:"critical";b:0;s:5:"notes";s:136:"Fixed
- Fixed a bug where the Field Values Chart widget would error when attempting to add to the dashboard.
";s:4:"date";s:19:"2023-06-05T00:00:00";}i:145;a:4:{s:7:"version";s:8:"4.0.24.1";s:8:"critical";b:0;s:5:"notes";s:205:"Fixed
- Fixed a bug where an error would occur when attempting to submit a form that has the "Store Submission Data" setting disabled on sites using the Freeform 4.0.24 version.
";s:4:"date";s:19:"2023-05-18T00:00:00";}i:146;a:4:{s:7:"version";s:6:"4.0.24";s:8:"critical";b:0;s:5:"notes";s:410:"Added
- Added the ability to limit forms to be submitted once per email address only.
- Added a setting to the Mailchimp integration to allow choosing between appending existing Contact Tags with new ones when updating an existing contact.
Fixed
- Fixed a bug where attempting to Allow a spam submission for a Payment form would result in an error.
";s:4:"date";s:19:"2023-05-16T00:00:00";}i:147;a:4:{s:7:"version";s:6:"4.0.23";s:8:"critical";b:0;s:5:"notes";s:715:"Added
- Added the ability to map submission data to
postDate
and expiryDate
for Craft Entries.
- Added the ability to preparse Twig for the "Predefined Assets" setting in email notification templates. This allows for things like dynamically attaching an asset to the email notification based on a user's selection, etc.
Changed
- Updated Freeform template path settings to now include template folder autosuggestions.
Fixed
- Fixed a bug where the hidden input for File Upload Drag & Drop fields was not getting an ID attribute applied to it.
- Fixed some minor issues with demo templates.
";s:4:"date";s:19:"2023-04-28T00:00:00";}i:148;a:4:{s:7:"version";s:6:"4.0.22";s:8:"critical";b:0;s:5:"notes";s:748:"Added
- Added a "Floating Labels" basic formatting template. Ready-to-go and does not require any frameworks or toolkits.
- Added support for
dwg
, dxf
, stp
, step
, sia
mime types in Freeform's internal file validation helper.
Changed
- Overhauled and refreshed demo templates area. Easily try on a wide range of sample formatting templates for your forms, view submission data, check out advanced setups, etc.
Fixed
- Fixed a bug where the Submission and Spam Purge features were not always working correctly.
- Fixed a few minor styling issues in most of the sample formatting templates.
";s:4:"date";s:19:"2023-04-14T00:00:00";}i:149;a:4:{s:7:"version";s:6:"4.0.21";s:8:"critical";b:0;s:5:"notes";s:120:"Fixed
- Fixed a bug where the Honeypot could trigger an unserialization error in some cases.
";s:4:"date";s:19:"2023-03-29T00:00:00";}i:150;a:4:{s:7:"version";s:6:"4.0.20";s:8:"critical";b:0;s:5:"notes";s:456:"Changed
- Updated the JS Honeypot Enhancement feature to use the encrypted payload instead of PHP sessions when the 'Form Session Context' setting is 'Encrypted Payload'.
- Various improvements and adjustments to the Basic Light and Dark example formatting template examples.
Fixed
- Fixed a bug where the Constant Contact integration could timeout when connecting if there were too many lists.
";s:4:"date";s:19:"2023-03-23T00:00:00";}i:151;a:4:{s:7:"version";s:6:"4.0.19";s:8:"critical";b:0;s:5:"notes";s:480:"Added
- Added two basic formatting template examples (dark and light modes) that are self-contained and complete to be added to any page. Does not require any frameworks or toolkits.
- Added setup guides directly into API integration settings pages.
Changed
- Updated the
form_posted
cookie to only be created for users if a form uses a cookie check for limiting how many times a user can submit the form.
";s:4:"date";s:19:"2023-03-21T00:00:00";}i:152;a:4:{s:7:"version";s:6:"4.0.18";s:8:"critical";b:0;s:5:"notes";s:409:"Changed
- Addressed some minor Craft 4.4 compatibility issues in the control panel.
- Made some minor adjustments to the CP Submission detail view.
- Improved Dutch (NL) language translations.
Fixed
- Fixed a bug where the "Email Template" dropdowns in the form builder displayed both Database and File groups even if just one was selected.
";s:4:"date";s:19:"2023-03-10T00:00:00";}i:153;a:4:{s:7:"version";s:6:"4.0.17";s:8:"critical";b:0;s:5:"notes";s:850:"Added
- Added support for
.eps
files in the Freeform file helper validation.
- Added support for
.webp
files in the Freeform file helper validation.
Changed
- Updated English and Dutch (NL) translations to include all missing items.
- Updated default Freeform formatting templates to no longer include
lineHeight
for Stripe fields.
- Updated Signature field data to be included in exports.
Fixed
- Fixed a bug where many items were not translatable in the Freeform control panel.
- Fixed a bug where using "Database Tables" for session storage context would result in an error when submitting forms.
- Fixed a bug where some migrations and integrations could error when using Guzzle JSON calls.
";s:4:"date";s:19:"2023-03-01T00:00:00";}i:154;a:4:{s:7:"version";s:6:"4.0.16";s:8:"critical";b:0;s:5:"notes";s:159:"Fixed
- Fixed a bug where an erroneous database index existed for email marketing integrations that would sometimes cause an error.
";s:4:"date";s:19:"2023-02-23T00:00:00";}i:155;a:4:{s:7:"version";s:6:"4.0.15";s:8:"critical";b:0;s:5:"notes";s:321:"Added
- Added an example Conversational style formatting template that displays one field at a time and smoothly scrolls down to the next question until complete.
Fixed
- Fixed a bug where AJAX errors were not displaying correctly for Opinion Scale and Table fields.
";s:4:"date";s:19:"2023-02-14T00:00:00";}i:156;a:4:{s:7:"version";s:6:"4.0.14";s:8:"critical";b:0;s:5:"notes";s:516:"Fixed
- Fixed a bug where unfinalized files were not immediately being cleared upon successful submit of forms that are set not to store submission data.
- Fixed a bug where POST Forwarding was not being triggered when approving submissions in the Spam Folder.
- Fixed a bug where the
initHoneypot
function was triggering error warnings about premature initiation.
- Fixed a bug where Multi-Select fields were missing some styles inside the form builder.
";s:4:"date";s:19:"2023-02-08T00:00:00";}i:157;a:4:{s:7:"version";s:6:"4.0.13";s:8:"critical";b:0;s:5:"notes";s:209:"Fixed
- Fixed a bug where single checkboxes were always being checked by default (as of 4.0.11).
- Fixed a bug where custom table attributes were firing on all element types.
";s:4:"date";s:19:"2023-01-26T00:00:00";}i:158;a:4:{s:7:"version";s:6:"4.0.12";s:8:"critical";b:0;s:5:"notes";s:236:"Added
- Added additional data to the AJAX submit response payload for multi-page forms.
- Added an example Bootstrap 5 formatting template that includes a preview/review of all fields across all pages.
";s:4:"date";s:19:"2023-01-25T00:00:00";}i:159;a:4:{s:7:"version";s:6:"4.0.11";s:8:"critical";b:0;s:5:"notes";s:277:"Fixed
- Fixed a bug where the opt-in data storage checkbox was not saving submission data when checked.
- Fixed a bug where Dynamic Recipient fields would not export with labels when the "Use Option Labels when Exporting" setting was enabled.
";s:4:"date";s:19:"2023-01-19T00:00:00";}i:160;a:4:{s:7:"version";s:6:"4.0.10";s:8:"critical";b:0;s:5:"notes";s:404:"Fixed
- Fixed a bug where the "Once per logged in Users only" option for duplicate checking wasn't preventing guests from submitting the form.
- Fixed a bug where extra returns were being inserted above H2s inside Rich Text fields (in the builder) when they were clicked on.
- Fixed a bug where deleting a spam submission from the CP detail view was not working.
";s:4:"date";s:19:"2023-01-17T00:00:00";}i:161;a:4:{s:7:"version";s:5:"4.0.9";s:8:"critical";b:0;s:5:"notes";s:726:"Added
- Added back Excel support for exporting submissions.
- Added
submissionLimitReached
to the Form object, allowing you to check if the user has already submitted the form when using the Limit Form Submission Rate setting (hide form and/or display an error message to the user instead of waiting until they attempt to submit the form).
Changed
- Updated to only load reCAPTCHA scripts when form(s) have reCAPTCHA enabled.
- Updated to support Craft's
sameSiteCookieValue
.
Fixed
- Fixed a bug where the Submissions/Spam CP index includes an "Edit Submission" option that isn't usable.
";s:4:"date";s:19:"2022-12-09T00:00:00";}i:162;a:4:{s:7:"version";s:5:"4.0.8";s:8:"critical";b:0;s:5:"notes";s:652:"Changed
- Refactored the submission delete process to use batching.
Fixed
- Fixed a bug where links to view/edit individual submissions in the CP disappeared in Craft 4.3.2+.
- Fixed a bug where the Freeform Form element field type was not sorting form options alphabetically.
- Fixed a bug where email notifications were sometimes not being fetched when fetched by handle.
- Fixed a bug where two sets of "set status" actions would appear in CP submissions index.
- Fixed a bug where fetching existing tags for the ActiveCampaign integration was not working correctly.
";s:4:"date";s:19:"2022-11-21T00:00:00";}i:163;a:4:{s:7:"version";s:5:"4.0.7";s:8:"critical";b:0;s:5:"notes";s:463:"Added
- Verified compatibility with Craft 4.3.
Fixed
- Fixed a bug where database notification templates were not being loaded properly in the form builder.
- Fixed a bug where a warning was output in the Craft logs when loading dashboard widgets.
- Fixed a bug where the "All Submissions" filter in Submissions and Spam Folder CP indexes would crash when there were more than 60 forms present.
";s:4:"date";s:19:"2022-10-25T00:00:00";}i:164;a:4:{s:7:"version";s:5:"4.0.6";s:8:"critical";b:0;s:5:"notes";s:447:"Added
- Added a "Floating Labels" version of the Bootstrap 5 example formatting template.
Fixed
- Fixed a bug where garbage collection was not working on Freeform submissions.
- Fixed a bug where the "Send Additional Notification" feature was not working correctly.
- Fixed a bug where searching
freeform.submissions
across multiple forms was not working correctly.
";s:4:"date";s:19:"2022-10-12T00:00:00";}i:165;a:4:{s:7:"version";s:5:"4.0.5";s:8:"critical";b:0;s:5:"notes";s:697:"Added
- Added success events for AJAX forms with
redirect-to-url
behavior.
Fixed
- Fixed a bug that would prevent some integrations with OAuth 2.0 from being able to authorize.
- Fixed a bug where the Email Template dropdown select in the form builder would not show all templates if using a mix of database and file templates.
- Fixed a bug where users could create file-based email notification templates in the form builder when the setting for it is disabled.
- Fixed a bug where using the
back
button in multi-page forms could potentially cause issues when using default browser validation.
";s:4:"date";s:19:"2022-10-05T00:00:00";}i:166;a:4:{s:7:"version";s:5:"4.0.4";s:8:"critical";b:0;s:5:"notes";s:667:"Added
- Added a setting to disable the creating and editing of File-based email notification templates.
Changed
- Updated the AJAX response payload to include posted values.
Fixed
- Fixed a bug where attempting to create a new status would not work.
- Fixed a bug where some field types would not correctly store updates with empty values in multi-page forms.
- Fixed a bug where users without permissions to Freeform could add Freeform widgets to the Craft dashboard.
- Fixed a bug where the
form
reserved keyword was being allowed for field handles.
";s:4:"date";s:19:"2022-09-28T00:00:00";}i:167;a:4:{s:7:"version";s:5:"4.0.3";s:8:"critical";b:0;s:5:"notes";s:505:"Changed
- Updated the Google Tag Manager event to include the AJAX response.
Fixed
- Fixed a race condition issue where loading values when editing an element would sometimes not work.
- Fixed a bug where duplicating forms could cause an error when more than one user group has permission to manage it.
- Fixed a bug where the Tailwind 3 sample formatting template was not including custom input attributes when rendering Select fields.
";s:4:"date";s:19:"2022-09-12T00:00:00";}i:168;a:4:{s:7:"version";s:5:"4.0.2";s:8:"critical";b:0;s:5:"notes";s:378:"Fixed
- Fixed a bug where non-latin characters were being allowed in field handles in the field manager area.
- Fixed a bug where predefined assets in email notifications showed a full file path instead of just the filename.
- Fixed a bug where multiple instances of the same form are added when moving the form instance around the DOM.
";s:4:"date";s:19:"2022-08-24T00:00:00";}i:169;a:4:{s:7:"version";s:5:"4.0.1";s:8:"critical";b:0;s:5:"notes";s:947:"Added
- Added a v3 version of the Tailwind example formatting template.
- Added a new version of the HubSpot API integration to address new Private App token requirement. This is a required change for any existing HubSpot users.
Changed
- Updated the Campaign third party plugin email marketing integration to use new
FormsService::createAndSubscribeContact
method.
Fixed
- Fixed a bug where attempting to sort submissions in the CP submissions index page was not working.
- Fixed a bug where non-latin characters were being allowed in field and form handles.
- Fixed a bug where attempting to view a related Freeform submission element in the slideout in another element could error.
- Fixed a bug where attempting to attach a Predefined Asset to an email notification template would give an Internal server error.
";s:4:"date";s:19:"2022-08-23T00:00:00";}i:170;a:4:{s:7:"version";s:5:"4.0.0";s:8:"critical";b:0;s:5:"notes";s:9681:"This is a larger and more complex update than usual, and there's a higher chance of a failed update attempt happening. Please ensure you have a recent database backup, and we recommend you test the update on a local/staging environment before updating your production server. Please follow the Upgrading from Freeform 3.x guide.
Added
- Added compatibility with Craft 4.x.
- Added Export Email Notifications feature. Allows you to send exports as email notifications automatically.
- Added more information to email notification error logging. It now includes the email notification approach and the Email field name (if applicable) to track down where the issue is coming from.
- Added setting to have CSV exports use field handles for headings instead of field labels.
- Added support for permanently deleting soft-deleted submissions.
- Added
data-skip-html-reload
form attribute option to bypass HTML reload for AJAX forms (when not using render method).
- Added
EVENT_GET_CUSTOM_PROPERTY
developer event, which lets you inject your own properties on forms to expand their application.
- Added
EVENT_CONFIGURE_CORS
developer event, which lets you modify the CORS headers that will be sent with the request.
- Added a check in the diagnostics, install welcome screen, and settings pages to alert users if the "Freeform Script Insert Type" setting will not work as Static URLs (and needs to be switched to Files).
- Added the ability to map Mailchimp Interests to a form field. Limited to finding and passing a single Interest based on first match within Interest names part of a List.
- Added support for date fields in the Campaign Monitor integration.
Changed
- Changed all existing forms with the Success Behavior setting set to No Effect to now be Reload Form with Success Message. This will behave somewhat similarly to old behavior, but will no longer automatically redirect to a different URL upon success. Please review all forms and set the desired behavior for each in the Success Behavior setting. If you wish to continue to override the behavior at template level, you can do that as well.
- Changed all sample formatting templates to include a library version number on them and also end with the
.twig
extension (e.g. foundation.html
is now foundation-6.twig
). Freeform 4 will automatically migrate all existing forms using sample formatting templates to use the new file names. You shouldn't need to change anything. Where this might become an issue is if you are using the formattingTemplate: 'template-name.html'
parameter at template level and relying on an older version of the sample template name.
- Changed all sample formatting templates use
|t('freeform')
only (instead of a mix of |t
and |t('freeform')
). If you're using static translations on sample formatting templates, you'll need to move site.php
translations over to freeform.php
.
- Changed the rendering of single checkboxes to now use the value set inside the form builder. No action should be necessary here. If you have a custom module in place to override this behavior, you can likely undo that now.
- Changed Email fields to no longer store data as an array. The migration will comb through your database and convert all values of Email field types (e.g.
["test@x.x"]
will become test@x.x
). If you were relying on this feature to collect more than one email address, only the first email address will be kept (e.g. ["a@x.x","b@x.x"]
will become a@x.x
). No action is necessary here, but if you relied on this functionality, it is a breaking change with no alternative option currently (aside from adding multiple Email fields to your forms, one for each email address). If you have a custom module that is working around this in any way, you should be able to disable it now.
- Updated newly created email notification templates' "From" email address and name to default to the newer way (via Project Config), e.g.
craft.app.projectConfig.get('email.fromEmail')
). If you are using the older approach in existing email notification templates, be sure to update them.
- Changed the way form submission data is stored. A new table for each form is now created and updated rather than storing all forms' submission data in a single shared database table. This solves several issues, including running out of fields and paves the way for more exciting future improvements to the form builder. Fields are still global and available to every form. No action should be necessary by the admin, as Freeform includes a migration script that automatically converts the data to be split into multiple database tables. This process may take a little longer if you have a very large site.
- All Freeform fields are now stored as the
TEXT
MySQL type instead of a combination of TEXT
, VARCHAR(100)
and VARCHAR(255)
. This is a change that is applied to all existing fields as well since they are recreated in the migration. No action should be necessary here. In the rare case where your site has some kind of customization that relies on a MySQL type other than TEXT
, you may have to adjust the database manually.
- Updated Dashboard, Forms listing and Survey & Polls dashboard to hide forms for users that do not have any form or submission access permissions to them.
- Switched over CP scripts to use local copies of external scripts.
- Upgraded the GraphQL interface calls to use the new Craft GraphQL API.
- Updated the "Use Return URL" success behavior to skip reloading the form (briefly) when using AJAX.
- Updated the sample formatting templates to include
ff-fieldtype-FIELDTYPE
classes to field-surrounding divs.
- Updated
league/flysystem
, symfony/property-access
, symfony/finder
and symfony/filesystem
dependency version requirements to resolve some conflicts.
Fixed
- Fixed a bug where POST Forwarding would still send through spammy submissions.
- Fixed a bug where the form builder tutorial would show an error if the
allowAdminChanges
setting was disabled.
- Fixed a bug where Drag & Drop File Upload fields would not respect all site URL setups.
- Fixed a bug where users with permissions to Create New Forms would encounter issues in the New Form wizard modal.
- Fixed a bug where users without Create New Forms permission would see the New Form button in the CP Forms page.
- Fixed a bug where Number fields with a minimum value above
0
would still allow 0
as a valid value.
- Fixed a bug where an error could sometimes occur on the Form Behavior settings page.
- Fixed a bug with conditional Post Forwarding options check.
- Fixed a bug where the Drag & Drop File Upload field type was requiring a file to be selected even when hidden by the Conditional Rules feature.
- Fixed a bug where the predefined "Yesterday" option for Export Profiles returned yesterday 0:00 until now instead of yesterday 0:00 to 23:59.
- Fixed a bug where the form builder would not show an error message when creating a new notification template if the email notification template directory path was not set.
- Fixed a bug where the Save & Continue Later field was not available in GraphQL schema.
- Fixed a bug where Dynamic Recipient fields would still send email notifications while hidden via Conditional Rules.
- Fixed a bug where uploaded file attachments in email notifications showed a full file path instead of just the filename.
- Fixed a bug where Stripe subscription plan names could possibly show up blank if no price plan description was provided. If so, Freeform will now autogenerate plan names.
- Fixed a bug where the form builder didn't warn that
author
is a reserved handle name.
- Adjusted the NL translation word for
any
in the conditional rules feature.
- Fixed a bug where incorrectly including a twig file in the Success Template Directory path would break settings and form builder.
- Fixed a bug where the Stripe Payments integration could be causing a customer as well as guest account in Stripe for the same transaction.
- Fixed a bug where credit card numbers were not showing up in Stripe's payment methods for customer accounts.
Security
- Addressed some potential XSS vulnerabilities.
Removed
- Removed the old Pardot CRM and Constant Contact email marketing API integrations. Please switch to the newer Pardot and Constant Contact integrations if you haven't already, and delete the old legacy ones before upgrading to Freeform 4.
- Removed the
phpoffice/phpspreadsheet
dependency to prevent install conflicts. Excel exporting inside Freeform is temporarily disabled until a new library is implemented.
- Removed the
league/flysystem
dependency as it is not needed.
";s:4:"date";s:19:"2022-08-05T00:00:00";}}s:10:"renewalUrl";s:76:"https://console.craftcms.com/accounts/geniusesforhire/licenses/plugins/22626";s:12:"renewalPrice";s:7:"79.0000";s:15:"renewalCurrency";s:3:"USD";s:13:"phpConstraint";s:13:"^8.0.2|^8.2.0";s:11:"packageName";s:23:"solspace/craft-freeform";}s:8:"redactor";a:8:{s:6:"status";s:8:"eligible";s:8:"releases";a:3:{i:0;a:4:{s:7:"version";s:5:"3.1.0";s:8:"critical";b:0;s:5:"notes";s:226:"- Redactor fields now prevent element edit pages from automatically reloading when in fullscreen mode (requires Craft CMS 4.10+). (craftcms/cms#14814)
";s:4:"date";s:19:"2024-06-12T00:00:00";}i:1;a:4:{s:7:"version";s:5:"3.0.4";s:8:"critical";b:0;s:5:"notes";s:219:"
- Fixed several styling issues with Redactor’s fullscreen mode. (#450, #445)
";s:4:"date";s:19:"2023-03-16T00:00:00";}i:2;a:4:{s:7:"version";s:5:"3.0.3";s:8:"critical";b:0;s:5:"notes";s:194:"
- Fixed a bug where image URLs would be broken after selecting them, if the URL contained any underscores. (#441)
";s:4:"date";s:19:"2022-12-31T00:00:00";}}s:13:"phpConstraint";s:6:"^8.0.2";s:11:"packageName";s:17:"craftcms/redactor";s:9:"abandoned";b:1;s:15:"replacementName";s:8:"CKEditor";s:17:"replacementHandle";s:8:"ckeditor";s:14:"replacementUrl";s:37:"https://plugins.craftcms.com/ckeditor";}s:6:"retour";a:4:{s:6:"status";s:8:"eligible";s:8:"releases";a:23:{i:0;a:4:{s:7:"version";s:6:"4.1.22";s:8:"critical";b:0;s:5:"notes";s:222:"Fixed
- Fixed an issue where redirects were not, in fact, redirecting with the appropriate site URL prefix as expected (#325)
";s:4:"date";s:19:"2025-01-27T00:00:00";}i:1;a:4:{s:7:"version";s:6:"4.1.21";s:8:"critical";b:0;s:5:"notes";s:247:"Changed
- Fixed an issue where a GraphQL Retour query could return a URL with a
/
prefixed to it if the destination was a full URL (#320)
";s:4:"date";s:19:"2025-01-08T00:00:00";}i:2;a:4:{s:7:"version";s:6:"4.1.20";s:8:"critical";b:0;s:5:"notes";s:1084:"Changed
- Retour now strips site path prefixes from incoming 404 URL paths, such that redirects will work as expected (any Site sub-path prefix is ignored) (#288)
- Don't create automatic redirects for elements that are not enabled
Fixed
- Fixed an issue where
410 Gone
redirects returned a generic browser error rather than a custom-defined Craft template (#11)
- Fixed an issue where an exception could be thrown if a Site had no
baseUrl
defined
- Normalize the incoming
url
and path
so that mergUrlWithPath()
handles edge-cases properly (#1512)
- Fixed an issue where deprecation errors would occur when an element does not have a
uri
(#317)
";s:4:"date";s:19:"2024-12-14T00:00:00";}i:3;a:4:{s:7:"version";s:6:"4.1.19";s:8:"critical";b:0;s:5:"notes";s:219:"Fixed
- Fixed an issue where the "File Not Found URL" link could be wrong when clicked on in some multi-site setups (#310)
";s:4:"date";s:19:"2024-08-19T00:00:00";}i:4;a:4:{s:7:"version";s:6:"4.1.18";s:8:"critical";b:0;s:5:"notes";s:694:"Added
- Separate out the plugin settings into General, Statistics, and Advanced tabs
- Added a Set No-Cache Headers setting (defaulting to on) to set
no-cache
headers on the redirect response to prevent client-side caching (#306)
Changed
- When saving a redirect, Retour no longer deletes redirects that have the
redirectDestUrl
of the redirect being saved as their redirectSrcUrl
(#303)
";s:4:"date";s:19:"2024-06-24T00:00:00";}i:5;a:4:{s:7:"version";s:6:"4.1.17";s:8:"critical";b:0;s:5:"notes";s:977:"Fixed
- Fixed an issue where the down and up arrows were reversed for sorting purposes (#299)
- Fixed an issue where the "File Not Found URL" link could be wrong when clicked on in some multi-site setups (#290)
- Fixed an issue where the Short Link wouldn't display properly in the element index view (#301)
- Fixed an issue where Short Links wouldn't work properly if they were added to Asset elements (#300)
- Fixed an issue where a "Integrity constraint violation" error could occurr if malformed
redirectSrcUrl
s was introduced into the statistics table (#305)
";s:4:"date";s:19:"2024-06-19T00:00:00";}i:6;a:4:{s:7:"version";s:6:"4.1.16";s:8:"critical";b:0;s:5:"notes";s:677:"Fixed
- Added the unused
static
to the Tailwind CSS blocklist
to avoid a name collision with a Craft CSS class (#1412)
- Fixed an issue with impropertly text-encoded characters in URLs potentially causing a db exception (#291)
- Fixed an issue where an empty redirect in the
excludePatterns
list could cause redirects to stop functioning, add logging when a redirect is excluded (#297)
";s:4:"date";s:19:"2024-03-25T00:00:00";}i:7;a:4:{s:7:"version";s:6:"4.1.15";s:8:"critical";b:0;s:5:"notes";s:641:"Added
- Add
phpstan
and ecs
code linting
- Add
code-analysis.yaml
GitHub action
Changed
- Switch over to Vite
^5.0.0
& Node ^20.0.0
for the buildchain
- Updated docs to use node 20 & a new sitemap plugin
- PHPstan code cleanup
- ECS code cleanup
Fixed
- Fixed an issue that could cause an exception to be thrown if the Preserve Query String setting is on
- Fixed an issue where the filter controls didn't work properly for Short Links
";s:4:"date";s:19:"2024-02-05T00:00:00";}i:8;a:4:{s:7:"version";s:6:"4.1.14";s:8:"critical";b:0;s:5:"notes";s:454:"Fixed
- Fixes issue where only first line of uploaded CSV is saved in cache in load balanced environment (#286)
- Strip off a leading
/
before making a site URL from a path, because otherwise Craft.getUrl()
considers it an absolute URL and returns it (#281)
";s:4:"date";s:19:"2023-10-26T00:00:00";}i:9;a:4:{s:7:"version";s:6:"4.1.13";s:8:"critical";b:0;s:5:"notes";s:417:"Added
- Add db index for
redirectMatchType
to help with query performance (#282)
Changed
- Add permission fallback logic to the dashboard for Short Links access
Security
- Fixed a potential XSS vulnerability with a malformed
referrer
header
";s:4:"date";s:19:"2023-08-15T00:00:00";}i:10;a:4:{s:7:"version";s:6:"4.1.12";s:8:"critical";b:0;s:5:"notes";s:804:"Changed
- Enforce full URL matching for short links when used within a multi-site setup and enabling any of the content translation method for the field. (#277)
Fixed
- Fixed a bug where short links would not work correctly within Matrix fields. (#279)
- Fixed a bug where short links would not be cleaned up appropriately when updating a Short Link value on an element. (#277)
- Fixed a bug where short links would not work correctly with multi-sites. (#277)
";s:4:"date";s:19:"2023-04-07T00:00:00";}i:11;a:4:{s:7:"version";s:6:"4.1.11";s:8:"critical";b:0;s:5:"notes";s:682:"Added
- Added the ability to disable statistics recording entirely via
enableStatistics
in the config.php
(#272)
Changed
- Add versioning to the docs
Fixed
- Fixed an issue where no events triggered when using
exactMatch
redirect (#273)
- Fixed a bug where deleting a revision would also delete all the short links associated with the element (#270)
";s:4:"date";s:19:"2023-03-07T00:00:00";}i:12;a:4:{s:7:"version";s:6:"4.1.10";s:8:"critical";b:0;s:5:"notes";s:429:"Changed
- Use dynamic docker container name & port for the
buildchain
- Update the
buildchain
to use Vite ^4.0.0
- Refactored the docs buildchain to use a dynamic docker container setup
Fixed
- Fixed an issue with the rebuild indexes migration (#269)
";s:4:"date";s:19:"2023-02-09T00:00:00";}i:13;a:4:{s:7:"version";s:5:"4.1.9";s:8:"critical";b:0;s:5:"notes";s:241:"Fixed
- Added missing
priority
column to the retour_static_redirects
too, in Install.php
migration (#262)
";s:4:"date";s:19:"2022-12-08T00:00:00";}i:14;a:4:{s:7:"version";s:5:"4.1.8";s:8:"critical";b:0;s:5:"notes";s:196:"Fixed
- Added missing
priority
column to the Install.php
migration (#262)
";s:4:"date";s:19:"2022-12-07T00:00:00";}i:15;a:4:{s:7:"version";s:5:"4.1.7";s:8:"critical";b:0;s:5:"notes";s:480:"Added
- Added the ability to set a Priority for regex redirects, so you have control over the order in which they execute (#74)
Fixed
- Fixed an issue that would cause
getStaticRedirect()
to return a redirect regardless of whether or not it is enabled (#260)
";s:4:"date";s:19:"2022-12-05T00:00:00";}i:16;a:4:{s:7:"version";s:5:"4.1.6";s:8:"critical";b:0;s:5:"notes";s:582:"Added
- Added
EVENT_BEFORE_DELETE_REDIRECT
& EVENT_AFTER_DELETE_REDIRECT
events, so you can hook in before & after a redirect is deleted (#259)
Changed
- Updated docs to use VitePress
^1.0.0-alpha.29
Fixed
- Fixed an issue with the console command throwing an exception due to an uninitialized typed property (#257)
";s:4:"date";s:19:"2022-11-28T00:00:00";}i:17;a:4:{s:7:"version";s:5:"4.1.5";s:8:"critical";b:0;s:5:"notes";s:732:"Changed
- Fixed HMR in local dev with explicit alias that resolves to the actual directory
- Add
import.meta.hot.accept
for entrypoint JavaScript for HMR
Fixed
- Fixed an issue where the default value for
redirectHttpCode
would cause a validation error to be displayed when creating a new static redirect (#255)
- Fixed an issue where the default value for
redirectHttpCode
would cause importing a CSV file to fail if no redirectHttpCode
was provided in the CSV file (#253)
";s:4:"date";s:19:"2022-11-03T00:00:00";}i:18;a:4:{s:7:"version";s:5:"4.1.4";s:8:"critical";b:0;s:5:"notes";s:534:"Changed
- Move to using
ServicesTrait
and add getter methods for services
- Users must have permission to access Retour to be able to use the Retour widget (#251)
Fixed
- Ensure that
$driver
is nullable in the install migration (#252) (#250)
";s:4:"date";s:19:"2022-10-03T00:00:00";}i:19;a:4:{s:7:"version";s:5:"4.1.3";s:8:"critical";b:0;s:5:"notes";s:598:"Changed
- Fixed an issue where element types that update their
uriFormat
directly rather than re-saving the elements will generate automatic element redirects (#248)
- Updated how Retour's components are registered, to allow for overriding via plugin config (#1989) (#11039)
- Update the buildchain to use Vite
^3.1.0
for building frontend assets
";s:4:"date";s:19:"2022-09-14T00:00:00";}i:20;a:4:{s:7:"version";s:5:"4.1.2";s:8:"critical";b:0;s:5:"notes";s:647:"Changed
- Whether a Short Link redirect is created for "All Sites" or on a per-site basis is now determined by the propagation method of the Short Link field
- Include "Short Link Element ID" in the CSV redirects export
- Allow for the localization of the exported redirects & statistics column names
Fixed
- Fix improperly named field input template (casing) (#247)
- Editing a Short Link field's redirect in the CP now properly preserves its Short Link status, and redirects to the Short Links page
";s:4:"date";s:19:"2022-09-08T00:00:00";}i:21;a:4:{s:7:"version";s:5:"4.1.1";s:8:"critical";b:0;s:5:"notes";s:181:"Fixed
- Fixed an issue that could cause redirects to not function as expected (#245)
";s:4:"date";s:19:"2022-09-02T00:00:00";}i:22;a:4:{s:7:"version";s:5:"4.1.0";s:8:"critical";b:0;s:5:"notes";s:933:"Added
- Added the Short Link field type that allows content authors to add short link redirects in an entry
- Added translations in the Javascript views that Retour uses, allowing for better localization (#222)
- If a CSV import has errors, they are displayed on the frontend to make them easier to diagnose (#219)
Changed
- Improved the performance when resolving exact match redirects by doing a database query. (#217)
- If the Preserve Query String plugin setting is enabled, query strings from the incoming request and the destination URL will be combined (#242)
";s:4:"date";s:19:"2022-08-30T00:00:00";}}s:13:"phpConstraint";N;s:11:"packageName";s:24:"nystudio107/craft-retour";}s:8:"seomatic";a:7:{s:6:"status";s:7:"expired";s:8:"releases";a:55:{i:0;a:4:{s:7:"version";s:6:"4.1.11";s:8:"critical";b:0;s:5:"notes";s:235:"Changed
";s:4:"date";s:19:"2025-01-23T00:00:00";}i:1;a:4:{s:7:"version";s:6:"4.1.10";s:8:"critical";b:0;s:5:"notes";s:882:"Added
- Added a
ModifySitemapQueryEvent
to allow the modification of the element query used to generate a sitemap (#1553)
Changed
- Use the
site
query parameter used globally by Craft in the CP for SEOmatic settings (#1527)
Fixed
- Fixed an issue where the L2 cache was not properly invalidated for containers after a preview request, which could result in stale metadata
- Handle the case where SEOmatic settings for a specific
typeId
ended up in its own metabundle in addition to the default metabundle for that section (#1557)
";s:4:"date";s:19:"2025-01-16T00:00:00";}i:2;a:4:{s:7:"version";s:5:"4.1.9";s:8:"critical";b:0;s:5:"notes";s:444:"Changed
- Encode the URI in the
canonical
link
header (#1519)
- Ensure that URLs that are a site index URL and have a path prefix strip trailing slashes as appropriate (#717) (#5675)
";s:4:"date";s:19:"2025-01-08T00:00:00";}i:3;a:4:{s:7:"version";s:5:"4.1.8";s:8:"critical";b:0;s:5:"notes";s:786:"Changed
- If an incoming URL has a trailing slash, preserve it for things like the Canonical URL (#1547)
- Deprecate & remove from the UI the Invalidate Sitemap Caches Automatically aka
regenerateSitemapsAutomatically
setting, since it is no longer relevant with the paginated sitemaps
- Deprecate the CLI command
seomatic/sitemap/generate
, since it no longer needed with the paginated sitemaps
Fixed
- Fixed an issue where the News Publication Name isn't displayed in Content SEO → Sitemap settings (#1551)
";s:4:"date";s:19:"2024-12-21T00:00:00";}i:4;a:4:{s:7:"version";s:5:"4.1.7";s:8:"critical";b:0;s:5:"notes";s:208:"Fixed
- Fixed an issue where newly created sections would not have Content SEO settings show up for (#1544)
";s:4:"date";s:19:"2024-11-20T00:00:00";}i:5;a:4:{s:7:"version";s:5:"4.1.6";s:8:"critical";b:0;s:5:"notes";s:2008:"Added
- Added the Site Alternate Name property to Site Settings, used in the JSON-LD for the homepage, if the MainEntityOfPage is WebPage or WebSite (#1482)
- Added Letterbox crop mode for SEO image transforms (#1337)
Changed
- No longer do a potentially expensive query on page load for sections that have a massive number of entries (#1526)
- If the current route is the homepage, set the
name
and alternateName
JSON-LD for the mainEntityOfPage
to seomatic.site.siteName
and seomatic.site.identity.genericAlternateName
respectively, rather than the seomatic.meta.seoTitle
(#1482)
- The SEO preview display in Content SEO will pull an entry from the specific Entry Type rather than just the first entry. Note: If you have a custom
SeoElement
PHP class, it will require a very minor method signature change to continue working (#1535)
- Text and Asset pull sources in Content SEO will now display only fields from the specific Entry Type rather than all fields for that Section. Note: If you have a custom
SeoElement
PHP class, it will require a very minor method signature change to continue working (#1535)
Fixed
- Fixed an issue where an exception would be thrown if the Campaign plugin was installed first, and then you newly installed SEOmatic (#1530)
";s:4:"date";s:19:"2024-11-12T00:00:00";}i:6;a:4:{s:7:"version";s:5:"4.1.5";s:8:"critical";b:0;s:5:"notes";s:339:"Fixed
- Fixed
togImageField
field typo in the FeedMe integration (#1520)
- Fixed a field mapping issue for fields in the FeedMe integration (#1520)
";s:4:"date";s:19:"2024-10-21T00:00:00";}i:7;a:4:{s:7:"version";s:5:"4.1.4";s:8:"critical";b:0;s:5:"notes";s:867:"Fixed
- Normalize the incoming
url
and path
so that mergUrlWithPath()
handles edge-cases properly (#1512)
- Fixed an issue where the
ads.txt
wasn't renamed properly when requested via GraphQL (#1513)
- Fixed an exception caused by the wrong argument passed to
Asset::getAssetById()
in edge cases (#1515)
- Removed vestigial sitemap rendering code in
SitemapTemplate
that had a code path that had a code path that could return a 503
(#1437)
";s:4:"date";s:19:"2024-09-29T00:00:00";}i:8;a:4:{s:7:"version";s:5:"4.1.3";s:8:"critical";b:0;s:5:"notes";s:656:"Changed
- Make the Content SEO listings better at eliminating duplicates by pruning sections that no longer exist (#1499)
- Fixed an issue where a section with a
typeId
of 0
wouldn't validate, and thus the changes to the Content SEO settings would not validate & save (#1510)
- Fixed an issue where the homepage metacontainer cache did not get properly cleared (#1514)
";s:4:"date";s:19:"2024-09-10T00:00:00";}i:9;a:4:{s:7:"version";s:5:"4.1.2";s:8:"critical";b:0;s:5:"notes";s:669:"Changed
- Made the SEO preview sidebar UI more consistent with Craft (#1497)
Fixed
- Fixed an issue where GraphQL or Meta Container endpoint requests that had a token set were not being caches separately
- Also add any
token
to the meta container cache key for regular requests
- Fixed an issue where using "Single Page" for the Sitemap Page Size setting would cause an exception to be thrown when generating the sitemap (#1498)
";s:4:"date";s:19:"2024-08-15T00:00:00";}i:10;a:4:{s:7:"version";s:5:"4.1.1";s:8:"critical";b:0;s:5:"notes";s:712:"Changed
- Renamed the Regenerate Sitemaps Automatically setting to Invalidate Sitemap Caches Automatically for clarity
Fixed
- Fixed an issue where getting the sitemaps via GraphQL and meta container endpoint only retrieved the first page since the switch to paginated sitemaps (#1492)
- Fixed an issue where saving an entry could be slow, because SEOmatic was pointlessly trying to regenerate the sitemap cache (which is no longer a thing with paginated sitemaps) (#1494)
";s:4:"date";s:19:"2024-07-19T00:00:00";}i:11;a:4:{s:7:"version";s:5:"4.1.0";s:8:"critical";b:0;s:5:"notes";s:179:"Added
- Remove queue generated sitemaps, switch to paginated sitemaps to allow them to be rendered at web response time, but still be managable in size
";s:4:"date";s:19:"2024-07-12T00:00:00";}i:12;a:4:{s:7:"version";s:6:"4.0.50";s:8:"critical";b:0;s:5:"notes";s:956:"Added
- Added a setting in Plugin Settings -> Tags to specify which site should be used as the
x-default
for hreflang
tags (1162)
Changed
- Moved where paginated
hreflang
tags are added for paginated pages, so that they can be overriden via Twig templating code. They are now added inside of seomatic.helper.paginate()
Fixed
- Fixed an issue that could cause an exception to be thrown if the selected asset for the Creator or Identity brand image was deleted (#1472)
- Fixed an issue where the SEO preview for SEO Settings fields and the sidebar wouldn't be displayed correctly for drafts (#1449)
";s:4:"date";s:19:"2024-05-13T00:00:00";}i:13;a:4:{s:7:"version";s:6:"4.0.49";s:8:"critical";b:0;s:5:"notes";s:114:"Fixed
- Fixed an issue where the down and up arrows were reversed for sorting purposes
";s:4:"date";s:19:"2024-05-20T00:00:00";}i:14;a:4:{s:7:"version";s:6:"4.0.48";s:8:"critical";b:0;s:5:"notes";s:102:"Added
- Ensure that
getTransformByHandle()
is passed a string
";s:4:"date";s:19:"2024-04-10T00:00:00";}i:15;a:4:{s:7:"version";s:6:"4.0.47";s:8:"critical";b:0;s:5:"notes";s:127:"Added
- Fix regression of
getAssetTransforms()
-> getImageTransforms()
";s:4:"date";s:19:"2024-04-10T00:00:00";}i:16;a:4:{s:7:"version";s:6:"4.0.46";s:8:"critical";b:0;s:5:"notes";s:1035:"Added
- Added the ability to choose the Asset Transform to apply to images in the sitemap (#1407)
Fixed
- Fixed a regression in
extractTextFromField
that could cause it to not render properly by being more explicit, looking only for arrays or Collections
in isArrayLike()
(#1441)
- Fixed an issue where the
typeId
coming in from editing the Content SEO settings was a string, when it needed to be cast to an integer (#1442) (#1368)
- Fixed an issue where the Copy Settings From menu didn't work correctly for multiple entry types (#1368)
";s:4:"date";s:19:"2024-04-10T00:00:00";}i:17;a:4:{s:7:"version";s:6:"4.0.45";s:8:"critical";b:0;s:5:"notes";s:311:"Fixed
- Addressed an issue where if SEOmatic was set to extract text or keywords from a relation field that was eager loaded, it would extract the serialized value of the field instead of the actual text (#1415)
";s:4:"date";s:19:"2024-03-22T00:00:00";}i:18;a:4:{s:7:"version";s:6:"4.0.44";s:8:"critical";b:0;s:5:"notes";s:227:"Fixed
- Fixed a regression that would throw an exception when attempting to save the
security.txt
template (#1435)
";s:4:"date";s:19:"2024-03-14T00:00:00";}i:19;a:4:{s:7:"version";s:6:"4.0.43";s:8:"critical";b:0;s:5:"notes";s:1495:"Changed
- Add
PerplexityBot
to the default disallow
list in robots.txt
, as there's no benefit to allowing it to index your site
- Allow locales to be in the format
language[_territory]
such that the territory is optional
- Ensure that
security.txt
templates always end with a new line (#1429)
Fixed
- Fixed an issue where a trailing slash would be added to a paginated URL that uses URL parameters and
addTrailingSlashesToUrls
was true
in the General config (#1401)
- Fixed an issue where clicking the SEOmatic CP nav item would result in a 403 exception if the current user didn't have permission to view the SEOmatic dashboard (#1410)
- Fixed an issue where an exception could be thrown when generating a sitemap with assets, and the field mapping was empty (#1425)
- Fixed an issue where the
@id
in the mainEntityOfPage
JSON-LD wouldn't be correct if the identity
and creator
were not the same (#1431)
";s:4:"date";s:19:"2024-03-08T00:00:00";}i:20;a:4:{s:7:"version";s:6:"4.0.42";s:8:"critical";b:0;s:5:"notes";s:105:"Fixed
- Fixed an issue where an exception could be thrown due to a bad commit
";s:4:"date";s:19:"2024-02-20T00:00:00";}i:21;a:4:{s:7:"version";s:6:"4.0.41";s:8:"critical";b:0;s:5:"notes";s:1170:"Added
- Added the ability to generate a News Sitemap for any Section
- Added an SEOmatic Debug Toolbar Panel setting to Plugin Settings → Advanced that lets you control whether the SEOmatic Debug Toolbar panel is added to the Yii2 Debug Toolbar (if it is enabled)
- Updated to schema.org v26.0, fixes (#1420)
Changed
- Completely revamped the documentation to hopefully make it more accessible & useful (thanks to Matt Stein @ Adjacent)
- PHPstan code cleanup
Fixed
- Fixed an issue that would cause assets in Neo blocks to not appear as images in the sitemap
- Fixed an issue that would cause assets in SuperTable blocks to not appear as images in the sitemap
- Fixed an issue with missing classes in
Sitemap
helper
- Fixed an issue that would cause text in Neo blocks to not get extracted
";s:4:"date";s:19:"2024-02-20T00:00:00";}i:22;a:4:{s:7:"version";s:6:"4.0.40";s:8:"critical";b:0;s:5:"notes";s:301:"Fixed
- Fixed a regression where the
robots
tag would be set to none
for CP requests, which is incorrect, because GraphQL and meta container endpoints are CP requests (#1414)
";s:4:"date";s:19:"2024-02-13T00:00:00";}i:23;a:4:{s:7:"version";s:6:"4.0.39";s:8:"critical";b:0;s:5:"notes";s:1278:"Added
- Add
phpstan
and ecs
code linting
- Add
code-analysis.yaml
GitHub action
Changed
- PHPstan code cleanup
- ECS code cleanup
Fixed
- Fixed an issue where
DynamicMeta
didn't properly take into account that robots
can be a comma delimited list of values now (#1399)
- Fixed an issue where a
robots
setting of none
or noindex
in the Content SEO settings make it impossible to override the robots
setting in an SEO Settings field (#1399)
- Added the unused
static
to the Tailwind CSS blocklist
to avoid a name collision with a Craft CSS class (#1412)
- Added
webp
and gif
as allowed social media image formats now that the social media sites accept them, and guard against no transform existing (#1411)
";s:4:"date";s:19:"2024-02-09T00:00:00";}i:24;a:4:{s:7:"version";s:6:"4.0.38";s:8:"critical";b:0;s:5:"notes";s:416:"Changed
- Updated docs to use node 20 & a new sitemap plugin
Fixed
- Fixed overly large debug toolbar pane response size due to repeating inline SVG icons
- Ensure that CP requests and Tokenized requests have
robots
tag & header set to none
(#1394)
";s:4:"date";s:19:"2024-01-22T00:00:00";}i:25;a:4:{s:7:"version";s:6:"4.0.37";s:8:"critical";b:0;s:5:"notes";s:1518:"Added
- Added a
EVENT_INCLUDE_SITEMAP_ENTRY
event to allow plugins or modules to determine whether entries should be added to the sitemap or not (#1393)
- Allow the
config/seomatic.php
siteUrlOverride
to be set to either a string, or an array of site URLs, indexed by the site handle for overriding complex headless multi-site Craft setups (#1376)
Changed
- Switch over to listening for element changes via
Element::EVENT_AFTER_PROPAGATE
events instead of Elements::EVENT_AFTER_SAVE_ELEMENT
and have it check the Element::$resaving
attribute instead of Model::$scenario
= SCENARIO_ESSENTIALS
to determine whether sitemap queue jobs should be created (#1388)
- If the Site URL Override feature is used, pass along the parameters, too, when building the URL (#950)
- Removed the automatic Google Sitemap ping endpoint, since Google has deprecated it and will be removing it entirely soon (#1392)
";s:4:"date";s:19:"2023-12-12T00:00:00";}i:26;a:4:{s:7:"version";s:6:"4.0.36";s:8:"critical";b:0;s:5:"notes";s:1060:"Added
- Switch over to Vite
^5.0.0
& Node ^20.0.0
for the buildchain
- The sitemaps now check
enabledForSite
to determine whether elements should be included in the sitemap (#1388)
Changed
- Remove vestigial
queue
option from the console command
- Rebrand
Twitter
to X (Twitter)
in all user-displayed text
- Updated the X (Twitter) large image previews to reflect the new style in X (Twitter)
Fixed
- Fixed an issue where the Truncate Description Tags toggle did not work as expected (#1386)
- Fixed an issue where the frontend SEO preview URLs could be wrong if you're using the Site URL Override feature (#950)
";s:4:"date";s:19:"2023-11-28T00:00:00";}i:27;a:4:{s:7:"version";s:6:"4.0.35";s:8:"critical";b:0;s:5:"notes";s:294:"Fixed
- Only try the
getMatchedElement()
optimization when it's not a console request, and surround it with try/catch
to catch any potentially thrown exceptions (#1384)
";s:4:"date";s:19:"2023-11-16T00:00:00";}i:28;a:4:{s:7:"version";s:6:"4.0.34";s:8:"critical";b:0;s:5:"notes";s:772:"Changed
- Try to use Craft's matched element from
UrlManager
in MetaContainers
if looking for an enabled element, the current siteId
is being used and the current uri
matches what was in the request (#1381)
Fixed
- Fixed an issue where the
CanonicalLink
would render if the Robots
tag contained multiple values (#1378)
- Fixed incorrect references to
SeoEntry
in the Campaign SeoElement
(#1382)
";s:4:"date";s:19:"2023-11-15T00:00:00";}i:29;a:4:{s:7:"version";s:6:"4.0.33";s:8:"critical";b:0;s:5:"notes";s:124:"Added
- Added an SEOmatic debug panel to the Yii2 Debug Toolbar to aid in debugging SEO metadata
";s:4:"date";s:19:"2023-10-22T00:00:00";}i:30;a:4:{s:7:"version";s:6:"4.0.32";s:8:"critical";b:0;s:5:"notes";s:1580:"Added
- Added support for the Shopify plugin, so imported Shopify Products are automatically recognized by SEOmatic, and get properly mapped metadata
- Add integration with the Campaign plugin, so Campaign landing pages are automatically recognized by SEOmatic, and get properly mapped metadata
- Disallow Google Bard and Vertex AI bots in
robots.txt
by default, as there's no benefit to allowing it to index your site. ref: https://developers.google.com/search/docs/crawling-indexing/overview-google-crawlers#common-crawlers
Changed
- Moved the
security.txt
location to .well-known/security.txt
from the server root, and make the bundle updating mechanism preserve user settings in the process (#1353)
- Hide the SEO Image / OG Image / Twitter Image mode selectors if transforming is disabled
- Set the
twitterImageTransform
and ogImageTransform
to false
by default, since the default is also sameAsSeo
and this will result in better default expected behavior (#1364)
Fixed
- Fixed a syntax error in the digitalproductmeta JsonLD Container (#1361)
";s:4:"date";s:19:"2023-10-09T00:00:00";}i:31;a:4:{s:7:"version";s:6:"4.0.31";s:8:"critical";b:0;s:5:"notes";s:1194:"Added
Changed
- The Plugin Settings -> Tags -> Add
hreflang
Tags setting now also controls whether hreflang
URLs are added to sitemaps (#1340)
Fixed
- Fixed an issue that caused you to be unable to dynamically include/exclude scripts that have body JavaScript via Twig, by unifying the rendering method (#1334)
- Fixed an issue that caused the default Content SEO Site Name Position to not default to Same As Global Site Name Position (#1321) (#1333)
";s:4:"date";s:19:"2023-09-12T00:00:00";}i:32;a:4:{s:7:"version";s:6:"4.0.30";s:8:"critical";b:0;s:5:"notes";s:332:"Fixed
- Fixed a regression caused by (#1334) which caused Google Tag Manager noscript template is output with
<script>
tags around it (#1346)
";s:4:"date";s:19:"2023-07-19T00:00:00";}i:33;a:4:{s:7:"version";s:6:"4.0.29";s:8:"critical";b:0;s:5:"notes";s:965:"Changed
- Use any custom field labels for "pull fields" in SEOmatic settings (#1335)
Fixed
- Fixed an issue where the
MetaJsonLd
container was not properly cached, which caused a performance issue as well as storing more data in the cache than necessary
- Fixed a regression that caused the SEO Preview to not appear in the sidebar for Commerce 4, due to Commerce 4 not supporting the
EVENT_DEFINE_SIDEBAR_HTML
event (despite there being code in Commerce 4 that appears to support it) (#1336)
- Fixed an issue that caused you to be unable to dynamically include/exclude scripts that have body JavaScript via Twig, by unifying the rendering method (#1334)
";s:4:"date";s:19:"2023-07-18T00:00:00";}i:34;a:4:{s:7:"version";s:6:"4.0.28";s:8:"critical";b:0;s:5:"notes";s:252:"Fixed
- Fixed an issue that would cause settings in the Tracking Scripts settings to be wiped out whenever other settings in SEOmatic were saved (#1327)
";s:4:"date";s:19:"2023-06-13T00:00:00";}i:35;a:4:{s:7:"version";s:6:"4.0.27";s:8:"critical";b:0;s:5:"notes";s:224:"Changed
- Bumped the schema version to side-step a Craft bug that would throw an error when running
craft/update
with a plugin that had a new migration without a schema version change
";s:4:"date";s:19:"2023-06-02T00:00:00";}i:36;a:4:{s:7:"version";s:6:"4.0.26";s:8:"critical";b:0;s:5:"notes";s:670:"Added
- Show a deprecation notice on the Google Analytics tracking script setting, with an explanation of it being discontinued
- Added the ability to completely disable scripts from displaying & rendering if they have been discontinued
- Add an announcement if the site is using the soon to be deprecated Google Universal Analytics via SEOmatic
Changed
- Don't try to submit sitemap indexes to search engines if sitemaps are disabled for that section
Security
- Addressed a potential XSS vulnerability when using
seomatic.helper.paginate()
";s:4:"date";s:19:"2023-06-01T00:00:00";}i:37;a:4:{s:7:"version";s:6:"4.0.25";s:8:"critical";b:0;s:5:"notes";s:697:"Changed
- Have the Site Name Position default to "Same as Global Setting" (#1321)
Fixed
- Revert (this commit) which caused CLI-based GraphQL generation to fail
- Removed vestigial "No Twitter handle has been set" message (#1316)
- Fixed an issue that would cause SEOmatic to ignore the Override lightswitch setting for SEO Settings fields in the context of generated sitemaps
";s:4:"date";s:19:"2023-05-19T00:00:00";}i:38;a:4:{s:7:"version";s:6:"4.0.24";s:8:"critical";b:0;s:5:"notes";s:1168:"Added
- Added a View Sitemap Index button to SEOmatic → Site Settings → Sitemap (#1085)
Fixed
- Fixed an issue where SEOmatic would cause other plugins to fail to be able to register Twig extensions after it when using the CLI command
craft plugin/install --all
(#1312)
- Fix cache-busting param on seo images (#1310)
- Fixed an issue where
encodeUrlQueryParams
wouldn't include the URL's port
Changed
- Ensure that makes sure that alternate site url's also take into account a potential site override url in sitemaps (#1298)
- Use the
getSalePrice()
for the default Product
and DigitalProduct
JSON-LD structured data (#930)
";s:4:"date";s:19:"2023-05-01T00:00:00";}i:39;a:4:{s:7:"version";s:6:"4.0.23";s:8:"critical";b:0;s:5:"notes";s:421:"Changed
- Removed the requirement that the Site Twitter Handle is set for Twitter cards to be generated (#1275)
Fixed
- Fixed a caching issue that would cause the Main Entity of Page schema type menu to malfunction (#1303)
";s:4:"date";s:19:"2023-03-27T00:00:00";}i:40;a:4:{s:7:"version";s:6:"4.0.22";s:8:"critical";b:0;s:5:"notes";s:366:"Added
- Added
(Google rich result)
in the Main Entity of Page dropdown, for Schema.org types that Google uses for Rich Results
- Add descriptions & links for
(pending)
and (Google rich result)
schemas in the Main Entity of Page dropdown
- Added a caching layer to the Schema helper
";s:4:"date";s:19:"2023-03-13T00:00:00";}i:41;a:4:{s:7:"version";s:6:"4.0.21";s:8:"critical";b:0;s:5:"notes";s:1594:"Added
Changed
- Don't disable
hreflang
tags based on whether the section is included in the sitemap or not (#1285)
- Ensure that the state of the General tab and the override switch is taken into account when determining if
robots
is disabled in an SEO Settings field for hreflang
URLs
- Changed the sitemap submission timeout to be
5
seconds, to avoid lengthy delays if Google cannot be reached for some reason (#1288)
- Add versioning to the docs
- Add Pending types from Schema.org back into the Main Entity of Page dropdown, but mark them as
(pending)
Fixed
- Fixed an issue where an error would be logged if a source Asset field was selected as an SEO Image, and it was eager loaded (#1291)
- Ensure that URL query parameters are properly encoded after being sanitized (#1075)
";s:4:"date";s:19:"2023-03-09T00:00:00";}i:42;a:4:{s:7:"version";s:6:"4.0.20";s:8:"critical";b:0;s:5:"notes";s:884:"Added
Changed
- Use dynamic docker container name & port for the
buildchain
- Update the
buildchain
to use Vite ^4.0.0
- Refactored the docs buildchain to use a dynamic docker container setup
Fixed
- Fixed an issue where sitemaps would be regenerated even if URLs were disabled for a particular section, in certain circumstances (#1212)
- Removed the check for the now-deprecated
layer
property in the tree.jsonld
schema from schema.org, so that it can be parsed properly
";s:4:"date";s:19:"2023-02-09T00:00:00";}i:43;a:4:{s:7:"version";s:6:"4.0.19";s:8:"critical";b:0;s:5:"notes";s:119:"Fix
- Fixed a regression that would cause
entry.
to not resolve in meta values
";s:4:"date";s:19:"2023-01-11T00:00:00";}i:44;a:4:{s:7:"version";s:6:"4.0.18";s:8:"critical";b:0;s:5:"notes";s:217:"Fix
- Fixed an issue where meta tags would not render on a very specific version of PHP (
8.1.13
) (#1257)
";s:4:"date";s:19:"2023-01-10T00:00:00";}i:45;a:4:{s:7:"version";s:6:"4.0.17";s:8:"critical";b:0;s:5:"notes";s:295:"Changed
- Update to use Vite
^4.0.0
for the buildchain
Fixed
- Solspace calendar integration error would throw an exception if you deleted a Calendar (#1259)
";s:4:"date";s:19:"2023-01-09T00:00:00";}i:46;a:4:{s:7:"version";s:6:"4.0.16";s:8:"critical";b:0;s:5:"notes";s:675:"Fixed
- Ensure that
parsedValue()
always returns a string
Changed
- Fixed the disabled state of SEO Settings Override fields so they look consistent
- Remove the odd Craft
modifiedAttributes
styling when a field value is changed (#12403)
- Removed the
field
class from the SEO Settings field wrapper so an additional status-badge
isn't injected by Craft
- Fix the styling of the SEO Image, Twitter Image, and FaceBook OpenGraph image in the SEO Settings field when they are not overridden
";s:4:"date";s:19:"2022-12-07T00:00:00";}i:47;a:4:{s:7:"version";s:6:"4.0.15";s:8:"critical";b:0;s:5:"notes";s:229:"Fixed
- Fixed a regression in the SEO Settings field where the Override state for a field would not save (#1239)
";s:4:"date";s:19:"2022-11-22T00:00:00";}i:48;a:4:{s:7:"version";s:6:"4.0.14";s:8:"critical";b:0;s:5:"notes";s:814:"Changed
- Better styling for the Robots focus ring
- Refactored the docs to use the latest version of VitePress (
^1.0.0-alpha.29
)
Fixed
- Fixed a regression that caused entries with SEO Settings fields in them to think the entry had changed, when it hadn't (#1239)
- Fixed an issue where the Facebook Opengraph Image Transform Mode would appear in an SEO Settings field, even if it was disabled (#1240)
- Fixed an issue where
extractTextFromField()
would throw an exception for Neo fields (#1242)
";s:4:"date";s:19:"2022-11-20T00:00:00";}i:49;a:4:{s:7:"version";s:6:"4.0.13";s:8:"critical";b:0;s:5:"notes";s:501:"Added
- Greatly improved the Robots field, allowing you to pick multiple values, and additional values added by Google (#1237)
Changed
- Switch from Webpack to Vite for the plugin asset build system
Fixed
- Fix query level structureDepth 'Invalid numeric value: 1<=' (#1238)
";s:4:"date";s:19:"2022-11-11T00:00:00";}i:50;a:4:{s:7:"version";s:6:"4.0.12";s:8:"critical";b:0;s:5:"notes";s:664:"Changed
- Fixed an exception that could be thrown if you are using an SEO Settings field, by adding an explicit cast to
(array)
for checkbox field values that should be saved as an empty array []
but instead are saved as an empty string ''
. Believed to be a regression in Craft 4.3 (#1233) (#1231)
- Handle the case where an asset's
dateModified
is null (#1234)
";s:4:"date";s:19:"2022-11-03T00:00:00";}i:51;a:4:{s:7:"version";s:6:"4.0.11";s:8:"critical";b:0;s:5:"notes";s:509:"Changed
- Switch from Twigfield to Code Editor
Fixed
- Fixed an issue with Twigfield was errantly loaded in SEO Settings fields (#1229)
- Fixed an issue where Include Images & Videos in Sitemap appeared in the SEO Settings field, despite being disabled in the field settings (#1163)
";s:4:"date";s:19:"2022-11-01T00:00:00";}i:52;a:4:{s:7:"version";s:6:"4.0.10";s:8:"critical";b:0;s:5:"notes";s:304:"Fixed
- Fix
phpcs
coding style CI tests
Changed
- Refactored
TrackingVarsAutocomplete
to use Twigfield ^1.0.12
's ability to pass down data via twigfieldOptions
rather than relying on the data cache
";s:4:"date";s:19:"2022-10-19T00:00:00";}i:53;a:4:{s:7:"version";s:5:"4.0.9";s:8:"critical";b:0;s:5:"notes";s:941:"Changed
- Use
App::env()
to check environment (#1210)
- Added
CRAFT_ENVIRONMENT
check to SeomaticVariable
(#1210)
- Don't bother invalidating sitemaps via the console command, as it causes them to be regenerated twice
- Use a stale-while-revalidate pattern for sitemap generation, so the old cached sitemap will be served until the new one as been regenerated due to an invalidation (content editing) (#1213)
Fixed
- Fixed an issue where the announcement migration would fail due to using closures (changed for the Craft 4.0.0 release)
- Ensure that
$driver
is nullable in the install migration
";s:4:"date";s:19:"2022-10-03T00:00:00";}i:54;a:4:{s:7:"version";s:5:"4.0.8";s:8:"critical";b:0;s:5:"notes";s:474:"Changed
- Check both
ENVIRONMENT
and CRAFT_ENVIRONMENT
when attempt to auto-determine the current environment
- Move to using
ServicesTrait
and add getter methods for services
Fixed
- Fixed an improper docblock typing for the
genericImage
property on the Entity
model (#1193)
";s:4:"date";s:19:"2022-09-17T00:00:00";}}s:10:"renewalUrl";s:76:"https://console.craftcms.com/accounts/geniusesforhire/licenses/plugins/30298";s:12:"renewalPrice";s:7:"49.0000";s:15:"renewalCurrency";s:3:"USD";s:13:"phpConstraint";s:6:"^8.0.2";s:11:"packageName";s:26:"nystudio107/craft-seomatic";}s:5:"sprig";a:4:{s:6:"status";s:8:"eligible";s:8:"releases";a:22:{i:0;a:4:{s:7:"version";s:6:"2.13.1";s:8:"critical";b:0;s:5:"notes";s:412:"Changed
- Updated htmx to version 2.0.3 (changelog).
- The fetch function is now called inside an event listener when calling
sprig.triggerRefreshOnLoad()
, making it more robust.
- Reverted some variable method name changes to improve autocompletion in PhpStorm.
";s:4:"date";s:19:"2024-10-23T00:00:00";}i:1;a:4:{s:7:"version";s:6:"2.13.0";s:8:"critical";b:0;s:5:"notes";s:943:"Added
- Added the ability to assign an ID to a component by passing a string as the third argument to the
sprig()
function.
Changed
Fixed
- Fixed the positioning of the JavaScript output by the
sprig.triggerRefreshOnLoad
function.
Deprecated
- Deprecated
sprig.getIsBoosted
, sprig.getIsError
, sprig.getIsHistoryRestoreRequest
, sprig.getIsInclude
, sprig.getIsRequest
, sprig.getIsSuccess
. Use sprig.isBoosted
, sprig.isError
, sprig.isHistoryRestoreRequest
, sprig.isInclude
, sprig.isRequest
, sprig.isSuccess
instead.
";s:4:"date";s:19:"2024-08-29T00:00:00";}i:2;a:4:{s:7:"version";s:6:"2.12.0";s:8:"critical";b:0;s:5:"notes";s:376:"Changed
- The
sprig.registerJs(js)
function now executes the registered JavaScript after htmx settles, and is now the recommended way of outputting JavaScript in Sprig components.
- Components no longer render markup added via
{% html %}
, {% css %}
and {% js %}
tags during Sprig requests.
";s:4:"date";s:19:"2024-08-20T00:00:00";}i:3;a:4:{s:7:"version";s:6:"2.11.0";s:8:"critical";b:0;s:5:"notes";s:519:"Added
- Added the component configurations to a
Sprig
variable in the browser console when devMode
is enabled.
- Added the ability to pass any value into
s-method
, including the put
, patch
and delete
verbs.
- Added the
sprig.registerJs(js)
function.
Changed
- The
sprig.triggerRefresh(selector, variables)
function now prevents cyclical requests.
";s:4:"date";s:19:"2024-08-08T00:00:00";}i:4;a:4:{s:7:"version";s:6:"2.10.1";s:8:"critical";b:0;s:5:"notes";s:166:"Changed
- The
sprig.swapOob()
function now accepts a string in addition to a template to be rendered, in the second argument.
";s:4:"date";s:19:"2024-08-06T00:00:00";}i:5;a:4:{s:7:"version";s:6:"2.10.0";s:8:"critical";b:0;s:5:"notes";s:633:"Added
- Added the
sprig.swapOob(selector, template, variables)
function that swaps a template out-of-band.
- Added the
sprig.triggerRefresh(selector, variables)
function that triggers a refresh on a Sprig component.
Changed
- Components now render markup added via
{% html %}
, {% css %}
and {% js %}
tags.
- The
sprig.triggerRefreshOnLoad(selector)
function now appends output to the end of the body and should be called using {% do sprig.triggerRefreshOnLoad(selector) %}
.
";s:4:"date";s:19:"2024-08-01T00:00:00";}i:6;a:4:{s:7:"version";s:5:"2.9.0";s:8:"critical";b:0;s:5:"notes";s:883:"This update introduces htmx 2. Read about the changes →
Added
- Added the s-inherit attribute that allows you to control and enable automatic attribute inheritance for child nodes, if it has been disabled by default.
Changed
- Updated htmx to version 2.0.1 (2.0.0 release notes).
- The htmx file is now output even when Sprig components are used inside of
{% cache %}
tags (#329).
Removed
- Removed the
s-sse
and s-ws
attributes.
";s:4:"date";s:19:"2024-07-15T00:00:00";}i:7;a:4:{s:7:"version";s:5:"2.8.1";s:8:"critical";b:0;s:5:"notes";s:214:"Fixed
- Fixed a bug in which some
sprig
variables were incorrectly persisting across requests (#363).
";s:4:"date";s:19:"2024-04-21T00:00:00";}i:8;a:4:{s:7:"version";s:5:"2.8.0";s:8:"critical";b:0;s:5:"notes";s:595:"Added
- Added the
sprig.isSuccess
variable.
- Added the
sprig.isError
variable.
- Added the
sprig.message
variable.
- Added the
sprig.modelId
variable.
Deprecated
- Deprecated the
success
variable. Use sprig.isSuccess
or sprig.isError
instead.
- Deprecated the
flashes
variable. Use sprig.message
instead.
- Deprecated the
id
variable. Use sprig.modelId
instead.
";s:4:"date";s:19:"2024-03-26T00:00:00";}i:9;a:4:{s:7:"version";s:5:"2.7.3";s:8:"critical";b:0;s:5:"notes";s:506:"Added
- Added the ability to pass script tag attributes via the
sprig.registerScript()
and sprig.setRegisterScript()
functions (#338).
- Added the
ComponentsService::setConfig()
method.
Changed
";s:4:"date";s:19:"2023-12-12T00:00:00";}i:10;a:4:{s:7:"version";s:5:"2.7.2";s:8:"critical";b:0;s:5:"notes";s:382:"Added
Changed
- Renamed the
sprig.setAddScript()
function to sprig.setRegisterScript()
.
";s:4:"date";s:19:"2023-09-29T00:00:00";}i:11;a:4:{s:7:"version";s:5:"2.7.1";s:8:"critical";b:0;s:5:"notes";s:83:"Fixed
- Fixed a deprecated tag in the Sprig playground.
";s:4:"date";s:19:"2023-09-27T00:00:00";}i:12;a:4:{s:7:"version";s:5:"2.7.0";s:8:"critical";b:0;s:5:"notes";s:2505:"The htmx script is now automatically injected into the end of the page whenever a Sprig component is created. If you have any JavaScript code in your layouts that rely on htmx being loaded, you will need to wrap them in {% js %}
tags as per the docs.
Added
- Added the Sprig component generator that scaffolds PHP components via a console command (
php craft make sprig-component --path sprig/components
).
- Added the s-cache attribute that allows you to specify if and for how long a request should be cached locally in the browser.
- Added the s-on:* attribute that allows you to respond to events directly on an element.
- Added the s-disabled-elt attribute that allows you to specify elements that will have the disabled attribute added to them for the duration of the request.
- Added the
sprig.htmxVersion
function.
- Added the
sprig.setAddScript()
function.
- Added friendly invalid variable exceptions that are shown when the Canary plugin is installed.
Changed
- The htmx script is now automatically injected into the end of the page whenever a Sprig component is created, meaning that the
sprig.script
function is no longer required and can be safely removed.
- Updated htmx to version 1.9.6 (changelog).
- Simplified and improved invalid variable error messages.
- Invalid variable error messages are now only shown when
devMode
is turned on.
Fixed
- Fixed the response status code that is sent when required request parameters are not supplied (#325).
- Fixed a potential security issue.
Deprecated
- Deprecated the
sprig.script
function. It is no longer required and can be safely removed.
- Deprecated the
s-on
attribute. Use the s-on:*
attribute instead.
";s:4:"date";s:19:"2023-09-26T00:00:00";}i:13;a:4:{s:7:"version";s:5:"2.6.2";s:8:"critical";b:0;s:5:"notes";s:239:"Changed
- Updated htmx to version 1.9.2 (changelog).
- Improved autocomplete documentation in the playground.
";s:4:"date";s:19:"2023-05-01T00:00:00";}i:14;a:4:{s:7:"version";s:5:"2.6.1";s:8:"critical";b:0;s:5:"notes";s:215:"Fixed
- Fixed a bug in which the htmx file was not being published even if it did not already exist locally (#305).
";s:4:"date";s:19:"2023-04-25T00:00:00";}i:15;a:4:{s:7:"version";s:5:"2.6.0";s:8:"critical";b:0;s:5:"notes";s:777:"Added
- Added the sprig.setConfig template variable that allows you to set configuration options for htmx (via a meta tag).
- Added the s-on attribute that allows you to respond to events directly on an element.
Changed
- Updated htmx to version 1.9.0 (release notes).
- The htmx file is now loaded locally rather than from a CDN, to reduce dependency on third-party sites (#303).
";s:4:"date";s:19:"2023-04-23T00:00:00";}i:16;a:4:{s:7:"version";s:5:"2.5.1";s:8:"critical";b:0;s:5:"notes";s:100:"Fixed
- Fixed rendered markup not being escaped in the Sprig playground.
";s:4:"date";s:19:"2023-01-31T00:00:00";}i:17;a:4:{s:7:"version";s:5:"2.5.0";s:8:"critical";b:0;s:5:"notes";s:350:"Added
- Added the s-history attribute that prevents sensitive data being saved to the history cache.
Changed
";s:4:"date";s:19:"2023-01-18T00:00:00";}i:18;a:4:{s:7:"version";s:5:"2.4.0";s:8:"critical";b:0;s:5:"notes";s:322:"Added
";s:4:"date";s:19:"2022-12-08T00:00:00";}i:19;a:4:{s:7:"version";s:5:"2.3.0";s:8:"critical";b:0;s:5:"notes";s:874:"Added
- Added the s-validate attribute that forces an element to validate itself before it submits a request.
- Added the sprig.isHistoryRestoreRequest template variable that returns whether the request is for history restoration after a miss in the local history cache a client-side redirect without reloading the page.
Changed
- Updated htmx to version 1.8.4 (changelog).
- Swapped out the Twigfield package for the Code Editor package (#278).
- Improved the autocomplete API.
";s:4:"date";s:19:"2022-11-07T00:00:00";}i:20;a:4:{s:7:"version";s:5:"2.2.1";s:8:"critical";b:0;s:5:"notes";s:189:"Fixed
- Fixed a bug in which Sprig requests were failing in live preview requests (#269).
";s:4:"date";s:19:"2022-10-08T00:00:00";}i:21;a:4:{s:7:"version";s:5:"2.2.0";s:8:"critical";b:0;s:5:"notes";s:1134:"Added
- Added the s-replace-url attribute that allows you to replace the current url of the browser location history.
- Added the s-select-oob attribute that selects one or more elements from a server response to swap in via an out-of-band swap.
- Added the sprig.location(url) template variable that triggers a client-side redirect without reloading the page.
- Added the sprig.replaceUrl(url) template variable that replaces the current URL in the location bar.
- Added the sprig.reswap(value) template variable that allows you to change the swap behaviour.
Changed
";s:4:"date";s:19:"2022-10-05T00:00:00";}}s:13:"phpConstraint";s:6:"^8.0.2";s:11:"packageName";s:27:"putyourlightson/craft-sprig";}}}i:1;N;}