Version 6 pre-stable
This version of Silverstripe CMS has not yet been given a stable release. See the release roadmap for more information. Go to documentation for the most recent stable version.

6.0.0-alpha1

The API links in this changelog are currently non-functional. We are working to resolve this.

Overview

A full list of module versions included in CMS Recipe 6.0.0-alpha1 is provided below. We recommend referencing recipes in your dependencies, rather than individual modules, to simplify version tracking. See Recipes.

Included module versions
ModuleVersion
colymba/gridfield-bulk-editing-tools5.0.0-alpha1
dnadesign/silverstripe-elemental6.0.0-alpha1
dnadesign/silverstripe-elemental-userforms5.0.0-alpha1
silverstripe-themes/simple3.3.2
silverstripe/admin3.0.0-alpha1
silverstripe/asset-admin3.0.0-alpha1
silverstripe/assets3.0.0-alpha1
silverstripe/blog5.0.0-alpha1
silverstripe/cms6.0.0-alpha1
silverstripe/config3.0.0-alpha1
silverstripe/crontask4.0.0-alpha1
silverstripe/dynamodb6.0.0-alpha1
silverstripe/errorpage3.0.0-alpha1
silverstripe/framework6.0.0-alpha1
silverstripe/graphql6.0.0-alpha1
silverstripe/gridfieldqueuedexport4.0.0-alpha1
silverstripe/hybridsessions4.0.0-alpha1
silverstripe/installer6.0.0-alpha1
silverstripe/linkfield5.0.0-alpha1
silverstripe/login-forms6.0.0-alpha1
silverstripe/lumberjack4.0.0-alpha1
silverstripe/mfa6.0.0-alpha1
silverstripe/mimevalidator4.0.0-alpha1
silverstripe/realme6.0.0-alpha1
silverstripe/recipe-cms6.0.0-alpha1
silverstripe/recipe-core6.0.0-alpha1
silverstripe/recipe-kitchen-sink6.0.0-alpha1
silverstripe/recipe-plugin2.0.1
silverstripe/reports6.0.0-alpha1
silverstripe/segment-field4.0.0-alpha1
silverstripe/session-manager3.0.0-alpha1
silverstripe/sharedraftcontent4.0.0-alpha1
silverstripe/siteconfig6.0.0-alpha1
silverstripe/spamprotection5.0.0-alpha1
silverstripe/staticpublishqueue7.0.0-alpha1
silverstripe/subsites4.0.0-alpha1
silverstripe/tagfield4.0.0-alpha1
silverstripe/taxonomy4.0.0-alpha1
silverstripe/textextraction5.0.0-alpha1
silverstripe/totp-authenticator6.0.0-alpha1
silverstripe/userforms7.0.0-alpha1
silverstripe/vendor-plugin2.0.3
silverstripe/versioned3.0.0-alpha1
silverstripe/versioned-admin3.0.0-alpha1
symbiote/silverstripe-advancedworkflow7.0.0-alpha1
symbiote/silverstripe-gridfieldextensions5.0.0-alpha1
symbiote/silverstripe-queuedjobs6.0.0-alpha1
tractorcow/silverstripe-fluent8.0.0-alpha1

Change to commercially supported modules

Some Silverstripe CMS modules are commercially supported. Silverstripe commits to looking after those modules for the duration of the Silverstripe CMS 6 lifecycle.

Review the list of Commercially Supported Modules for Silverstripe CMS 6.

Modules losing commercial support

Some modules that were commercially supported in Silverstripe CMS 5 are not supported in Silverstripe CMS 6. Some of those modules provide CMS6-compatible versions. Others have been dropped altogether.

Just because a module is not "commercially supported", doesn't mean that you shouldn't be using it. Community supported modules are maintained on a "best-effort" basis. You should take this into consideration when choosing to install a community supported module in your project.

Email community@silverstripe.org if you are keen to maintain some of the modules that are no longer commercially supported.

The code in silverstripe/externallinks, silverstripe/security-report, and silverstripe/sitewidecontent-report has been copied into silverstripe/reports and will be maintained there going forward. The namespaces for classes in those modules has been updated to SilverStripe\Reports. Note that any code that related to silverstripe/subsite or silverstripe/contentreview integration has been removed.

CMS 6 compatible versions of silverstripe/blog, silverstripe/subsites, and silverstripe/crontask have been released with CMS 6.0.0, though they are not commercially supported.

Campaign admin removed from the CMS

The silverstripe/campaign-admin was a core module that provided a way to publish multiple related records at the same time, but it was very rarely used in practice. It has been removed from the default CMS installation and has had its commercial support removed. Its integration support has been removed from silverstripe/cms, silverstripe/admin, and silverstripe/asset-admin, all of which provided "Add to campaign" UX functionality. This means that it may not be possible to get any sort of campaign admin functionality in CMS 6 even if using a forked version of silverstripe/campaign-admin.

Features and enhancements

Validation added to DBFields

DBField is the base class for all database fields in Silverstripe CMS. For instance when you defined 'MyField' => 'Varchar(255)' in your DataObject subclass, the MyField property would be an instance of DBVarchar.

Validation has been added to most DBField subclasses. This means that when a value is set on a DBField subclass, it will be validated against the constraints of that field. This field validation is called as part of DataObject::validate() which itself is called as part of DataObject::write(). If a value is invalid then a ValidationException will be thrown.

For example, if you have a Varchar(64), and you try to set a value longer than 64 characters, an exception will now be thrown. Previously, the value would be truncated to 64 characters and saved to the database.

The validation is added through subclasses of the new FieldValidator abstract class, for instance the StringFieldValidator is used to validate DBVarchar.

Note that this new DBField validation is independent of the existing CMS form field validation that uses methods such as FormField::validate() and DataObject::getCMSCompositeValidator().

Updates have been made to some setValue() methods of DBField subclasses to convert the value to the correct type before validating it.

  • DBBoolean uses the tinyint data type and retains the legacy behaviour of converting true/'true'/'t'/'1' to 1, false/'false'/'f'/'0' to 0.
  • DBDecimal will convert numeric strings as well as integers to floats.
  • DBForeignKey will convert a blank string to 0.
  • DBInt will convert integer like strings to integers.
  • DBYear will convert integer like strings to integers. Also shorthand years are converted to full years (e.g. "24" becomes "2024").

In most cases though, the correct scalar type must now be used. For instance it is no longer possible to set an integer value on a DBVarchar field. You must use a string.

Some new DBField subclasses have been added which will provide validation for specific types of data:

To use these new field types, simply define them in a DataObject subclass:

// app/src/Pages/MyPage.php
namespace App\Pages;

use SilverStripe\CMS\Model\SiteTree;

class MyPage extends SiteTree
{
    private static array $db = [
        // Values will be validated as an email address
        'MyEmail' => 'Email',
        // Values will be validated as an IP address
        'MyIP' => 'IP',
        // Values will be validated as a URL
        'MyURL' => 'URL',
    ];
}

If you have an existing project that uses Varchar fields for email addresses, IP addresses, or URLs, and you switch to using one of the new DBField types, be aware that some of the values in the database may fail validation the next time they are saved which could cause issues for CMS editors. You may wish to create a BuildTask that calls DataObject::validate() on all affected records.

While we have tried to match the validation rules up to what would already have been stored in the database, there is a chance you'll find yourself with pre-existing data which doesn't meet the validation rules, and which therefore causes validation exceptions to be thrown the next time you try to save those records.

If that happens, you may be able to resolve it with one of the following solutions:

  • If there is a form field for that database column, update the value in the form to a valid value before saving the record.
  • Write a BuildTask that updates any invalid values in your database.
  • While it's generally not recommended, you have the option of disabling validation via the DataObject.validation_enabled configuration property.

Changes to sake, BuildTask, and CLI interaction in general

Until now, running sake on the command line has executed a simulated HTTP request to your Silverstripe CMS project, using the routing and controllers that your web application uses to handle HTTP requests. This resulted in both a non-standard CLI experience and added confusion about when an HTTPRequest actually represented an HTTP request.

We've rebuilt Sake using symfony/console - the same package that powers Composer.

Here are some common commands you can run with Sake:

# list available commands
sake # or `sake list`

# list available tasks
sake tasks

# build the database
sake db:build

# flush the cache
sake flush # or use the `--flush` flag with any other command

# get help info about a command (including tasks)
sake <command> --help # e.g. `sake db:build --help`

To reduce upgrade pains we've retained backwards compatability with the legacy syntax for dev/* routed actions (e.g. sake dev/build flush=1 will still work). This allows you to continue using existing scripts and cron jobs. This legacy syntax is deprecated, and will stop working in a future major release.

If for some reason you specifically need to access an HTTP route in your project using Sake, you can use the new sake navigate command, e.g. sake navigate about-us/teams.

See sake for more information about using and configuring sake, including how to register your own custom commands.

There is also a new PolyCommand class which provides a standardised API for code that needs to be accessible from both an HTTP request and CLI. This is used for BuildTask and other code accessed via /dev/* as mentioned below.

See PolyCommand for more details about the PolyCommand API.

Changes to BuildTask

Change to API

The BuildTask class is now a subclass of PolyCommand.

As a result of this, any BuildTask implementations in your project or module will need to be updated. The upgrade will likely look like this in most cases:

 namespace App\Tasks;

-use SilverStripe\Control\Director;
-use SilverStripe\Control\HTTPRequest;
 use SilverStripe\Dev\BuildTask;
+use SilverStripe\PolyExecution\PolyOutput;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;

 class MyCustomTask extends BuildTask;
 {
-    private static $segment = 'my-custom-task';
+    protected static string $commandName = 'my-custom-task';

-    protected $title = 'My custom task';
+    protected string $title = 'My custom task';

-    protected $description = 'A task that does something custom';
+    protected static string $description = 'A task that does something custom';

-    public function run(HTTPRequest $request)
+    protected function execute(InputInterface $input, PolyOutput $output): int
     {
+        if ($input->getOption('do-action')) {
-        if ($request->getVar('do-action')) {
-            if (Director::is_cli()) {
-                echo "Doing something...\n"
-            } else {
-                echo "Doing something...<br>\n";
-            }
+            $output->writeln('Doing something...');
         }
-        echo "Done\n";
+        return Command::SUCCESS;
     }
+
+    public function getOptions(): array
+    {
+        return [
+            new InputOption('do-action', null, InputOption::VALUE_NONE, 'do something specific'),
+        ];
+    }
 }

Note that you should no longer output "done" or some equivalent message at the end of the task. Any time a task finishes executing, the output will include a message about whether the task completed successfully or failed (based on the return value) and how long it took.

See PolyCommand for more details about the BuildTask API.

Change to names

Some tasks were relying on the FQCN instead of having an explicit name. This means the name used for both the URL and the CLI command were excessively long.

The way these are displayed in the new sake tasks list doesn't suit long names, so we have given explicit names to these tasks in order to make them shorter. If you have scripts or cron jobs that reference these you will need to update them to use the new name.

For example, you used to navigate to /dev/tasks/<OLD_NAME> or use sake dev/tasks/<OLD_NAME>. Now you will need to navigate to /dev/tasks/<NEW_NAME> or use sake tasks:<NEW_NAME>.

ClassOld nameNew name
ContentReviewEmailsSilverStripe-ContentReview-Tasks-ContentReviewEmailscontent-review-emails
DeleteAllJobsTaskSymbiote-QueuedJobs-Tasks-DeleteAllJobsTaskdelete-queued-jobs
MigrateContentToElementDNADesign-Elemental-Tasks-MigrateContentToElementelemental-migrate-content
UserFormsColumnCleanTaskSilverStripe-UserForms-Task-UserFormsColumnCleanTaskuserforms-column-clean
StaticCacheFullBuildTaskSilverStripe-StaticPublishQueue-Task-StaticCacheFullBuildTaskstatic-cache-full-build

Changes to /dev/* actions

With the changes to sake come changes to the way dev/* actions are handled. Most of these are now subclasses of the new DevCommand class which is itself a subclass of PolyCommand.

One small change as a result of this is the dont_populate parameter for dev/build and for the new db:build CLI command has been deprecated. Use no-populate instead. For example use https://example.com/dev/build/?no-populate=1 and sake db:build --no-populate.

Registering dev/* commands

If you have custom actions registered under DevelopmentAdmin.registered_controllers you'll need to update the YAML configuration for these. If you want them to be accessible via CLI, you'll also have to update the PHP code.

With the below example, there are two custom actions displayed in the list at /dev:

  • /dev/my-http-only-action: intended for use in the browser only, but you'd have to add custom logic in init() to disallow its use in CLI until now
  • /dev/my-http-and-cli-action: intended for use both in CLI and in the browser.

For actions that should only be accessible in the browser, you only need to change how these are registered. Move them from DevelopmentAdmin.registered_controllers to the new DevelopmentAdmin.controllers configuration property.

Controllers added to DevelopmentAdmin.controllers can only be accessed via HTTP requests, so you can remove any logic around CLI usage.

For actions that should be accessible in the browser and via CLI, you will need to change these from being a Controller to subclassing DevCommand. These get registered to the new DevelopmentAdmin.commands configuration property

 SilverStripe\Dev\DevelopmentAdmin:
-  registered_controllers:
-    my-http-only-action:
-      controller: 'App\Dev\MyHttpOnlyActionController'
-      links:
-        my-http-only-action: 'Perform my custom action in dev/my-http-only-action (do not run in CLI)'
-    my-http-and-cli-action:
-      controller: 'App\Dev\MyHttpAndCliActionController'
-      links:
-        my-http-and-cli-action: 'Perform my custom action in dev/my-http-and-cli-action'
+  controllers:
+    my-http-only-action:
+      class: 'App\Dev\MyHttpOnlyActionController'
+      description: 'Perform my custom action in dev/my-http-only-action'
+  commands:
+    my-http-and-cli-action: 'App\Dev\MyHttpAndCliActionCommand'
 namespace App\Dev;

-use SilverStripe\Control\Controller;
-use SilverStripe\Control\Director;
-use SilverStripe\Control\HTTPRequest;
+use SilverStripe\Dev\Command\DevCommand;
-use SilverStripe\Dev\DevelopmentAdmin;
+use SilverStripe\PolyExecution\PolyOutput;
-use SilverStripe\Security\Permission;
 use SilverStripe\Security\PermissionProvider;
-use SilverStripe\Security\Security;
+use Symfony\Component\Console\Command\Command;
+use Symfony\Component\Console\Input\InputInterface;
+use Symfony\Component\Console\Input\InputOption;

-class MyHttpAndCliActionController extends Controller implements PermissionProvider
+class MyHttpAndCliActionController extends DevCommand implements PermissionProvider
 {
+    protected static string $commandName = 'app:my-http-and-cli-action';
+
+    protected static string $description = 'Perform my custom action in dev/my-http-and-cli-action or via sake app:my-http-and-cli-action';
+
+    private static array $permissions_for_browser_execution = [
+        'MY_CUSTOM_PERMISSION',
+    ];
+
+    public function getTitle(): string
+    {
+        return 'My other action';
+    }
+
-    protected function init(): void
-    {
-        parent::init();
-
-        if (!$this->canInit()) {
-            Security::permissionFailure($this);
-        }
-    }
-
-    public function index(HTTPRequest $request)
+    protected function execute(InputInterface $input, PolyOutput $output): int
     {
-        $someVar = $request->getVar('some-var');
+        $input->getOption('some-var');
-        if (Director::is_cli()) {
-            $body = "some output\n";
-        } else {
-            $body = "some output<br>\n";
-        }
+        $output->writeln('some output');
-
-        return $this->getResponse()->setBody($body);
+        return Command::SUCCESS;
     }

+    public function getOptions(): array
+    {
+        return [
+            new InputOption('some-var', null, InputOption::VALUE_NONE, 'some get variable'),
+        ];
+    }
-    public function canInit(): bool
-    {
-        return (
-            Director::isDev()
-            || (Director::is_cli() && DevelopmentAdmin::config()->get('allow_all_cli'))
-            || Permission::check('MY_CUSTOM_PERMISSION')
-        );
-    }

     // ...
 }

You would now access the /dev/my-http-only-action action via an HTTP request only. The /dev/my-http-and-cli-action action can be access via an HTTP request, or by using sake app:my-http-and-cli-action on the command line.

The some-var option can be used in a query string when running the action via an HTTP request, or as a flag (e.g. sake app:my-http-and-cli-action --some-var) in CLI.

See PolyCommand for more details about the DevCommand API.

sake -start and sake -stop have been removed

Sake used to have functionality to make daemon processes for your application. This functionality was managed with sake -start my-process and sake -stop my-process.

We've removed this functionality. Please use an appropriate daemon tool such as systemctl to manage these instead.

Read-only replica database support

Read-only replicas are additional databases that are used to offload read queries from the primary database, which can improve performance by reducing the load on the primary database.

Read-only replicas are configured by adding environment variables that match the primary environment variable and suffixing _REPLICA_<replica-number> to the variable name, where <replica_number> is the replica number padding by a zero if it's less than 10, for example SS_DATABASE_SERVER becomes SS_DATABASE_SERVER_REPLICA_01 for the first replica, or SS_DATABASE_SERVER_REPLICA_12 for the 12th replica. Replicas must be numbered sequentially starting from 01.

Replicas cannot define different configuration values for SS_DATABASE_CLASS, SS_DATABASE_NAME, or SS_DATABASE_CHOOSE_NAME. They are restricted to prevent strange issues that could arise from having inconsistent database configurations across replicas.

If one or more read-only replicas have been configured, then for each request one of the read-only replicas will be randomly selected from the pool of available replicas to handle queries for the rest of the request cycle, unless criteria has been met to use the primary database instead, for example a write operation.

See read-only database replicas for more details.

When replicas are configured, calling the method DB::get_conn() will now give a replica by default if one is able to be used. To get the primary database connection, call DB::get_conn(DB::CONN_PRIMARY) instead.

Note that the DB::CONN_PRIMARY constant, which has a value of "primary", is used to specify the primary database used. Prior to CMS 6 when there was no DB replica support, the primary database was referred to as "default". If you have code that uses the string "default" to refer to the primary database, you should update it to use the DB::CONN_PRIMARY constant instead.

Note that some DataQuery methods such as DataQuery::execute() now work slightly differently as they will use the replica database if the queried DataObject has the DataObject.must_use_primary_db configuration set to true. However calling the equivalent SQLSelect method via a DataQuery e.g. $dataQuery->query()->execute() will not respect the DataObject.must_use_primary_db configuration.

Run CanonicalURLMiddleware in all environments by default

In Silverstripe CMS 5 CanonicalURLMiddleware only runs in production by default. This lead to issues with fetch and APIs behaving differently in production environments to development. Silverstripe 6.0 changes this default to run the rules in dev, test, and live by default.

To opt out of this change include the following in your _config.php

use SilverStripe\Control\Middleware\CanonicalURLMiddleware;
use SilverStripe\Core\CoreKernel;

CanonicalURLMiddleware::singleton()->setEnabledEnvs([
    CoreKernel::LIVE,
]);

Changes to default cache adapters

The DefaultCacheFactory used to use APCu cache by default for your webserver - but we found this cache isn't actually shared with CLI. This means flushing cache from the CLI didn't actually flush the cache your webserver was using.

What's more, the PHPFilesAdapter used as a fallback wasn't enabled for CLI, which resulted in having a different filesystem cache for CLI than is used for the webserver.

We've made the following changes to resolve this problem:

  • The PHPFilesAdapter will only be used if it's available for both the webserver and CLI. Otherwise, FilesystemAdapter will be used for both.
  • There is no default in-memory cache used by DefaultCacheFactory.
  • Cache factories have been implemented for Redis, Memcached, and APCu, with a new InMemoryCacheFactory interface available for your own implementations.

We strongly encourage you to configure an appropriate in-memory cache for your use-case. See adding an in-memory cache adapter for details.

Changes to scaffolded form fields

Some of the form fields have changed when scaffolding form fields for relations.

Previously, File, Image, and Folder were all scaffolded using UploadField for has_one relations, and GridField for has_many and many_many relations.

All other models used SearchableDropdownField for has_one relations and GridField for has_many and many_many relations.

SiteTree uses form field scaffolding

SiteTree::getCMSFields() used to create its form fields from scratch, without calling parent::getCMSFields(). This meant that all subclasses of SiteTree (i.e. all of your Page classes) had to explicitly define all form fields.

SiteTree::getCMSFields() now uses the same form field scaffolding that all other DataObject subclasses use.

Note that this means when you initially upgrade to Silverstripe CMS 6 you may have form fields being added to your CMS edit forms that you don't want to include, or tabs from relations that you don't want. You can use the scaffold_cms_fields_settings configuration property to change which fields are being scaffolded.

For example, if you have a database column for which you don't want content authors to see or edit the value, you can use the ignoreFields option to stop the form field for that column from being scaffolded:

namespace App\PageTypes;

use Page;

class MyCustomPage extends Page
{
    // ...
    private static array $db = [
        'SecretToken' => 'Varchar',
    ];

    private static array $scaffold_cms_fields_settings = [
        'ignoreFields' => [
            'SecretToken',
        ],
    ];
}

See the scaffolding section for more details about using these options.

As part of your CMS 6 upgrade, you should check all of the page types in your project and in any modules you maintain to ensure the correct form fields are available in the appropriate tabs. You should also check Extension subclasses that you know get applied to pages to ensure fields aren't being scaffolded from those that you want to keep hidden.

What if I don't have time to upgrade all of my page types?

If you have a lot of complex page types and extensions, upgrading all of them to account for the new scaffolding might be a large task. If you want to avoid upgrading your getCMSFields() and updateCMSFields() implementations initially, you can use the restrictRelations and restrictFields scaffolding options in the scaffold_cms_fields_settings configuration property for your pages. You can then declare that only the fields introduced in parent classes should be scaffolded.

The below YAML configuration can be used as a base for this workaround. It will work for all page types available in commercially supported modules. If you use page types provided in third-party modules, you may need to add configuration for those as well.

Note that this is explicitly intended as a temporary workaround, so that you can focus on other areas of the upgrade first, and come back to your page form fields later.

As more community modules are upgraded to account for form field scaffolding in their page types and extension classes, you may need to add more fields to this list. To avoid having to continuously update these lists it's recommended that you take the time to update your getCMSFields() and updateCMSFields() implementations as soon as you have time to do so.

Click to see the YAML configuration snippet
SilverStripe\CMS\Model\SiteTree:
  scaffold_cms_fields_settings:
    restrictRelations:
      # This will stop all has_many and many_many relations from being
      # scaffolded except for new relations which are added to this list
      - 'ThisRelationDoesntExist'
    restrictFields:
      # These fields are scaffolded from SiteTree, and are the bare minimum
      # fields that we need to be scaffolded for all page types
      - 'Title'
      - 'MenuTitle'
      - 'URLSegment'
      - 'Content'

SilverStripe\CMS\Model\VirtualPage:
  scaffold_cms_fields_settings:
    restrictFields:
      - 'CopyContentFrom'

SilverStripe\CMS\Model\RedirectorPage:
  scaffold_cms_fields_settings:
    restrictFields:
      - 'ExternalURL'
      - 'LinkTo'
      - 'LinkToFile'

SilverStripe\Blog\Model\BlogPost:
  scaffold_cms_fields_settings:
    restrictRelations:
      - 'Categories'
      - 'Tags'
    restrictFields:
      - 'Summary'
      - 'FeaturedImage'
      - 'PublishDate'

SilverStripe\IFrame\IFramePage:
  scaffold_cms_fields_settings:
    restrictFields:
      - 'ForceProtocol'
      - 'IFrameURL'
      - 'IFrameTitle'
      - 'AutoHeight'
      - 'AutoWidth'
      - 'FixedHeight'
      - 'FixedWidth'
      - 'BottomContent'
      - 'AlternateContent'

SilverStripe\UserForms\Model\UserDefinedForm:
  scaffold_cms_fields_settings:
    restrictRelations:
      - 'EmailRecipients'

Changes to the templating/view layer

Note that the SilverStripe\View\ViewableData class has been renamed to SilverStripe\Model\ModelData. We will refer to it as ModelData in the rest of these change logs.

See many renamed classes for more information about this change.

Improved separation between the view and model layers

Historically the ModelData class did double-duty as being the base class for most models as well as being the presumed class wrapping data for the template layer. Part of this included methods like XML_val() being called on any object in the template layer, despite being methods very specifically implemented on ModelData.

Any data that wasn't wrapped in ModelData was hit-and-miss as to whether it would work in the template layer, and whether the way you can use it is consistent. It also meant the ModelData class had some complexity it didn't necessarily need to represent a model.

To improve the separation between the view and model layers (and in some cases as quality-of-life improvements), we've made the following changes:

  • Added a new ViewLayerData class which sits between the template layer and the model layer. All data that gets used in the template layer gets wrapped in a ViewLayerData instance first. This class provides a consistent API and value lookup logic so that all data gets treated the same way once it's in the template layer.
  • Move casting logic into a new CastingService class. This class is responsible for casting data to the correct model (e.g. by default strings get cast to DBText and booleans get cast to DBBoolean). If the source of the data is known and is an instance of ModelData, the casting service calls ModelData::castingHelper() to ensure the ModelData.casting configuration and (in the case of DataObject) the db schema are taken into account.

    • Native indexed PHP arrays can now be passed into templates and iterated over with <% loop $MyArray %>. Under the hood they are wrapped in ArrayList, so you can get the count using $Count and use <% if $MyArray %> as a shortcut for <% if $MyArray.Count %>. Other functionality from ArrayList such as filtering and sorting cannot be used on these arrays since they don't have keys to filter or sort against.
  • Implemented a default ModelData::forTemplate() method which will attempt to render the model using templates named after it and its superclasses. See forTemplate and $Me for information about this method's usage.

  • The ModelData::XML_val() method has been removed as it is no longer needed to get values for usage in templates.
  • Arguments are now passed into getter methods when invoked in templates. For example, if a model has a getMyField(..$args) method and $MyField(1,2,3) is used in a template, the args 1, 2, 3 will be passed in to the getMyField() method.

    • For parity, the ModelData::obj() method now also passes arguments into getter methods. Note however that this method is no longer used to get values in the template layer.
  • Values from template variables are passed into functions when used as arguments

    • For example, $doSomething($Title) will pass the value of the Title property into the doSomething() method. See template syntax documentation for more details.
  • The ModelData::objCacheSet() and ModelData::objCacheGet() methods now deal with raw values prior to being cast. This is so that ViewLayerData can use the cache reliably.
  • Nothing in core or supported modules (except for the template engine itself) relies on absolute file paths for templates - instead, template names and relative paths (without the .ss extension) are used.

    • Email::getHTMLTemplate() now returns an array of template candidates, unless a specific template was set using setHTMLTemplate().
    • ThemeResourceLoader::findTemplate() has been removed without a replacement.
    • SSViewer::chooseTemplate() has been removed without a replacement.
  • TemplateEngine classes will throw a MissingTemplateException if there is no file mapping to any of the template candidates passed to them.
  • The Email::setHTMLTemplate() and Email::setPlainTemplate() methods used to strip the .ss extension off strings passed into them. They no longer do this. You should double check any calls to those methods and remove the .ss extension from any strings you're passing in, unless those strings represent full absolute file paths.

If you were overriding ModelData::XML_val() or ModelData::obj() to influence values used in the template layer, you will need to try an alternative way to alter those values. Best practice is to implement getter methods in most cases - but as a last resort you could implement a subclass of ViewLayerData and replace it using the injector.

If you have set the ModelData.default_cast configuration property for some model, consider unsetting this so that the relevant DBField instance is chosen based on the type of the value, and use ModelData.casting if some specific fields need to be cast to non-default classes.

Abstraction of template rendering

The SSViewer class previously had two duties:

  1. Act as the barrier between the template layer and the model layer
  2. Actually process and render templates

This made that class difficult to maintain. More importantly, it made it difficult to use other template rendering solutions with Silverstripe CMS since the barrier between the two layers was tightly coupled to the ss template rendering solution.

The template rendering functionality has now been abstracted. SSViewer still acts as the barrier between the model and template layers, but it now delegates rendering templates to an injectable TemplateEngine.

TemplateEngine is an interface with all of the methods required for SSViewer and the rest of Silverstripe CMS to interact reliably with your template rendering solution of choice. For now, all of the templates provided in core and supported modules will use the familiar ss template syntax and the default template engine will be SSTemplateEngine. This template engine lives in the new silverstripe/template-engine module.

Along with making the default template engine easier to maintain, these changes also open the door for you to experiment with alternative template rendering solutions if you want to. There are various ways to declare which rendering engine to use, which are explained in detail in the swap template engines documentation.

Some API which used to be on SSViewer is now on SSTemplateEngine, and some has been outright removed. The common ones are listed here, but see full list of removed and changed API below for the full list.

Along with those API changes, the following classes and interfaces were moved into the new module:

Old classNew class
SilverStripe\View\SSViewer_BasicIteratorSupportSilverStripe\TemplateEngine\BasicIteratorSupport
SilverStripe\View\SSTemplateParseExceptionSilverStripe\TemplateEngine\Exception\SSTemplateParseException
SilverStripe\View\SSTemplateParserSilverStripe\TemplateEngine\SSTemplateParser
SilverStripe\View\SSViewer_ScopeSilverStripe\TemplateEngine\ScopeManager
SilverStripe\View\SSViewer_DataPresenterSilverStripe\TemplateEngine\ScopeManager
SilverStripe\View\TemplateIteratorProviderSilverStripe\TemplateEngine\TemplateIteratorProvider
SilverStripe\View\TemplateParserSilverStripe\TemplateEngine\TemplateParser

If you want to just keep using the ss template syntax you're familiar with, you shouldn't need to change anything (except as specified in other sections or if you were using API that has moved or been removed).

Strong typing for ModelData and DBField

Many of the properties and methods in ModelData, DBField, and their immediate subclasses have been given strong typehints. Previously, these only had typehints in the PHPDoc which meant that any arbitrary values could be assigned or returned.

Most of the strong types are either identical to the old PHPDoc types, or match what was already actually being assigned to, passed into, and returned from those APIs.

In some cases, where a string was expected but sometimes null was being used, we have explicitly strongly typed the API to string. This matches similar changes PHP made in PHP 8.1 and will help avoid passing null values in to functions that expect a string.

The one change we specifically want to call out is for ModelData::obj(). This method will now explicitly return null if there is no field, property, method, etc to represent the field you're trying to get an object for. This is a change from the old behaviour, where an empty DBField instance would be returned even though there's no way for any non-null value to be available for that field.

See the full list of removed and changed API to see all of the API with updated typing.

Changes to LeftAndMain and its subclasses

LeftAndMain has historically been the superclass for all controllers routed in /admin/* (i.e. all controllers used in the CMS). It's also the superclass for admin-routed controllers which manage modal forms. That class includes a lot of boilerplate functionality for setting up a menu, edit form, etc which a lot of controllers don't need.

A new AdminController has been created which provides the /admin/* routing functionality and permission checks that LeftAndMain used to be responsible for. If you have a controller which needs to be routed through /admin/* with the relevant CMS permission checks, but which does not need a menu item on the left or an edit form, you should update that class to be a subclass of AdminController instead.

The new FormSchemaController class (which is a subclass of AdminController) now owns the logic required for injecting and managing forms inside modals.

As a result of these changes, the following classes have had their class hierarchy updated:

ClassOld superclassNew superclass
LeftAndMainControllerFormSchemaController
SudoModeControllerLeftAndMainAdminController
ElementalAreaControllerCMSMainFormSchemaController
HistoryViewerControllerLeftAndMainFormSchemaController
UserDefinedFormAdminLeftAndMainFormSchemaController
AdminRegistrationControllerLeftAndMainAdminController
LinkFieldControllerLeftAndMainFormSchemaController
SubsiteXHRControllerLeftAndMainAdminController
CMSExternalLinksControllerControllerAdminController

The tree_class configuration property on LeftAndMain and its subclasses has be renamed to model_class. This is used in methods like getRecord() to get a record of the correct class.

Effects of this refactor in other classes

Some classes outside of the LeftAndMain class hierarchy have also been affected by the refactoring:

New SingleRecordAdmin class and changes to SiteConfig

A new SingleRecordAdmin class has been created which makes it easier to create an admin section for editing a single record.

This is the new super class for SiteConfigLeftAndMain and CMSProfileController. Some of the CSS selectors that had been added to the edit forms in those classes are no longer available - if you were using CSS selectors in those admin sections, you may need to change the way you're handling that.

As part of this change, we have removed the updateCurrentSiteConfig extension hook on SiteConfig and updated the canDelete() permissions on SiteConfig to explicitly return false by default, even for administrators.

The getCMSActions() method of SiteConfig also no longer returns the save action, as that is handled by the controller which instantiates the edit form. Other actions added through getCMSActions() (e.g. if you added them through an extension) will still be included.

Changes to password validation

PasswordValidator changes

The deprecated SilverStripe\Security\PasswordValidator class has been renamed to RulesPasswordValidator and is now optional.

The default password validator is now EntropyPasswordValidator which is powered by the PasswordStrength constraint in symfony/validator. This constraint determines if a password is strong enough based on its entropy, rather than on arbitrary rules about what characters it contains.

You can change the required strength of valid passwords by setting the EntropyPasswordValidator.password_strength configuration property to one of the valid minScore values:

SilverStripe\Security\Validation\EntropyPasswordValidator:
  password_strength: 4

EntropyPasswordValidator also has the same options for avoiding repeat uses of the same password that RulesPasswordValidator has.

This does not retroactively affect existing passwords, but will affect any new passwords (e.g. new members or changing the password of an existing member).

If you want to revert to the validator that was used in CMS 5, you can do so with this YAML configuration:

---
After: '#corepasswords'
---
SilverStripe\Core\Injector\Injector:
  SilverStripe\Security\Validation\PasswordValidator:
    class: 'SilverStripe\Security\Validation\RulesPasswordValidator'

See passwords for more information about password validation.

ConfirmedPasswordField changes

If ConfirmedPasswordField->requireStrongPassword is set to true, the old behaviour was to validate that at least one digit and one alphanumeric character was included. This meant that you could have a password like "a1" and it would be considered "strong".

This has been changed to use the PasswordStrength constraint in symfony/validator instead. Now a password is considered "strong" based on its level of entropy.

You can change the level of entropy required by passing one of the valid minScore values into ConfirmedPasswordField::setMinPasswordStrength().

Status flags in the CMS

In CMS 5 the CMS showed status flags for the SiteTree class inside the /admin/pages section, and occasionally for other models in grid fields - but this was inconsistent and was done in a variety of different ways depending on what was adding the flags and where they were displayed.

We've standardised this in the new ModelData::getStatusFlags() method to define the flags, and ModelData::getStatusFlagMarkup() to build the HTML markup for them. This means that status flags can be displayed for any model in the CMS.

This is already used to show what locale the data is in for models localised using tractorcow/silverstripe-fluent, and what versioned stage it's in for models using the Versioned extension.

Status flags are displayed in breadcrumbs at the top of edit forms in the CMS, in the site tree for CMSMain, for each row in a grid field, and in dnadesign/silverstripe-elemental and silverstripe/linkfield.

See status flags for more information.

Other new features

  • Modules no longer need to have a root level _config.php or _config directory to be recognised as a Silverstripe CMS module. They will now be recognised as a module if they have a composer.json file with a type of silverstripe-vendormodule or silverstripe-theme.
  • A new DataObject::getCMSEditLink() method has been added, which returns null by default. This provides more consistency for that method which has previously been inconsistently applied to various subclasses of DataObject. See managing records for more details about providing sane values for this method in your own subclasses.
  • The CMSEditLink() method on many DataObject subclasses has been renamed to getCMSEditLink().
  • The UrlField class has some new API for setting which protocols are allowed for valid URLs.
  • The EmailField class now uses symfony/validator to handle its validation logic, where previously this was validated with a custom regex.
  • ArrayData can now be serialised using json_encode().

Dependency changes

intervention/image has been upgraded from v2 to v3

We've upgraded from intervention/image v2 to v3. One of the main improvements included in this upgrade is full support for animated GIFs.

If you are directly interacting with APIs from intervention/image in your project or module you should check out their upgrade guide.

Animated vs still images

Manipulating animated images takes longer, and results in a larger filesize.

Because of this, the ThumbnailGenerator will provide still images as thumbnails for animated gifs by default. You can change that for a given instance of ThumbnailGenerator by passing true to the setAllowsAnimation() method. For example, to allow animated thumbnails for UploadField:

---
After: '#assetadminthumbnails'
---
SilverStripe\Core\Injector\Injector:
  SilverStripe\AssetAdmin\Model\ThumbnailGenerator.assetadmin:
    properties:
      AllowsAnimation: true

The Image::PreviewLink() method also doesn't allow an animated result by default. This is used in the "Files" admin section, and anywhere you can choose an existing image such as UploadField and the WYSIWYG file modals.

You can allow animated previews by setting Image.allow_animated_preview configuration property to true:

SilverStripe\Assets\Image:
  allow_animated_preview: true

You can disable the ability to create animated variants globally by setting decodeAnimation to false in the Intervention\Image\ImageManager's constructor:

SilverStripe\Core\Injector\Injector:
  Intervention\Image\ImageManager:
    constructor:
      decodeAnimation: false

You can also toggle that configuration setting on and off for a given image instance, or create a variant from your image which uses a specific frame of animation - see animated images for details.

Using GD or Imagick

One of the changes that comes as a result of this upgrade is a change in how you configure which manipulation driver (GD or Imagick) to use.

To facilitate upgrades and to ensure we are providing optimal defaults out of the box, if you have the imagick PHP extension installed, it will be used as the driver for intervention/image by default. If you don't, the assumption is that you have the GD PHP extension installed, and it will be used instead.

See changing the manipulation driver for the new configuration for swapping the driver used by intervention/image.

New API

The following new methods have been added to facilitate this upgrade:

Symfony dependencies have been upgraded from v6 to v7

We've upgraded the various Symfony dependencies from v6 to v7.

Bug fixes

This release includes a number of bug fixes to improve a broad range of areas. Check the change logs for full details of these fixes split by module. Thank you to the community members that helped contribute these fixes as part of the release!

API changes

Many renamed classes

There are a lot of classes which were in the SilverStripe\ORM namespace and a few in the SilverStripe\View namespace that simply don't belong there.

We've moved many of these into more suitable namespaces, and in a few cases have taken the opportunity to rename the class to something more appropriate. You will need to update any references to the old Fully Qualified Class Names to use the new names and namespaces instead.

Note that the change from ViewableData to ModelData specifically was made to improve the separation between the model layer and the view layer. It didn't make much sense for a class called ViewableData to be the superclass for all of our model types. The new name better reflects the purpose of this class as the base class for models.

Old FQCNNew FQCN
SilverStripe\ORM\ArrayLibSilverStripe\Core\ArrayLib
SilverStripe\ORM\ArrayListSilverStripe\Model\List\ArrayList
SilverStripe\ORM\FilterableSilverStripe\Model\List\Filterable
SilverStripe\ORM\GroupedListSilverStripe\Model\List\GroupedList
SilverStripe\ORM\LimitableSilverStripe\Model\List\Limitable
SilverStripe\ORM\ListDecoratorSilverStripe\Model\List\ListDecorator
SilverStripe\ORM\MapSilverStripe\Model\List\Map
SilverStripe\ORM\PaginatedListSilverStripe\Model\List\PaginatedList
SilverStripe\ORM\SortableSilverStripe\Model\List\Sortable
SilverStripe\ORM\SS_ListSilverStripe\Model\List\SS_List
SilverStripe\ORM\ValidationExceptionSilverStripe\Core\Validation\ValidationException
SilverStripe\ORM\ValidationResultSilverStripe\Core\Validation\ValidationResult
SilverStripe\View\ArrayDataSilverStripe\Model\ArrayData
SilverStripe\View\ViewableDataSilverStripe\Model\ModelData
SilverStripe\View\ViewableData_CustomisedSilverStripe\Model\ModelDataCustomised
SilverStripe\View\ViewableData_DebuggerSilverStripe\Model\ModelDataDebugger

The following classes have been changed when code was moved to the silverstripe/reports module from some of the modules that lost commercial support:

Old FQCNNew FQCN
SilverStripe\SecurityReport\Forms\GridFieldExportReportButtonSilverStripe\Reports\SecurityReport\Forms\GridFieldExportReportButton
SilverStripe\SecurityReport\Forms\GridFieldPrintReportButtonSilverStripe\Reports\SecurityReport\Forms\GridFieldPrintReportButton
SilverStripe\SecurityReport\MemberReportExtensionSilverStripe\Reports\SecurityReport\MemberReportExtension
SilverStripe\SecurityReport\UserSecurityReportSilverStripe\Reports\SecurityReport\UserSecurityReport
SilverStripe\SiteWideContentReport\Form\GridFieldBasicContentReportSilverStripe\Reports\SiteWideContentReport\Form\GridFieldBasicContentReport
SilverStripe\SiteWideContentReport\Model\SitewideContentTaxonomySilverStripe\Reports\SiteWideContentReport\Model\SitewideContentTaxonomy
SilverStripe\SiteWideContentReport\SitewideContentReportSilverStripe\Reports\SiteWideContentReport\SitewideContentReport
SilverStripe\ExternalLinks\Controllers\CMSExternalLinksControllerSilverStripe\Reports\ExternalLinks\Controllers\CMSExternalLinksController
SilverStripe\ExternalLinks\Jobs\CheckExternalLinksJobSilverStripe\Reports\ExternalLinks\Jobs\CheckExternalLinksJob
SilverStripe\ExternalLinks\Model\BrokenExternalLinkSilverStripe\Reports\ExternalLinks\Model\BrokenExternalLink
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackSilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrack
SilverStripe\ExternalLinks\Model\BrokenExternalPageTrackStatusSilverStripe\Reports\ExternalLinks\Model\BrokenExternalPageTrackStatus
SilverStripe\ExternalLinks\BrokenExternalLinksReportSilverStripe\Reports\ExternalLinks\Reports\BrokenExternalLinksReport
SilverStripe\ExternalLinks\Tasks\CheckExternalLinksTaskSilverStripe\Reports\ExternalLinks\Tasks\CheckExternalLinksTask
SilverStripe\ExternalLinks\Tasks\CurlLinkCheckerSilverStripe\Reports\ExternalLinks\Tasks\CurlLinkChecker
SilverStripe\ExternalLinks\Tasks\LinkCheckerSilverStripe\Reports\ExternalLinks\Tasks\LinkChecker

GraphQL removed from the CMS

If you need to use GraphQL in your project for public-facing frontend schemas, you can still install and use the silverstripe/graphql module.

GraphQL has been removed from the admin section of the CMS and is no longer installed when creating a new project using silverstripe/installer, or an existing project that uses silverstripe/recipe-cms. All existing functionality in the CMS that previously relied on GraphQL has been migrated to use regular Silverstripe CMS controllers instead.

Any customisations made to the admin GraphQL schema will no longer work. There are extension hooks available on the new controller endpoints for read operations, for example AssetAdminOpen::apiRead() that allow you to customise the JSON data returned.

PHP code such as resolvers that were in silverstripe/asset-admin, silverstripe/cms and silverstripe/versioned have been move to the silverstripe/graphql module and have had their namespace updated. The GraphQL yml config for the versioned module has also been copied over as that was previously enabled by default on all schemas. The GraphQL YAML configuration for the silverstripe/asset-admin and silverstripe/cms modules has not been moved as as that was only enabled on the admin schema.

If your project does not have any custom GraphQL, after upgrading you may still have the old .graphql-generated and public/_graphql folders in your project. You can safely remove these folders.

FormField classes now use FieldValidator for validation

Many of FormField subclasses in the SilverStripe\Forms namespace now use FieldValidator classes for validation, which are also used for DBField validation. This has meant that much of the old validate() logic on FormField subclasses has been removed as it was duplicated in the FieldValidator classes. Some custom in validate() methods not found in FieldValidator classes methods has been retained.

As part of this change, the FormField::validate() now returns a ValidationResult object where it used to return a boolean. The $validator parameter has also been removed. If you have implemented a custom validate() method in a FormField subclass, you will need to update it to return a ValidationResult object instead and remove the $validator parameter.

The extendValidationResult() method and the updateValidationResult extension hook on FormField have both been removed and replaced with an updateValidate hook instead, which has a single ValidationResult $result parameter. This matches the updateValidate extension hook on DataObject.

As part of this change method signature of FormField::validate() changed so that it no longer accepts a parameter, and not returns a ValidationResult object instead of a boolean.

Most extension hook methods are now protected

Core implementations of most extension hooks such as updateCMSFields() now have protected visibility. Formerly they had public visibility which meant they could be called directly which was not how they were intended to be used. Extension hook implementations are still able to be declared public in project code, though it is recommended that all extension hook methods are declared protected in project code to follow best practice.

Changes to some extension hook names

In order to better align the codebase in Silverstripe CMS with best practices, the following extension hook methods have changed name:

Class that defined the hookOld nameNew name
MemberafterMemberLoggedInonAfterMemberLoggedIn
MemberafterMemberLoggedOutonAfterMemberLoggedOut
MemberauthenticationFailedonAuthenticationFailed
MemberauthenticationFailedUnknownUseronAuthenticationFailedUnknownUser
MemberauthenticationSucceededonAuthenticationSucceeded
MemberbeforeMemberLoggedInonBeforeMemberLoggedIn
MemberbeforeMemberLoggedOutonBeforeMemberLoggedOut
LeftAndMaininitonInit
DataObjectflushCacheonFlushCache
LostPasswordHandlerforgotPasswordonForgotPassword
ErrorPagegetDefaultRecordsupdateDefaultRecords
SiteTreeMetaComponentsupdateMetaComponents
SiteTreeMetaTagsupdateMetaTags
DataObjectpopulateDefaultsonAfterPopulateDefaults
MemberregisterFailedLoginonRegisterFailedLogin
DataObjectrequireDefaultRecordsonRequireDefaultRecords
DataObjectvalidateupdateValidate

If you have implemented any of those methods in an Extension subclass, you will need to rename it for it to continue working.

Strict typing for Factory implementations

The Factory::create() method now has strict typehinting. The first argument must be a string, and either null or an object must be returned.

One consequence of this is that you can no longer directly pass an instantiated anonymous class object into Injector::load(). Instead, you need to get the class name using get_class() and pass that in as the class.

use App\ClassToReplace;
use SilverStripe\Core\Injector\Injector;

// Use `get_class()` to get the class name for your anonymous class
$replacementClass = get_class(new class () {
    private string $property;

    public function __construct(string $value = null)
    {
        $this->property = $value;
    }
});

Injector::inst()->load([
    ClassToReplace::class => [
        'class' => $replacementClass,
    ],
]);

Elemental TopPage class names changed

The class names for the TopPage feature in dnadesign/silverstripe-elemental did not follow the correct naming convention for Silverstripe CMS. The class names have been changed as follows:

Old nameNew name
DNADesign\Elemental\TopPage\DataExtensionDNADesign\Elemental\Extensions\TopPageElementExtension
DNADesign\Elemental\TopPage\FluentExtensionDNADesign\Elemental\Extensions\TopPageElementFluentExtension
DNADesign\Elemental\TopPage\SiteTreeExtensionDNADesign\Elemental\Extensions\TopPageSiteTreeExtension

If you reference any of these classes in your project or module, most likely in config if you have tractorcow/silverstripe-fluent installed, then you will need to update the references to the new class names.

List interface changes

The SS_List interface now includes the methods from the Filterable, Limitable, and Sortable interfaces, which have now been removed. This means that any class that implements SS_List must now also implement the methods from those interfaces.

Many of the methods on SS_List and the classes that implement it are now strongly typed. This means that you will need to ensure that any custom classes that implement SS_List have the correct types for the methods that they implement.

As part of these changes ArrayList::find() will no longer accept an int argument for the $key param, it will now only accept a string argument.

General changes

  • DataObject::write() has a new boolean $skipValidation parameter. This can be useful for scenarios where you want to automatically create a new record with no data initially without restricting how developers can set up their validation rules.
  • FieldList is now strongly typed. Methods that previously allowed any iterable variables to be passed, namely FieldList::addFieldsToTab() and FieldList::removeFieldsFromTab(), now require an array to be passed instead.
  • DNADesign\Elemental\Models\BaseElement::getDescription() and the corresponding DNADesign\Elemental\Models\BaseElement.description configuration property have been removed. If you were using either of these in your custom elemental blocks, either set the new class_description configuration property or override one of the i18n_classDescription() or getTypeNice() methods instead.
  • SilverStripe\ORM\DataExtension, SilverStripe\CMS\Model\SiteTreeExtension, and SilverStripe\Admin\LeftAndMainExtension have been removed. If you subclass any of these classes, you must now subclass Extension directly instead.
  • DBCurrency will no longer parse numeric values contained in a string when calling setValue(). For instance "this is 50.29 dollars" will no longer be converted to "$50.29", instead its value will remain as "this is 50.29 dollars" and it will throw a validation exception if attempted to be written to the database.

Other changes

PHP version support

Silverstripe CMS 6 requires either PHP 8.3 or PHP 8.4. PHP 8.1 and PHP 8.2 which were supported in Silverstripe CMS 5 are no longer supported.

MySQL 5 no longer supported

MySQL 5.6 and 5.7 are no longer supported. The minimum supported version is MySQL 8.0. We support and test against the latest LTS releases of MySQL and MariaDB.

MySQL now defaults to utf8mb4

MySQL will now use utf8mb4 by default rather than plain utf8. This provides better support for emojis and other special characters.

Depending on when you created your Silverstripe CMS project, you may already be using utf8mb4 as the default encoding. The silverstripe/recipe-core recipe has included a configuration file setting your database settings to utf8mb4 for a few years.

When upgrading your Silverstripe CMS project, review the app/_config/mysite.yml file and remove the following lines if they exist:

# UTF8MB4 has limited support in older MySQL versions.
# Remove this configuration if you experience issues.
---
Name: myproject-database
---
SilverStripe\ORM\Connect\MySQLDatabase:
  connection_charset: utf8mb4
  connection_collation: utf8mb4_unicode_ci
  charset: utf8mb4
  collation: utf8mb4_unicode_ci

DBDecimal default value

Previously if an invalid default value was provided for a DBDecimal database column, it would silently set the default value to 0. This will now throw an exception instead, so that you're aware your configured value is invalid and can correct it.

RedirectorPage validation

RedirectorPage now uses the Url constraint from symfony/validator to validate the ExternalURL field. It will no longer add http:// to the start of URLs for you if you're missing a protocol - instead, a validation error message will be displayed.

Update JS MIME type, remove type in <script> tags

We've updated the MIME type for JavaScript from "application/javascript" to "text/javascript". Additionally, the type attribute has been omitted from any <script> tags generated by Silverstripe CMS itself (e.g. in the Requirements API). The most up-to-date RFC says to use "text/javascript" in HTML5. Since modern browsers will default to that type when one isn't explicitly declared, it is generally encouraged to omit it instead of redundantly setting it.

  • Before: <script type="application/javascript" src="..."></script>
  • After: <script src="..."></script>

This change is generally backward-compatible and should not affect existing functionality. However, if your project explicitly relies on the type attribute for <script> tags, you may need to adjust accordingly.

getSchemaDataDefaults() now includes attributes

The FormField::getSchemaDataDefaults() method (and by extension the getSchemaData() method) now calls getAttributes(). This was done so that attributes such as placeholder can be used in the react components that render form fields.

In the past it was common to call getSchemaData() inside the getAttributes() method, so that a form field rendered in an entwine admin context had the data necessary to bootstrap a react component for that field. Doing that now would result in an infinite recursion loop.

If you were calling getSchemaData() in your getAttributes() method in a FormField subclass include $SchemaAttributesHtml in your template instead. For example:

-public function getAttributes()
-{
-    $attributes = parent::getAttributes();
-    $attributes['data-schema'] = json_encode($this->getSchemaData());
-    return $attributes;
-}
-<div $AttributesHTML></div>
+<div $AttributesHTML $SchemaAttributesHtml></div>

Full list of removed and changed API (by module, alphabetically)

Reveal full list of API changes

colymba/gridfield-bulk-editing-tools

dnadesign/silverstripe-elemental

dnadesign/silverstripe-elemental-userforms

  • Removed deprecated config DNADesign\ElementalUserForms\Model\ElementForm.description - use class_description instead.

silverstripe/admin

silverstripe/asset-admin

  • Removed deprecated class SilverStripe\AssetAdmin\Controller\AssetAdminFieldsExtension
  • Removed deprecated class SilverStripe\AssetAdmin\Extensions\CampaignAdminExtension
  • Removed deprecated class SilverStripe\AssetAdmin\GraphQL\FileFilter
  • Removed deprecated class SilverStripe\AssetAdmin\GraphQL\Notice
  • Removed deprecated class SilverStripe\AssetAdmin\GraphQL\Resolvers\AssetAdminResolver
  • Removed deprecated class SilverStripe\AssetAdmin\GraphQL\Resolvers\FieldResolver
  • Removed deprecated class SilverStripe\AssetAdmin\GraphQL\Resolvers\FileTypeResolver
  • Removed deprecated class SilverStripe\AssetAdmin\GraphQL\Resolvers\FolderTypeResolver
  • Removed deprecated class SilverStripe\AssetAdmin\GraphQL\Resolvers\PublicationResolver
  • Removed deprecated class SilverStripe\AssetAdmin\GraphQL\Schema\Builder
  • Removed deprecated method SilverStripe\AssetAdmin\Controller\AssetAdmin::addtocampaign() - removed without equivalent functionality to replace it
  • Removed deprecated method SilverStripe\AssetAdmin\Controller\AssetAdmin::addToCampaignForm() - removed without equivalent functionality to replace it
  • Removed deprecated method SilverStripe\AssetAdmin\Controller\AssetAdmin::getAddToCampaignForm() - removed without equivalent functionality to replace it
  • Removed deprecated method SilverStripe\AssetAdmin\Controller\AssetAdmin::getThumbnailGenerator()
  • Removed deprecated method SilverStripe\AssetAdmin\Controller\AssetAdmin::setThumbnailGenerator()
  • Removed deprecated method SilverStripe\AssetAdmin\Extensions\RemoteFileModalExtension::getFormSchema() - removed without equivalent functionality to replace it.
  • Removed deprecated method SilverStripe\AssetAdmin\Extensions\RemoteFileModalExtension::getRequest() - use $this->getOwner()->getRequest() instead.
  • Removed deprecated method SilverStripe\AssetAdmin\Extensions\RemoteFileModalExtension::getSchemaResponse() - replaced with $this->getOwner()->getSchemaResponse() instead.
  • Removed deprecated config SilverStripe\AssetAdmin\Controller\AssetAdmin.tree_class - renamed to model_class
  • Changed return type for SilverStripe\AssetAdmin\Controller\AssetAdmin::apiCreateFile() from dynamic to SilverStripe\Control\HTTPResponse
  • Changed return type for SilverStripe\AssetAdmin\Controller\AssetAdmin::apiHistory() from dynamic to SilverStripe\Control\HTTPResponse
  • Changed return type for SilverStripe\AssetAdmin\Controller\AssetAdmin::apiUploadFile() from dynamic to SilverStripe\Control\HTTPResponse
  • Changed return type for SilverStripe\AssetAdmin\Controller\AssetAdmin::getClientConfig() from dynamic to array

silverstripe/assets

silverstripe/behat-extension

silverstripe/blog

  • Removed deprecated class SilverStripe\Blog\Model\BlogPostFeaturedExtension
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogArchiveWidget
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogArchiveWidgetController
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogCategoriesWidget
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogCategoriesWidgetController
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogFeaturedPostsWidget
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogRecentPostsWidget
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogRecentPostsWidgetController
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogTagsCloudWidget
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogTagsCloudWidgetController
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogTagsWidget
  • Removed deprecated class SilverStripe\Blog\Widgets\BlogTagsWidgetController
  • Removed deprecated config SilverStripe\Blog\Model\Blog.description - use class_description instead.

silverstripe/cms

  • Removed deprecated class SilverStripe\CMS\BatchActions\CMSBatchAction_Restore
  • Removed deprecated class SilverStripe\CMS\Forms\InternalLinkModalExtension
  • Removed deprecated class SilverStripe\CMS\GraphQL\LinkablePlugin
  • Removed deprecated class SilverStripe\CMS\GraphQL\Resolver
  • Removed deprecated class SilverStripe\CMS\Model\SiteTreeExtension
  • Removed deprecated method SilverStripe\CMS\Controllers\CMSPageEditController::addtocampaign() - removed without equivalent functionality to replace it
  • Removed deprecated method SilverStripe\CMS\Controllers\CMSPageEditController::AddToCampaignForm() - removed without equivalent functionality to replace it
  • Removed deprecated method SilverStripe\CMS\Controllers\CMSPageEditController::getAddToCampaignForm() - removed without equivalent functionality to replace it
  • Removed deprecated method SilverStripe\CMS\Controllers\ContentController::deleteinstallfiles() - removed without equivalent functionality
  • Removed deprecated method SilverStripe\CMS\Controllers\ContentController::Menu() - use getMenu() instead. You can continue to use $Menu in templates.
  • Removed deprecated method SilverStripe\CMS\Controllers\ContentController::successfullyinstalled() - removed without equivalent functionality
  • Removed deprecated method SilverStripe\CMS\Controllers\LeftAndMainPageIconsExtension::init()
  • Removed deprecated method SilverStripe\CMS\Model\RedirectorPage::onBeforeWrite()
  • Removed deprecated method SilverStripe\CMS\Model\SiteTree::allowedChildren()
  • Removed deprecated method SilverStripe\CMS\Model\SiteTree::canAddChildren()
  • Removed deprecated method SilverStripe\CMS\Model\SiteTree::defaultChild()
  • Removed deprecated method SilverStripe\CMS\Model\SiteTree::defaultParent()
  • Removed deprecated method SilverStripe\CMS\Model\SiteTree::duplicateWithChildren()
  • Removed deprecated config SilverStripe\CMS\Controllers\CMSMain.tree_class - renamed to model_class
  • Removed deprecated config SilverStripe\CMS\Model\RedirectorPage.description - use class_description instead.
  • Removed deprecated config SilverStripe\CMS\Model\SiteTree.allowed_children
  • Removed deprecated config SilverStripe\CMS\Model\SiteTree.base_description - use base_class_description instead.
  • Removed deprecated config SilverStripe\CMS\Model\SiteTree.default_parent
  • Removed deprecated config SilverStripe\CMS\Model\SiteTree.description - use class_description instead.
  • Removed deprecated config SilverStripe\CMS\Model\VirtualPage.description - use class_description instead.
  • Removed deprecated property SilverStripe\CMS\Model\SiteTree::$_allowedChildren - moved to SilverStripe\ORM\Hierarchy\Hierarchy->cache_allowedChildren
  • Removed deprecated property SilverStripe\CMS\Model\SiteTree::$_cache_statusFlags
  • Changed return type for SilverStripe\CMS\Model\VirtualPage::__get() from dynamic to mixed
  • Changed return type for SilverStripe\CMS\Model\VirtualPage::castingHelper() from dynamic to string|null
  • Changed return type for SilverStripe\CMS\Model\VirtualPage::getField() from dynamic to mixed
  • Changed return type for SilverStripe\CMS\Model\VirtualPage::getViewerTemplates() from dynamic to array
  • Changed return type for SilverStripe\CMS\Model\VirtualPage::hasField() from dynamic to bool
  • Changed parameter type in SilverStripe\CMS\Model\VirtualPage::__get() for $field from dynamic to string
  • Changed parameter type in SilverStripe\CMS\Model\VirtualPage::castingHelper() for $field from dynamic to string
  • Changed parameter type in SilverStripe\CMS\Model\VirtualPage::getField() for $field from dynamic to string
  • Changed parameter type in SilverStripe\CMS\Model\VirtualPage::getViewerTemplates() for $suffix from dynamic to string
  • Changed parameter type in SilverStripe\CMS\Model\VirtualPage::hasField() for $fieldName from dynamic to string
  • Changed parameter name in SilverStripe\CMS\Model\VirtualPage::hasField() from $field to $fieldName

silverstripe/errorpage

  • Removed deprecated config SilverStripe\ErrorPage\ErrorPage.description - use class_description instead.

silverstripe/framework

silverstripe/graphql

silverstripe/linkfield

silverstripe/mfa

silverstripe/realme

silverstripe/recipe-plugin

  • Removed deprecated method SilverStripe\RecipePlugin\RecipeInstaller::rewriteFilePath() - removed without equivalent functionality to replace it

silverstripe/reports

  • Removed deprecated config SilverStripe\Reports\ReportAdmin.tree_class - renamed to model_class

silverstripe/session-manager

  • Removed deprecated config SilverStripe\SessionManager\Tasks\InvalidateAllSessionsTask.segment
  • Removed deprecated config SilverStripe\Tasks\GarbageCollectionTask.segment

silverstripe/sharedraftcontent

  • Removed deprecated class SilverStripe\ShareDraftContent\Extensions\ShareDraftContentRequirementsExtension
  • Removed deprecated config SilverStripe\ShareDraftContent\Tasks\RemoveExpiredShareTokens.segment

silverstripe/siteconfig

silverstripe/staticpublishqueue

  • Removed deprecated method SilverStripe\StaticPublishQueue\Task\StaticCacheFullBuildTask::log() - replaced with new $output parameter in the run() method

silverstripe/subsites

  • Removed deprecated method SilverStripe\Subsites\Controller\SubsiteXHRController::canAccess() - removed without equivalent functionality to replace it.
  • Removed deprecated method SilverStripe\Subsites\Extensions\GroupSubsites::requireDefaultRecords()
  • Removed deprecated method SilverStripe\Subsites\Extensions\LeftAndMainSubsites::init()
  • Removed deprecated method SilverStripe\Subsites\Extensions\LeftAndMainSubsites::ListSubsites() - removed without equivalent functionality to replace it.
  • Removed deprecated method SilverStripe\Subsites\Extensions\SiteTreeSubsites::MetaTags()
  • Removed deprecated method SilverStripe\Subsites\Pages\SubsitesVirtualPage::fieldLabels()
  • Removed deprecated method SilverStripe\Subsites\Tasks\SubsiteCopyPagesTask::log() - replaced with new $output parameter in the run() method
  • Removed deprecated config SilverStripe\Subsites\Admin\SubsiteAdmin.tree_class
  • Removed deprecated config SilverStripe\Subsites\Controller\SubsiteXHRController.ignore_menuitem
  • Removed deprecated config SilverStripe\Subsites\Pages\SubsitesVirtualPage.description - use class_description instead.
  • Removed deprecated config SilverStripe\Subsites\Tasks\SubsiteCopyPagesTask.segment
  • Changed return type for SilverStripe\Subsites\Controller\SubsiteXHRController::SubsiteList() from dynamic to SilverStripe\ORM\FieldType\DBHTMLText
  • Changed return type for SilverStripe\Subsites\Extensions\LeftAndMainSubsites::SubsiteSwitchList() from SilverStripe\ORM\SS_List to SilverStripe\Model\List\SS_List
  • Changed return type for SilverStripe\Subsites\Service\ThemeResolver::getThemeList() from dynamic to array

silverstripe/userforms

  • Removed deprecated method SilverStripe\UserForms\Extension\UpgradePolymorphicExtension::requireDefaultRecords()
  • Removed deprecated config SilverStripe\UserForms\Model\UserDefinedForm.description - use class_description instead.

silverstripe/vendor-plugin

  • Removed deprecated class SilverStripe\VendorPlugin\VendorModule
  • Removed deprecated method SilverStripe\VendorPlugin\Console\VendorExposeCommand::getAllModules() - use getAllLibraries() instead
  • Removed deprecated method SilverStripe\VendorPlugin\Library::installedIntoVendor() - removed without equivalent functionality to replace it
  • Removed deprecated method SilverStripe\VendorPlugin\Library::publicPathExists() - removed without equivalent functionality to replace it
  • Removed deprecated method SilverStripe\VendorPlugin\VendorPlugin::getVendorModule() - use getLibrary() instead
  • Removed deprecated constant SilverStripe\VendorPlugin\Library::RESOURCES_PATH - ..2.0.0 Use Library::getResourcesDir() instead
  • Removed deprecated constant SilverStripe\VendorPlugin\VendorPlugin::MODULE_FILTER - ..2.0 No longer used
  • Removed deprecated constant SilverStripe\VendorPlugin\VendorPlugin::MODULE_TYPE - ..2.0 No longer used

silverstripe/versioned

  • Removed deprecated class SilverStripe\GraphQL\Resolvers\VersionFilters
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Operations\AbstractPublishOperationCreator
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Operations\CopyToStageCreator
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Operations\PublishCreator
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Operations\RollbackCreator
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Operations\UnpublishCreator
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Plugins\UnpublishOnDelete
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Plugins\VersionedDataObject
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Plugins\VersionedRead
  • Removed deprecated class SilverStripe\Versioned\GraphQL\Resolvers\VersionedResolver
  • Removed deprecated class SilverStripe\Versioned\VersionedGridFieldState\VersionedGridFieldState
  • Removed deprecated class SilverStripe\Versioned\VersionedGridFieldStateExtension
  • Removed deprecated method SilverStripe\Versioned\Versioned::canArchive() - use canDelete() instead.
  • Removed deprecated method SilverStripe\Versioned\Versioned::extendCanArchive() - removed without equivalent functionality.
  • Removed deprecated method SilverStripe\Versioned\Versioned::flushCache()
  • Removed deprecated method SilverStripe\Versioned\VersionedGridFieldItemRequest::getRecordStatus()

silverstripe/versioned-admin

symbiote/silverstripe-advancedworkflow

symbiote/silverstripe-gridfieldextensions

symbiote/silverstripe-queuedjobs

  • Removed deprecated class Symbiote\QueuedJobs\Tasks\ProcessJobQueueChildTask
  • Removed deprecated method Symbiote\QueuedJobs\Tasks\ProcessJobQueueTask::getQueue() - use Symbiote\QueuedJobs\Services\AbstractQueuedJob::getQueue() instead
  • Removed deprecated config Symbiote\QueuedJobs\Tasks\CheckJobHealthTask.segment
  • Removed deprecated config Symbiote\QueuedJobs\Tasks\CreateQueuedJobTask.segment
  • Removed deprecated config Symbiote\QueuedJobs\Tasks\ProcessJobQueueTask.segment
  • Removed deprecated config Symbiote\QueuedJobs\Tasks\PublishItemsTask.segment

tractorcow/silverstripe-fluent

  • Removed deprecated class TractorCow\Fluent\Task\ConvertTranslatableTask
  • Removed deprecated class TractorCow\Fluent\Task\ConvertTranslatableTask\Exception
  • Removed deprecated method TractorCow\Fluent\Extension\FluentGridFieldExtension::updateBadge()
  • Removed deprecated method TractorCow\Fluent\Extension\FluentIsolatedExtension::requireDefaultRecords()
  • Removed deprecated method TractorCow\Fluent\Extension\FluentLeftAndMainExtension::init()
  • Removed deprecated method TractorCow\Fluent\Extension\FluentLeftAndMainExtension::updateBreadcrumbs()
  • Removed deprecated method TractorCow\Fluent\Extension\FluentSiteTreeExtension::MetaTags()
  • Removed deprecated method TractorCow\Fluent\Extension\FluentVersionedExtension::flushCache()
  • Removed deprecated config TractorCow\Fluent\Task\InitialDataObjectLocalisationTask.segment
  • Removed deprecated config TractorCow\Fluent\Task\InitialPageLocalisationTask.segment
  • Changed return type for TractorCow\Fluent\Model\Delete\DeletePolicyFactory::create() from dynamic to TractorCow\Fluent\Model\Delete\DeletePolicy
  • Changed return type for TractorCow\Fluent\Model\LocalDateTime::setLocalValue() from dynamic to static
  • Changed parameter type in TractorCow\Fluent\Model\Delete\DeletePolicyFactory::create() for $service from dynamic to string
  • Changed parameter type in TractorCow\Fluent\Model\LocalDateTime::setLocalValue() for $value from dynamic to string
  • Changed parameter type in TractorCow\Fluent\Model\LocalDateTime::setLocalValue() for $timezone from dynamic to string|null

Full commits list

Reveal full list of commits

Features and enhancements

  • silverstripe/recipe-core (5.3.0 -> 6.0.0-alpha1)

    • 2024-10-19 b78c854 Remove old logic to default UTF8 DB setting to 4 bytes (Maxime Rainville)
  • silverstripe/assets (2.3.0 -> 3.0.0-alpha1)

    • 2024-10-30 5abc14d Improve typing to support refactored template layer (#647) (Guy Sartorelli)
    • 2024-07-02 94c3089 Use appropriate formfields when auto-scaffolding files (#618) (Guy Sartorelli)
  • silverstripe/config (2.1.1 -> 3.0.0-alpha1)

    • 2024-10-20 be1e82a Do not emit deprecation notices for supported modules by default (Steve Boyd)
  • silverstripe/framework (5.3.0 -> 6.0.0-alpha1)

    • 2024-12-01 bd0b0677e Remove use of deprecated E_STRICT (Steve Boyd)
    • 2024-11-28 1f5f34c26 Use FieldValidators for FormField validation (Steve Boyd)
    • 2024-11-19 1e9eaa109 Update code to reflect changes in silverstripe/admin (#11463) (Guy Sartorelli)
    • 2024-11-13 e289ea7c3 Remove code that doesn't belong here (#11430) (Guy Sartorelli)
    • 2024-11-11 5b16f7de8 Provide new class description config and methods. (Guy Sartorelli)
    • 2024-11-06 ec453900c Validate DBFields (Steve Boyd)
    • 2024-10-22 b1b469a87 Do not rely on flush variable (Steve Boyd)
    • 2024-10-20 7401bcf02 Do not output core code deprecation messages by default (Steve Boyd)
    • 2024-10-19 acbde0c24 Default DB settings to use 4 bytes to store UTF8 characters (Maxime Rainville)
    • 2024-10-11 ebbd6427b Allow overriding GridFieldFilterHeader placeholder (#11418) (Guy Sartorelli)
    • 2024-10-08 f5ef85008 Allow database read-only replicas (Steve Boyd)
    • 2024-10-02 7f11bf358 Use symfony/validation logic (#11399) (Guy Sartorelli)
    • 2024-09-26 e46135be0 Refactor CLI interaction with Silverstripe app (#11353) (Guy Sartorelli)
    • 2024-09-10 a0ad75397 Create DBClassNameVarchar (Steve Boyd)
    • 2024-08-25 e3508d41d Provide a standardised CMSEditLink method (#11338) (Guy Sartorelli)
    • 2024-08-15 64a17e09d Various changes to support SiteTree form field scaffolding (#11327) (Guy Sartorelli)
    • 2024-07-01 98dc238d2 Do not require _config dir or _config.php for modules (Steve Boyd)
    • 2024-06-26 a684c8ca0 Auto-scaffold Member and Group with appropriate form fields (#11285) (Guy Sartorelli)
    • 2024-05-24 3f30da515 Looping through arrays in templates (#11244) (Guy Sartorelli)
    • 2024-04-18 dcc686340 Allow skipping validation on write (#11202) (Guy Sartorelli)
    • 2024-03-04 f4cbe9205 Make CanonicalURLMiddleware run in all environments by default (#11154) (Will Rossiter)
  • silverstripe/template-engine (silverstripe/framework -> 1.0.0-alpha1)

    • 2024-11-05 50ff229 Resolve PHP linting issues (Guy Sartorelli)
  • silverstripe/admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-26 dbb04879 Allow status flags to be used generically (#1856) (Guy Sartorelli)
    • 2024-11-19 d9c8726e Move form schema logic into FormSchemaController (#1850) (Guy Sartorelli)
    • 2024-11-06 f7ff2722 SingleRecordAdmin class for editing one record at a time (#1842) (Guy Sartorelli)
    • 2024-11-01 32730a82 Adding ignore_menuitem into LeftAndMain (Chris Lock)
    • 2024-10-30 0ebaaf33 Update code to reflect changes in template layer (#1833) (Guy Sartorelli)
    • 2024-10-14 93f9ce20 AdminController as superclass for /admin/* routed controllers (Guy Sartorelli)
    • 2024-10-14 d2dd58c6 Use config instead of runtime code to remove menu item (Guy Sartorelli)
    • 2024-09-24 cb79248b Allow database read-only replicas (Steve Boyd)
    • 2024-09-19 6f83afee Don't use deprecated method (#1826) (Guy Sartorelli)
  • silverstripe/asset-admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-19 43758ab9 Update code to reflect changes in silverstripe/admin (#1509) (Guy Sartorelli)
    • 2024-10-30 445a97f4 Update code to reflect changes in template layer (#1499) (Guy Sartorelli)
    • 2024-09-19 701ae8b8 Don't use deprecated method (#1497) (Guy Sartorelli)
    • 2024-07-23 29bcbaff Remove animation for thumbnails by default. (#1475) (Guy Sartorelli)
  • silverstripe/versioned-admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-26 aac7023 Include versioned status flag styling (#372) (Guy Sartorelli)
    • 2024-10-14 21b5487 Use config instead of runtime code to remove menu item (Guy Sartorelli)
  • silverstripe/cms (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-19 33e15563 Update code to reflect changes in silverstripe/admin (#3024) (Guy Sartorelli)
    • 2024-10-30 1034dc5e Improve type safety to support refactored template layer (#3010) (Guy Sartorelli)
    • 2024-10-14 2fa2aa35 Use config instead of runtime code to remove menu items (Guy Sartorelli)
    • 2024-10-02 bd48b047 Use symfony/validation logic (#3009) (Guy Sartorelli)
    • 2024-09-26 6194844f Use standardised BackURL instead of non-standard returnURL (#2999) (Guy Sartorelli)
    • 2024-09-19 4b3e1f09 Don't use deprecated method (#3006) (Guy Sartorelli)
    • 2024-08-15 e58c388c Use autoscaffolding for SiteTree CMS fields (#2983) (Guy Sartorelli)
    • 2024-06-26 4e974fe1 Auto-scaffold SiteTree relations with tree fields (#2970) (Guy Sartorelli)
  • silverstripe/reports (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-27 e6c26788 Move code from silverstripe/externallinks (Steve Boyd)
    • 2024-11-20 cfc9f7af Move code from silverstripe/sitewidecontent-report (Steve Boyd)
    • 2024-11-20 a3a06d89 Move code from silverstripe/securityreport (Steve Boyd)
    • 2024-10-11 97c03dbb Reports list filtering and pagination. (Mojmir Fendek)
  • silverstripe/versioned (2.3.0 -> 3.0.0-alpha1)

    • 2024-09-19 9e26864 Don't use deprecated method (#476) (Guy Sartorelli)
  • silverstripe/session-manager (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-24 30fdc58 Use new $SchemaAttributesHtml template property (#225) (Guy Sartorelli)
    • 2024-09-26 4e31557 Only query primary DB (Steve Boyd)
  • silverstripe/hybridsessions (3.0.5 -> 4.0.0-alpha1)

    • 2024-09-26 171cd07 Only query primary DB (Steve Boyd)
  • silverstripe/mfa (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-24 f4132c0 Use new $SchemaAttributesHtml template property (#575) (Guy Sartorelli)
    • 2024-10-30 a65bd0c Update code to reflect changes in template layer (#570) (Guy Sartorelli)
  • silverstripe/realme (5.4.0 -> 6.0.0-alpha1)

    • 2024-10-02 df87533 Use symfony/validation logic (#167) (Guy Sartorelli)
    • 2024-09-18 58da5ee Don't use deprecated method (#164) (Guy Sartorelli)
  • silverstripe/sharedraftcontent (3.3.0 -> 4.0.0-alpha1)

    • 2024-09-19 cb7494d Don't use deprecated method (#262) (Guy Sartorelli)
  • silverstripe/staticpublishqueue (6.2.2 -> 7.0.0-alpha1)

    • 2024-10-30 7d18c0f Update code to reflect changes in template layer (#208) (Guy Sartorelli)
    • 2024-10-21 8fe9f6c Avoid using deprecated API (#207) (Guy Sartorelli)
    • 2024-09-18 b8c7347 Don't use deprecated method (#205) (Guy Sartorelli)
  • silverstripe/tagfield (3.3.0 -> 4.0.0-alpha1)

    • 2024-10-01 efc9f45 Refactor the way selected options are returned for read only tag fields. (adunn49)
  • silverstripe/taxonomy (3.2.2 -> 4.0.0-alpha1)

    • 2024-06-26 f2e5646 Scaffold TaxonomyTerm with searchable dropdown (#119) (Guy Sartorelli)
  • silverstripe/userforms (6.3.0 -> 7.0.0-alpha1)

    • 2024-11-21 2b9c6cc Use FieldValidator for FormFields (Steve Boyd)
    • 2024-10-30 ea084d0 Update code to reflect changes in template layer (#1334) (Guy Sartorelli)
    • 2024-10-20 574ca14 Use config instead of runtime code to remove menu item (#1337) (Guy Sartorelli)
    • 2024-09-19 2d6423e Injectable GridField config components. (Mojmir Fendek)
    • 2024-09-19 fa8f798 Don't use deprecated method (#1329) (Guy Sartorelli)
  • dnadesign/silverstripe-elemental (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-24 26f8dde Use new $SchemaAttributesHtml template property (#1277) (Guy Sartorelli)
    • 2024-09-19 2ae99d0 Don't use deprecated method (#1255) (Guy Sartorelli)
    • 2024-06-11 dec9f45 Free up the getDescription method to prevent it overriding db fields (#1203) (Guy Sartorelli)
    • 2024-04-19 5d343dc Skip validation when creating a new elemental block (#1172) (Guy Sartorelli)
  • symbiote/silverstripe-advancedworkflow (6.3.0 -> 7.0.0-alpha1)

    • 2024-11-26 0c3bfef Update status flag styling (#562) (Guy Sartorelli)
    • 2024-10-30 13d1eaa Update code to reflect changes in template layer (#556) (Guy Sartorelli)
    • 2024-10-21 47af9f5 Avoid using deprecated API (#555) (Guy Sartorelli)
    • 2024-08-25 1ef6b77 Remove unnecessary condition (#546) (Guy Sartorelli)
  • symbiote/silverstripe-queuedjobs (5.2.0 -> 6.0.0-alpha1)

    • 2024-09-19 710c9be Don't use deprecated method (#449) (Guy Sartorelli)
  • tractorcow/silverstripe-fluent (7.2.0 -> 8.0.0-alpha1)

    • 2024-11-20 0113c90 Update status flags generally, not just for SiteTree (Guy Sartorelli)
    • 2024-09-18 82dad3a Use correct name for new suppression method (Guy Sartorelli)
    • 2024-09-17 ccf5d52 Don't use deprecated method (Guy Sartorelli)
  • silverstripe/linkfield (4.1.0 -> 5.0.0-alpha1)

    • 2024-11-26 8f867be Use getStatusFlags() instead of hardcoded statuses (#351) (Guy Sartorelli)
    • 2024-10-20 a17c038 Use config instead of runtime code to remove menu item (#342) (Guy Sartorelli)
    • 2024-10-02 0f83e15 Use symfony/validation logic (#338) (Guy Sartorelli)
    • 2024-09-18 50a502c Don't use deprecated method (#337) (Guy Sartorelli)
    • 2024-06-26 23a38d2 Use better auto-scaffolded form fields (#301) (Guy Sartorelli)
  • silverstripe/graphql (5.2.3 -> 6.0.0-alpha1)

    • 2024-10-02 d90143c Use symfony/validation logic (#609) (Guy Sartorelli)
    • 2024-09-19 4e9b3e3 Don't use deprecated method (#607) (Guy Sartorelli)
  • silverstripe/subsites (3.3.0 -> 4.0.0-alpha1)

    • 2024-09-19 9be525a Don't use deprecated method (#601) (Guy Sartorelli)
    • 2024-06-26 d1acb20 Take advantage of auto-scaffolded form fields (#581) (Guy Sartorelli)
  • silverstripe/blog (4.3.0 -> 5.0.0-alpha1)

    • 2024-09-19 0da034c Don't use deprecated method (#786) (Guy Sartorelli)
    • 2024-06-26 c736dce Auto-scaffold blog categories and tags formfields (#769) (Guy Sartorelli)
  • silverstripe/crontask (3.0.4 -> 4.0.0-alpha1)

    • 2024-09-19 e0f31df Don't use deprecated method (#95) (Guy Sartorelli)

Bugfixes

  • silverstripe/assets (2.3.0 -> 3.0.0-alpha1)

    • 2024-10-21 7973a2d Use renamed validate method (Steve Boyd)
    • 2024-09-12 0875c77 Return string if no URL (#642) (Guy Sartorelli)
    • 2024-07-12 e5b927b Respect strict-typing of Factory interface (#620) (Guy Sartorelli)
  • silverstripe/framework (5.3.0 -> 6.0.0-alpha1)

    • 2024-12-03 2fcf68ab6 Don't use call_user_func in __call() (#11489) (Guy Sartorelli)
    • 2024-12-03 62dfe195a Handle PHP 8.4 closure string (Steve Boyd)
    • 2024-12-03 896deb443 Allow __call() to trigger __call() in other classes (#11487) (Guy Sartorelli)
    • 2024-11-28 89e8b363c Don't swallow relevant BadMethodCallExceptions from ViewLayerData (#11482) (Guy Sartorelli)
    • 2024-11-26 cdda1b851 Do not mark changed when setting value in constructor (Steve Boyd)
    • 2024-11-24 b86a48f5c Ensure schema data includes attributes (#11469) (Guy Sartorelli)
    • 2024-11-15 0abd28244 Make IsFirst and IsLast work as expected for PaginatedList (fixes #11465) (Loz Calver)
    • 2024-11-05 9116d8a9c Anonymous function use statements in text collector (Steve Boyd)
    • 2024-10-02 33929e299 Get array values, not keys (#11414) (Guy Sartorelli)
    • 2024-10-01 aa2b8c380 Fix NavigateCommandTest and don't try to write null (#11412) (Guy Sartorelli)
    • 2024-09-19 e93dafb2f Use correct contructor for HTTPOutputHandler (Steve Boyd)
    • 2024-09-12 0f8e21a42 Import Deprecation class (Steve Boyd)
    • 2024-09-12 4045443ae Use correct constructors arguments (Steve Boyd)
    • 2024-07-14 d540877ee Use valid values for APCu version (#11304) (Guy Sartorelli)
    • 2024-07-04 232173753 Ensure cache is shared between CLI and webserver (Guy Sartorelli)
    • 2024-06-11 b53cda8de Respect explicit casting before casting arrays (#11271) (Guy Sartorelli)
    • 2024-05-16 8b4865ed2 Return null error solved for DBQueryBuilder::shouldBuildTraceComment (Finlay Metcalfe)
  • silverstripe/template-engine (silverstripe/framework -> 1.0.0-alpha1)

    • 2024-11-18 4276205 Ensure source_file_comments works without throwing errors (#5) (Guy Sartorelli)
  • silverstripe/admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-24 64c9c5a7 Avoid infinite recursive loop with attributes in schemadata (#1853) (Guy Sartorelli)
    • 2024-11-05 0ab39b47 disable options not working issue on TreeDropdownField (Priya)
  • silverstripe/asset-admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-24 d4789446 Avoid infinite recursive loop with attributes in schemadata (#1510) (Guy Sartorelli)
    • 2024-08-15 7eb915d1 Use canDelete, not the now-deleted canArchive (#1482) (Guy Sartorelli)
  • silverstripe/versioned-admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-24 33337f0 Avoid infinite recursive loop with attributes in schemadata (#370) (Guy Sartorelli)
  • silverstripe/cms (5.3.0 -> 6.0.0-alpha1)

    • 2024-12-03 9b97b5f9 Don't use call_user_func_array in __call() (#3034) (Guy Sartorelli)
    • 2024-10-22 e1be07d6 Import Deprecation class (Steve Boyd)
    • 2024-09-15 d8748ff5 return right order for getClassDropdown method (Nicolaas @ Tappy @ Sunny Side Up)
    • 2024-08-15 7cb813d4 Use canDelete, not the now-deleted canArchive (#2984) (Guy Sartorelli)
    • 2024-05-09 ef27e995 Remove deprecated restore batch action (Steve Boyd)
  • silverstripe/errorpage (2.3.0 -> 3.0.0-alpha1)

    • 2024-08-15 df30be9 Update CMS fields now that they're being scaffolded (#117) (Guy Sartorelli)
  • silverstripe/versioned (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-19 ed42fa1 Ensure no admin routed links are affected by versioning (#481) (Guy Sartorelli)
    • 2024-08-29 789ddac Respect new typehints (#469) (Guy Sartorelli)
    • 2024-07-12 3d231a7 Respect strict-typing of Factory interface (#455) (Guy Sartorelli)
  • silverstripe/sharedraftcontent (3.3.0 -> 4.0.0-alpha1)

    • 2024-08-15 95e5361 Update CMS fields now that they're being scaffolded (#248) (Guy Sartorelli)
  • silverstripe/tagfield (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-24 7f50ea1 Avoid infinite recursive loop with attributes in schemadata (#312) (Guy Sartorelli)
  • silverstripe/userforms (6.3.0 -> 7.0.0-alpha1)

    • 2024-08-15 8037b0f Update CMS fields now that they're being scaffolded (#1315) (Guy Sartorelli)
    • 2024-05-13 796fffe Pass arrays to addFieldsToTab (Steve Boyd)
  • dnadesign/silverstripe-elemental (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-26 c75969c Allow for custom admin route (#1281) (Steve Joynt)
    • 2024-11-06 23af9c0 Ensure files can be removed from elemental blocks (#1267) (Guy Sartorelli)
    • 2024-08-15 cec5c45 Use canDelete, not the now-deleted canArchive (#1232) (Guy Sartorelli)
    • 2024-08-15 860df12 Explicitly don't autoscaffold ElementalArea (#1231) (Guy Sartorelli)
  • symbiote/silverstripe-advancedworkflow (6.3.0 -> 7.0.0-alpha1)

    • 2024-08-15 eed4dbb Update CMS fields now that they're being scaffolded (#545) (Guy Sartorelli)
    • 2024-05-13 94d2080 Pass arrays to addFieldsToTab (Steve Boyd)
  • symbiote/silverstripe-queuedjobs (5.2.0 -> 6.0.0-alpha1)

    • 2024-11-21 f5e1bd3 Import correct InputOption class (Steve Boyd)
  • tractorcow/silverstripe-fluent (7.2.0 -> 8.0.0-alpha1)

    • 2024-07-08 ca43c20 Respect strict-typing of Factory interface (Guy Sartorelli)
  • silverstripe/linkfield (4.1.0 -> 5.0.0-alpha1)

    • 2024-11-11 0632428 Call updated method (Steve Boyd)
    • 2024-09-04 2a7287f Use Updated names of top page extensions (Steve Boyd)
    • 2024-08-15 72206dc Use canDelete, not the now-deleted canArchive (#318) (Guy Sartorelli)
  • silverstripe/subsites (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-12 1c9c35c Fix reloading subsite selector when updating subsites (Guy Sartorelli)
    • 2024-08-15 3a6f722 Update CMS fields now that they're being scaffolded (#589) (Guy Sartorelli)
  • silverstripe/blog (4.3.0 -> 5.0.0-alpha1)

    • 2024-09-26 9dfc813 Fix blog plural en.yml (3Dgoo)
    • 2024-08-15 301c45b Update CMS fields now that they're being scaffolded (#775) (Guy Sartorelli)

Api changes

  • silverstripe/installer (5.3.0 -> 6.0.0-alpha1)

    • 2024-08-22 3376544 Remove GraphQL (Steve Boyd)
  • silverstripe/assets (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-28 052c00d Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-27 f1ec760 Deprecate campaign-admin config (Steve Boyd)
    • 2024-11-27 3b71a40 Remove silverstripe/campaign-admin integration support (Steve Boyd)
    • 2024-11-26 430ae1e Update code to reflect changes in silverstripe/framework (#655) (Guy Sartorelli)
    • 2024-11-05 4d3042e Use class from new template engine module (#654) (Guy Sartorelli)
    • 2024-10-20 908c59b Add deprecation (Steve Boyd)
    • 2024-10-15 ca8149d Update validation methods (Steve Boyd)
    • 2024-09-26 df82059 Update API to reflect changes to CLI interaction (#635) (Guy Sartorelli)
    • 2024-09-23 d4296a9 Use new names for renamed classes (#640) (Guy Sartorelli)
    • 2024-08-27 1e8c034 Strong typing for the view layer (#634) (Guy Sartorelli)
    • 2024-08-27 e2eb3f6 Standardise extension hooks (#629) (Guy Sartorelli)
    • 2024-08-25 85dd0e1 Remove CMSEditLink implementation, rely on superclass instead. (#628) (Guy Sartorelli)
    • 2024-08-20 7947405 Replace Extension subclasses (Steve Boyd)
    • 2024-05-20 5a3231d Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/framework (5.3.0 -> 6.0.0-alpha1)

    • 2024-12-01 2d699806c Make parameter non-optional for PHP 8.4 (Steve Boyd)
    • 2024-11-28 fc51c87ac Explicity mark nullable paramters for PHP 8.4 (Steve Boyd)
    • 2024-11-26 26d5b11b3 Move logic from silverstripe/cms into central place (#11460) (Guy Sartorelli)
    • 2024-11-25 34a50fe40 Deprecation notice for FormField::validate() (Steve Boyd)
    • 2024-11-25 377c18b40 Change default password strength from strong to medium (Steve Boyd)
    • 2024-11-14 15683cfd9 Deprecate FormField API (Steve Boyd)
    • 2024-11-11 2fb7cfa09 Replace DBEnum::flushCache() with DBEnum::reset() (Guy Sartorelli)
    • 2024-11-06 bbd8bb90e Remove API which is now in silverstripe/silverstripe-template-engine (#11451) (Guy Sartorelli)
    • 2024-11-05 d871f4067 Deprecate API which is moving into its own module (#11454) (Guy Sartorelli)
    • 2024-10-30 6b33b5a87 Refactor template layer (#11405) (Guy Sartorelli)
    • 2024-10-30 14f248b42 List interface deprecations (Steve Boyd)
    • 2024-10-29 f5730a3ac Combine Sortable, Filterable and Limitable into SS_List (Steve Boyd)
    • 2024-10-25 c1a51aace Ensure everything gets flushed when flushing from sake (#11436) (Guy Sartorelli)
    • 2024-10-24 8621411c1 Deprecate FlushMiddelware (#11444) (Guy Sartorelli)
    • 2024-10-21 165f72fd2 Deprecations for template layer (#11420) (Guy Sartorelli)
    • 2024-10-17 666b4094b Improve type safety for Controller::join_links() (#11426) (Guy Sartorelli)
    • 2024-10-17 8ec068f3f Add deprecation (Steve Boyd)
    • 2024-09-23 e2e32317d Move various classes to more appropriate namespaces (#11370) (Guy Sartorelli)
    • 2024-09-18 6287b6ebe Rename Deprecation::withNoReplacement (#11390) (Guy Sartorelli)
    • 2024-09-12 239873baa Deprecate SSListExporter (Steve Boyd)
    • 2024-09-12 9788a9750 Deprecate classes which will be renamed (#11375) (Guy Sartorelli)
    • 2024-09-12 8662c07f8 Add back strong typing that got removed in a merge-up (#11372) (Guy Sartorelli)
    • 2024-09-11 6245b6229 Made the GridFieldDeleteAction method getRemoveAction() protected (Benjamin Blake)
    • 2024-08-27 ea93316d9 Strong typing for the view layer (#11351) (Guy Sartorelli)
    • 2024-08-27 2c8731d38 Remove GraphQL (Steve Boyd)
    • 2024-08-27 e1428f27a Standardise extension hooks (#11339) (Guy Sartorelli)
    • 2024-08-23 8ffda9edc Replace Extension subclasses (Steve Boyd)
    • 2024-08-19 07dfb1cd4 Remove IPUtils (Steve Boyd)
    • 2024-06-13 be6ca2a91 Remove references to non-existent installation tool (#11274) (Guy Sartorelli)
    • 2024-05-20 3e70cfed1 Set extension hook implementation visibility to protected (Steve Boyd)
    • 2024-05-16 7b847f8d7 Strongly type Fieldlist (Steve Boyd)
    • 2024-05-16 f6aaa480b Set extension hook implementation visibility to protected (Steve Boyd)
    • 2024-04-29 6c42463b6 Add onBeforeManipulate extension hook (Steve Boyd)
  • silverstripe/template-engine (silverstripe/framework -> 1.0.0-alpha1)

    • 2024-11-01 809a652 Update API to suit its status as its own module (Guy Sartorelli)
  • silverstripe/admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-28 f5aebe5d Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-27 68590887 Provide a way to register link forms dynamically for ModalController (#1860) (Guy Sartorelli)
    • 2024-11-27 9e393cad Remove silverstripe/campaign-admin integration support (Steve Boyd)
    • 2024-11-26 0c04234d Deprecate methods on ModalController (#1861) (Guy Sartorelli)
    • 2024-11-14 0517656d Deprecate API that will be removed as a result of refactoring (#1851) (Guy Sartorelli)
    • 2024-10-31 9935822e Deprecate API that will be renamed (#1844) (Guy Sartorelli)
    • 2024-09-23 9162ab80 Use new names for renamed classes (#1824) (Guy Sartorelli)
    • 2024-09-02 f6a42b66 Remove GraphQL (Steve Boyd)
    • 2024-08-27 1c18c906 Standardise extension hooks (#1810) (Guy Sartorelli)
    • 2024-08-25 a8b6f668 Change public CMSEditLink to protected updateCMSEditLink (#1809) (Guy Sartorelli)
    • 2024-08-20 7ca7a6de Replace Extension subclasses (Steve Boyd)
    • 2024-05-17 2c1bb7e3 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/asset-admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-12-01 715019f0 Make parameter non-optional for PHP 8.4 (Steve Boyd)
    • 2024-11-28 6480a91b Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-27 27c75be1 Avoid reimplementing logic from ModalController (#1515) (Guy Sartorelli)
    • 2024-11-26 e8bd8541 Deprecate methods on RemoteFileModalExtension (#1516) (Guy Sartorelli)
    • 2024-11-26 a20db889 Deprecate campaign admin integrations (Steve Boyd)
    • 2024-11-26 a124e172 Deprecate campaign admin integrations (Steve Boyd)
    • 2024-11-21 9d3760b1 Use updated FormField::validate() signature (Steve Boyd)
    • 2024-11-20 cce5b2fe Remove silverstripe/campaign-admin integration support (Steve Boyd)
    • 2024-11-06 9fad212e Update code to reflect changes in silverstripe/admin (#1504) (Guy Sartorelli)
    • 2024-10-31 333b9ac6 Deprecate API that will be renamed (#1506) (Guy Sartorelli)
    • 2024-10-20 539a5274 Update method signature to match parent class (#1502) (Guy Sartorelli)
    • 2024-09-23 5ded9533 Use new names for renamed classes (#1495) (Guy Sartorelli)
    • 2024-09-02 733358c9 Use correct version for deprecation (Steve Boyd)
    • 2024-08-29 c34ad4ea Remove GraphQL (Steve Boyd)
    • 2024-08-27 6f78dc51 Standardise extension hooks (#1485) (Guy Sartorelli)
    • 2024-08-22 4b3bac75 Replace extension with config (#1488) (Guy Sartorelli)
    • 2024-08-20 2c04402f Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 ecbc8b30 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/versioned-admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-12-01 86c1aa2 Make parameter non-optional for PHP 8.4 (Steve Boyd)
    • 2024-11-28 b690f59 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-19 5074999 Make HistoryViewerController a subclass of FormSchemaController (#369) (Guy Sartorelli)
    • 2024-10-14 c13c127 Update method signature to match parent class (Guy Sartorelli)
    • 2024-09-23 46fbfe4 Use new names for renamed classes (#363) (Guy Sartorelli)
    • 2024-08-28 f4bad1c Remove GraphQL (Steve Boyd)
    • 2024-08-20 c83278a Replace Extension subclasses (Steve Boyd)
    • 2024-05-20 4e70426 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/cms (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-28 bbf24f81 Explicity mark nullable paramters for PHP 8.4 (Steve Boyd)
    • 2024-11-27 7c5e2433 Use dynamic config for ModalController forms (#3029) (Guy Sartorelli)
    • 2024-11-26 0778d7b9 Move some code to framework to be reusable (#3022) (Guy Sartorelli)
    • 2024-11-26 f34f8428 Deprecate InternalLinkModalExtension (#3030) (Guy Sartorelli)
    • 2024-11-25 6bd7f7e7 Deprecate campaign admin integrations (Steve Boyd)
    • 2024-11-20 c217d1b1 Remove silverstripe/campaign-admin integration support (Steve Boyd)
    • 2024-11-14 58a4ae56 Deprecate and update code in preparation for CMS 6 (#3023) (Guy Sartorelli)
    • 2024-11-06 240f2b49 Update code to reflect changes in silverstripe/admin (#3019) (Guy Sartorelli)
    • 2024-10-31 b779f488 Deprecate API that will be renamed (#3021) (Guy Sartorelli)
    • 2024-10-21 42aed2b7 Deprecations for template layer (#3012) (Guy Sartorelli)
    • 2024-10-14 b07789db Update method signature to match parent class (Guy Sartorelli)
    • 2024-09-23 dca4404f Use new names for renamed classes (#3003) (Guy Sartorelli)
    • 2024-08-29 344a7c54 Replace Extension subclasses (Steve Boyd)
    • 2024-08-27 b40269c3 Strong typing for the view layer (#2994) (Guy Sartorelli)
    • 2024-08-27 48c64e31 Standardise extension hooks (#2989) (Guy Sartorelli)
    • 2024-08-25 fccdeb17 Remove CMSEditLink implementation, rely on superclass instead. (#2987) (Guy Sartorelli)
    • 2024-08-22 1509fb92 Remove GraphQL (Steve Boyd)
    • 2024-06-13 c2191622 Remove references to non-existent installation tool (#2961) (Guy Sartorelli)
    • 2024-06-11 f9158a9d Match new method signature from framework (#2960) (Guy Sartorelli)
    • 2024-05-20 beb05d3c Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/errorpage (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-26 bef7d94 Update code to reflect changes in silverstripe/cms (#126) (Guy Sartorelli)
    • 2024-11-14 d160351 Use new class_description configuration (#127) (Guy Sartorelli)
    • 2024-09-23 8e22e6f Use new names for renamed classes (#122) (Guy Sartorelli)
    • 2024-08-27 0230c7d Standardise extension hooks (#118) (Guy Sartorelli)
    • 2024-08-20 0175947 Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 e32d4ad Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/reports (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-27 d1913b09 Reorganise file structure (Steve Boyd)
    • 2024-11-06 648136f1 Update code to reflect changes in silverstripe/admin (#200) (Guy Sartorelli)
    • 2024-10-31 3d873d35 Deprecate API that will be renamed (#201) (Guy Sartorelli)
    • 2024-10-21 6f20def6 Check is instance of SS_List (Steve Boyd)
    • 2024-09-23 61ecdb74 Use new names for renamed classes (#195) (Guy Sartorelli)
    • 2024-08-27 1eea4a29 Strong typing for the view layer (#193) (Guy Sartorelli)
  • silverstripe/siteconfig (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-28 12169b5f Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-06 9c3f0e1a Use the new SingleRecordAdmin class (#179) (Guy Sartorelli)
    • 2024-10-31 e467a372 Deprecate API that will be renamed (#181) (Guy Sartorelli)
    • 2024-09-23 d96f1992 Use new names for renamed classes (#177) (Guy Sartorelli)
    • 2024-08-25 09f513cc Update method signature for CMSEditLink (#173) (Guy Sartorelli)
    • 2024-06-13 e668e111 Remove references to non-existent installation tool (#166) (Guy Sartorelli)
  • silverstripe/versioned (2.3.0 -> 3.0.0-alpha1)

    • 2024-12-01 5ff41a2 Make parameter non-optional for PHP 8.4 (Steve Boyd)
    • 2024-11-28 361a4b2 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-27 36e06e5 Remove silverstripe/campaign-admin integration support (Steve Boyd)
    • 2024-11-26 6b8999b Update API to reflect changes in silverstripe/framework (#479) (Guy Sartorelli)
    • 2024-09-23 dc6625d Use new names for renamed classes (#474) (Guy Sartorelli)
    • 2024-09-02 7fe629a Use correct version for deprecation (Steve Boyd)
    • 2024-08-27 c2d37cc Standardise extension hooks (#465) (Guy Sartorelli)
    • 2024-08-25 eab840e Update method signature for CMSEditLink (#463) (Guy Sartorelli)
    • 2024-08-22 242479c Remove GraphQL (Steve Boyd)
    • 2024-08-20 5027862 Replace Extension subclasses (Steve Boyd)
    • 2024-08-15 330bc93 Delete deprecated canArchive method (#460) (Guy Sartorelli)
    • 2024-05-20 b1f567a Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/session-manager (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-28 a1ebe0a Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-09-26 091a331 Update API to reflect changes to CLI interaction (#213) (Guy Sartorelli)
    • 2024-09-23 f06045a Use new names for renamed classes (#220) (Guy Sartorelli)
    • 2024-08-27 d9386d9 Standardise extension hooks (#209) (Guy Sartorelli)
    • 2024-08-20 4d22bc2 Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 e049ace Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/login-forms (5.3.0 -> 6.0.0-alpha1)

    • 2024-05-16 f1cd155 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/hybridsessions (3.0.5 -> 4.0.0-alpha1)

    • 2024-11-28 0c5755e Explicity mark nullable paramters for PHP 8.4 (Steve Boyd)
  • silverstripe/mfa (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-19 7c87f74 Make AdminRegistrationController a subclass of AdminController (#573) (Guy Sartorelli)
    • 2024-09-23 54d8092 Use new names for renamed classes (#566) (Guy Sartorelli)
    • 2024-08-27 8cfd100 Standardise extension hooks (#559) (Guy Sartorelli)
    • 2024-08-20 f85049b Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 6aa04af Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/gridfieldqueuedexport (3.3.0 -> 4.0.0-alpha1)

    • 2024-09-23 955aa6a Use new names for renamed classes (#125) (Guy Sartorelli)
    • 2024-08-20 df423b5 Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 f1a41e0 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/realme (5.4.0 -> 6.0.0-alpha1)

    • 2024-11-28 3428de0 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-09-26 15a3bdb Update API to reflect changes to CLI interaction (#160) (Guy Sartorelli)
    • 2024-09-23 2bad733 Use new names for renamed classes (#163) (Guy Sartorelli)
    • 2024-09-13 f7ba0a5 Deprecate API that will be removed (#162) (Guy Sartorelli)
    • 2024-08-27 9dfbf06 Standardise extension hooks (#154) (Guy Sartorelli)
    • 2024-08-20 4629bda Replace Extension subclasses (Steve Boyd)
  • silverstripe/sharedraftcontent (3.3.0 -> 4.0.0-alpha1)

    • 2024-09-26 c3550ae Update API to reflect changes to CLI interaction (#259) (Guy Sartorelli)
    • 2024-09-23 f2d6351 Use new names for renamed classes (#261) (Guy Sartorelli)
    • 2024-08-22 4caaddb Replace extension with config (#254) (Guy Sartorelli)
    • 2024-08-20 bbab034 Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 0099747 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/spamprotection (4.2.1 -> 5.0.0-alpha1)

    • 2024-11-11 53aeaff Use updated validation API (Steve Boyd)
    • 2024-05-20 e6c4b6e Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/lumberjack (3.2.0 -> 4.0.0-alpha1)

    • 2024-11-28 33de3b5 Explicity mark nullable paramters for PHP 8.4 (Steve Boyd)
    • 2024-09-23 b32bd9e Use new names for renamed classes (#172) (Guy Sartorelli)
    • 2024-08-20 aad00df Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 2d0d176 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/staticpublishqueue (6.2.2 -> 7.0.0-alpha1)

    • 2024-09-26 4763bda Update API to reflect changes to CLI interaction (#201) (Guy Sartorelli)
    • 2024-09-23 7289ce6 Use new names for renamed classes (#204) (Guy Sartorelli)
    • 2024-09-13 d42ca25 Deprecate API that will be removed (#203) (Guy Sartorelli)
    • 2024-08-20 ad11048 Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 c79ec10 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/tagfield (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-13 8d97a7a Disable ancestor FieldValidators (Steve Boyd)
    • 2024-09-23 ec75c3a Use new names for renamed classes (#308) (Guy Sartorelli)
  • silverstripe/taxonomy (3.2.2 -> 4.0.0-alpha1)

    • 2024-09-23 9d66c8a Use new names for renamed classes (#124) (Guy Sartorelli)
    • 2024-05-20 91c4dbd Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/textextraction (4.1.1 -> 5.0.0-alpha1)

    • 2024-08-20 67d6373 Replace Extension subclasses (Steve Boyd)
    • 2024-05-20 16bbfcd Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/userforms (6.3.0 -> 7.0.0-alpha1)

    • 2024-11-28 1f398f9 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-26 781d65a Update code to reflect changes from silverstripe/cms (#1346) (Guy Sartorelli)
    • 2024-11-19 5cc8cbd Make UserDefinedFormAdmin a subclass of FormSchemaController (#1348) (Guy Sartorelli)
    • 2024-11-14 bfc58dd Use new class_description configuration (#1347) (Guy Sartorelli)
    • 2024-09-26 f50db11 Update API to reflect changes to CLI interaction (#1325) (Guy Sartorelli)
    • 2024-09-23 19767cf Use new names for renamed classes (#1328) (Guy Sartorelli)
    • 2024-08-27 9de2039 Standardise extension hooks (#1317) (Guy Sartorelli)
    • 2024-08-20 07d875d Replace Extension subclasses (Steve Boyd)
    • 2024-05-20 1417d90 Set extension hook implementation visibility to protected (Steve Boyd)
  • dnadesign/silverstripe-elemental (5.3.0 -> 6.0.0-alpha1)

    • 2024-12-01 ae31970 Make parameter non-optional for PHP 8.4 (Steve Boyd)
    • 2024-11-28 e84d9c9 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-27 e8dc5f0 Deprecate campaign-admin config (Steve Boyd)
    • 2024-11-27 5c4ad21 Remove silverstripe/campaign-admin integration support (Steve Boyd)
    • 2024-11-26 59aea22 Update API to reflect changes in silverstripe/framework (#1271) (Guy Sartorelli)
    • 2024-11-19 2791227 Make ElementalAreaController a subclass of FormSchemaController (#1273) (Guy Sartorelli)
    • 2024-11-14 d3cbca7 Use new class_description configuration (#1272) (Guy Sartorelli)
    • 2024-11-07 cce5110 Remove custom logic in favour of Form::saveInto() (#1269) (Guy Sartorelli)
    • 2024-11-06 50ca5a8 Deprecate API which will be removed (#1270) (Guy Sartorelli)
    • 2024-10-20 5fa5743 Update method signature to match parent class (#1262) (Guy Sartorelli)
    • 2024-09-26 bb68146 Update API to reflect changes to CLI interaction (#1252) (Guy Sartorelli)
    • 2024-09-23 d8e0e3b Use new names for renamed classes (#1254) (Guy Sartorelli)
    • 2024-09-05 2410220 Deprecate TopPage classes which are being renamed (Steve Boyd)
    • 2024-09-04 753fb4a Rename TopPage classes (Steve Boyd)
    • 2024-08-28 fde6be7 Remove GraphQL (Steve Boyd)
    • 2024-08-27 d63e213 Strong typing for the view layer (#1244) (Guy Sartorelli)
    • 2024-08-27 ff0cbd6 Standardise extension hooks (#1237) (Guy Sartorelli)
    • 2024-08-25 e38593f Update method signature for CMSEditLink (#1236) (Guy Sartorelli)
    • 2024-08-22 beaf8d9 Replace extension with config (#1242) (Guy Sartorelli)
    • 2024-08-20 d9402c1 Replace Extension subclasses (Steve Boyd)
    • 2024-05-21 8e3649f Set extension hook implementation visibility to protected (Steve Boyd)
    • 2024-04-17 a3a9992 Remove deprecated code (Steve Boyd)
  • dnadesign/silverstripe-elemental-userforms (4.1.1 -> 5.0.0-alpha1)

    • 2024-11-26 6fda54b Use new class_description configuration (#101) (Guy Sartorelli)
    • 2024-11-14 b34866c Use new class_description configuration (#102) (Guy Sartorelli)
  • symbiote/silverstripe-advancedworkflow (6.3.0 -> 7.0.0-alpha1)

    • 2024-11-28 f2d6c19 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-10-15 5aab70f Strongly type return types (Steve Boyd)
    • 2024-09-26 0513531 Update API to reflect changes to CLI interaction (#552) (Guy Sartorelli)
    • 2024-09-23 426950e Use new names for renamed classes (#554) (Guy Sartorelli)
    • 2024-08-27 9371bc1 Standardise extension hooks (#547) (Guy Sartorelli)
    • 2024-08-20 fb22b99 Replace Extension subclasses (Steve Boyd)
    • 2024-05-20 e2e7dc1 Set extension hook implementation visibility to protected (Steve Boyd)
  • symbiote/silverstripe-gridfieldextensions (4.1.0 -> 5.0.0-alpha1)

    • 2024-11-28 3a64eb9 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-10-21 b4031bc Check is instance of SS_List (Steve Boyd)
    • 2024-09-23 0a7f7b1 Use new names for renamed classes (#417) (Guy Sartorelli)
    • 2024-05-16 c044b66 Set extension hook implementation visibility to protected (Steve Boyd)
  • symbiote/silverstripe-queuedjobs (5.2.0 -> 6.0.0-alpha1)

    • 2024-11-28 88cd1f7 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-09-26 ba77548 Update API to reflect changes to CLI interaction (#445) (Guy Sartorelli)
    • 2024-09-23 775a31e Use new names for renamed classes (#448) (Guy Sartorelli)
    • 2024-09-13 b6c1c4f Deprecate API that will be removed (#447) (Guy Sartorelli)
    • 2024-08-20 9b370cb Replace Extension subclasses (Steve Boyd)
    • 2024-05-20 88bd506 Set extension hook implementation visibility to protected (Steve Boyd)
  • tractorcow/silverstripe-fluent (7.2.0 -> 8.0.0-alpha1)

    • 2024-11-28 af76839 Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-06 65107b1 Update code to reflect changes in silverstripe/admin (#902) (Guy Sartorelli)
    • 2024-10-15 8bc98fe Update method signature to match parent class (Guy Sartorelli)
    • 2024-09-23 eb49b06 Use new names for renamed classes (#889) (Guy Sartorelli)
    • 2024-09-10 3dbdb25 Deprecate API that will be removed (Guy Sartorelli)
    • 2024-09-06 fd38fcd Update API to reflect changes to CLI interaction (Guy Sartorelli)
    • 2024-08-29 d9c90f9 Replace Extension subclasses (Steve Boyd)
    • 2024-08-27 0f14408 Standardise extension hooks (#873) (Guy Sartorelli)
    • 2024-08-22 15f2c03 Strong typing for the view layer (Guy Sartorelli)
    • 2024-05-21 add7e35 Set extension hook implementation visibility to protected (Steve Boyd)
    • 2024-05-21 3845f70 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/linkfield (4.1.0 -> 5.0.0-alpha1)

    • 2024-11-28 b4cb9da Explicity mark nullable paramters for PHP 8.4 (Steve Boyd)
    • 2024-11-19 1c47300 Make LinkFieldController a subclass of FormSchemaController (#348) (Guy Sartorelli)
    • 2024-09-26 fb651b2 Update API to reflect changes to CLI interaction (#329) (Guy Sartorelli)
    • 2024-09-23 2ac0db1 Use new names for renamed classes (#336) (Guy Sartorelli)
    • 2024-08-27 2b12539 Strong typing for the view layer (#322) (Guy Sartorelli)
    • 2024-08-20 7fcad25 Replace Extension subclasses (Steve Boyd)
    • 2024-05-20 a7fc4ee Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/graphql (5.2.3 -> 6.0.0-alpha1)

    • 2024-11-28 fd4da56 Explicity mark nullable paramters for PHP 8.4 (Steve Boyd)
    • 2024-10-22 ee9b3f8 Use SS_List as type (Steve Boyd)
    • 2024-09-26 54d2357 Update API to reflect changes to CLI interaction (#600) (Guy Sartorelli)
    • 2024-09-23 6500858 Use new names for renamed classes (#606) (Guy Sartorelli)
    • 2024-09-13 76f8044 Deprecate API that will be removed (#603) (Guy Sartorelli)
    • 2024-08-30 a8c7591 Migrate code and docs from other modules (Steve Boyd)
    • 2024-08-27 e251814 Standardise extension hooks (#597) (Guy Sartorelli)
    • 2024-08-20 0ccfc13 Replace Extension subclasses (Steve Boyd)
    • 2024-05-16 d6bdc71 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/subsites (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-28 cd91d2f Explicity mark nullable parameters for PHP 8.4 (Steve Boyd)
    • 2024-11-26 fe2b6b7 Update code to reflect changes in silverstripe/cms (#609) (Guy Sartorelli)
    • 2024-11-21 10bbdda Use updated FormField::validate() signature (Steve Boyd)
    • 2024-11-17 d4bcc9f Ensure themelist returns an array (Steve Boyd)
    • 2024-11-14 11f4ebc Deprecate API that will be removed as a result of refactoring (#613) (Guy Sartorelli)
    • 2024-11-14 1c65739 Use new class_description configuration (#610) (Guy Sartorelli)
    • 2024-11-12 bb0bbc7 Make SubsiteXHRController a subclass of AdminController (Guy Sartorelli)
    • 2024-11-06 b6ba2b8 Update code to reflect changes in silverstripe/admin (#606) (Guy Sartorelli)
    • 2024-09-26 57e2fd4 Update API to reflect changes to CLI interaction (#597) (Guy Sartorelli)
    • 2024-09-23 a830665 Use new names for renamed classes (#600) (Guy Sartorelli)
    • 2024-09-13 2713c3a Deprecate API that will be removed (#599) (Guy Sartorelli)
    • 2024-08-29 4298c2e Replace Extension subclasses (Steve Boyd)
    • 2024-08-29 83f3d9e Remove GraphQL (Steve Boyd)
    • 2024-08-27 8085888 Standardise extension hooks (#591) (Guy Sartorelli)
    • 2024-05-21 a96000e Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/blog (4.3.0 -> 5.0.0-alpha1)

    • 2024-12-01 9bae522 Make parameter non-optional for PHP 8.4 (Steve Boyd)
    • 2024-11-28 0a1cd6e Explicity mark nullable paramters for PHP 8.4 (Steve Boyd)
    • 2024-11-26 4ba2132 Update code to reflect changes in silverstripe/cms (#793) (Guy Sartorelli)
    • 2024-11-14 a92b79a Use new class_description configuration (#794) (Guy Sartorelli)
    • 2024-09-23 1ba8c76 Use new names for renamed classes (#785) (Guy Sartorelli)
    • 2024-08-22 5e44aa7 Remove widgets (Steve Boyd)
    • 2024-08-20 1bdb661 Remove widgets (Steve Boyd)
    • 2024-08-20 6799b18 Replace Extension subclasses (Steve Boyd)
    • 2024-05-20 6adf589 Set extension hook implementation visibility to protected (Steve Boyd)
  • silverstripe/crontask (3.0.4 -> 4.0.0-alpha1)

    • 2024-09-26 32d3f4f Update API to reflect changes in CLI interaction (#93) (Guy Sartorelli)
    • 2024-09-13 cd7f4ef Deprecate API that will be removed (#94) (Guy Sartorelli)

Dependencies

  • silverstripe/recipe-kitchen-sink (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-28 5ac4e10 Remove unsupported modules (Steve Boyd)
    • 2024-09-26 1a62365 Update dep for graphql-devtools (#72) (Guy Sartorelli)
    • 2024-08-22 a311ace Limit PHP support for CMS 6 (#70) (Guy Sartorelli)
    • 2024-03-03 ab16e9b Remove remaining cwp dependencies and code (Steve Boyd)
    • 2024-02-26 2d71cf7 Remove cwp/agency-extensions (Steve Boyd)
    • 2024-02-22 e51a21e Add fluent 8 (Steve Boyd)
    • 2024-02-20 15b597e Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/installer (5.3.0 -> 6.0.0-alpha1)

    • 2024-09-06 35b294e Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 93d69f1 Limit PHP support for CMS 6 (#377) (Guy Sartorelli)
    • 2024-02-19 9e87f9b Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/recipe-cms (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-27 66fd4f6 Remove silverstripe/campaign-admin (Steve Boyd)
    • 2024-09-06 e46cc57 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 4452b41 Remove GraphQL (Steve Boyd)
    • 2024-08-22 96f3823 Limit PHP support for CMS 6 (#90) (Guy Sartorelli)
    • 2024-02-19 ba26b12 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/recipe-core (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-06 b2b3987 Explicitly require and test silverstripe/template-engine (#103) (Guy Sartorelli)
    • 2024-09-06 a90af64 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 2feb53b Limit PHP support for CMS 6 (#99) (Guy Sartorelli)
    • 2024-02-19 9e31ab0 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/assets (2.3.0 -> 3.0.0-alpha1)

    • 2024-09-16 98850c6 Add league/flysystem-local to fix test (#645) (Guy Sartorelli)
    • 2024-09-13 4fe08dd Bump league/flysystem dependency (#644) (Guy Sartorelli)
    • 2024-09-11 c6a524e Use PHPUnit 11 (Steve Boyd)
    • 2024-09-01 2ce488f Upgrade to symfony 7 (Steve Boyd)
    • 2024-08-22 dc7705f Limit PHP support for CMS 6 (#631) (Guy Sartorelli)
    • 2024-07-23 16444e4 Upgrade to intervention/image 3 (#621) (Guy Sartorelli)
    • 2024-02-19 e6ae072 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/config (2.1.1 -> 3.0.0-alpha1)

    • 2024-09-09 d6bc335 Use PHPUnit 11 (Steve Boyd)
    • 2024-09-01 b9afb58 Upgrade to symfony 7 (Steve Boyd)
    • 2024-08-22 20de876 Limit PHP support for CMS 6 (#121) (Guy Sartorelli)
  • silverstripe/framework (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-14 22177c057 Set minimum version of symfony/cache to 7.1.5 (Steve Boyd)
    • 2024-09-25 e34463875 Deprecate API that will be removed or renamed (#11401) (Guy Sartorelli)
    • 2024-09-18 9a92488ad Use PHPUnit 11 (Steve Boyd)
    • 2024-09-03 ec2bcfdf0 Upgrade to symfony 7 (Steve Boyd)
    • 2024-08-28 cd4efcf95 Remove support for MySQL 5 (Steve Boyd)
    • 2024-08-22 379bd67a1 Limit PHP support for CMS 6 (#11345) (Guy Sartorelli)
    • 2024-02-19 20f0f1a09 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/mimevalidator (3.1.0 -> 4.0.0-alpha1)

    • 2024-09-06 5ed40f6 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 a6a025d Limit PHP support for CMS 6 (#82) (Guy Sartorelli)
    • 2024-02-19 938a85b Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-12-02 ee22a359 Bump cross-spawn from 7.0.3 to 7.0.6 (#1858) (dependabot[bot])
    • 2024-12-01 64b6ac20 Bump express from 4.19.2 to 4.21.0 (#1827) (dependabot[bot])
    • 2024-11-19 abcb6995 Update JS dependencies (Steve Boyd)
    • 2024-09-23 817e68b3 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-10 f677f86c Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 4b9bf156 Limit PHP support for CMS 6 (#1811) (Guy Sartorelli)
    • 2024-02-19 b32faa2e Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/asset-admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-18 d3847858 Update JS dependencies (Steve Boyd)
    • 2024-09-23 b6a2dc28 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-09 21b53cd0 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 8a0bd563 Limit PHP support for CMS 6 (#1486) (Guy Sartorelli)
    • 2024-02-19 c47db77b Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/versioned-admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-12-02 6cc383b Bump elliptic from 6.5.7 to 6.6.1 (#375) (dependabot[bot])
    • 2024-12-01 1615714 Bump express from 4.19.2 to 4.21.0 (#364) (dependabot[bot])
    • 2024-12-01 bb0d462 Bump cross-spawn from 7.0.3 to 7.0.6 (#373) (dependabot[bot])
    • 2024-11-18 2b75daa Update JS dependencies (Steve Boyd)
    • 2024-09-09 f66677d Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 0bbb9fd Limit PHP support for CMS 6 (#358) (Guy Sartorelli)
    • 2024-02-19 e326d22 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/cms (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-18 abeb2917 Update JS dependencies (Steve Boyd)
    • 2024-09-23 e2ca1cb7 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-10 36686f7a Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 0dd216da Limit PHP support for CMS 6 (#2990) (Guy Sartorelli)
    • 2024-02-19 83f31af2 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/errorpage (2.3.0 -> 3.0.0-alpha1)

    • 2024-09-09 78e0cfb Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 c93ce32 Limit PHP support for CMS 6 (#119) (Guy Sartorelli)
    • 2024-02-19 0ca994a Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/reports (5.3.0 -> 6.0.0-alpha1)

    • 2024-09-10 2b67bd9a Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 be2dc34c Limit PHP support for CMS 6 (#192) (Guy Sartorelli)
    • 2024-02-19 ed20ebb4 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/siteconfig (5.3.0 -> 6.0.0-alpha1)

    • 2024-09-06 ca37a0b2 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 52ceba95 Limit PHP support for CMS 6 (#174) (Guy Sartorelli)
    • 2024-02-19 3cab1421 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/versioned (2.3.0 -> 3.0.0-alpha1)

    • 2024-09-23 288cb40 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-11 027ecd8 Use PHPUnit 11 (Steve Boyd)
    • 2024-09-01 7393dda Upgrade to symfony 7 (Steve Boyd)
    • 2024-08-22 f192c07 Limit PHP support for CMS 6 (#467) (Guy Sartorelli)
    • 2024-02-19 4bfb958 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/session-manager (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-18 89d2538 Update JS dependencies (Steve Boyd)
    • 2024-09-09 f829e58 Use PHPUnit 11 (Steve Boyd)
    • 2024-09-01 3104673 Upgrade to symfony 7 (Steve Boyd)
    • 2024-08-22 8b40f9b Limit PHP support for CMS 6 (#211) (Guy Sartorelli)
    • 2024-02-19 85d8e3e Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/login-forms (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-18 8932617 Update JS dependencies (Steve Boyd)
    • 2024-09-06 64cc2c0 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 26294aa Limit PHP support for CMS 6 (#196) (Guy Sartorelli)
    • 2024-02-19 5db72de Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/hybridsessions (3.0.5 -> 4.0.0-alpha1)

    • 2024-09-10 d070de7 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-19 57eee3b Limit PHP support for CMS 6 (Guy Sartorelli)
    • 2024-02-19 bfb74ed Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/totp-authenticator (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-18 269ca1c Update JS dependencies (Steve Boyd)
    • 2024-09-09 c19bbd3 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 536db37 Limit PHP support for CMS 6 (#170) (Guy Sartorelli)
    • 2024-02-19 837b4d1 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/mfa (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-18 907a920 Update JS dependencies (Steve Boyd)
    • 2024-09-09 49eb8c8 Use PHPUnit 11 (Steve Boyd)
    • 2024-09-02 47f6ba5 Bump webpack from 5.91.0 to 5.94.0 (dependabot[bot])
    • 2024-09-01 800d081 Bump braces from 3.0.2 to 3.0.3 (dependabot[bot])
    • 2024-09-01 6782a98 Bump requirejs from 2.3.6 to 2.3.7 (dependabot[bot])
    • 2024-08-22 f23f9ee Limit PHP support for CMS 6 (#560) (Guy Sartorelli)
    • 2024-02-19 6a9b3c9 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/gridfieldqueuedexport (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-18 9a8161b Update JS dependencies (Steve Boyd)
    • 2024-09-06 fde5e75 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 09c8f63 Limit PHP support for CMS 6 (#119) (Guy Sartorelli)
    • 2024-02-19 8f27922 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/realme (5.4.0 -> 6.0.0-alpha1)

    • 2024-11-18 8466449 Update JS dependencies (Steve Boyd)
    • 2024-09-23 0742eb4 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-06 8c3f9e2 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 36988da Limit PHP support for CMS 6 (#155) (Guy Sartorelli)
    • 2024-02-19 4292cae Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/segment-field (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-18 826cf0c Update JS dependencies (Steve Boyd)
    • 2024-09-10 04bbaa9 Use PHPUnit 11 (Steve Boyd)
    • 2024-09-02 3c17f0a Bump webpack from 5.91.0 to 5.94.0 (dependabot[bot])
    • 2024-09-02 05bd761 Bump ws from 7.5.9 to 7.5.10 (dependabot[bot])
    • 2024-09-02 b677275 Bump braces from 3.0.2 to 3.0.3 (dependabot[bot])
    • 2024-09-01 9d1119f Bump requirejs from 2.3.6 to 2.3.7 (dependabot[bot])
    • 2024-08-22 d09dcd3 Limit PHP support for CMS 6 (#121) (Guy Sartorelli)
    • 2024-02-19 5a671c6 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/sharedraftcontent (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-18 02d5707 Update JS dependencies (Steve Boyd)
    • 2024-09-23 8859703 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-06 8a3bee5 Use PHPUnit 11 (Steve Boyd)
    • 2024-09-02 0a2db2e Bump webpack from 5.91.0 to 5.94.0 (dependabot[bot])
    • 2024-09-01 3d882fe Bump ws from 7.5.9 to 7.5.10 (dependabot[bot])
    • 2024-09-01 dd1fb54 Bump braces from 3.0.2 to 3.0.3 (dependabot[bot])
    • 2024-09-01 6dae96b Bump requirejs from 2.3.6 to 2.3.7 (dependabot[bot])
    • 2024-08-22 63abcb6 Limit PHP support for CMS 6 (#252) (Guy Sartorelli)
    • 2024-02-19 50a62a8 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/spamprotection (4.2.1 -> 5.0.0-alpha1)

    • 2024-09-10 83745f6 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 e500061 Limit PHP support for CMS 6 (#125) (Guy Sartorelli)
    • 2024-02-19 7034d11 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/lumberjack (3.2.0 -> 4.0.0-alpha1)

    • 2024-11-18 c7b68b9 Update JS dependencies (Steve Boyd)
    • 2024-09-06 a1ec4aa Use PHPUnit 11 (Steve Boyd)
    • 2024-09-02 ecf1804 Bump webpack from 5.91.0 to 5.94.0 (dependabot[bot])
    • 2024-09-02 a072159 Bump braces from 3.0.2 to 3.0.3 (dependabot[bot])
    • 2024-09-02 97dd7d3 Bump ws from 7.5.9 to 7.5.10 (dependabot[bot])
    • 2024-09-02 fe81132 Bump requirejs from 2.3.6 to 2.3.7 (dependabot[bot])
    • 2024-08-22 fdd85c2 Limit PHP support for CMS 6 (#166) (Guy Sartorelli)
    • 2024-02-19 765ec35 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/staticpublishqueue (6.2.2 -> 7.0.0-alpha1)

    • 2024-09-23 0bc277f Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-09 93160fa Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 f700b34 Limit PHP support for CMS 6 (#199) (Guy Sartorelli)
    • 2024-02-19 c56efb1 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/tagfield (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-18 d67c947 Update JS dependencies (Steve Boyd)
    • 2024-09-06 3a635b2 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 2b0c35d Limit PHP support for CMS 6 (#302) (Guy Sartorelli)
    • 2024-02-19 430bcb8 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/taxonomy (3.2.2 -> 4.0.0-alpha1)

    • 2024-09-06 63cca15 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 150a2db Limit PHP support for CMS 6 (#121) (Guy Sartorelli)
    • 2024-02-19 dadbc13 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/textextraction (4.1.1 -> 5.0.0-alpha1)

    • 2024-09-09 918c501 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 a3de9a6 Limit PHP support for CMS 6 (#100) (Guy Sartorelli)
    • 2024-02-19 cd5544b Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/userforms (6.3.0 -> 7.0.0-alpha1)

    • 2024-11-18 96f32f8 Update JS dependencies (Steve Boyd)
    • 2024-09-30 7466999 Bump framework dependency 'cause we're using new API (#1331) (Guy Sartorelli)
    • 2024-09-09 b060fa6 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 8e84d9d Limit PHP support for CMS 6 (#1318) (Guy Sartorelli)
    • 2024-02-19 3766006 Dependencies for CMS 6 (Steve Boyd)
  • dnadesign/silverstripe-elemental (5.3.0 -> 6.0.0-alpha1)

    • 2024-12-02 74195ea Bump cross-spawn from 7.0.3 to 7.0.6 (#1279) (dependabot[bot])
    • 2024-11-18 a228e1e Update JS dependencies (Steve Boyd)
    • 2024-09-23 69cc127 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-10 43d199a Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 bc77fd4 Limit PHP support for CMS 6 (#1238) (Guy Sartorelli)
    • 2024-02-19 c0bccd2 Dependencies for CMS 6 (Steve Boyd)
  • dnadesign/silverstripe-elemental-userforms (4.1.1 -> 5.0.0-alpha1)

    • 2024-09-09 8165bb4 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 8e5b917 Limit PHP support for CMS 6 (#99) (Guy Sartorelli)
    • 2024-02-19 a8fdbd0 Dependencies for CMS 6 (Steve Boyd)
  • symbiote/silverstripe-advancedworkflow (6.3.0 -> 7.0.0-alpha1)

    • 2024-11-18 c0fe3dd Update JS dependencies (Steve Boyd)
    • 2024-09-06 7d026a9 Use PHPUnit 11 (Steve Boyd)
    • 2024-09-01 579c1b8 Upgrade to symfony 7 (Steve Boyd)
    • 2024-08-22 a53744b Limit PHP support for CMS 6 (#549) (Guy Sartorelli)
    • 2024-02-19 89803ae Dependencies for CMS 6 (Steve Boyd)
  • symbiote/silverstripe-gridfieldextensions (4.1.0 -> 5.0.0-alpha1)

    • 2024-09-09 e380198 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 c3ddeb3 Limit PHP support for CMS 6 (#414) (Guy Sartorelli)
    • 2024-02-19 ad895ba Dependencies for CMS 6 (Steve Boyd)
  • symbiote/silverstripe-queuedjobs (5.2.0 -> 6.0.0-alpha1)

    • 2024-09-23 5b7aac0 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-18 44a56a2 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 ff6e224 Limit PHP support for CMS 6 (#443) (Guy Sartorelli)
    • 2024-02-19 66b45f5 Dependencies for CMS 6 (Steve Boyd)
  • tractorcow/silverstripe-fluent (7.2.0 -> 8.0.0-alpha1)

    • 2024-11-18 8bc9b29 Update JS dependencies (Steve Boyd)
    • 2024-09-23 36861c7 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-10 251ba11 Use PHPUnit 11 (Steve Boyd)
    • 2024-09-06 8264329 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-19 81ab6a8 Limit PHP support for CMS 6 (Guy Sartorelli)
    • 2024-02-22 16a092c Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/dynamodb (5.0.1 -> 6.0.0-alpha1)

    • 2024-09-06 986dac2 Use PHPUnit 11 (Steve Boyd)
    • 2024-02-19 0fb5763 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/linkfield (4.1.0 -> 5.0.0-alpha1)

    • 2024-11-18 e05e2f5 Update JS dependencies (Steve Boyd)
    • 2024-09-30 6e69617 Bump framework dependency 'cause we're using new API (#339) (Guy Sartorelli)
    • 2024-09-11 7593464 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 050df4a Limit PHP support for CMS 6 (#320) (Guy Sartorelli)
    • 2024-02-19 d5963df Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/graphql (5.2.3 -> 6.0.0-alpha1)

    • 2024-09-23 18ea458 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-11 f8222fb Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 69ed9a0 Limit PHP support for CMS 6 (#598) (Guy Sartorelli)
    • 2024-02-22 2455737 Use silverstripe/event-dispatcher ^2 (Steve Boyd)
    • 2024-02-19 d917a65 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/subsites (3.3.0 -> 4.0.0-alpha1)

    • 2024-09-23 9ea422b Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-09 100ccc9 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 3406b54 Limit PHP support for CMS 6 (#592) (Guy Sartorelli)
    • 2024-02-19 da4e3d5 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/blog (4.3.0 -> 5.0.0-alpha1)

    • 2024-11-18 51c3317 Update JS dependencies (Steve Boyd)
    • 2024-09-23 9127583 Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-10 1a03cb5 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 9768b27 Limit PHP support for CMS 6 (#777) (Guy Sartorelli)
    • 2024-02-20 9a99901 Dependencies for CMS 6 (Steve Boyd)
  • silverstripe/crontask (3.0.4 -> 4.0.0-alpha1)

    • 2024-09-23 cb2171c Increase minimum version of silverstripe/framework (Steve Boyd)
    • 2024-09-06 af00133 Use PHPUnit 11 (Steve Boyd)
    • 2024-08-22 6efcf5d Limit PHP support for CMS 6 (#91) (Guy Sartorelli)
    • 2024-02-19 2e970b2 Dependencies for CMS 6 (Steve Boyd)

Documentation

  • silverstripe/admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-06 663b7d00 Remove whitespace (Chris Lock)
    • 2024-11-05 8141da25 Change to suggested comment to make clearer (Chris Lock)
    • 2024-11-04 c59c64b3 Should be true to ignore (Chris Lock)
    • 2024-11-04 f6145372 Removing unecessary PHPDoc and adding context (Chris Lock)
  • silverstripe/siteconfig (5.3.0 -> 6.0.0-alpha1)

    • 2024-09-26 ba87fa5d Update docs to reflect changes in CLI interaction (#176) (Guy Sartorelli)
  • silverstripe/developer-docs (5.3.0 -> 6.0.0-alpha1)

    • 2024-12-03 65f2b9fc Update references from CMS 5 (#644) (Guy Sartorelli)
    • 2024-12-03 2acc2024 Add PHP 8.4 support (Steve Boyd)
    • 2024-11-28 63c767d6 Fix table rendering in CMS 6 changelog (#640) (Guy Sartorelli)
    • 2024-11-28 5b2b8b14 Modules loosing commercial support (Steve Boyd)
    • 2024-11-27 f759d16c Use FieldValidators for FormFieldValidation (Steve Boyd)
    • 2024-11-26 edf38cd4 Document code moved from cms to framework (#625) (Guy Sartorelli)
    • 2024-11-26 f0da28b3 Document deprecations as a result of refactoring ModalController (#637) (Guy Sartorelli)
    • 2024-11-26 0bceb743 Add campaign admin deprecations to changelog (Steve Boyd)
    • 2024-11-25 08ebe871 Fixing documentation link (#636) (3Dgoo)
    • 2024-11-24 bac107e3 Document including attributes in formfield schema data (#630) (Guy Sartorelli)
    • 2024-11-21 5f9f4d9d Add campaign admin deprecations to changelog (Steve Boyd)
    • 2024-11-21 5dfdea0d FormField::validate() deprecation notice (Steve Boyd)
    • 2024-11-19 1bd9c2c2 Update JS MIME type, remove type in &lt;script&gt; tags https://github.com/silverstripe/silverstripe-framework/pull/11446, fix few typos (Lukas Erni)
    • 2024-11-19 784ec42d Document new FormSchemaController (#628) (Guy Sartorelli)
    • 2024-11-14 b14da4ff Document deprecated API (#629) (Guy Sartorelli)
    • 2024-11-14 ccfa227e FormField deprecations (Steve Boyd)
    • 2024-11-14 b1a5f0b2 Document new class_description and deprecated DBEnum::flushCache() (#626) (Guy Sartorelli)
    • 2024-11-07 13b6f0f5 Validate DBFields (Steve Boyd)
    • 2024-11-06 522f5984 Document API that is being removed (#624) (Guy Sartorelli)
    • 2024-11-06 c525d146 Document new SingleRecordAdmin class (#609) (Guy Sartorelli)
    • 2024-11-06 d39e9dee Document moving template engine into its own module (#622) (Guy Sartorelli)
    • 2024-11-05 2254bcc9 Document deprecations for migrating the template engine (#623) (Guy Sartorelli)
    • 2024-11-04 fd06b846 Updated using suggested changes (Chris Lock)
    • 2024-11-04 7263e714 fixing the bad placement of quote (Chris Lock)
    • 2024-11-04 ed7b68fd Remove &quot;unreleased&quot; from 5.3.0 changelog (#620) (Guy Sartorelli)
    • 2024-11-01 a9bcefff Fixing the URL for React Dev tools (Chris Lock)
    • 2024-11-01 a555ba23 Adding missing quote on routing example (Chris Lock)
    • 2024-10-31 864eb507 Document deprecation of some API (#616) (Guy Sartorelli)
    • 2024-10-30 9f14ed6e Document changes to template layer (#591) (Guy Sartorelli)
    • 2024-10-30 9daf8d5a List interface deprecations (Steve Boyd)
    • 2024-10-30 b3c25697 Add details about Reports Admin update (#614) (nate)
    • 2024-10-29 6acc0742 Update changelog with list interface changes (Steve Boyd)
    • 2024-10-25 436c4c9a Document changes to when Flushable gets flushed (#607) (Guy Sartorelli)
    • 2024-10-24 945cc3e3 Document deprecation (#608) (Guy Sartorelli)
    • 2024-10-21 4fabad47 Document deprecations for template layer refactor (#594) (Guy Sartorelli)
    • 2024-10-21 ee7d7ca4 Update data provider docs (Steve Boyd)
    • 2024-10-21 d01a317c Add validations related to DBField (Steve Boyd)
    • 2024-10-20 ca51cdf7 Document new AdminController (#598) (Guy Sartorelli)
    • 2024-10-19 a4853bc2 Add entry about utf8mb4 encoding update to changelog (Maxime Rainville)
    • 2024-10-17 46384e87 Update deprecation docs (Steve Boyd)
    • 2024-10-13 c6afec4e Document new methods on GridFieldFilterHeader (#597) (Guy Sartorelli)
    • 2024-10-11 5a76f07c DB read-only replicas (Steve Boyd)
    • 2024-10-02 97d473e7 Document using symfony/validator logic (#590) (Guy Sartorelli)
    • 2024-09-27 6cc343c2 Document some more deprecations (#589) (Guy Sartorelli)
    • 2024-09-26 2cc70918 Document changes to CLI interaction (#571) (Guy Sartorelli)
    • 2024-09-23 9ec893b0 Document renamed classes (#584) (Guy Sartorelli)
    • 2024-09-19 cc2ea0f4 Update deprecation warning docs (#588) (Guy Sartorelli)
    • 2024-09-17 c26b2a7b Update PHPUnit code sample (Steve Boyd)
    • 2024-09-13 2142034c Document deprecated API and a few new features (#580) (Guy Sartorelli)
    • 2024-09-12 c1b641bc Document deprecating classes which will be renamed (#585) (Guy Sartorelli)
    • 2024-09-11 5df95325 Minor tweaks to the CMS 6 changelog (#582) (Guy Sartorelli)
    • 2024-09-10 98e36cb0 Changing ClassName from Enum to Varchar (Steve Boyd)
    • 2024-09-05 d46ec6da Deprecate TopPage classes that are being renamed (Steve Boyd)
    • 2024-09-04 f0fe8eeb Rename TopPage classes (Steve Boyd)
    • 2024-09-03 7cad7df2 Updated symfony dependencies (Steve Boyd)
    • 2024-08-29 b5a8f844 Remove GraphQL (Steve Boyd)
    • 2024-08-29 57821837 Remove support for MySQL 5 (Steve Boyd)
    • 2024-08-29 334a9af1 Replace Extension subclasses (Steve Boyd)
    • 2024-08-27 ced3de0f Update typehints in docs (#569) (Guy Sartorelli)
    • 2024-08-27 9b76456f Document standardisation of extension hooks (#558) (Guy Sartorelli)
    • 2024-08-25 3f9c5543 Document standardised CMSEditLink method (#557) (Guy Sartorelli)
    • 2024-08-22 9f9712df Remove links to legacy lessons (#568) (Guy Sartorelli)
    • 2024-08-22 e79597dc Limit PHP support for CMS 6 (#560) (Guy Sartorelli)
    • 2024-08-19 4c5136ff Remove widgets (Steve Boyd)
    • 2024-08-15 4fda778b Document the changes to canDelete() and canArchive for versioning (#551) (Guy Sartorelli)
    • 2024-08-15 097a6643 Document SiteTree form field scaffolding (#550) (Guy Sartorelli)
    • 2024-07-23 bbacccf6 Document upgrading intervention/image (#547) (Guy Sartorelli)
    • 2024-07-12 5b4516f5 Document changes to caching (#543) (Guy Sartorelli)
    • 2024-07-02 0541b0e9 Document changes to scaffolded fields (#540) (Guy Sartorelli)
    • 2024-07-01 21fe47c5 Modules no longer need to have a _config.php file or _config directory (Steve Boyd)
    • 2024-06-11 beeb3e3e Document removal of BaseElement::getDescription() (#531) (Guy Sartorelli)
    • 2024-05-24 72d0ed5e Document ability to loop over arrays in templates (#517) (Guy Sartorelli)
    • 2024-05-22 a3cc2d80 Protected extension hook implementations in changelog (Steve Boyd)
    • 2024-05-21 9b43ff0c Update extension hook examples to be protected (Steve Boyd)
    • 2024-05-14 e0743c47 FieldList is now strongly typed (Steve Boyd)
    • 2024-04-18 77c32107 Document new parameter for DataObject::write() (#499) (Guy Sartorelli)
    • 2024-03-04 1f82631a Document change to CanonicalURLMiddleware defaults (#465) (Will Rossiter)
  • silverstripe/hybridsessions (3.0.5 -> 4.0.0-alpha1)

    • 2024-09-10 7516a54 Update docs to reflect changes in CLI interaction (Guy Sartorelli)
  • silverstripe/totp-authenticator (5.3.0 -> 6.0.0-alpha1)

    • 2024-05-21 d262b33 Update extension hook examples to be protected (Steve Boyd)
  • silverstripe/mfa (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-25 73d11ed Remove mention of webauthn module (Steve Boyd)
    • 2024-05-21 7ba5f41 Update extension hook examples to be protected (Steve Boyd)
  • silverstripe/spamprotection (4.2.1 -> 5.0.0-alpha1)

    • 2024-09-26 16a447e Update docs to reflect changes in CLI interaction (#127) (Guy Sartorelli)
  • silverstripe/tagfield (3.3.0 -> 4.0.0-alpha1)

    • 2024-09-26 5f7fb88 Update docs to reflect new sake commands (#307) (Guy Sartorelli)
  • silverstripe/taxonomy (3.2.2 -> 4.0.0-alpha1)

    • 2024-09-26 d57fa75 Update docs to reflect changes in CLI interaction (#123) (Guy Sartorelli)
  • dnadesign/silverstripe-elemental (5.3.0 -> 6.0.0-alpha1)

    • 2024-05-21 2ec4a66 Update extension hook examples to be protected (Steve Boyd)
  • symbiote/silverstripe-queuedjobs (5.2.0 -> 6.0.0-alpha1)

    • 2024-05-21 5ef6d92 Update extension hook examples to be protected (Steve Boyd)
  • tractorcow/silverstripe-fluent (7.2.0 -> 8.0.0-alpha1)

    • 2024-05-21 27fd72e Update extension hook examples to be protected (Steve Boyd)
  • silverstripe/graphql (5.2.3 -> 6.0.0-alpha1)

    • 2024-09-10 c96ebb3 Set metadata of docs base (Steve Boyd)

Translations

  • silverstripe/framework (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-05 a43a7599b Update translations (Steve Boyd)
    • 2024-11-04 0b9a82827 Update translations (Steve Boyd)
  • silverstripe/admin (2.3.0 -> 3.0.0-alpha1)

    • 2024-11-05 f06f08eb Update translations (Steve Boyd)
  • silverstripe/reports (5.3.0 -> 6.0.0-alpha1)

    • 2024-11-05 727c480d Update translations (Steve Boyd)
    • 2024-11-04 1afc0857 Update translations (Steve Boyd)
  • silverstripe/sharedraftcontent (3.3.0 -> 4.0.0-alpha1)

    • 2024-11-05 8a0d16e Update translations (Steve Boyd)
  • silverstripe/spamprotection (4.2.1 -> 5.0.0-alpha1)

    • 2024-08-06 63d7350 Update translations (#124) (Guy Sartorelli)
  • dnadesign/silverstripe-elemental-userforms (4.1.1 -> 5.0.0-alpha1)

    • 2024-08-06 cf1d863 Update translations (#98) (Guy Sartorelli)
  • silverstripe/blog (4.3.0 -> 5.0.0-alpha1)

    • 2024-11-05 998dee9 Update translations (Steve Boyd)
    • 2024-11-04 c886004 Update translations (Steve Boyd)

Other changes

  • silverstripe/framework (5.3.0 -> 6.0.0-alpha1)

    • 2024-10-27 5ac1b85ac Remove default type in script tag and replace application/javascript with text/javascript (Lukas Erni)
    • 2024-09-14 5fa88663b feat: support defining MySQLi flags (Will Rossiter)
    • 2024-09-13 6a3659d69 Various deprecations and a few features (#11365) (Guy Sartorelli)
  • silverstripe/errorpage (2.3.0 -> 3.0.0-alpha1)

    • 2024-10-22 648cd87 Add extension hooks for static file writing (Dylan Wagstaff)
  • silverstripe/reports (5.3.0 -> 6.0.0-alpha1)

    • 2024-10-14 556cb366 PR fixes. (Mojmir Fendek)
  • tractorcow/silverstripe-fluent (7.2.0 -> 8.0.0-alpha1)

    • 2024-11-19 c4685cb skip adding fluent actions menu if it already exists (Florian Thoma)
    • 2024-08-20 de6c50b branch '7' into 8 (Guy Sartorelli)