The login page can be disabled via the new localLogin option of the apostrophe-login module. Set it explicitly to false to disable the login URL completely.

Refactoring: the apostrophe-login module now has an afterLogin method which takes care of invoking the loginAfterLogin callAll method on all modules that have one, and then redirecting appropriately. This code was factored out to make it easier to use in the new apostrophe-passport module, which allows the use of almost any Passport-based strategy, such as Facebook login, Google login, Github login, etc.

apos.users.ensureGroup now delivers the group to its callback as the second argument.

Fixed an S3 asset bundle generation bug that caused .less files to be imported with the wrong file extension if the public folder did not yet exist at the time --create-bundle was used. Thanks to Michelin for their support of this work.

Also added an apostrophe-caches:clear task to aid in testing various functionality. You must specify the cache name since caches may or may not even be known to Apostrophe at task startup time based on whether and when code calls .get for each cache name.

The new testModule: true option causes Apostrophe to supply much of the boilerplate for a published npm apostrophe module that wants to test itself as part of an apostrophe instance, i.e. apostrophe-workflow, apostrophe-caches-redis, etc. See those modules for examples of usage. This is a feature for those writing their own npm modules that wish to unit test by initializing Apostrophe and loading the module in question.

Fixed caching bugs, notably the oembed cache, which is now operating properly. Oembed responses, such as YouTube iframe markup, are now cached for an hour as originally intended which improves frontend loading time.

Page type changes only refreshed the schema fields on the first change — now they do it properly after every change.