Version 5 supported

5.0.0

Silverstripe CMS 5.0.0 is the first major release since November 2017. It's also the first major release since the adoption of a formal Major Release Policy.

This release contains many breaking changes and dependency upgrades. We tried our best to minimise upgrades woes, but you should allocate additional time to account for regression testing.

This changelog provides a list of changes between Silverstripe CMS 4.13 and 5.0.

Overview

Included module versions
ModuleVersion
bringyourownideas/silverstripe-composer-update-checker4.0.0
bringyourownideas/silverstripe-maintenance3.0.0
colymba/gridfield-bulk-editing-tools4.0.0
cwp/agency-extensions3.0.0
cwp/cwp3.0.0
cwp/cwp-core3.0.0
cwp/cwp-search2.0.0
cwp/starter-theme4.0.0
cwp/watea-theme4.0.0
dnadesign/silverstripe-elemental5.0.0
dnadesign/silverstripe-elemental-userforms4.0.0
silverstripe/admin2.0.0
silverstripe/asset-admin2.0.0
silverstripe/assets2.0.0
silverstripe/auditor3.0.0
silverstripe/blog4.0.0
silverstripe/campaign-admin2.0.0
silverstripe/ckan-registry2.0.0
silverstripe/cms5.0.0
silverstripe/comment-notifications3.0.0
silverstripe/comments4.0.0
silverstripe/config2.0.0
silverstripe/content-widget3.0.0
silverstripe/contentreview5.0.0
silverstripe/crontask3.0.0
silverstripe/developer-docs5.0.0
silverstripe/documentconverter3.0.0
silverstripe/dynamodb5.0.0
silverstripe/elemental-bannerblock3.0.0
silverstripe/elemental-fileblock3.0.0
silverstripe/environmentcheck3.0.0
silverstripe/errorpage2.0.0
silverstripe/externallinks3.0.0
silverstripe/framework5.0.0
silverstripe/fulltextsearch4.0.0
silverstripe/graphql5.0.0
silverstripe/gridfieldqueuedexport3.0.0
silverstripe/hybridsessions3.0.0
silverstripe/iframe3.0.0
silverstripe/installer5.0.0
silverstripe/ldap2.0.0
silverstripe/login-forms5.0.0
silverstripe/lumberjack3.0.0
silverstripe/mfa5.0.0
silverstripe/mimevalidator3.0.0
silverstripe/realme5.0.0
silverstripe/recipe-authoring-tools2.0.0
silverstripe/recipe-blog2.0.0
silverstripe/recipe-ccl3.0.0
silverstripe/recipe-cms5.0.0
silverstripe/recipe-collaboration2.0.0
silverstripe/recipe-content-blocks3.0.0
silverstripe/recipe-core5.0.0
silverstripe/recipe-form-building2.0.0
silverstripe/recipe-kitchen-sink5.0.0
silverstripe/recipe-plugin2.0.0
silverstripe/recipe-reporting-tools2.0.0
silverstripe/recipe-services2.0.0
silverstripe/recipe-solr-search3.0.0
silverstripe/registry3.0.0
silverstripe/reports5.0.0
silverstripe/restfulserver3.0.0
silverstripe/securityreport3.0.0
silverstripe/segment-field3.0.0
silverstripe/session-manager2.0.0
silverstripe/sharedraftcontent3.0.0
silverstripe/siteconfig5.0.0
silverstripe/sitewidecontent-report4.0.0
silverstripe/spamprotection4.0.0
silverstripe/staticpublishqueue6.0.0
silverstripe/subsites3.0.0
silverstripe/tagfield3.0.0
silverstripe/taxonomy3.0.0
silverstripe/textextraction4.0.0
silverstripe/totp-authenticator5.0.0
silverstripe/userforms6.0.0
silverstripe/vendor-plugin2.0.0
silverstripe/versioned2.0.0
silverstripe/versioned-admin2.0.0
silverstripe/versionfeed3.0.0
silverstripe/webauthn-authenticator5.0.0
silverstripe/widgets3.0.0
symbiote/silverstripe-advancedworkflow6.0.0
symbiote/silverstripe-gridfieldextensions4.0.0
symbiote/silverstripe-multivaluefield6.0.0
symbiote/silverstripe-queuedjobs5.0.0
tractorcow/silverstripe-fluent7.0.0

Change to supported modules

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

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

Modules with upgrade guides

silverstripe/graphql and tractorcow/silverstripe-fluent each have multiple major release lines which are compatible with Silverstripe CMS 4. If you use either of these modules, you should upgrade to the latest CMS 4 compatible version before upgrading to CMS 5.

Modules not supported going forward

Some modules that were commercially supported in Silverstripe CMS 4 are not supported in Silverstripe CMS 5. Some of those modules provide CMS5-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 help maintain some of the modules that are no longer commercially supported.

ModuleStatusNotes
bringyourownideas/silverstripe-composer-security-checkerDroppedUnderlying service has been discontinued.
composer/installersRemovedCalling Composer a "supported module" was nonsensical. The Silverstripe CMS development team has no access to manage Composer or the underlying Packagist service. Composer is a development tool required to build Silverstripe CMS sites, not a module maintained by Silverstripe.
cwp-themes/defaultDropped
cwp/cwpCMS5 compatible without commercial support
cwp/cwp-coreCMS5 compatible without commercial support
cwp/cwp-pdfexportDropped
cwp/cwp-searchCMS5 compatible without commercial support
dnadesign/silverstripe-elemental-subsitesDroppedElemental works fine with Subsite out-of-the-box.
hafriedlander/phockitoDropped
hafriedlander/silverstripe-phockitoDropped
lekoala/silverstripe-debugbarCMS5 compatible without commercial supportDebug bar is a development tool that should not be installed in production.
silverstripe/activedirectoryDroppedThis module was split into two separate modules. Use the silverstripe/saml and/or silverstripe/ldap modules depending on your needs. Note that the silverstripe/saml module is not commercially supported.
silverstripe/akismetDroppedThe parent library is outdated and there are better alternatives like UndefinedOffset/silverstripe-nocaptcha
silverstripe/behat-extensionCMS5 compatible without commercial support
silverstripe/ckan-registryCMS5 compatible without commercial support
silverstripe/comment-notificationsCMS5 compatible without commercial support
silverstripe/commentsCMS5 compatible without commercial support
silverstripe/content-widgetCMS5 compatible without commercial support
silverstripe/fulltextsearchCMS5 compatible without commercial support
silverstripe/graphql-devtoolsCMS5 compatible without commercial support
silverstripe/html5Folded back in core
silverstripe/postgresqlCMS5 compatible without commercial support
silverstripe/recipe-cclCMS5 compatible without commercial support
silverstripe/recipe-solr-searchCMS5 compatible without commercial support
silverstripe/security-extensionsFolded back in core
silverstripe/spellcheckDropped
silverstripe/sqlite3CMS5 compatible without commercial support
silverstripe/widgetsCMS5 compatible without commercial support
tijsverkoyen/akismetDropped
tractorcow/classproxyCMS5 compatible without commercial support
tractorcow/silverstripe-proxy-dbCMS5 compatible without commercial support
undefinedoffset/sortablegridfieldCMS5 compatible without commercial supportsymbiote/silverstripe-gridfieldextensions provides equivalent functionality.

Fixed dependencies

Silverstripe CMS relies on third party dependencies to implement many features. We have defined several fixed dependencies to provide certainty to Silverstripe CMS project owners and minimise the risk of composer conflicts. These dependencies will not be upgraded to new major versions within the Silverstripe CMS 5 release line.

Review Silverstripe CMS 5 fixed dependencies for more details.

Dependency changes

General changes

  • swiftmailer/swiftmailer has been removed and replaced with symfony/mailer
  • Various Symfony dependencies have been upgraded from 4.x to 6.x. A small number of code changes were made in silverstripe/framework to work with the symfony 6.x dependencies.
  • silverstripe/graphql v3 is no longer supported. It is recommended that you ensure you are using silverstripe/graphl v4 in your Silverstripe CMS 4 project before upgrading to Silverstripe CMS 5.

  • PHPUnit 5.7 is no longer supported. It is recommended that you ensure your tests are running with PHPUnit 9 in your Silverstripe CMS 4 project before upgrading to Silverstripe CMS 5.

  • masterminds/html5 is now used to parse HTML content instead of DomDocument::loadHTML(). This may cause slight changes in rendered content if the content being saved contains invalid HTML. The silverstripe/html5 module is no longer required for rendering HTML 5 content and should be removed from your project.

Composer

Silverstripe CMS 5 requires Composer 2.

If your hosting provider runs Composer commands for you on deployment, you'll need to make sure they are using Composer 2 before attempting to deploy. For Silverstripe Cloud and Silverstripe Cloud Public Sector customers, make sure your stack is using Code Builder version 2.

TinyMCE upgraded from 4 to 6

TinyMCE has been upgraded up two major versions from 4 to 6. The API for HTMLEditorConfig and TinyMCEConfig haven't changed at all, but there have been some changes to plugins and options which may affect your projects. Here are some notable changes:

  • The styleselect option for selecting a CSS style has changed to styles.
  • The spellchecker plugin is now a premium "Spell Checker Pro" plugin through TinyMCE cloud (though the browser_spellcheck options still works and is enabled by default).
  • The paste from Microsoft Word functionality is now part of a premium "PowerPaste" plugin through TinyMCE cloud.

  • The UI API has changed, which will affect any custom plugins you may be using. Notably:

    • most addX() functions have been moved from editor to editor.ui.registry - e.g. editor.addButton() is now editor.ui.registry.addButton().
    • onclick functions on buttons have been changed to onAction.

There were a lot more changes than just those, so you may want to also check out the following resources:

Front-end build stack upgrades

"Front-end" in this section refers to the JavaScript and CSS in the CMS. It doesn't have any impact on your website's public-facing front-end.

We've upgraded the front-end build stack for the CMS, along with most of the JavaScript dependencies.

Webpack config

The @silverstripe/webpack-config and @silverstripe/eslint-config NPM libraries, along with the build stack for all supported modules, have been updated to be compatible with node 18 and webpack 5. This will only impact you if your module or project uses one or both of those NPM packages - you will need to make sure you update your own dependencies to be compatible with them, along with the dependencies listed below if you use them.

@silverstripe/webpack-config has a new optional abstracted API to declare the webpack config for transpiling the JavaScript and CSS for your CMS customisations.

Review the @silverstripe/webpack-config read me to get the list of new APIs and usage documentation.

You can continue to use the old API if you want to, but you will need to account for the following breaking changes:

  • The UglifyJsPlugin is no longer used to remove comments from transpiled code. Refer to the optimisation config in the abstracted JavascriptWebpackConfig class instead.
  • script-loader, file-loader, and url-loader have all been replaced with the relevant webpack assets configuration.
  • ExtractTextPlugin and its associated configuration has been replaced with MiniCssExtractPlugin.
  • Supported browser configuration has been replaced with setting an appropriate browserslist configuration in your package.json file.

Updated JavaScript dependencies

The following JavaScript dependencies (which are used in the CMS, and may impact your customisations) have been updated to new major versions, or replaced:

old package and versionnew package and versionupgrade guide
apollo-client ^2.3.1@apollo/client ^3.7.1upgrade guide
apollo-cache-inmemory ^1.2.1@apollo/client ^3.7.1upgrade guide
apollo-link ^1.2.2@apollo/client ^3.7.1upgrade guide
apollo-link-batch-HTTP ^1.2.1@apollo/client ^3.7.1upgrade guide
apollo-link-error ^1.0.9@apollo/client ^3.7.1upgrade guide
apollo-link-HTTP ^1.5.4@apollo/client ^3.7.1upgrade guide
apollo-link-state ^0.4.1@apollo/client ^3.7.1upgrade guide
GraphQL ^14.0.0GraphQL ^16.6.0GitHub changelog
merge ^1.2.1merge ^2.1.1N/A
react ^16.6.1react ^18.2.0upgrade guide
react-apollo ^2.1.0@apollo/client ^3.7.1upgrade guide
react-redux ^5.0.7react-redux ^8.0.5GitHub changelog
react-router ^4.4.0react-router ^6.7upgrade guide
react-router-config ^4.4.0react-router ^6.7upgrade guide
react-router-dom ^4.4.0react-router-dom ^6.7upgrade guide
react-select ^1.3react-select ^5.5.8upgrade guides
redux-form ^7.4.2redux-form ^8.3.8GitHub changelogs
validator ^6.1.0validator ^13.7.0changelog
dropzone ^5.7.2dropdown ^6.0.0-beta.2changelog

Common upgrade patterns

While upgrading core modules, there were a few common patterns we found that might be useful for you. Those are listed here for your convenience.

ReactDOM.render() replaced with ReactDOM.createRoot().render()

If you are injecting a React component in a section of the CMS that uses entwine, you likely have something like this:

import React from 'react';
import ReactDOM from 'react-dom';

$('.grid-field').entwine({
  onmatch() {
    ReactDOM.render(<MyComponent />, this[0]);
  },

  onunmatch() {
    const container = this[0];
    if (container) {
      ReactDOM.unmountComponentAtNode(container);
    }
  },
});

Instead of using ReactDOM.render(), you should now call ReactDOM.createRoot().render() - but if you try to use createRoot() multiple times on the same element, react will complain, so you'll want to keep a reference to the root you made the first time. The above example turns into this:

import React from 'react';
import ReactDOM from 'react-dom';

$('.grid-field').entwine({
  ReactRoot: null,

  onmatch() {
    let root = this.getReactRoot();
    if (!root) {
      root = ReactDOM.createRoot(this[0]);
    }
    root.render(<MyComponent />);
    this.setReactRoot(root);
  },

  onunmatch() {
    const root = this.getReactRoot();
    if (root) {
      root.unmount();
      this.setReactRoot(null);
    }
  },
});

React route paths are now relative to their parent routes

The update to react-router has changed the paths for routes in react-only sections of the CMS (such as /admin/assets) to be relative to the parent routes. If you have a custom react CMS section, you'll need to make sure you're using the relative path. This is included as reactRoutePath in the array returned by LeftAndMain::getClientConfig() by default, but you may need to double check your custom admin section is returning the correct value.

Then, in your JavaScript implementation where you are adding your route to the ReactRouteRegister, simply change your route's path from using the url key to use the new reactRoutePath key.

  import ConfigHelpers from 'lib/Config';
  import reactRouteRegister from 'lib/ReactRouteRegister';
  import MyAdmin from './MyAdmin';

  document.addEventListener('DOMContentLoaded', () => {
      const sectionConfig = ConfigHelpers.getSection('MyAdmin');
      reactRouteRegister.add({
-         path: sectionConfig.url,
+         path: sectionConfig.reactRoutePath,
          component: MyAdminComponent,
      });
  });

react-router no longer has a withRouter HOC

In the old version of react-router, the withRouter Higher Order Component could be used to wrap your component which needs access to the router and its functionality.

This has been removed. The ideal way to upgrade is to rewrite your components to work with the new API as per the upgrade guide referenced in the table above.

If you don't have time or resources to rewrite your components, we do have a temporary solution for you - but bear in mind that this is just kicking the can down the road. You will have to upgrade to use the new react-router API eventually.

Silverstripe CMS 5 includes a replacement withRouter Higher Order Component that you can use until you have the resources necessary to upgrade properly. It passes different props than the old one did, so you will still need to make some changes. For example:

import React, { Component } from 'react';
import PropTypes from 'prop-types';
import { withRouter } from 'react-router-dom';

class MyAdmin extends Component {
  // Your implementation here
}

MyAdmin.propTypes = {
  location: PropTypes.shape({
    pathname: PropTypes.string,
    query: PropTypes.object,
    search: PropTypes.string,
  }),
  match: PropTypes.shape({
    params: PropTypes.shape({
      view: PropTypes.string,
      id: PropTypes.number,
    }),
  }),
  // eslint-disable-next-line react/no-unused-prop-types
  history: PropTypes.object,
};

export default withRouter(MyAdmin);

The above expects the match and history props from the withRouter HOC. These are no longer passed. What's more, you don't have to declare your own proptypes, we've exported that for you. The above now becomes this:

import React, { Component } from 'react';
import withRouter, { routerPropTypes } from 'lib/withRouter';

class MyAdmin extends Component {
  // Your implementation here
}

MyAdmin.propTypes = {
  // eslint-disable-next-line react/no-unused-prop-types
  router: routerPropTypes,
};

export default withRouter(MyAdmin);

Our new withRouter HOC passes in a single prop called router which has the following PropTypes definition:

PropTypes.shape({
  location: PropTypes.shape({
    pathname: PropTypes.string,
    query: PropTypes.object,
    search: PropTypes.string,
  }),
  navigate: PropTypes.func,
  params: PropTypes.object,
});

router.params is a one-to-one replacement for the old match.params, and router.location is a one-to-one replacement for the old location prop.

Refer to the upgrade guide from the table above to learn how to replace the old history prop with the new router.navigate prop.

Breaking changes in our JavaScript components or API

For the most part, we were able to retain our existing API and not make any drastic changes to our react components through upgrading our dependencies, but there was one notable exception.

To conform with the API changes in the new version of react-select, the TreeDropdownField component has changed considerably, and the TreeDropdownFieldMenu component has been removed entirely.

If you were customising the TreeDropdownField React component at all or injecting a custom version of TreeDropdownFieldMenu, you will want to take a look at the source code for the TreeDropdownField component and maybe have a look at the upgrade guides for react-select referenced in the table above to see what changes you need to make.

Some of the CSS classes related to TreeDropdownField have also changed, as a result of the upgrade to react-select.

Other breaking changes

URLs generated by Silverstripe CMS don't include a trailing slash by default

The URLs generated by Silverstripe CMS have previously been inconsistent as to whether a trailing slash is included or not. This lead to the creation of at least one module which normalises the trailing slash at the end of URLs.

By default, all URLs created by Silverstripe CMS do not end with a slash. You can configure this to instead explicitly add a trailing slash to all URLs with the following YML configuration:

SilverStripe\Control\Controller:
  add_trailing_slash: true

Because this can be controlled with configuration, it is best practice to avoid explicitly expecting a trailing slash to either be present or be omitted.

In PHP, you can use methods like Controller::join_links() or Controller::normaliseTrailingSlash().

For JavaScript in your CMS customisations, we recommend using the joinUrlPaths() utility function from silverstripe/admin. You can access this method with import { joinUrlPaths } from 'lib/urls; if your project uses @silverstripe/webpack-config.

In your templates, you should use appropriate methods from your controller or model such as SiteTree::Link() which uses Controller::join_links() under the hood.

By default, the CanonicalURLMiddleware redirects traffic to include or omit the trailing slash according to the above configuration. This means that traffic directed to /about-us/ will be redirected to /about-us. You can disable this behaviour with the following YML configuration:

SilverStripe\Core\Injector\Injector:
  SilverStripe\Control\Middleware\CanonicalURLMiddleware:
    properties:
      enforceTrailingSlashConfig: false

Redirects will not be performed for any route starting with admin/ or dev/ by default. You can configure this, as well as exclude specific user agents from being redirected, with the following YML configuration:

SilverStripe\Core\Injector\Injector:
  SilverStripe\Control\Middleware\CanonicalURLMiddleware:
    properties:
      enforceTrailingSlashConfigIgnorePaths:
        - 'my-ajax-controller/'
      enforceTrailingSlashConfigIgnoreUserAgents:
        - 'my-dev-user-agent'

CWP agency extensions

The cwp/agency-extensions module used to provide a Font Awesome v4 plugin for TinyMCE 4. This plugin is not compatible with TinyMCE 6 and we couldn't see an appropriate alternative plugin to use instead. We have opted to remove this plugin without replacing it.

If your project has no content which used the Font Awesome plugin provided by this module, you don't need to make any changes - though you can remove the CWP_AGENCY_DISABLE_FONTAWESOME_PLUGIN environment variable from your .env file if it was set.

If your project does have some content which contains Font Awesome icons from that plugin, you will need to set CWP_AGENCY_ENABLE_FONTAWESOME_STYLES to true in your environment variables. This will allow you to see the existing icons in the TinyMCE field in the CMS, as well as ensuring that they will not be removed when you save content. The front-end will not be impacted, as you already had to inject an appropriate stylesheet into the front-end for the icons to appear there.

If you cannot set environment variables in your project, you can set the following configuration manually in your project:

// app/_config.php
use SilverStripe\Forms\HTMLEditor\TinyMCEConfig;

TinyMCEConfig::get('cwp')->setOption(
    'extended_valid_elements',
    $cwpEditor->getOption('extended_valid_elements')
    . ',span[class|align|style|aria-hidden]'
);
# app/_config/font-awesome.yml
SilverStripe\Forms\HTMLEditor\TinyMCEConfig:
  editor_css:
    - "https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"

If you need the ability to add icons in your content, a suitable alternative may be the emoticons plugin for TinyMCE 6. You can compare the icons provided by that plugin with the icons in Font Awesome v4 to see if it would be a suitable replacement for your project.

silverstripe/security-extensions module is folded into core

The functionality from silverstripe/security-extensions has been folded into the core modules. You no longer need to install that module to benefit from the features it provided - and indeed there will not be a CMS 5 compatible version of that module. If you have silverstripe/security-extensions as a dependency in your composer.json file, you will need to remove it.

With this change you now have access to the following features:

Require password change on next log in

Administrators with the ability to administer members can see a Requires password change on next log in checkbox in the CMS under the area to set the member's password. Checking this box will set the password expiry to the current date. The next time the member logs in, they will be required to choose a new password for their account.

No change is made when setting this field and the password expiry has already been set to a past date. Similarly, no change is made when unchecking the field and the password expiry date is in the future. The checkbox is for immediately requiring a new password on the next log in.

See the secure coding section for information about setting the password expiry itself, or the "Changing and managing users" user help guide to see how this appears to the user.

Sudo mode

Sudo mode represents a heightened level of permission in that you are more certain that the current user is actually the person whose account is logged in. This is performed by re-validating that the account's password is correct, and will then last for a certain amount of time (configurable) until it will be checked again.

Out of the box, this is currently only used by the silverstripe/mfa module - see Managing your MFA settings - but you can use it in your own projects as well. Read the Sudo Mode documentation to find out how.

Note that as part of this change, the namespaces of several classes changed. Refer to the table below if you were referencing these classes (e.g. to set configuration values or replace classes via dependency injection).

Old namespaceNew namespace
SilverStripe\SecurityExtensions\Control\SudoModeControllerSilverStripe\Admin\SudoModeController
SilverStripe\SecurityExtensions\Service\SudoModeServiceSilverStripe\Security\SudoMode\SudoModeService
SilverStripe\SecurityExtensions\Service\SudoModeServiceInterfaceSilverStripe\Security\SudoMode\SudoModeServiceInterface

Features and enhancements

Extension changes

Extension classes don't expose protected methods, but they can be used for extension hooks. This reduces the surface of methods exposed from your extensions into Extensible classes. For example, you might have a protected function updateCMSFields() method which is called after writing some DataObject - but because this method is protected, it cannot be accessed directly from the DataObject instances. You can still expose some method from the Extension by making it public - and that method can be accessed directly from the DataObject instances.

When invoking an extension hook (e.g. via extend()), methods prefixed with "extend" take precedence. i.e. if an Extension class has a onAfterWrite() method and an extendOnAfterWrite() method and you call $this->extend('onAfterWrite') - the extendOnAfterWrite() method on that Extension will be called, and onAfterWrite() will not. This empowers advanced Extension functionality such as Versioned::canPublish() which invokes $owner->extendedCan('canPublish') but doesn't result in a cycle, because the same class also implements extendCanPublish().

Other new features

  • DataObject::get_one() can now be called directly from subclasses of DataObject without passing in a class as the first argument (e.g. SiteTree::get_one(filter: ['Title:startsWith' => 'About'])).
  • Strings returned from the getSummary() method in elemental blocks are automatically displayed as the summary for the element in the ElementalArea - this no longer needs to be manually added in provideBlockSchema().
  • The elemental TopPage DataExtension is applied to BaseElement and ElementalArea by default, and the corresponding SiteTreeExtension is applied to SiteTree by default. This allows you to use $TopPage in your elemental block templates as a more performant alternative to $Page when referring to the page the element belongs to.
  • Void HTML elements such as <img> are no longer rendered as self-closing tags e.g. <img src="foo" alt="bar"> is now rendered, previously <img src="foo" alt="bar" /> was rendered.
  • It’s now possible to hook into FormField validation via the updateValidationResult extension hook. Module authors releasing form fields should opt-in to this functionality by calling the new extendValidationResult method to enable developers to extend and customise validation. See the form validation documentation for more information.

Environment variable changes

  • SS_MANIFESTCACHE can no longer use the now removed symfony/cache 4.x "Simple" cache classes e.g. Symfony\Component\Cache\Simple\PhpFilesCache. Instead, use the corresponding "Adapter" class e.g. Symfony\Component\Cache\Adapter\PhpFilesAdapter.
  • APP_SMTP_USERNAME and APP_SMTP_PASSWORD have been removed. Use a MAILER_DSN environment variable instead to configure SMTP email (see the email documentation for more details).
  • MySQLPDODatabase is no longer a valid option for the SS_DATABASE_CLASS environment variable. Use MySQLDatabase instead.

Bug fixes

  • If a page which is a child of a root-level page gets archived, and then its former parent is removed, it can only be restored if can_be_root for that page's class is true.

API changes

This is a major release and contains many breaking API changes. Deprecation warnings have been added to the Silverstripe CMS 4.13 release to advise you of APIs that have been removed in Silverstripe CMS 5.

Enable deprecation warnings prior to upgrading to Silverstripe CMS 5 to see if your project relies on APIs that are no longer available.

General changes

  • SecurityAdmin is a SilverStripe\Admin\ModelAdmin.

    • Previous extension hook implementations of SecurityAdmin::updateEditForm($form) still works as the extension hook is called in ModelAdmin::getEditForm().
    • The Users, Groups and Roles tabs no longer share the /admin/security path and instead have their own dedicated paths. e.g. /admin/security/users
  • isDev and isTest query string arguments have been removed due to security concerns (see ss-2018-005).
  • The updateRelativeLink() extension hook for updating the result of SiteTree::RelativeLink() has changed signature, allowing you to update the resultant link itself instead of just the component parts. If you are using this extension hook, you will need to update the method signature and logic to match. See SiteTreeExtension::updateRelativeLink() for more details.
  • The default value for the RESOURCES_DIR const has been changed to "_resources"

    • The Library::DEFAULT_RESOURCES_DIR constant in silverstripe/vendor-plugin has been changed to match.
    • This can still be customised using extra.resources-dir in your composer.json file (see the configuring your project exposed folders documentation).
    • If your composer.json file has its extra.resources-dir key set to _resources, you can remove that now.
    • If your composer.json file already does not have an extra.resources-dir key and you want to keep your resources in the resources directory, you can set extra.resources-dir to resources.
    • If your composer.json file already does not have an extra.resources-dir key and you want to use the new default _resources directory, you may need to check that your code and templates don't assume the directory name for those resources. In your templates, it is preferred to use $resourePath() or $resourceURL() to get paths for resources.
  • The use of the public/ directory for the public web root is now mandatory. This was introduced as the default for new projects in CMS 4.1.0. If you are still not using the public/ directory as your web root, follow the instructions in the Silverstripe CMS 4.1.0 changelog.
  • The legacy file resolution strategy introduced in CMS 4.4.0 is no longer available. If you still use the legacy file resolution strategy, follow the file migration instructions and then change your file resolution configuration to match the defaults in the assets.yml file in silverstripe/installer.
  • Removed the HTMLValue injection "shorthand", use the fully qualified HTMLValue instead.
  • In silverstripe/staticpublishqueue, the class SilverStripe\StaticPublishQueue\Dev\StaticPublisherState is no longer enabled by default and can be enabled via opt-in. There are opt-in instructions in the README.md of the module.
  • SiteTree no longer automatically detects the controller if the controller name is <PageClass>_Controller - it must be <PageClass>Controller or be declared in the SiteTree.controller_name configuration property. See Connecting Pages to ContentControllers for more details.

Email

  • In CMS 4, email messages were sent using SwiftMailer, which has since gone End Of Life. In CMS 5, this has been replaced with symfony/mailer. symfony/mailer is the currently maintained email package from Symfony. It's a more flexible email system that allows easier integration with third-party email providers.
  • In CMS 4, the SilverStripe\Control\Email\Email class subclassed SilverStripe\View\ViewableData. In CMS 5, it subclasses Symfony\Component\Mime\Email.
  • MailTransport, which used the PHP native mail() function, is no longer present in CMS 5. This is because Symfony considers mail() to be insecure.
  • If your site has a custom email configuration e.g. SMTP configuration, this will need to be updated, as the configuration has changed from Silverstripe yml to a much more flexible and standardised DSN string. See the email documentation for more details. The configuration for email has changed completely - read the updated documentation carefully.
  • The following return types were changed on the following methods in SilverStripe\Control\Email\Email.

    • Used to return a string, now returns an nullable Address object.

      • getReturnPath()
      • getSender()
    • Used to return an array of strings, now returns an array of Address objects.

      • getFrom()
      • getTo()
      • getBCC() - note - changed casing to getBcc()
      • getCC() - note - changed casing to getCc()
    • Used to return bool, now return void:

    • Catch TransportExceptionInterface from Symfony Mailer to handle failure to send email.
    • Various other methods have added strong typing to parameter and return types. Also, some parameter names have changed.

ORM

  • DataList::sort() no longer accepts raw SQL. A new DataList::orderBy() method has been created which accepts raw SQL, though it's recommended to continue using DataList::sort() if possible to reduce the risk of SQL injection vulnerabilities.
  • Passing null to DataList::sort() i.e. sort(null) now clears any existing sort values on a DataList. Passing an empty string (i.e. sort('') or array i.e. sort([])) now causes an InvalidArgumentException to be thrown.
  • Prior to 5.0.0, when using SQLSelect::setFrom() or SQLSelect::create('*', $from) to set table or subselect definitions, their aliases (applied by setting a string key for the array) were being ignored. This bug has been fixed - if you were working around this by manually setting the alias e.g. in a join, you can remove those workarounds.
  • Query now implements IteratorAggregate instead of Iterator. This means seek() and other iterator methods are no longer available on this class and its subclasses. Use getIterator() instead.
  • DataList, its subclasses, Map, and ArrayList all now return generators from getIterator(). This reduces memory usage when looping over large result sets. As a result of this, getGenerator() has been removed as it is no longer needed. Note that DataList::chunkedFetch() has not been removed, as it may still be useful for very large result sets to fetch results in smaller chunks at a time.
  • Limitable::limit() is now strongly typed. Calling limit() with a 0 or false length now limits the list to 0 entry. In Silverstripe CMS 4, any "falsy" value would unset the limit. To unset a list's limit in Silverstripe CMS 5, call limit() with an explicit null. This affects DataList, ArrayList and all other classes implementing Limitable.

    • In Silverstripe CMS 4, calling SQLSelect::setLimit() with 0 as argument would unset the limit. In Silverstripe CMS 5, it sets a limit of 0 causing the query to return no results. Call setLimit() with null to unset the limit.
  • ArrayList::limit() in Silverstripe CMS 5 throws an InvalidArgumentException when called with a negative $length or $offset.
  • PDO database connector support has been fully removed. Update the SS_DATABASE_CLASS environment variable to use a regular connector instead. For instance, change MySQLPDOConnector to MySQLDatabase.

Dynamic properties

Templates

Loop and with scope changes

<% loop %> and <% with %> now only ever result in one new scope level. See Template Syntax for more details.

For example, <% loop $Pages.Limit(5) %>{$Up.Up.Title}<% end_loop %> previously would go up once to the $Pages scope (out of the $Pages.limit(5) scope), then up a second time to the parent scope. Now there is only the parent scope and the $Pages.limit(5) scope - there is no implied $Pages scope.

You may need to do a search for $Up.Up in your templates to resolve situations where you have worked around this - with the example above, you would need to rewrite it to $Up.Title (removing the second Up).

$First and $Last removed from the loop scope

In templates it's common to want to check if an item is the first or last item in a loop. This used to be done with $First and $Last, but these methods have been removed to avoid clashes with other methods with the same name. Use $IsFirst and $IsLast instead.

 <% loop $MyList %>
-    <% if $First %>
+    <% if $IsFirst %>
         <%-- do something --%>
     <% end_if %>
 <% end_loop %>

Primitive values can be passed into method calls

Numeric, boolean and null values passed to methods in templates now preserve their type, rather than always being cast to strings. E.g. $Foo(true) would previously pass a string argument 'true' to the Foo() method, but now passes an actual boolean.

You may need to check for situations where you were working around this limitation, such as checking in PHP code for $param === 'false' if you were passing false into some method from a template.

$ThemeDir has been replaced

$ThemeDir has been removed. Depending on your use case, you should use one of the following replacements instead:

If you want to get a resource using cascading themes, use $themedResourceURL():

<img src="$themedResourceURL('images/my-image.jpg')">
<img src="$themedResourceURL('images')/$Image.jpg">

If you want to get a resource for a specific theme or from somewhere that is not a theme (your app directory or a module), use $resourceURL():

<img src="$resourceURL('app/images/my-image.jpg')">
<img src="$resourceURL('my/module:images/my-image.jpg')">
<img src="$resourceURL('themes/simple/images/my-image.jpg')">
<img src="$resourceURL('themes/simple/images')/$Image.jpg">

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

This sections contains the full list of APIs that have been changed or removed between Silverstripe CMS 4.13 and 5.0. You most likely don't need to read the entire list. But it can be a useful reference to have open when upgrading a project or module.

Reveal full list of API changes

colymba/gridfield-bulk-editing-tools

  • Removed deprecated method Colymba\BulkTools\HTTPBulkToolsResponse::shutdown() without equivalent functionality to replace it

cwp/cwp

  • Removed deprecated class CWP\CWP\Extensions\CwpSiteSummaryExtension without equivalent functionality to replace it

cwp/cwp-core

  • Removed deprecated class CWP\Core\Extension\CWPVersionExtension without equivalent functionality to replace it

cwp/cwp-search

  • Removed deprecated class CWP\Search\Solr\CwpSolrConfigStore - use SilverStripe\FullTextSearch\Solr\Stores\SolrConfigStore_Post in silverstripe/fulltextsearch instead

dnadesign/silverstripe-elemental

silverstripe/admin

silverstripe/asset-admin

silverstripe/assets

silverstripe/auditor

  • Removed deprecated method SilverStripe\Auditor\AuditHook::bind_manipulation_capture() - use ProxyDBExtension with the tractorcow/silverstripe-proxy-db module instead
  • Removed deprecated method SilverStripe\Auditor\AuditHook::onBeforeInit() - use tractorcow/silverstripe-proxy-db instead
  • Changed parameter type in SilverStripe\Auditor\RealIPProcessor::__invoke() for $record from array to Monolog\LogRecord

silverstripe/behat-extension

  • Removed deprecated method SilverStripe\BehatExtension\Context\BasicContext::iAttachTheFileTo() - use SilverStripe\BehatExtension\Context\BasicContext::iAttachTheFileToTheField() instead
  • Changed return type for SilverStripe\BehatExtension\Utility\TestMailer::clearEmails() from dynamic to void
  • Changed return type for SilverStripe\BehatExtension\Utility\TestMailer::findEmail() from dynamic to array|null
  • Changed parameter type in SilverStripe\BehatExtension\Utility\TestMailer::findEmail() for $to from dynamic to string
  • Changed parameter type in SilverStripe\BehatExtension\Utility\TestMailer::findEmail() for $from from dynamic to string|null
  • Changed parameter type in SilverStripe\BehatExtension\Utility\TestMailer::findEmail() for $subject from dynamic to string|null
  • Changed parameter type in SilverStripe\BehatExtension\Utility\TestMailer::findEmail() for $content from dynamic to string|null
  • Changed parameter type in SilverStripe\BehatExtension\Utility\TestMailer::saveEmail() for $data from dynamic to array
  • Changed parameter name in SilverStripe\BehatExtension\Context\BasicContext::iAddToTheTagField() from $locator to $selector

silverstripe/campaign-admin

silverstripe/cms

silverstripe/comments

  • Removed deprecated class SilverStripe\Comments\Admin\CommentsGridFieldAction - use SilverStripe\Comments\Admin\CommentsGridFieldApproveAction or SilverStripe\Comments\Admin\CommentsGridFieldSpamAction instead
  • Removed deprecated class SilverStripe\Comments\Admin\CommentsGridFieldBulkAction\Handler - use SilverStripe\Comments\Admin\CommentsGridFieldBulkAction\SpamHandler or SilverStripe\Comments\Admin\CommentsGridFieldBulkAction\ApproveHandler instead
  • Removed deprecated method SilverStripe\Comments\Model\Comment::getParent() - use SilverStripe\Comments\Model\Comment::Parent() instead
  • Changed return type for SilverStripe\Comments\Controllers\CommentingController::redirectBack() from dynamic to SilverStripe\Control\HTTPResponse

silverstripe/config

silverstripe/crontask

  • Removed deprecated method SilverStripe\CronTask\Controllers\CronTaskController::setQuiet() - use SilverStripe\CronTask\Controllers\CronTaskController::setVerbosity() instead
  • Removed deprecated property SilverStripe\CronTask\Controllers\CronTaskController::$quiet - use SilverStripe\CronTask\Controllers\CronTaskController.verbosity instead

silverstripe/environmentcheck

  • Removed deprecated method SilverStripe\EnvironmentCheck\EnvironmentChecker::get_email_results() - use config API instead
  • Removed deprecated method SilverStripe\EnvironmentCheck\EnvironmentChecker::get_from_email_address() - use config API instead
  • Removed deprecated method SilverStripe\EnvironmentCheck\EnvironmentChecker::get_to_email_address() - use config API instead
  • Removed deprecated method SilverStripe\EnvironmentCheck\EnvironmentChecker::set_email_results() - use config API instead
  • Removed deprecated method SilverStripe\EnvironmentCheck\EnvironmentChecker::set_from_email_address() - use config API instead
  • Removed deprecated method SilverStripe\EnvironmentCheck\EnvironmentChecker::set_to_email_address() - use config API instead

silverstripe/errorpage

silverstripe/framework

silverstripe/fulltextsearch

  • Removed deprecated class SilverStripe\FullTextSearch\Search\Captures\SearchManipulateCapture_MySQLDatabase - use tractorcow/silverstripe-proxy-db to proxy the database connector instead
  • Removed deprecated class SilverStripe\FullTextSearch\Search\Captures\SearchManipulateCapture_PostgreSQLDatabase - use tractorcow/silverstripe-proxy-db to proxy the database connector instead
  • Removed deprecated class SilverStripe\FullTextSearch\Search\Captures\SearchManipulateCapture_SQLite3Database - use tractorcow/silverstripe-proxy-db to proxy the database connector instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery::exclude() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::addExclude() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery::filter() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::addFilter() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery::fuzzysearch() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::addFuzzySearchTerm() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery::inClass() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::addClassFilter() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery::limit() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::setLimit() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery::page() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::setPageSize() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery::search() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::addSearchTerm() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery::start() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::setStart() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery_Range::end() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::setEnd() instead
  • Removed deprecated method SilverStripe\FullTextSearch\Search\Queries\SearchQuery_Range::start() - use SilverStripe\FullTextSearch\Search\Queries\SearchQuery::setStart() instead
  • Changed return type for SilverStripe\FullTextSearch\Utils\CombinationsArrayIterator::current() from dynamic to mixed
  • Changed return type for SilverStripe\FullTextSearch\Utils\CombinationsArrayIterator::key() from dynamic to mixed
  • Changed return type for SilverStripe\FullTextSearch\Utils\CombinationsArrayIterator::next() from dynamic to void
  • Changed return type for SilverStripe\FullTextSearch\Utils\CombinationsArrayIterator::rewind() from dynamic to void
  • Changed return type for SilverStripe\FullTextSearch\Utils\CombinationsArrayIterator::valid() from dynamic to bool
  • Changed return type for SilverStripe\FullTextSearch\Utils\Logging\QueuedJobLogHandler::write() from dynamic to void
  • Changed return type for SilverStripe\FullTextSearch\Utils\MultipleArrayIterator::current() from dynamic to mixed
  • Changed return type for SilverStripe\FullTextSearch\Utils\MultipleArrayIterator::key() from dynamic to mixed
  • Changed return type for SilverStripe\FullTextSearch\Utils\MultipleArrayIterator::next() from dynamic to void
  • Changed return type for SilverStripe\FullTextSearch\Utils\MultipleArrayIterator::rewind() from dynamic to void
  • Changed return type for SilverStripe\FullTextSearch\Utils\MultipleArrayIterator::valid() from dynamic to bool
  • Changed parameter type in SilverStripe\FullTextSearch\Utils\Logging\QueuedJobLogHandler::write() for $record from array to Monolog\LogRecord

silverstripe/graphql

silverstripe/hybridsessions

silverstripe/ldap

  • Removed deprecated method SilverStripe\LDAP\Extensions\LDAPMemberExtension::memberLoggedIn() without equivalent functionality to replace it

silverstripe/mfa

silverstripe/recipe-plugin

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

silverstripe/registry

silverstripe/securityreport

  • Removed deprecated class SilverStripe\SecurityReport\Subsites\SubsiteSecurityReport without equivalent functionality to replace it

silverstripe/sharedraftcontent

silverstripe/subsites

silverstripe/tagfield

  • Removed deprecated config SilverStripe\TagField\StringTagField.immediate_write_enabled without equivalent functionality to replace it

silverstripe/userforms

silverstripe/vendor-plugin

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

silverstripe/versioned

silverstripe/versioned-admin

silverstripe/versionfeed

silverstripe/webauthn-authenticator

symbiote/silverstripe-advancedworkflow

  • Removed deprecated property Symbiote\AdvancedWorkflow\Extensions\WorkflowEmbargoExpiryExtension::$showTimePicker without equivalent functionality to replace it

symbiote/silverstripe-queuedjobs

tractorcow/silverstripe-fluent

Full commits list

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

Reveal full list of commits

Features and enhancements

  • silverstripe/installer (4.13.0 -> 5.0.0)

    • 2023-02-23 c9bfb0e Remove duplicated configuration (Guy Sartorelli)
    • 2022-08-05 1f718dc Remove resources-dir config from composer.json (#330) (Guy Sartorelli)
  • silverstripe/vendor-plugin (1.7.0 -> 2.0.0)

    • 2022-08-03 b9ca004 Set the default resources dir to "_resources" (Guy Sartorelli)
  • silverstripe/recipe-cms (4.13.0 -> 5.0.0)

    • 2022-08-05 b61004e Remove resources-dir config from composer.json (#59) (Guy Sartorelli)
  • silverstripe/recipe-core (4.13.0 -> 5.0.0)

    • 2022-12-15 9745b0d Pull .htaccess file when required as a dependency (#83) (Guy Sartorelli)
    • 2022-08-05 e6fb2d6 Remove resources-dir config from composer.json (#76) (Guy Sartorelli)
  • silverstripe/assets (1.13.0 -> 2.0.0)

    • 2023-02-23 28cd27e Use the optimal file resolution strat by default (Guy Sartorelli)
    • 2022-12-12 dfc3919 PHP 8.2 support (Steve Boyd)
    • 2022-10-03 a730c06 Check canViewFile permissions before automatically grant Session access to the file (#517) (Sabina Talipova)
  • silverstripe/framework (4.13.0 -> 5.0.0)

    • 2023-04-12 bdcb57ec2 Add a cascading theme version of $resourceURL (Guy Sartorelli)
    • 2023-02-21 0075bf6e4 Access dynamic data inside ViewableData (Steve Boyd)
    • 2023-02-08 9a5ccdba5 Protect against possible unexpected values (Guy Sartorelli)
    • 2023-01-30 af72f4ada Add translations from security-extensions module (Guy Sartorelli)
    • 2023-01-29 fecb7ba4d Add sudo mode service (Guy Sartorelli)
    • 2023-01-29 0f4014650 Add easy way to dismiss all toasts in behat (#10661) (Guy Sartorelli)
    • 2023-01-26 8ddedb038 Allow admins to require password reset for members (Guy Sartorelli)
    • 2023-01-18 d1e0e1e30 Make limit method return no results when zero is provided (Maxime Rainville)
    • 2023-01-17 d7ddb0025 Use masterminds/html5 for HTMLValue (Steve Boyd)
    • 2023-01-17 1a59bf50d Remove unused Translatable code (Steve Boyd)
    • 2022-12-21 c1a773310 PHP 8.2 support (Steve Boyd)
    • 2022-11-04 97f7be502 Add extension hook for field-specific validation (Loz Calver)
    • 2022-10-21 df1d4a4b9 Move email to data conversion to protected method (Steve Boyd)
    • 2022-10-19 2e85674cc Migrate from swiftmailer/swiftmailer to symfony/mailer (Steve Boyd)
    • 2022-08-03 ee4144fc3 Set the default resources dir to "_resources" (Guy Sartorelli)
    • 2020-03-26 a666814a8 CSV BOM stripping is now handled internally by league/csv (Dan Hensby)
    • 2018-10-05 4339e4d02 Add support for native nulls as template lookup arguments (Loz Calver)
    • 2017-11-06 156f63bce shorten auto-generated table names (Christopher Joe)
    • 2017-01-17 77c7552c3 ORM’ Query is a generator-based IteratorAggregate (Sam Minnee)
    • 2017-01-16 6c136c9cf Iterate ArrayList via a generator (Sam Minnee)
    • 2017-01-12 1b8f60102 Make DataList::getIterator a generator (Loz Calver)
  • silverstripe/admin (1.13.0 -> 2.0.0)

    • 2023-04-18 4ce8b6d7 Remove GraphQL v3 compatability in mutation templates (Guy Sartorelli)
    • 2023-03-26 e7d45a80 Default GraphQL abstractions to gql v5 style (Guy Sartorelli)
    • 2023-01-29 8aa9b0c3 Add HOC to provide sudo mode to child components (Guy Sartorelli)
    • 2023-01-29 ec6567c0 Add new circular loading react component (Guy Sartorelli)
    • 2023-01-29 3c63b6d1 Add sudo mode controller (Guy Sartorelli)
    • 2023-01-26 29f70676 Remove unnecessary JS imports. (Guy Sartorelli)
    • 2023-01-20 54b29aff Allow base URL to not have trailing slash (#1438) (Guy Sartorelli)
    • 2023-01-17 dc2c4522 Remove unused Translatable code (Steve Boyd)
    • 2023-01-11 828ef08e Expose ApolloClient for other modules to use (Guy Sartorelli)
    • 2023-01-09 af2b8c82 Export emotion cache provider. (Guy Sartorelli)
    • 2022-09-29 6b1496fb Implement our TinyMCE skin for TinyMCE 6 (Guy Sartorelli)
    • 2022-09-14 2d2985c4 Records can be made previewable with an extension (Guy Sartorelli)
  • silverstripe/asset-admin (1.13.0 -> 2.0.0)

    • 2023-02-13 2590c822 Add delete buttons for images/embeds in wysiwyg (#1331) (Guy Sartorelli)
    • 2023-01-12 447beaa0 Allow URLs without trailing slashes (Guy Sartorelli)
    • 2022-11-04 15c4c024 Add extension hook for field-specific validation (Loz Calver)
    • 2022-08-31 6c9f9ecc Don't call deprecated constructExtensions method (#1290) (Guy Sartorelli)
  • silverstripe/campaign-admin (1.13.0 -> 2.0.0)

    • 2023-01-12 a2a95ae Allow URLs without trailing slashes (Guy Sartorelli)
  • silverstripe/versioned-admin (1.13.0 -> 2.0.0)

    • 2023-03-28 20588d7 Do not use deprecated lifecycle methods (Steve Boyd)
    • 2022-09-01 8ee61fd Remove deprecated HistoryControllerFactory. (#251) (Guy Sartorelli)
  • silverstripe/cms (4.13.0 -> 5.0.0)

    • 2023-01-18 b57d557b Remove unused Translatable code (Steve Boyd)
    • 2023-01-11 ef4122da Use the EmotionCssCacheProvider component (Guy Sartorelli)
    • 2022-09-14 6ff98c42 Records can be made previewable via an extension (Guy Sartorelli)
    • 2022-08-29 adcea213 Remove CSS for CMSPageHistoryController. (Guy Sartorelli)
  • silverstripe/siteconfig (4.13.0 -> 5.0.0)

    • 2022-10-07 458f5dd4 Let SiteConfig be previewable (Guy Sartorelli)
  • silverstripe/documentconverter (2.5.0 -> 3.0.0)

    • 2023-01-19 34d3c29 PHP 8.2 compatibility (Steve Boyd)
  • silverstripe/iframe (2.4.0 -> 3.0.0)

    • 2023-01-19 ad4342f PHP 8.2 compatibility (Steve Boyd)
  • silverstripe/tagfield (2.11.0 -> 3.0.0)

    • 2023-02-22 8b8bd13 Add extension hooks for field-specific validation (Loz Calver)
  • silverstripe/widgets (2.4.0 -> 3.0.0)

    • 2023-01-20 28d16bf Fix linting issues (Guy Sartorelli)
    • 2023-01-20 4f04dd8 Use frontend build stack (Guy Sartorelli)
  • silverstripe/comments (3.10.0 -> 4.0.0)

    • 2023-01-19 71a09ea Update regex to most recent jQuery.validate (Guy Sartorelli)
  • silverstripe/contentreview (4.7.0 -> 5.0.0)

    • 2023-04-11 36d3718 Add Exception with list of invilid emails (Sabina Talipova)
  • bringyourownideas/silverstripe-maintenance (2.7.0 -> 3.0.0)

    • 2023-03-14 ec027ab Work with official list of supported modules (Steve Boyd)
  • bringyourownideas/silverstripe-composer-update-checker (3.0.0 -> 4.0.0)

    • 2023-03-09 1de1631 Make UI strings translatable (#68) (Guy Sartorelli)
    • 2022-04-26 ab967ee Use composer 2 (#62) (Steve Boyd)
  • dnadesign/silverstripe-elemental (4.11.0 -> 5.0.0)

    • 2021-11-20 57b508a Include summary in elemental area by default (Michael van Schaik)
  • silverstripe/fulltextsearch (3.12.0 -> 4.0.0)

    • 2023-01-19 723ff53 PHP 8.2 compatibility (Steve Boyd)
  • cwp/cwp-core (2.12.0 -> 3.0.0)

    • 2023-01-19 5887669 PHP 8.2 compatibility (Steve Boyd)
  • silverstripe/subsites (2.8.0 -> 3.0.0)

    • 2023-02-22 05f775a Add extension hook for field-specific validation (Loz Calver)
    • 2023-01-24 f397ab3 Prepare correct JS/CSS structure to use webpack (Guy Sartorelli)
  • tractorcow/silverstripe-fluent (4.8.0 -> 7.0.0)

    • 2023-03-27 179f92d Update translations (Steve Boyd)
    • 2022-03-24 182c95e GitHub workflows setup. (Mojmir Fendek)
    • 2022-03-09 4bdabcb Locale performance / extensibility enhancements. (Mojmir Fendek)
    • 2022-02-08 9cb3ff5 More granular permissions for GridField actions. (Mojmir Fendek)
    • 2022-01-27 708ff73 Copy to locale enhancements. (Mojmir Fendek)
    • 2021-05-20 f8f8845 Locale fallback configuration enhancement. (Mojmir Fendek)
    • 2021-04-22 f5c8dce Allow isolated items to appear in the CMS if conditionally queried by ID / FK explicitly (configurable) (Damian Mooyman)
    • 2021-02-26 9db534e Clickable links on page info for localisation tab. (Vivienne Tubbs)
    • 2021-01-13 2b6ca3f Initial page localisation task (for single language sites import). (Mojmir Fendek)
    • 2020-11-11 87c4652 If changing locales in the CMS, ensure that 404 errors redirect to the CMS home page (Damian Mooyman)
    • 2020-06-22 4363d9e Localisation manager UI improvements. (Mojmir Fendek)
  • silverstripe/dynamodb (4.1.0 -> 5.0.0)

    • 2023-02-13 c96e48a Replace deprecated doctrine/cache (Guy Sartorelli)

Bugfixes

  • silverstripe/recipe-plugin (1.7.0 -> 2.0.0)

    • 2022-12-14 f003b8d Always put public resources in a public/ dir (#31) (Guy Sartorelli)
  • silverstripe/assets (1.13.0 -> 2.0.0)

    • 2022-12-08 459d421 Cast absoluteUrl() argument to string (Steve Boyd)
  • silverstripe/framework (4.13.0 -> 5.0.0)

    • 2023-03-27 84273b804 Remove legacy filter icon (Steve Boyd)
    • 2023-03-01 e3a94b9d1 Ensure getters and setters are respected (#10708) (Guy Sartorelli)
    • 2023-02-20 e455aa5c5 Handle null returns in GridFieldDetailForm_ItemRequest::getNumPages() (Steve Boyd)
    • 2023-02-01 738ca487a Allow public extension getter methods to work (#10676) (Guy Sartorelli)
    • 2023-02-01 826028082 Sort without specifying a table name (#10675) (Guy Sartorelli)
    • 2023-01-31 dca4e0bcb Remove unused action from allowed_actions (#10672) (Guy Sartorelli)
    • 2023-01-30 14a449fea Don't try to access private properties/methods (Guy Sartorelli)
    • 2023-01-11 6d4542561 Check is_callable parent methods before invoke (#10637) (Sabina Talipova)
    • 2022-12-13 700288d5c Cast absoluteUrl() argument to string (Steve Boyd)
    • 2022-09-19 ef8a02dfd Update config to support tinymce6 (Guy Sartorelli)
    • 2022-09-13 a2028a281 Pass PSR6 caches to ChainAdapter (Steve Boyd)
    • 2022-09-09 e140c3786 Ensure consistent behaviour with repeat iterations (Guy Sartorelli)
    • 2022-09-08 62ee63706 PHP 8.1 compatability for iterators. (Guy Sartorelli)
    • 2022-08-31 89a0f59ef Remove accidental deprecation warnings. (Guy Sartorelli)
    • 2022-08-17 d55683d02 Ensure PHP 8.1 compatible version of oscarotero/html-parser is installed (Steve Boyd)
    • 2022-08-11 bf331072d Don't try to call count() on an iterator (Guy Sartorelli)
    • 2019-05-06 e07671a89 Fix SQLConditionalExpression::getJoins so it always adds explicit aliases (Serge Latyntcev)
    • 2018-10-05 3a6c48cdd template parser erroring on strings partially matching true/false/null (Loz Calver)
    • 2018-10-05 d6e822935 Fix type preservation in <% include %> arguments (Loz Calver)
    • 2018-02-20 f2211d690 Fix extend() failing on protected extend-prefixed methods (Damian Mooyman)
    • 2017-11-28 b36a01a8f Fix table name test (Christopher Joe)
    • 2017-06-28 9eb9e1307 Re-set finalisedQuery to allow recreation of iterator. (Sam Minnee)
    • 2017-06-28 8e0e797b4 Fix code style (Loz Calver)
    • 2017-01-17 6ef5785fc pre-cache loop content within SSViewer. (Sam Minnee)
    • 2017-01-17 d8735633a Don’t call PaginatedList::getIterator() directly. (Sam Minnee)
    • 2017-01-17 1efe2b46f Fix PaginatedList::toArray() (Sam Minnee)
  • silverstripe/admin (1.13.0 -> 2.0.0)

    • 2023-04-12 a3c91584 Ensure page router can handle base URL in subfolder (Guy Sartorelli)
    • 2023-03-27 76609055 Action Edit button UI (#1485) (Sabina Talipova)
    • 2023-03-27 f793831b Use v1 of popper.js for thirdparty bootstrap (Steve Boyd)
    • 2023-03-27 61ba6ab9 Translation merge-up (Steve Boyd)
    • 2023-03-15 cc63942a Update CSS after PR (Sabina Talipova)
    • 2023-03-10 a396a90c React warnings (Sabina Talipova)
    • 2023-03-09 cef56c38 TagList prop type tags.key is invalid (Sabina Talipova)
    • 2023-03-08 349fc385 Styles warnings (Sabina Talipova)
    • 2023-03-07 a5f74a30 Changed import for createRoot function (Sabina Talipova)
    • 2023-02-27 2cfc4012 Reinstate unsaved changes dialog (#1458) (Guy Sartorelli)
    • 2023-02-09 dbe8ada6 Remove redundant memoisation (Guy Sartorelli)
    • 2023-01-19 4a1b488a Reuse emotion cache to avoid conflicts (Guy Sartorelli)
    • 2023-01-19 edb97adc Expose sublibraries of dependencies (Guy Sartorelli)
    • 2023-01-08 118681ad Set the value correctly when passed as prop. (Guy Sartorelli)
    • 2022-12-08 ce799e55 Cast absoluteUrl() argument to string (Steve Boyd)
    • 2022-12-01 8d6c1acb Rebuild JS bundles (#1401) (Sabina Talipova)
    • 2022-10-11 3f30aa21 Set name of TinyMCE i18n file to be correct (Guy Sartorelli)
    • 2022-10-07 e5badb5d Let admins get navigators for their own records (Guy Sartorelli)
    • 2022-09-30 7b3ac231 Use correct TinyMCE selection logic (Guy Sartorelli)
  • silverstripe/asset-admin (1.13.0 -> 2.0.0)

    • 2023-04-25 1e35a0c4 Ensure fresh options are passed to dropzone (Steve Boyd)
    • 2023-03-13 45e7461a CSS warnings (Sabina Talipova)
    • 2023-03-13 bd6da03b Replaced deprecated React functions (Sabina Talipova)
    • 2023-02-13 f800799a Get JS tests passing again (#1330) (Guy Sartorelli)
    • 2023-02-08 1bb852ea Don't enter infinite loop when saving form (#1329) (Guy Sartorelli)
    • 2023-01-29 0dfc61e0 update react render (#1322) (Guy Sartorelli)
    • 2023-01-10 ba67f151 Correctly reset file details after bulk publish (Guy Sartorelli)
    • 2022-12-08 379ddb52 Cast absoluteUrl() argument to string (Steve Boyd)
    • 2022-09-30 46a25f15 Use correct selection logic for TinyMCE (Guy Sartorelli)
    • 2022-09-30 c29a14b4 Publish assets in WYSIWYG when publishing page. (Guy Sartorelli)
    • 2022-09-19 67d6966c Update plugins to work with TinyMCE 6 (Guy Sartorelli)
  • silverstripe/campaign-admin (1.13.0 -> 2.0.0)

    • 2023-03-13 4cce0ff Replaced deprecated CSS and React functions (Sabina Talipova)
  • silverstripe/versioned-admin (1.13.0 -> 2.0.0)

    • 2023-03-22 ebca186 ESLint, SASS-Lint warnings (Sabina Talipova)
    • 2023-02-02 90ee112 Use the new HtmlDiff class (Guy Sartorelli)
    • 2023-01-29 5ad5cd4 Remove unused import (#270) (Guy Sartorelli)
  • silverstripe/cms (4.13.0 -> 5.0.0)

    • 2023-02-08 93f57d23 Replace Diff class with HtmlDiff (Sabina Talipova)
    • 2023-01-09 b9115f3f Fix anchor select field component (Guy Sartorelli)
    • 2022-12-08 605daf50 Cast absoluteUrl() argument to string (Steve Boyd)
    • 2022-12-05 3186e0e1 Use orderBy() instead of sort() (Steve Boyd)
    • 2022-10-19 af1a482d Loosen config order to allow "after: '*'" in framework (#2793) (Guy Sartorelli)
    • 2022-09-30 bedd6455 Use correct TinyMCE selection logic (Guy Sartorelli)
    • 2022-09-19 7368df87 Fix link plugins to support tinymce6 (Guy Sartorelli)
    • 2022-08-25 803b4add Resolve CI failure (Guy Sartorelli)
    • 2018-05-01 b46876b8 Don't offer to restore to root if can_be_root is false (Mike Cochrane)
  • silverstripe/siteconfig (4.13.0 -> 5.0.0)

    • 2023-01-23 4155b889 Bring back empty _config.PHP file (Maxime Rainville)
  • silverstripe/versioned (1.13.0 -> 2.0.0)

    • 2023-03-02 04344c7 Remove diff code (Steve Boyd)
    • 2023-02-13 54a0bac Null value in HtmlDiff::compareHtml() (#394) (Sabina Talipova)
    • 2023-02-02 4796ab4 Use the new HtmlDiff class (Guy Sartorelli)
    • 2022-12-15 20e681d Handle a bool return type from DateTime::getLastErrors() (Steve Boyd)
    • 2022-12-05 76fbb52 Ensure sort is not empty (Steve Boyd)
  • silverstripe/graphql (4.3.0 -> 5.0.0)

    • 2022-09-12 a52cabd Use symfony6 cache classes (Steve Boyd)
  • silverstripe/recipe-authoring-tools (1.13.0 -> 2.0.0)

    • 2022-12-18 0bc9677 Revert wrong merge (#25) (Sabina Talipova)
  • silverstripe/tagfield (2.11.0 -> 3.0.0)

    • 2023-04-17 158bc00 Format value to string for readonly transformation (Guy Sartorelli)
  • silverstripe/recipe-blog (1.13.0 -> 2.0.0)

    • 2022-12-18 8b61de9 Revert wrong merge (#39) (Sabina Talipova)
  • silverstripe/comments (3.10.0 -> 4.0.0)

    • 2023-01-19 5c2552e Parameter order (Steve Boyd)
    • 2023-01-19 0048a7a Resolve linting issues (Guy Sartorelli)
  • silverstripe/recipe-collaboration (1.13.0 -> 2.0.0)

    • 2022-12-18 880c4b5 Revert wrong merge (#22) (Sabina Talipova)
  • silverstripe/contentreview (4.7.0 -> 5.0.0)

    • 2023-03-31 24766e4 Notification job marked as broken (Sabina Talipova)
  • symbiote/silverstripe-advancedworkflow (5.9.0 -> 6.0.0)

    • 2023-03-14 a9f1f6c CSS and JS warnings (Sabina Talipova)
  • silverstripe/recipe-form-building (1.13.0 -> 2.0.0)

    • 2022-12-18 d56ed8b Revert wrong merge (#24) (Sabina Talipova)
  • silverstripe/recipe-reporting-tools (1.13.0 -> 2.0.0)

    • 2022-12-18 11965af Revert wrong merge (#33) (Sabina Talipova)
  • silverstripe/externallinks (2.4.0 -> 3.0.0)

    • 2023-03-24 fe056b5 ESLint warnings (Sabina Talipova)
    • 2023-03-06 ef0ee30 Reload External broken links report content when new report was generated (Sabina Talipova)
    • 2023-01-17 8456e46 Use HTMLValue::class (Steve Boyd)
  • silverstripe/versionfeed (2.4.0 -> 3.0.0)

    • 2023-02-13 002fbf7 Replace Diff class to HtmlDiff (#80) (Sabina Talipova)
  • silverstripe/recipe-content-blocks (2.13.0 -> 3.0.0)

    • 2022-12-18 ccf7737 Revert wrong merge (#29) (Sabina Talipova)
  • dnadesign/silverstripe-elemental (4.11.0 -> 5.0.0)

    • 2023-01-26 c552d2e Don't refer to removed class (Guy Sartorelli)
    • 2022-12-08 4cf4027 Cast possibly null link to string (Steve Boyd)
    • 2022-08-29 ce8a102 Use correct return type for permission checks (Guy Sartorelli)
  • cwp/cwp-search (1.8.0 -> 2.0.0)

    • 2023-03-02 eaece08 Add slash before search action in Search form URL (Sabina Talipova)
  • silverstripe/fulltextsearch (3.12.0 -> 4.0.0)

    • 2023-02-15 72dc54b Always use ?int for subsite state (#341) (Guy Sartorelli)
    • 2023-02-15 4f92bcd Broken builds (Sabina Talipova)
  • symbiote/silverstripe-queuedjobs (4.12.0 -> 5.0.0)

    • 2023-04-27 acc4752 Broken TaskLink & QueueLink (Sabina Talipova)
    • 2022-12-14 0c18b40 Use record() instead of first() (Steve Boyd)
  • silverstripe/hybridsessions (2.7.0 -> 3.0.0)

    • 2023-02-20 6365414 Always return something (Steve Boyd)
    • 2023-02-15 7aede67 Return an emtpy string instead of false from HybridSession::read() (Steve Boyd)
  • silverstripe/developer-docs (4.13.0 -> 5.0.0)

    • 2023-02-08 a69490b4 Fix a bunch of API links (Maxime Rainville)
    • 2023-02-08 5cc10ba8 Fix bad GitHub link by poiting to packagist instead. (Maxime Rainville)
    • 2022-09-15 81f4565d Show alpha directory (#89) (Guy Sartorelli)
  • silverstripe/registry (2.6.0 -> 3.0.0)

    • 2023-02-13 97987d7 Implement support new league/flysystem v3 (Sabina Talipova)
  • silverstripe/mfa (4.8.0 -> 5.0.0)

    • 2023-03-30 a2ea054 Issue regeneratorRuntime is not defined (#491) (Sabina Talipova)
    • 2023-02-07 fa5b8dc Add back in sudo mode activation on login (Steve Boyd)
    • 2023-01-17 34af8cd Update SecurityAdminExtension::sendResetEmail() to account new returned type for Email::send() (Maxime Rainville)
    • 2023-01-16 8482176 Change the AJAX endpoint to reset the MFA set up for a user (Maxime Rainville)
  • silverstripe/ckan-registry (1.7.0 -> 2.0.0)

    • 2023-03-13 bc77572 CSS warnings (Sabina Talipova)
  • silverstripe/webauthn-authenticator (4.7.0 -> 5.0.0)

    • 2023-04-27 eb16b15 Encode authenticatorData as base64 URL safe (Steve Boyd)
    • 2023-02-07 0523fed Remove padding to work with web-auth/webauthn-lib 4.1.0+ (Steve Boyd)
  • silverstripe/subsites (2.8.0 -> 3.0.0)

    • 2023-01-26 80eb9ec Remove wildcard from config (Steve Boyd)
    • 2023-01-19 f50cd3e Parameter order (Steve Boyd)
  • silverstripe/lumberjack (2.3.0 -> 3.0.0)

    • 2023-01-19 fccf95e Parameter order (Steve Boyd)
  • cwp/starter-theme (3.3.0 -> 4.0.0)

    • 2023-01-29 4ddc59c Remove reference to empty CSS file. (#219) (Guy Sartorelli)
  • cwp/agency-extensions (2.8.0 -> 3.0.0)

    • 2023-04-03 8d5bbab Do not expose directory that was removed (Steve Boyd)
  • cwp/cwp (2.11.0 -> 3.0.0)

    • 2023-05-01 d112b07 Update TinyMCE config for v6 compatibility (#331) (Guy Sartorelli)
  • symbiote/silverstripe-gridfieldextensions (3.6.0 -> 4.0.0)

    • 2023-04-05 17f92d0 Handle arrays in default_sort (Steve Boyd)
    • 2023-01-18 fd24736 Use DataList::orderBy() (#353) (Steve Boyd)
  • colymba/gridfield-bulk-editing-tools (3.1.0 -> 4.0.0)

    • 2023-02-01 563f253 Don't use removed method. (Guy Sartorelli)
  • tractorcow/silverstripe-fluent (4.8.0 -> 7.0.0)

    • 2023-02-07 d77907f fix: update master alias to new major version 7 (Damian Mooyman)
    • 2023-01-26 bb4891d Don't use removed API (Guy Sartorelli)
    • 2023-01-18 820e1f5 Get fluent to dev/build (Steve Boyd)
    • 2023-01-13 4531289 GitHub actions setup (linting). (Mojmir Fendek)
    • 2022-03-27 b22973f Legacy permissions migration fix. (Mojmir Fendek)
    • 2022-03-27 4a1f86d Explicit PHP version for scrutinizer.. (Mojmir Fendek)
    • 2022-03-25 56337af PHP 8 compatibility patch. (Mojmir Fendek)
    • 2022-03-10 c2d0abe fix: issue with "all CMS sections" permission erroneously handling fluent permissions (Damian Mooyman)
    • 2022-03-01 33ac317 Fix missing locale in callback signature (Rens Korswagen)
    • 2022-02-10 7353136 SiteTree item styles should not trickle down the sub-tree. (Mojmir Fendek)
    • 2022-02-03 32452fb Localisation manager / Live state flag and stages differ correction. (Mojmir Fendek)
    • 2022-01-13 cc1116c Localisation manager / Locale link fix for AJAX requests. (Mojmir Fendek)
    • 2021-11-08 a49afa4 Fix fallback locales chain (Mikhail Shchedrakov)
    • 2021-10-20 6e248c1 Fix for FluentAdminTraitTest. (Mojmir Fendek)
    • 2021-06-18 d9e12b3 Missing version tables related indexes. (Mojmir Fendek)
    • 2021-06-09 15611e0 Localised copy support for ClassName changes. (Mojmir Fendek)
    • 2021-05-20 18d3899 Fix issue with apply_isolated_locales_to_byid = false not respecting many_many joins (Damian Mooyman)
    • 2021-04-29 1666329 GridField buttons UI improvements for versioned models. (Mojmir Fendek)
    • 2021-03-01 12196e3 Fix Travis setup to run with correct requirements. (Mojmir Fendek)
    • 2021-02-08 74aa604 Stages differ in locale correction, Copy-to localise buttons restored. (Mojmir Fendek)
    • 2020-09-02 fa58ad7 Resolve regression in middleware behaviour breaking routing bootstrapping (Damian Mooyman)
    • 2020-07-29 2062c0d Fix invalid test namespaces (Damian Mooyman)
    • 2020-07-28 1cd753a Fix test namespaces (Damian Mooyman)
    • 2020-07-28 d7466ef Fix composer notice on invalid psr-4 path for test files (Damian Mooyman)
    • 2020-07-06 2577a34 fix issue with member permissions erroring before fluent state is initialised (Damian Mooyman)
    • 2020-06-18 81eff09 Fix from / to (Damian Mooyman)
    • 2020-05-20 8c8af6e Fix sitemap x-default reference (Damian Mooyman)
    • 2020-05-20 381a351 Properly handle x-default for home page tags (Damian Mooyman)
    • 2020-05-12 3b1bd95 Fix linting issues (Damian Mooyman)
    • 2020-05-12 a93ad8f Fix unit tests (Damian Mooyman)
    • 2020-05-12 7e5fe14 Fix issue where gridfield has no Actions column (Damian Mooyman)
    • 2020-05-11 5f67c66 Fix tests (Damian Mooyman)
    • 2020-05-11 a41b319 Fix hreflang case issue (Damian Mooyman)
    • 2020-04-09 ec6340a Fix UnpublishAction using incorrect locale (Damian Mooyman)
    • 2020-03-10 01972dc fix issue where rows were not written to _Localised tables (Damian Mooyman)
    • 2020-02-10 d864f5b Fix unit tests for updates to extensions and middleware (Damian Mooyman)
    • 2020-02-10 a8b05ad Fix unit tests (Damian Mooyman)
    • 2020-02-09 44cbe21 Fix unit tests for badge trait (Damian Mooyman)
    • 2020-02-07 ce6eea9 Fix crash on logout (Damian Mooyman)
    • 2019-11-21 68a32aa Fix issue with gridfield actions (Damian Mooyman)
    • 2019-11-20 4a78844 Fix visibility logic issues with versioned records (Damian Mooyman)
    • 2019-11-19 0e87761 Fix dependency constraints (Damian Mooyman)
    • 2019-11-13 780d4f4 Fix issue with slashes in prefix (Damian Mooyman)
    • 2019-11-13 ee951cc Fix unit tests (Damian Mooyman)
    • 2019-11-12 0d2ab8c Fix invalid variable name (Damian Mooyman)

API changes

  • silverstripe/recipe-plugin (1.7.0 -> 2.0.0)

    • 2022-12-07 cb22983 Remove deprecated code (#30) (Sabina Talipova)
    • 2022-10-25 e5dceb4 Update deprecations (#27) (Steve Boyd)
  • silverstripe/vendor-plugin (1.7.0 -> 2.0.0)

    • 2022-12-14 86600ce Make the public folder mandatory (#64) (Guy Sartorelli)
    • 2022-12-07 4e2135f Remove deprecated code (#63) (Sabina Talipova)
    • 2022-08-03 ddbf19a Remove deprecated Library::RESOURCES_PATH const (Guy Sartorelli)
  • silverstripe/assets (1.13.0 -> 2.0.0)

    • 2023-01-16 9a1e094 Use more specific return type than those mandated by the interface (Maxime Rainville)
    • 2023-01-10 0784372 Removed ReturnTypeWillChange annotation (Maxime Rainville)
    • 2022-12-07 3495084 Remove deprecated code (#530) (Sabina Talipova)
  • silverstripe/config (1.6.0 -> 2.0.0)

    • 2022-12-07 c0cd27a Restore nullable params (Steve Boyd)
    • 2022-12-07 3e7097e Remove deprecated code (#75) (Sabina Talipova)
  • silverstripe/framework (4.13.0 -> 5.0.0)

    • 2023-03-21 b4f330d73 Remove configurability of attributes (Steve Boyd)
    • 2023-03-06 6d239d0b8 Remove deprecated code (Steve Boyd)
    • 2023-02-01 603723e8f Rename Diff to HtmlDiff (Guy Sartorelli)
    • 2023-01-26 ec4a8b88e Allow array style email addresses (Steve Boyd)
    • 2023-01-10 99dc6df38 Replace thirdparty difflib with maintained lib (Guy Sartorelli)
    • 2023-01-10 944722f34 Removed #[\ReturnTypeWillChange] annotations (Maxime Rainville)
    • 2022-12-14 b14de847a Make the public directory mandatory (#10617) (Guy Sartorelli)
    • 2022-12-07 53c0147f1 Remove deprecated code (#10594) (Sabina Talipova)
    • 2022-12-06 ae4d7fa09 Create orderBy() method to handle raw SQL (Steve Boyd)
    • 2022-11-30 7860e461e Remove deprecated CIConfig functionality (Steve Boyd)
    • 2022-10-17 a57c7315a Strongly-type action method signatures (Steve Boyd)
    • 2022-10-10 fbcf7dc3e Normalise trailing slashes for all paths (Florian Thoma)
    • 2022-09-19 433926fc1 Remove deprecated TinyMCE generator class (Guy Sartorelli)
    • 2022-09-15 03b929dd3 Remove support for PDO (#10499) (Guy Sartorelli)
    • 2022-09-07 a87a65736 Update translation to use symfony 6 (Steve Boyd)
    • 2022-09-07 c9bc01473 Update caching to use symfony 6 (Steve Boyd)
    • 2022-09-01 1bf86cf39 Revert shorten auto-generated table names (#10482) (Guy Sartorelli)
    • 2022-08-22 a4521a734 Undeprecate table warning message (Guy Sartorelli)
    • 2022-08-11 a76fa32a3 Remove unnecessary getGenerator() method. (Guy Sartorelli)
    • 2022-08-09 3284c0670 Remove PHPUnit 5.7 compatability hacks (Guy Sartorelli)
    • 2022-08-03 37dc0daac Remove deprecated ManifestFileFinder::RESOURCES_DIR const (Guy Sartorelli)
    • 2020-03-16 e42ed95be Update MigrationTask class to be an abstract class (Michal Kleiner)
    • 2018-10-15 f2de39162 Allow dataobject get_one without passing a class (Andrew Aitken-Fincham)
    • 2018-06-08 4cda967ea Preserve variable types in template lookup args (Loz Calver)
    • 2018-06-07 47337782a <% loop %> and <% with %> only ever create one new scope level (Loz Calver)
    • 2018-04-08 08d1cd383 Remove isDev / isTest querystring arguments (Damian Mooyman)
    • 2018-03-01 2c102c61a TestCase classes should be abstract to prevent warnings (Daniel Hensby)
    • 2018-01-12 76fc8f159 Only expose public extension methods (Damian Mooyman)
  • silverstripe/admin (1.13.0 -> 2.0.0)

    • 2023-01-10 f4633cae Remove ReturnTypeWillChange annotation (Maxime Rainville)
    • 2022-12-07 33a80f1c Remove deprecated code (#1393) (Sabina Talipova)
    • 2022-10-17 a1e70ed0 Strongly-type action method signatures (Steve Boyd)
    • 2022-09-19 48108c1b Convert SecurityAdmin to be a ModelAdmin (Steve Boyd)
    • 2022-08-06 981d5a93 Migrate SilverStripeNagivator (Guy Sartorelli)
  • silverstripe/asset-admin (1.13.0 -> 2.0.0)

    • 2022-12-07 38328d8b Remove deprecated code (#1307) (Sabina Talipova)
    • 2022-10-18 a6eba071 Strongly-type action method signatures (Steve Boyd)
  • silverstripe/campaign-admin (1.13.0 -> 2.0.0)

    • 2022-12-07 426db3e Remove deprecated code (#249) (Sabina Talipova)
    • 2022-10-17 af7f3ec Strongly-type action method signatures (Steve Boyd)
  • silverstripe/versioned-admin (1.13.0 -> 2.0.0)

    • 2022-12-07 bb10c07 Remove deprecated code (#265) (Sabina Talipova)
    • 2022-10-17 a80b368 Strongly-type action method signatures (Steve Boyd)
    • 2022-09-14 99e50c2 Migrate SilverStripeNagivator (Guy Sartorelli)
  • silverstripe/cms (4.13.0 -> 5.0.0)

    • 2023-01-17 97fdff4b Remove deprecated CMSMain::$subitem_class config (#2821) (Maxime Rainville)
    • 2023-01-16 1bd578fc Remove legacy tasks (Steve Boyd)
    • 2022-12-07 0e5428b7 Remove deprecated code (#2800) (Sabina Talipova)
    • 2022-10-18 6e19ae73 Strongly-type action method signatures (Steve Boyd)
    • 2022-08-31 1711c0c8 Move updateRelativeLink hook after concatination (#2770) (Florian Thoma)
    • 2022-08-26 18cb6d49 Normalise trailing slashes in links (Florian Thoma)
    • 2022-08-06 d7857ebb Migrate SilverStripeNagivator classes (Guy Sartorelli)
    • 2019-07-12 cda7857e Remove deprecated CMSPageHistoryViewer (Aaron Carlino)
  • silverstripe/errorpage (1.13.0 -> 2.0.0)

    • 2022-10-10 f89cd0b Strongly-type action method signatures (Steve Boyd)
  • silverstripe/versioned (1.13.0 -> 2.0.0)

    • 2022-12-07 561275b Remove deprecated code (#381) (Sabina Talipova)
    • 2022-09-01 e2924d2 Symfony 6 compatibility (Steve Boyd)
    • 2018-01-12 9eb2aee Support new extend*() format for extension methods (Damian Mooyman)
  • silverstripe/graphql (4.3.0 -> 5.0.0)

    • 2022-12-07 f80bdec Remove deprecated code (#510) (Sabina Talipova)
    • 2022-10-20 14d9ef2 Support of upgrading installer dependencies (#499) (Sabina Talipova)
  • silverstripe/tagfield (2.11.0 -> 3.0.0)

    • 2023-01-25 6f203a3 Remove deprecated code (#228) (Sabina Talipova)
  • silverstripe/comments (3.10.0 -> 4.0.0)

    • 2023-01-17 ff3ce69 Remove deprecated code (Sabina Talipova)
  • silverstripe/sharedraftcontent (2.9.0 -> 3.0.0)

    • 2023-01-25 c2ceb88 Remove deprecated code (#183) (Sabina Talipova)
  • symbiote/silverstripe-advancedworkflow (5.9.0 -> 6.0.0)

    • 2023-01-25 99559c5 Remove deprecated code (#476) (Sabina Talipova)
  • silverstripe/userforms (5.15.0 -> 6.0.0)

    • 2023-01-25 1ea2b8e Remove deprecated code (#1185) (Sabina Talipova)
  • silverstripe/securityreport (2.6.0 -> 3.0.0)

    • 2023-01-25 b2c7a99 Remove deprecated code (#60) (Sabina Talipova)
  • silverstripe/versionfeed (2.4.0 -> 3.0.0)

    • 2023-01-25 a753712 Remove deprecated code (#78) (Sabina Talipova)
  • dnadesign/silverstripe-elemental (4.11.0 -> 5.0.0)

    • 2023-01-25 f6e0266 Remove deprecated code (#1034) (Sabina Talipova)
    • 2022-11-21 9f0df28 Apply TopPage extensions by default. (#1010) (Guy Sartorelli)
    • 2019-08-02 005f8a9 Remove ElementalSolrIndex (Ingo Schommer)
  • cwp/cwp-search (1.8.0 -> 2.0.0)

    • 2023-01-25 d7fb9db Remove deprecated code (#52) (Sabina Talipova)
  • silverstripe/fulltextsearch (3.12.0 -> 4.0.0)

    • 2023-01-25 3663996 Remove deprcated code (#336) (Sabina Talipova)
    • 2023-01-20 35340d4 Strongly type iterator classes and remove ReturnTypeWillChange annotation (Maxime Rainville)
  • symbiote/silverstripe-queuedjobs (4.12.0 -> 5.0.0)

    • 2023-03-06 40e869c Remove deprecated code (Steve Boyd)
    • 2022-10-26 952727e Use correct typing for new version of monolog (Guy Sartorelli)
  • cwp/cwp-core (2.12.0 -> 3.0.0)

    • 2023-01-25 b8a6e11 Remove deprecated code (#115) (Sabina Talipova)
  • silverstripe/auditor (2.6.0 -> 3.0.0)

    • 2023-01-25 c20c342 Remove deprecated code (#48) (Sabina Talipova)
  • silverstripe/environmentcheck (2.7.0 -> 3.0.0)

    • 2023-01-25 56b3753 Remove deprecated code (#83) (Sabina Talipova)
  • silverstripe/hybridsessions (2.7.0 -> 3.0.0)

    • 2023-01-17 67bc3bd Remove deprecated code (Sabina Talipova)
    • 2023-01-13 443a927 Remove ReturnTypeWillChange annotation (Maxime Rainville)
  • silverstripe/registry (2.6.0 -> 3.0.0)

    • 2022-12-08 1ff8d18 Update import() signature (Steve Boyd)
  • silverstripe/mfa (4.8.0 -> 5.0.0)

    • 2023-01-25 096ea96 Remove deprecated code (#480) (Sabina Talipova)
  • silverstripe/crontask (2.6.0 -> 3.0.0)

    • 2023-01-25 412cfeb Remove deprecated code (#73) (Sabina Talipova)
  • silverstripe/ldap (1.6.0 -> 2.0.0)

    • 2023-01-25 b9c070e Remove deprecated code (#47) (Sabina Talipova)
    • 2023-01-20 c71c2f0 Remove ReturnTypeWillChange annotation (Maxime Rainville)
  • silverstripe/webauthn-authenticator (4.7.0 -> 5.0.0)

    • 2023-02-07 724925d Remove deprecated code (#125) (Sabina Talipova)
  • silverstripe/subsites (2.8.0 -> 3.0.0)

    • 2023-03-06 1336c7e Remove deprecated code (Steve Boyd)
    • 2023-01-26 d4bc28e Remove deprecated code (Steve Boyd)
  • cwp/cwp (2.11.0 -> 3.0.0)

    • 2023-03-09 0d1927e Remove CwpSiteSummaryExtension (Steve Boyd)
    • 2023-01-25 dec2a6f Remove deprecated code (#318) (Sabina Talipova)
  • colymba/gridfield-bulk-editing-tools (3.1.0 -> 4.0.0)

    • 2023-01-25 2f7109a Remove deprecated code (#230) (Sabina Talipova)
  • tractorcow/silverstripe-fluent (4.8.0 -> 7.0.0)

    • 2023-02-16 1af962f Remove deprecated methods. (Guy Sartorelli)
    • 2020-03-19 cf3b646 Add FluentIsolatedExtension for objects which only belong to a single locale (Damian Mooyman)
  • silverstripe/dynamodb (4.1.0 -> 5.0.0)

    • 2023-02-13 ebc58bf Add strong typing and update code syntax (Guy Sartorelli)

Dependencies

  • silverstripe/recipe-kitchen-sink (4.13.0 -> 5.0.0)

    • 2023-02-21 202ccae Stop using the fork of fluent (Guy Sartorelli)
    • 2023-02-14 eb33da1 Add silverstripe/dynamodb (Steve Boyd)
    • 2023-02-08 fea0e62 Add more modules (Steve Boyd)
    • 2023-02-08 36483f4 Use caret for silverstripe/recipe-plugin (Steve Boyd)
    • 2023-01-29 3979d78 Remove silverstripe/security-extensions (Guy Sartorelli)
    • 2023-01-18 6701348 remove cwp/cwp-pdfexport (Steve Boyd)
    • 2022-12-19 cd343c3 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/recipe-plugin (1.7.0 -> 2.0.0)

    • 2022-10-26 b81b640 Upgrade installer dependencies (Sabina Talipova)
    • 2022-08-04 e0aeb69 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/installer (4.13.0 -> 5.0.0)

    • 2023-02-07 7b49f0e Use caret for plugins (Steve Boyd)
    • 2022-12-14 406ee71 Require dev branches for composer plugins (#340) (Guy Sartorelli)
    • 2022-08-04 8ca19d5 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/vendor-plugin (1.7.0 -> 2.0.0)

    • 2022-10-26 6d322f9 Upgrade installer dependencies (Sabina Talipova)
    • 2022-08-09 c2e1c7f Require composer/installers ^2 (Steve Boyd)
    • 2022-08-04 de85c78 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/recipe-cms (4.13.0 -> 5.0.0)

    • 2022-08-04 6e7dce8 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/recipe-core (4.13.0 -> 5.0.0)

    • 2022-08-09 7716a27 Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 5a447f9 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/assets (1.13.0 -> 2.0.0)

    • 2022-10-31 a2733b9 Upgrade legue/flysystem to version 3.0 (#524) (Sabina Talipova)
    • 2022-09-01 32dd083 Require symfony ^6.1 (Steve Boyd)
    • 2022-08-09 22ab6c3 Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 35fd723 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/config (1.6.0 -> 2.0.0)

    • 2022-10-25 48b1336 Upgrade dependencies CMS5 (Sabina Talipova)
    • 2022-09-01 6ec9ca3 Require symfony ^6.1 (Steve Boyd)
    • 2022-08-09 b00bfbc Require latest patch versions of dependencies (Steve Boyd)
    • 2022-08-04 52a9dd5 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/framework (4.13.0 -> 5.0.0)

    • 2023-05-01 f7a155194 Conflict with symfony/process if not PHP 8.1 compatible (#10764) (Guy Sartorelli)
    • 2023-03-02 9868eca7e Bump masterminds/html5 to 2.7.6 to fix deperaction warning (#10714) (Maxime Rainville)
    • 2023-01-16 05fc1df89 Allow psr/container ^1.1 or ^2.0 (Steve Boyd)
    • 2023-01-11 7c20ade54 Replace thirdparty simpletest with symfony domcrawler (Guy Sartorelli)
    • 2023-01-10 3f3772dc6 Remove unnecessary bramus/monolog-colored-line-formatter (Guy Sartorelli)
    • 2022-12-21 156c6ca59 Update minimum version of oscarotero/html-parser (Steve Boyd)
    • 2022-10-20 3601b7ab8 Upgrade installer dependencies (#10534) (Sabina Talipova)
    • 2022-09-01 e6fb9634b Revert change to dependency that was made during a merge-up (#10479) (Guy Sartorelli)
    • 2022-08-09 470753194 Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 eb62db6db Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/mimevalidator (2.5.0 -> 3.0.0)

    • 2022-10-26 d0982dc Upgrade installer dependencies (Sabina Talipova)
    • 2022-08-09 19251bf Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 c8916a3 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/admin (1.13.0 -> 2.0.0)

    • 2022-12-18 2b8f53e9 Upgrade front-end build stack (#1389) (Guy Sartorelli)
    • 2022-09-19 e8f3f353 Upgrade TinyMCE from 4 to 6 (Guy Sartorelli)
    • 2022-08-09 5fc5071c Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 c80be4ee Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/asset-admin (1.13.0 -> 2.0.0)

    • 2022-12-18 6b95cde8 Upgrade build stack (#1303) (Guy Sartorelli)
    • 2022-08-09 c12dcfe4 Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 1ad9dcd2 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/campaign-admin (1.13.0 -> 2.0.0)

    • 2022-12-18 708e384 Upgrade build stack (#248) (Guy Sartorelli)
    • 2022-08-09 45b4b3c Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 7c949f2 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/versioned-admin (1.13.0 -> 2.0.0)

    • 2022-12-18 afc0dbd Upgrade webpack build stack (#263) (Guy Sartorelli)
    • 2022-10-26 c26a921 Upgrade installer dependencies (Sabina Talipova)
    • 2022-08-04 6c60865 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/cms (4.13.0 -> 5.0.0)

    • 2022-12-18 5e843d26 Upgrade build stack (#2795) (Guy Sartorelli)
    • 2022-08-09 7381de15 Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 72f8e5f7 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/errorpage (1.13.0 -> 2.0.0)

    • 2022-08-09 f5a177c Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 5700408 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/reports (4.13.0 -> 5.0.0)

    • 2022-10-26 23786e5d Upgrade installer dependencies (Sabina Talipova)
    • 2022-08-04 65bc353f Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/siteconfig (4.13.0 -> 5.0.0)

    • 2022-10-26 30197074 Upgrade installer dependencies (Sabina Talipova)
    • 2022-08-04 400b82c4 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/versioned (1.13.0 -> 2.0.0)

    • 2022-10-26 3f55378 Upgrade installer dependencies (Sabina Talipova)
    • 2022-08-04 c9dbdd6 Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/graphql (4.3.0 -> 5.0.0)

    • 2023-01-13 1149129 Use webonyx/graphq-PHP 15 (Steve Boyd)
    • 2022-10-26 32d25c7 Upgrade installer dependencies (Sabina Talipova)
    • 2022-08-09 5b5971f Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 e63d41d Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/session-manager (1.5.0 -> 2.0.0)

    • 2022-12-18 4043291 Upgrade build stack (#123) (Guy Sartorelli)
    • 2022-08-17 8712b4b Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 e0092bf Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/login-forms (4.9.0 -> 5.0.0)

    • 2022-12-18 4f4e68e Upgrade build stack (#128) (Guy Sartorelli)
    • 2022-08-09 89769f4 Update dependencies for CMS 5 (Steve Boyd)
    • 2022-08-04 7948d1e Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/recipe-authoring-tools (1.13.0 -> 2.0.0)

    • 2022-12-18 3ec9b66 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/documentconverter (2.5.0 -> 3.0.0)

    • 2023-01-31 fc23e53 Upgrade frontend build stack (#38) (Guy Sartorelli)
    • 2022-12-18 5bbaed1 PHP Support in CMS5 (#35) (Sabina Talipova)
  • silverstripe/iframe (2.4.0 -> 3.0.0)

    • 2023-01-10 031d47c PHP Support in CMS5 (#63) (Sabina Talipova)
  • silverstripe/tagfield (2.11.0 -> 3.0.0)

    • 2023-02-01 249842f Upgrade frontend build stack (#229) (Guy Sartorelli)
    • 2022-12-18 08d1646 PHP Support in CMS5 (#224) (Sabina Talipova)
  • silverstripe/taxonomy (2.5.0 -> 3.0.0)

    • 2022-12-18 95a13ed PHP Support in CMS5 (#85) (Sabina Talipova)
  • silverstripe/recipe-blog (1.13.0 -> 2.0.0)

    • 2022-12-18 3e5a612 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/blog (3.12.0 -> 4.0.0)

    • 2023-02-07 ffea8ac Upgrade frontend build stack (#697) (Guy Sartorelli)
    • 2022-12-09 29f0b39 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/widgets (2.4.0 -> 3.0.0)

    • 2023-01-09 9df1794 PHP Support in CMS5 (#193) (Sabina Talipova)
  • silverstripe/content-widget (2.4.0 -> 3.0.0)

    • 2022-12-18 0b65d10 PHP Support in CMS5 (#35) (Sabina Talipova)
  • silverstripe/spamprotection (3.4.0 -> 4.0.0)

    • 2022-12-13 d669b42 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/comments (3.10.0 -> 4.0.0)

    • 2023-01-20 3aee737 Upgrade frontend build stack (Guy Sartorelli)
    • 2022-12-09 d6b44f2 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/comment-notifications (2.4.0 -> 3.0.0)

    • 2023-02-07 11528c7 Explicitly require framework (Steve Boyd)
    • 2022-12-09 5fed9b2 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/recipe-collaboration (1.13.0 -> 2.0.0)

    • 2023-01-10 30038f1 PHP Support in CMS5 (#21) (Sabina Talipova)
  • silverstripe/contentreview (4.7.0 -> 5.0.0)

    • 2023-01-30 dc66fe8 Upgrade frontend build stack (#182) (Guy Sartorelli)
    • 2023-01-09 f4b409e PHP Support in CMS5 (#178) (Sabina Talipova)
  • silverstripe/sharedraftcontent (2.9.0 -> 3.0.0)

    • 2023-01-30 2ae00a0 Upgrade build stack (#186) (Guy Sartorelli)
    • 2022-12-18 ecb33ba PHP Support in CMS5 (#181) (Sabina Talipova)
  • symbiote/silverstripe-advancedworkflow (5.9.0 -> 6.0.0)

    • 2023-02-07 6f8b057 Upgrade frontend build stack (#478) (Guy Sartorelli)
    • 2023-01-10 579fbb0 PHP Support in CMS5 (#474) (Sabina Talipova)
  • silverstripe/recipe-form-building (1.13.0 -> 2.0.0)

    • 2022-12-18 317c7c2 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/segment-field (2.8.0 -> 3.0.0)

    • 2023-01-31 e431f24 Upgrade frontend build stack (#74) (Guy Sartorelli)
    • 2022-12-18 c820963 PHP Support in CMS5 (#72) (Sabina Talipova)
  • silverstripe/userforms (5.15.0 -> 6.0.0)

    • 2023-01-30 1c0dd09 Upgrade frontend build stack (#1191) (Guy Sartorelli)
    • 2022-12-13 2b9d983 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/recipe-reporting-tools (1.13.0 -> 2.0.0)

    • 2022-12-18 adcb4e1 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/externallinks (2.4.0 -> 3.0.0)

    • 2023-01-30 8ce91fb Upgrade frontend build stack (#90) (Guy Sartorelli)
    • 2022-12-18 fc8f9d5 PHP Support in CMS5 (#87) (Sabina Talipova)
  • silverstripe/securityreport (2.6.0 -> 3.0.0)

    • 2023-01-10 731da75 PHP Support in CMS5 (#59) (Sabina Talipova)
  • silverstripe/sitewidecontent-report (3.4.0 -> 4.0.0)

    • 2023-01-30 5e5ab46 Upgrade frontend build stack (#59) (Guy Sartorelli)
    • 2023-01-10 8b12ef8 PHP Support in CMS5 (#57) (Sabina Talipova)
  • bringyourownideas/silverstripe-maintenance (2.7.0 -> 3.0.0)

    • 2023-01-31 1ecb60e Upgrade frontend build stack (#187) (Guy Sartorelli)
    • 2022-12-08 9cadfaf PHP Support in CMS5 (Sabina Talipova)
  • bringyourownideas/silverstripe-composer-update-checker (3.0.0 -> 4.0.0)

    • 2022-12-08 3c9044b PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/recipe-services (1.13.0 -> 2.0.0)

    • 2023-01-10 4ff9f8c PHP Support in CMS5 (#23) (Sabina Talipova)
  • silverstripe/restfulserver (2.6.0 -> 3.0.0)

    • 2022-12-18 d788f5d PHP Support in CMS5 (#102) (Sabina Talipova)
  • silverstripe/versionfeed (2.4.0 -> 3.0.0)

    • 2023-01-10 9b92ba8 PHP Support in CMS5 (#77) (Sabina Talipova)
  • silverstripe/recipe-content-blocks (2.13.0 -> 3.0.0)

    • 2023-01-17 522442c PHP Support in CMS5 (#28) (Sabina Talipova)
  • dnadesign/silverstripe-elemental (4.11.0 -> 5.0.0)

    • 2023-01-13 bfed1ab Upgrade front-end build stack (Guy Sartorelli)
    • 2022-08-10 02c3ed0 Update dependencies for CMS 5 (Steve Boyd)
  • silverstripe/elemental-fileblock (2.5.0 -> 3.0.0)

    • 2022-12-12 405c688 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/elemental-bannerblock (2.7.0 -> 3.0.0)

    • 2023-01-30 91190b8 Upgrade frontend build stack (#98) (Guy Sartorelli)
    • 2023-01-16 732f442 Loosen the elemental constrain to avoid conflicts on other PRs (Maxime Rainville)
    • 2022-12-12 e9cac1b PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/recipe-solr-search (2.13.0 -> 3.0.0)

    • 2022-12-18 bf4c9ab PHP Support in CMS5 (Sabina Talipova)
  • cwp/cwp-search (1.8.0 -> 2.0.0)

    • 2023-01-17 c47f5a4 PHP Support in CMS5 (#51) (Sabina Talipova)
  • silverstripe/fulltextsearch (3.12.0 -> 4.0.0)

    • 2022-12-12 525eb9a PHP Support in CMS5 (Sabina Talipova)
  • symbiote/silverstripe-queuedjobs (4.12.0 -> 5.0.0)

    • 2022-08-10 4db7317 Update dependencies for CMS 5 (Steve Boyd)
  • silverstripe/recipe-ccl (2.13.0 -> 3.0.0)

    • 2023-01-17 9f43099 PHP Support in CMS5 (#7) (Sabina Talipova)
  • cwp/cwp-core (2.12.0 -> 3.0.0)

    • 2023-01-17 0e416b0 PHP Support in CMS5 (#114) (Sabina Talipova)
  • silverstripe/auditor (2.6.0 -> 3.0.0)

    • 2023-01-17 e5162c8 PHP Support in CMS5 (#47) (Sabina Talipova)
  • silverstripe/environmentcheck (2.7.0 -> 3.0.0)

    • 2022-12-18 d038843 PHP Support in CMS5 (#82) (Sabina Talipova)
  • silverstripe/hybridsessions (2.7.0 -> 3.0.0)

    • 2022-12-12 495ebfb PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/registry (2.6.0 -> 3.0.0)

    • 2022-08-04 212ad7d Update core dependencies for CMS 5 (Steve Boyd)
  • silverstripe/totp-authenticator (4.6.0 -> 5.0.0)

    • 2023-03-08 0973c8c Require spomky-labs/otphp ^11.1 (Steve Boyd)
    • 2023-01-30 2518a69 Upgrade frontend build stack (#109) (Guy Sartorelli)
    • 2023-01-17 113f966 PHP Support in CMS5 (#107) (Sabina Talipova)
  • silverstripe/mfa (4.8.0 -> 5.0.0)

    • 2023-01-30 9859c77 Remove silverstripe/security-extensions dependency (Guy Sartorelli)
    • 2023-01-30 a86914c Upgrade frontend build stack (#481) (Guy Sartorelli)
    • 2022-12-13 99b454b PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/crontask (2.6.0 -> 3.0.0)

    • 2022-12-18 463023e PHP Support in CMS5 (#72) (Sabina Talipova)
  • silverstripe/gridfieldqueuedexport (2.8.0 -> 3.0.0)

    • 2023-01-31 65963b5 Upgrade frontend build stack (#71) (Guy Sartorelli)
    • 2022-12-18 7cd8e1d PHP Support in CMS5 (#69) (Sabina Talipova)
  • silverstripe/ldap (1.6.0 -> 2.0.0)

    • 2022-12-12 5b77ab8 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/textextraction (3.5.0 -> 4.0.0)

    • 2022-12-13 862fb81 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/realme (4.4.0 -> 5.0.0)

    • 2023-01-31 aae6510 Upgrade frontend build stack (#94) (Guy Sartorelli)
    • 2022-12-18 3fd94ed PHP Support in CMS5 (#92) (Sabina Talipova)
  • silverstripe/ckan-registry (1.7.0 -> 2.0.0)

    • 2023-01-29 5b2ded4 Upgrade frontend build stack (#281) (Guy Sartorelli)
    • 2022-12-09 1d70aa5 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/webauthn-authenticator (4.7.0 -> 5.0.0)

    • 2023-01-30 1e8cfb3 Upgrade frontend build stack (#126) (Guy Sartorelli)
    • 2022-12-13 33d4507 PHP Support in CMS5 (Sabina Talipova)
  • silverstripe/subsites (2.8.0 -> 3.0.0)

    • 2023-01-24 47e293b Upgrade frontend build stack (Guy Sartorelli)
    • 2023-01-10 a67b7ef PHP Support in CMS5 (#497) (Sabina Talipova)
  • silverstripe/lumberjack (2.3.0 -> 3.0.0)

    • 2023-01-31 7a953b0 Upgrade frontend build stack (#117) (Guy Sartorelli)
    • 2022-12-18 e238865 PHP Support in CMS5 (#114) (Sabina Talipova)
  • silverstripe/staticpublishqueue (5.3.0 -> 6.0.0)

    • 2022-12-18 5432813 PHP Support in CMS5 (#157) (Sabina Talipova)
  • cwp/starter-theme (3.3.0 -> 4.0.0)

    • 2022-12-18 a12e58a PHP Support in CMS5 (#216) (Sabina Talipova)
  • cwp/agency-extensions (2.8.0 -> 3.0.0)

    • 2023-01-31 8e40f56 Upgrade frontend build stack (#82) (Guy Sartorelli)
    • 2023-01-17 3d1ae3d PHP Support in CMS5 (#81) (Sabina Talipova)
  • cwp/watea-theme (3.2.0 -> 4.0.0)

    • 2022-12-18 0b71677 PHP Support in CMS5 (#159) (Sabina Talipova)
  • cwp/cwp (2.11.0 -> 3.0.0)

    • 2023-01-17 ac2a374 PHP Support in CMS5 (#317) (Sabina Talipova)
  • dnadesign/silverstripe-elemental-userforms (3.3.0 -> 4.0.0)

    • 2022-12-09 98ebc6f PHP Support in CMS5 (Sabina Talipova)
  • symbiote/silverstripe-multivaluefield (5.4.0 -> 6.0.0)

    • 2023-01-31 95b8cea Upgrade frontend build stack (#88) (Guy Sartorelli)
    • 2022-12-18 ab0bf06 PHP Support in CMS5 (#86) (Sabina Talipova)
  • symbiote/silverstripe-gridfieldextensions (3.6.0 -> 4.0.0)

    • 2022-08-10 d0c0cc0 Update dependencies for CMS 5 (Steve Boyd)
  • colymba/gridfield-bulk-editing-tools (3.1.0 -> 4.0.0)

    • 2023-01-18 dfcc4ce Upgrade frontend build stack (Guy Sartorelli)
    • 2022-12-18 1ec807c PHP Support in CMS5 (#228) (Sabina Talipova)
  • tractorcow/silverstripe-fluent (4.8.0 -> 7.0.0)

    • 2023-01-26 e85e5b8 Upgrade frontend build stack (Guy Sartorelli)
    • 2023-01-18 0d9fc05 Upgrade dependencies for CMS 5 compatibility (Maxime Rainville)
    • 2020-12-14 f31e2c0 Bump ini from 1.3.4 to 1.3.7 (#661) (dependabot[bot])
    • 2020-09-04 da92793 Bump node-sass from 4.6.0 to 4.14.1 (dependabot[bot])
    • 2020-09-04 6371f64 Bump is-my-json-valid from 2.16.1 to 2.20.5 (dependabot[bot])
    • 2020-09-04 7e51d10 Bump lodash.mergewith from 4.6.0 to 4.6.2 (dependabot[bot])
    • 2020-07-30 4588efd Bump elliptic from 6.4.0 to 6.5.3 (dependabot[bot])
    • 2020-04-30 5906b6c Bump jQuery from 3.2.1 to 3.5.0 (dependabot[bot])
  • silverstripe/dynamodb (4.1.0 -> 5.0.0)

    • 2023-02-12 1f8e3b4 Upgrade dependencies for CMS 5 compatability (Guy Sartorelli)

Documentation

  • silverstripe/installer (4.13.0 -> 5.0.0)

    • 2023-04-19 a5e2f36 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/assets (1.13.0 -> 2.0.0)

    • 2023-04-19 be8161b Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/config (1.6.0 -> 2.0.0)

    • 2023-04-19 5b9fb93 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/framework (4.13.0 -> 5.0.0)

    • 2023-04-19 9a6414a84 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/mimevalidator (2.5.0 -> 3.0.0)

    • 2023-04-19 a63f0d0 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/admin (1.13.0 -> 2.0.0)

    • 2023-04-19 1efa5248 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/asset-admin (1.13.0 -> 2.0.0)

    • 2023-04-19 210ce7c6 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/campaign-admin (1.13.0 -> 2.0.0)

    • 2023-04-19 1e15d76 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/versioned-admin (1.13.0 -> 2.0.0)

    • 2023-04-19 8f588cb Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/cms (4.13.0 -> 5.0.0)

    • 2023-04-19 cfc48fad Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/errorpage (1.13.0 -> 2.0.0)

    • 2023-04-19 d72193f Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/reports (4.13.0 -> 5.0.0)

    • 2023-04-19 53a2bcc9 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/siteconfig (4.13.0 -> 5.0.0)

    • 2023-04-19 c2be6ee3 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/versioned (1.13.0 -> 2.0.0)

    • 2023-04-19 0370ab3 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/graphql (4.3.0 -> 5.0.0)

    • 2023-04-19 e4a2cc0 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/session-manager (1.5.0 -> 2.0.0)

    • 2023-04-19 a9dac8d Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/login-forms (4.9.0 -> 5.0.0)

    • 2023-04-19 3dc041d Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-authoring-tools (1.13.0 -> 2.0.0)

    • 2023-04-19 f9d3f82 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/documentconverter (2.5.0 -> 3.0.0)

    • 2023-04-19 91c243e Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/iframe (2.4.0 -> 3.0.0)

    • 2023-04-19 29211f5 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/tagfield (2.11.0 -> 3.0.0)

    • 2023-04-19 242f6bb Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/taxonomy (2.5.0 -> 3.0.0)

    • 2023-04-19 adb43f1 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-blog (1.13.0 -> 2.0.0)

    • 2023-04-19 7bdd983 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/blog (3.12.0 -> 4.0.0)

    • 2023-04-19 05ed7e3 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/widgets (2.4.0 -> 3.0.0)

    • 2023-04-19 7e6ee59 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/content-widget (2.4.0 -> 3.0.0)

    • 2023-04-19 66bfe73 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/spamprotection (3.4.0 -> 4.0.0)

    • 2023-04-19 00869b6 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/comments (3.10.0 -> 4.0.0)

    • 2023-04-19 1a07811 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/comment-notifications (2.4.0 -> 3.0.0)

    • 2023-04-19 6263013 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-collaboration (1.13.0 -> 2.0.0)

    • 2023-04-19 5c3423f Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/contentreview (4.7.0 -> 5.0.0)

    • 2023-04-19 7a7e930 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/sharedraftcontent (2.9.0 -> 3.0.0)

    • 2023-04-19 c042fcc Update README.md for CMS 5 (Guy Sartorelli)
  • symbiote/silverstripe-advancedworkflow (5.9.0 -> 6.0.0)

    • 2023-04-19 697b28d Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-form-building (1.13.0 -> 2.0.0)

    • 2023-04-19 d4ee441 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/segment-field (2.8.0 -> 3.0.0)

    • 2023-04-19 5693c65 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/userforms (5.15.0 -> 6.0.0)

    • 2023-04-19 c021ac1 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-reporting-tools (1.13.0 -> 2.0.0)

    • 2023-04-19 1d3defb Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/externallinks (2.4.0 -> 3.0.0)

    • 2023-04-19 bb4bee7 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/securityreport (2.6.0 -> 3.0.0)

    • 2023-04-19 15d5398 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/sitewidecontent-report (3.4.0 -> 4.0.0)

    • 2023-04-19 5e7a3d7 Update README.md for CMS 5 (Guy Sartorelli)
  • bringyourownideas/silverstripe-maintenance (2.7.0 -> 3.0.0)

    • 2023-04-19 35bd009 Update README.md for CMS 5 (Guy Sartorelli)
  • bringyourownideas/silverstripe-composer-update-checker (3.0.0 -> 4.0.0)

    • 2023-04-19 7489f09 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-services (1.13.0 -> 2.0.0)

    • 2023-04-19 e1ad49c Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/restfulserver (2.6.0 -> 3.0.0)

    • 2023-04-19 39614ba Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/versionfeed (2.4.0 -> 3.0.0)

    • 2023-04-19 a51c30f Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-content-blocks (2.13.0 -> 3.0.0)

    • 2023-04-19 e2c0891 Update README.md for CMS 5 (Guy Sartorelli)
  • dnadesign/silverstripe-elemental (4.11.0 -> 5.0.0)

    • 2023-04-19 0670885 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/elemental-fileblock (2.5.0 -> 3.0.0)

    • 2023-04-19 e3aef36 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/elemental-bannerblock (2.7.0 -> 3.0.0)

    • 2023-04-19 174ac79 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-solr-search (2.13.0 -> 3.0.0)

    • 2023-04-19 c8af273 Update README.md for CMS 5 (Guy Sartorelli)
  • cwp/cwp-search (1.8.0 -> 2.0.0)

    • 2023-04-19 e3f5bd2 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/fulltextsearch (3.12.0 -> 4.0.0)

    • 2023-04-19 6245ec9 Update README.md for CMS 5 (Guy Sartorelli)
  • symbiote/silverstripe-queuedjobs (4.12.0 -> 5.0.0)

    • 2023-04-19 0d7ab04 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/recipe-ccl (2.13.0 -> 3.0.0)

    • 2023-04-19 3d9c07e Update README.md for CMS 5 (Guy Sartorelli)
  • cwp/cwp-core (2.12.0 -> 3.0.0)

    • 2023-04-19 1e41ed2 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/auditor (2.6.0 -> 3.0.0)

    • 2023-04-19 f7c9b84 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/environmentcheck (2.7.0 -> 3.0.0)

    • 2023-04-19 b459172 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/hybridsessions (2.7.0 -> 3.0.0)

    • 2023-04-19 ad602b2 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/developer-docs (4.13.0 -> 5.0.0)

    • 2023-05-03 e9b50eaa Tweak changelog language (Maxime Rainville)
    • 2023-05-03 cc12919a Update changelog API changes to include fqns (Sabina Talipova)
    • 2023-05-02 a612bc13 Tweak from peer review feedback (Maxime Rainville)
    • 2023-05-02 aad933cb Hide Full API change and commit list in accordions (Maxime Rainville)
    • 2023-05-02 721672d1 Final update for CMS5.0 changelog (Maxime Rainville)
    • 2023-04-26 91551914 Update changelog API changes to include reasons (Guy Sartorelli)
    • 2023-04-24 479af42b Be more explicit about web vs project roots (#251) (Guy Sartorelli)
    • 2023-04-18 544871a3 Update react injector GraphQL example for CMS 5 (Guy Sartorelli)
    • 2023-04-17 e4f7bc7b Update Controllers section (#206) (Guy Sartorelli)
    • 2023-04-17 ced97592 Update templates section (#198) (Guy Sartorelli)
    • 2023-04-17 b77a59a7 Update Getting Started and ORM sections (#189) (Guy Sartorelli)
    • 2023-04-12 bf375d35 Review documentation for common errors (#188) (Guy Sartorelli)
    • 2023-04-12 83dd34c5 Clearly document the replacement for $ThemeDir (Guy Sartorelli)
    • 2023-04-09 1b53ae29 Remove former core committers (Maxime Rainville)
    • 2023-03-26 77ce46df Update history viewer GraphQL examples for CMS 5 (Guy Sartorelli)
    • 2023-03-21 d00ef6bd Handle email send exceptions (Steve Boyd)
    • 2023-03-20 9f8e25e2 Remove references to PDO (Steve Boyd)
    • 2023-03-13 682e8de5 Document setting summary by default (#93) (Guy Sartorelli)
    • 2023-03-13 f0f83591 Document changes to the updateRelativeLink (#75) (Guy Sartorelli)
    • 2023-03-13 c58bac41 Fix preview docs link and info (#99) (Guy Sartorelli)
    • 2023-03-08 5ce64db4 Add fluent changes and upgrade guides (#176) (Guy Sartorelli)
    • 2023-02-27 367a4b09 Change react-router constraint in 5.0 changelog (#168) (Guy Sartorelli)
    • 2023-02-24 915e19f8 Document some behaviours that aren't supported anymore (Guy Sartorelli)
    • 2023-02-24 58480822 Move templates to where it should be. (Guy Sartorelli)
    • 2023-02-24 9fee07d8 Remove 4.x alpha changelogs (Guy Sartorelli)
    • 2023-02-23 32ca3d0e Clarification for some removed deprecated class and methods in 5.0.0 and 5.0.0-beta1 (Sabina Talipova)
    • 2023-02-21 b9f820dd DBComposite dynamic data (Steve Boyd)
    • 2023-02-16 42aac1fe StaticPublishQueue is now opt-in (Steve Boyd)
    • 2023-02-14 1782bef5 Update docs for deprecations (#160) (Guy Sartorelli)
    • 2023-02-09 282c839d Rearrange 5.0.0-beta1 changelog (Steve Boyd)
    • 2023-02-09 4cfe9d1c Update 5.0.0-beta1 changelog (Steve Boyd)
    • 2023-02-08 f9fed249 Last changes for the changelog before beta release (#154) (Guy Sartorelli)
    • 2023-02-08 8b5ac996 5.0.0 changelog removed and changed API (Steve Boyd)
    • 2023-02-01 1c427090 Add supported module (Maxime Rainville)
    • 2023-01-30 a2e18b5a New limit behaviour (Maxime Rainville)
    • 2023-01-30 a9a435ea Document features from security-extensions (Guy Sartorelli)
    • 2023-01-30 ac19d46f Document changes required to upgrade build stack (#137) (Guy Sartorelli)
    • 2023-01-26 23e2e6a8 Update docs to include new FormField validation hook (Loz Calver)
    • 2023-01-26 6bef21e2 Update Email docs (Steve Boyd)
    • 2023-01-20 77c8932b Define what can be merge post beta (Maxime Rainville)
    • 2023-01-19 67aa583d parameter order (Steve Boyd)
    • 2023-01-17 9482f5ed Document changes to trailing slash in URLs (Guy Sartorelli)
    • 2023-01-17 9270e025 Removed HTMLValue shorthand (Steve Boyd)
    • 2023-01-17 05178763 Mark the removal of subitem_class config (Maxime Rainville)
    • 2023-01-16 035c139d masterminds/html5 (Steve Boyd)
    • 2023-01-16 4f1ad36f List which classes had ReturnTypeWillChange annotation removed (Maxime Rainville)
    • 2022-12-20 995b414e Update changelog with breaking JS changes (Guy Sartorelli)
    • 2022-12-20 2252967e Update JavaScript docs (Guy Sartorelli)
    • 2022-12-20 deb228b3 Update entwine docs to match current behaviour (Guy Sartorelli)
    • 2022-12-20 3d26b219 Add entwine docs from readme (Guy Sartorelli)
    • 2022-12-05 c0599764 DataList::sort() and orderBy() (Steve Boyd)
    • 2022-11-21 ef798631 Document adding TopPage extensions by default (#94) (Guy Sartorelli)
    • 2022-10-18 a44164ab Updates for symfony/mailer (Steve Boyd)
    • 2022-10-18 aeded78b Document controller method signatures (Steve Boyd)
    • 2022-09-27 6d057eb6 Document upgrading to TinyMCE 6 (Guy Sartorelli)
    • 2022-09-19 11123b44 Document SecurityAdmin extending ModelAdmin (Steve Boyd)
    • 2022-09-15 ebe0e9dc Document breaking changes to template syntax (#81) (Guy Sartorelli)
    • 2022-09-15 4363fbfa Changelog for 5.0.0-alpha1 (Steve Boyd)
    • 2022-09-14 e4b01832 Fix links from upgrade docs (#66) (Guy Sartorelli)
    • 2022-09-14 b58b556d Document making models previewable via extensions (Guy Sartorelli)
    • 2022-09-14 db79fc5b Move upgrade docs into changelog for 5.0.0 (#84) (Guy Sartorelli)
    • 2022-09-07 1f87c415 Document symfony 6 dependency changes (Steve Boyd)
    • 2022-09-01 09472a53 Document removal of HistoryControllerFactory (#71) (Guy Sartorelli)
    • 2022-09-01 b497e270 Document reverting a change to table names (#78) (Guy Sartorelli)
    • 2022-08-31 a1d8a3fe Document changes in various rescued master commits (#70) (Guy Sartorelli)
    • 2022-08-10 9ca7cee9 Document removing deprecated support for PHPUnit 5.7 (Guy Sartorelli)
    • 2022-08-08 e933bcef Document breaking changes for updating resources dir (#58) (Guy Sartorelli)
    • 2022-08-07 c9cd71e0 Document SilverStripeNavigator for front-end use (Guy Sartorelli)
    • 2022-08-07 168a8c7f Document breaking changes from migrating SilverStripeNavigator (Guy Sartorelli)
    • 2022-08-05 79dcb6ae Remove references to GraphQL v3 (Guy Sartorelli)
    • 2022-07-21 c8dc5b9c Update references to CMS 3 and 4 (Guy Sartorelli)
  • silverstripe/registry (2.6.0 -> 3.0.0)

    • 2023-04-19 5a5412d Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/totp-authenticator (4.6.0 -> 5.0.0)

    • 2023-04-19 2f57d0f Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/mfa (4.8.0 -> 5.0.0)

    • 2023-04-19 17f2774 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/gridfieldqueuedexport (2.8.0 -> 3.0.0)

    • 2023-04-19 e398882 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/ldap (1.6.0 -> 2.0.0)

    • 2023-04-19 800ee3d Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/textextraction (3.5.0 -> 4.0.0)

    • 2023-04-19 0f3cebc Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/realme (4.4.0 -> 5.0.0)

    • 2023-04-19 964386d Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/ckan-registry (1.7.0 -> 2.0.0)

    • 2023-04-19 7642587 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/webauthn-authenticator (4.7.0 -> 5.0.0)

    • 2023-04-19 e759886 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/subsites (2.8.0 -> 3.0.0)

    • 2023-04-19 5189a26 Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/lumberjack (2.3.0 -> 3.0.0)

    • 2023-04-19 3248baa Update README.md for CMS 5 (Guy Sartorelli)
  • silverstripe/staticpublishqueue (5.3.0 -> 6.0.0)

    • 2023-04-19 402596a Update README.md for CMS 5 (Guy Sartorelli)
  • cwp/starter-theme (3.3.0 -> 4.0.0)

    • 2023-04-19 d2dee3d Update README.md for CMS 5 (Guy Sartorelli)
  • cwp/agency-extensions (2.8.0 -> 3.0.0)

    • 2023-04-19 c599c0c Update README.md for CMS 5 (Guy Sartorelli)
  • cwp/watea-theme (3.2.0 -> 4.0.0)

    • 2023-04-19 d4cee11 Update README.md for CMS 5 (Guy Sartorelli)
  • cwp/cwp (2.11.0 -> 3.0.0)

    • 2023-04-19 dc1dd10 Update README.md for CMS 5 (Guy Sartorelli)
  • dnadesign/silverstripe-elemental-userforms (3.3.0 -> 4.0.0)

    • 2023-04-19 5ff7177 Update README.md for CMS 5 (Guy Sartorelli)
  • symbiote/silverstripe-multivaluefield (5.4.0 -> 6.0.0)

    • 2023-04-19 fc7c4ae Update README.md for CMS 5 (Guy Sartorelli)
  • symbiote/silverstripe-gridfieldextensions (3.6.0 -> 4.0.0)

    • 2023-04-19 4961634 Update README.md for CMS 5 (Guy Sartorelli)
  • colymba/gridfield-bulk-editing-tools (3.1.0 -> 4.0.0)

    • 2023-04-19 f7f15e9 Update README.md for CMS 5 (Guy Sartorelli)
  • tractorcow/silverstripe-fluent (4.8.0 -> 7.0.0)

    • 2023-04-19 e7dca32 Update README.md for CMS 5 (Guy Sartorelli)

Other changes

  • silverstripe/framework (4.13.0 -> 5.0.0)

    • 2023-02-22 c82d11ef7 Add isFlushed() to Kernel interface (Chris Penny)
    • 2023-02-22 0633f2ed0 Add kitchensink fields to formfield validation test (Loz Calver)
    • 2022-09-01 06b13e0fa Revert "Merge pull request #10450 from creative-commoners/pulls/5/rescue-master-generators" (#10483) (Guy Sartorelli)
    • 2017-06-28 81beddc16 Add deprecated method to make CMS tests work (Sam Minnee)
    • 2017-06-28 9c7ecb1f7 Further work on Loz’ solution (Sam Minnee)
    • 2017-06-28 850482138 Proposed solution for caching template generator counts (Loz Calver)
    • 2017-06-28 749405170 Update MySQLDatabaseTest to work with new query iterators (Loz Calver)
    • 2017-01-16 2ead3746d Replace Map_Iterator with a generator. (Sam Minnee)
  • silverstripe/cms (4.13.0 -> 5.0.0)

    • 2023-01-29 b02beba7 Resolve a couple of behat issues (#2830) (Guy Sartorelli)
    • 2022-11-21 003f9ba7 Revert "Merge branch '4' into 5" (Guy Sartorelli)
  • silverstripe/errorpage (1.13.0 -> 2.0.0)

    • 2023-04-14 4d42b16 Remove $ from install command (Ed Wilde)
  • silverstripe/sharedraftcontent (2.9.0 -> 3.0.0)

    • 2023-04-18 144eb54 Remove $ from install command (Ed Wilde)
  • dnadesign/silverstripe-elemental (4.11.0 -> 5.0.0)

    • 2023-03-06 27f2622 Prevent mapStateToProps re-rendering on formstate changes (Bernie Hamlin)
  • silverstripe/developer-docs (4.13.0 -> 5.0.0)

    • 2023-02-08 52afbd06 Last bit of feedback (Maxime Rainville)
    • 2023-02-08 d2b83aed Tweak spacing (Maxime Rainville)
    • 2023-02-08 1d6c051c Replace references to "official support" with "commercial support" (Maxime Rainville)
    • 2023-02-08 2e2518fc Add a bigger explanation about composer/installer (Maxime Rainville)
    • 2023-02-08 2f5f3e49 Clarify expectation for testing of community supported module (Maxime Rainville)
    • 2023-02-08 79570c2a Better last step for converting a module (Maxime Rainville)
    • 2023-02-08 1fa3b6b0 Remove failded builds that are now green. (Maxime Rainville)
    • 2023-02-08 283fb693 Link to contribution guideline. (Maxime Rainville)
    • 2023-02-08 e6f9da37 Add missing backticks (Maxime Rainville)
    • 2023-02-08 428d5a41 Bring back line pointing the call for maintainers for some old TinyMCE plugin. (Maxime Rainville)
    • 2023-02-08 4ff1354a Mark beta changelog as unreleased. (Maxime Rainville)
    • 2023-02-07 fa9fe88c Tweaks (Maxime Rainville)
    • 2023-02-07 6059447c Clean up a bunch of class references (Maxime Rainville)
    • 2023-02-07 c4f1aa5a Apply feedback from peer review (Maxime Rainville)
    • 2023-01-31 84e48277 Apply suggestions from code review (Maxime Rainville)
    • 2023-01-22 c021f5b3 Apply suggestions from code review (Maxime Rainville)
  • silverstripe/staticpublishqueue (5.3.0 -> 6.0.0)

    • 2023-03-30 2546677 Bugfix: Use copy() and unlink() instead of rename() (Chris Penny)
  • tractorcow/silverstripe-fluent (4.8.0 -> 7.0.0)

    • 2023-02-07 b3e55b9 chore: remove redundant alias (Damian Mooyman)
    • 2022-04-28 37b5e16 Minor grammatical correction (Fred Condo)
    • 2022-03-25 bb46d9d Lowering minimum PHP version to see if we can support it. (Mojmir Fendek)
    • 2022-03-25 bf37abb Fixes. (Mojmir Fendek)
    • 2022-03-10 10131cd chore: update 5 alias to 5.2 (Damian Mooyman)
    • 2022-02-28 98db572 Update FluentAdminTrait.PHP (Rens Korswagen)
    • 2021-11-04 9ac7305 allow PHP 8 (bumbus)
    • 2021-10-18 7acbe4e feat(locale admin): add hook to update fluent locales (Oliver)
    • 2021-10-04 5384deb Italian translation (Giancarlo Di Massa)
    • 2021-07-12 e120dce feat(site tree extension): add option to disable locale prepend to link (norden-oliver)
    • 2021-06-30 d68e490 Update src/Extension/FluentExtension.PHP (Damian Mooyman)
    • 2021-06-27 37aec66 Consolidate some redundant logic in code (Damian Mooyman)
    • 2021-06-18 4d386be PR fixes. (Mojmir Fendek)
    • 2021-06-16 0cb3b6c PR fixes. (Mojmir Fendek)
    • 2021-05-23 cd9279d Unit tests for locale switching (Damian Mooyman)
    • 2021-05-23 31528e2 Remove redundant phpdoc (Damian Mooyman)
    • 2021-05-23 810bcef Implement unit tests (Damian Mooyman)
    • 2021-05-23 f0043fd Adjust setters / getters (Damian Mooyman)
    • 2021-05-21 a281899 FEATURE: Add timezone field to CMS to allow dates to be shown in local timezone (Damian Mooyman)
    • 2021-05-20 e9720c2 PR fixes. (Mojmir Fendek)
    • 2021-04-23 67b472a Revert default to prevent to same as 5.0 to prevent semver breakage (Damian Mooyman)
    • 2021-04-20 1e5f1e0 Add missing CRUD permissions for Locale dataobject (Damian Mooyman)
    • 2021-04-16 8a6b778 Bugfix for version history viewer (Vivienne Tubbs)
    • 2021-04-08 bb7ec0c Remove outdated link (Damian Mooyman)
    • 2021-03-22 8d4a32d Escape query string (Vivienne Tubbs)
    • 2021-03-16 3ea287a Import namespace for Convert (Vivienne Tubbs)
    • 2021-03-16 8b552db Add PR changes (Vivienne Tubbs)
    • 2021-02-26 ca2759d Pair programming fixes. (Mojmir Fendek)
    • 2021-01-10 a656714 Localised versioned history (#639) (Mojmir Fendek)
    • 2020-10-06 97d83d6 Added extension point to FluentDirectorExtension (innomedia)
    • 2020-10-01 8a5300e Translation to Slovenian (sl.yml) (Tomasz Pirc)
    • 2020-09-10 5145156 Update branch aliases (Damian Mooyman)
    • 2020-08-26 b7e40f7 Wrap middleware state mutations inside state helpers (Damian Mooyman)
    • 2020-07-22 cddb95c Site Tree status flags localised. (Mojmir Fendek)
    • 2020-07-20 0b57ecf Add BC for old config with deprecation notice (cpenny)
    • 2020-07-20 93bf32f Encoding configuration documentation. (Mojmir Fendek)
    • 2020-07-17 af11a3b Source locale lookup correction. (Mojmir Fendek)
    • 2020-07-16 31029f9 Rename CMS publish required config (cpenny)
    • 2020-07-16 0243e71 Localised copy config changed to flat list, extension points improvements. (Mojmir Fendek)
    • 2020-07-14 2fb7945 Locale detection improvements. (Mojmir Fendek)
    • 2020-07-13 bb8838a Global state for localised copy feature. (Mojmir Fendek)
    • 2020-07-13 6981075 Global localised copy state removed. (Mojmir Fendek)
    • 2020-07-12 35f64cd Localised copy trait changed into an extension approach. (Mojmir Fendek)
    • 2020-07-09 cfc1925 Source locale lookup correction. (Mojmir Fendek)
    • 2020-07-07 0a21272 Localised copy trait (Mojmir Fendek)
    • 2020-07-06 79c248b PR fixes. (Mojmir Fendek)
    • 2020-07-02 ef88e32 Added a tooltip for Unlocalise action. (Mojmir Fendek)
    • 2020-06-29 9432cf9 Non-versioned UI improvements (Mojmir Fendek)
    • 2020-06-26 f5bce7e Publish state related fixes (Mojmir Fendek)
    • 2020-06-25 21ff3ff PR fixes (Mojmir Fendek)
    • 2020-06-25 5a162c8 Badges UI improvements (Mojmir Fendek)
    • 2020-06-18 5092db1 Copy locale action extension points. (Mojmir Fendek)
    • 2020-06-18 d3abe50 Redundant copy locale actions prevented. (Mojmir Fendek)
    • 2020-05-15 6182ea0 Ensure the domain detection only returns the locale if it is unambiguous (Danae Miller-Clendon)
    • 2020-05-12 7c8e8c8 Don't treat /graphql as admin (Damian Mooyman)
    • 2020-05-12 2a79a28 Update locale detection to include cloudflare logic (Damian Mooyman)
    • 2020-05-12 f68d9db more translations DE (Bumbus)
    • 2020-05-12 aff053c added missing translation keys; added de translation (Bumbus)
    • 2020-05-11 3d71d8d Bump documented versions (Damian Mooyman)
    • 2020-05-11 33f5175 Run fluent isolated extension on requireDefaultRecords to prevent needing to dev/build twice (Damian Mooyman)
    • 2020-03-24 98806ad Add migration helper for isolated extension (Damian Mooyman)
    • 2020-03-24 1ffab0d Add extra hide / show action if filtering (Damian Mooyman)
    • 2020-03-23 6da52eb Refactor updateFluentLocalisedFields so it can be called from third party extensions (Damian Mooyman)
    • 2020-03-19 90fc945 Adjust description on UseDefaultCode field (Damian Mooyman)
    • 2020-03-19 59148bb Update src/Model/Locale.PHP (Damian Mooyman)
    • 2020-02-27 74a68f7 Enable FluentBadgeTrait for filtered-only records (Damian Mooyman)
    • 2020-02-14 f55a0ea Support x-default locale code for SEO (Damian Mooyman)
    • 2020-02-10 b6c2a8c Add tests for delete (Damian Mooyman)
    • 2020-02-10 7e388fe Add unit tests for admin actions. Bugfixing some versioned localisation issues. (Damian Mooyman)
    • 2020-02-09 2a6a8a6 Don't show disallowed locales in CMS admin section (Damian Mooyman)
    • 2020-02-07 afa0048 Remove redundant provider (Damian Mooyman)
    • 2020-02-07 318e7a9 Test and bugfix locale-specific CMS access (Damian Mooyman)
    • 2020-02-07 f437f8b Reenable copy from / copy to actions (Damian Mooyman)
    • 2020-02-07 75cbb9c Add permission check to global actions (Damian Mooyman)
    • 2020-02-05 ecaf135 Simplify (Damian Mooyman)
    • 2020-02-05 2217a6a Switch to using real permissions for each locale (Damian Mooyman)
    • 2020-02-03 074f7ca Add permission model base extensions (Damian Mooyman)
    • 2020-01-12 ea8619a Don't show unpublished / hidden pages in meta tag alternate links (Damian Mooyman)
    • 2019-12-12 27041ac MINOR: update of example in scenarios (Peter Thaleikis)
    • 2019-12-02 c8818bc Break out updateCMSFields into a callable helper method (Damian Mooyman)
    • 2019-11-20 5404ed7 Build dist files (Damian Mooyman)
    • 2019-11-20 3eed100 Update styles (Damian Mooyman)
    • 2019-11-19 967715b Add extra useful gridfield components for localised records (Damian Mooyman)
    • 2019-11-19 773c1d5 Prevent FluentDirectorExtension erroring when CMS module is not installed (Damian Mooyman)
    • 2019-11-19 facdac3 Feature: CMS module is optional (Damian Mooyman)
    • 2019-11-14 34ab9c2 Drop PHP 7.0 test (Damian Mooyman)
    • 2019-11-14 665e1aa Add deleteFluent for non-versioned records (Damian Mooyman)
    • 2019-11-14 b9dcbe1 Move menu before RightGroup so that in the GridField Detail Form view, the menu doesn’t get cropped. (Danae Miller-Clendon)
    • 2019-11-13 88d5d57 Wrap writeToStage() in an extension check in copyFluent (should not depend on Versioned) (Danae Miller-Clendon)
    • 2019-11-13 ec1f802 Drop PHP 5 support, fix linting issues (Damian Mooyman)
    • 2019-11-13 5dfc1a8 Add colours, fix missing "save" in save and publish (Damian Mooyman)
    • 2019-11-12 9f6c755 Work on actions (Damian Mooyman)
    • 2019-11-12 ae6469c Wrap actions in Versioned extension check (Danae Miller-Clendon)
    • 2019-11-12 c19a44e Clean up issues with unpublish action (Damian Mooyman)
    • 2019-11-12 ac421b7 Following on from Damian’s suggestions. TODO: Test and implement for GridField (Danae Miller-Clendon)
    • 2019-11-12 03fc69d Handle the actions from Localisation menus: (Danae Miller-Clendon)
    • 2019-11-11 2761cd8 Adjust scope of 5.0.0 beta release (Damian Mooyman)
    • 2019-11-06 1bcb462 Initial commit of gridfield actions (Damian Mooyman)
    • 2019-11-04 b2f4bce Remove hasMethod / hasExtension bindings (Damian Mooyman)
    • 2019-11-04 63a2c04 Clean up and refactor extension classes (Damian Mooyman)
    • 2019-11-04 1e2841d Clean up menu (Damian Mooyman)
    • 2019-11-03 1d48882 Alias master as next major version (Damian Mooyman)
    • 2019-10-30 fd8c5b5 Add descriptions to menu layout (Damian Mooyman)
    • 2019-10-29 b62b671 WIP Initial commit of new localisation menu (Damian Mooyman)