apostrophe
Advanced tools
Changelog
3.13.0 - 2022-02-04
requirements
feature, which can be extended in modules that improve
the @apostrophecms/login
module. These requirements are not imposed for single sign-on logins via @apostrophecms/passport-bridge
. See the documentation for more information.i18n/
folder. Thanks to Michael Huna for the contribution.afterPasswordVerified
requirements one by one when emitting done event, allows to manage errors ans success before to go to the next requirement. Stores and validate each requirement in the token. Checks the new askForConfirmation
requirement option to go to the next step when emitting done event or waiting for the confirm event (in order to manage success messages). Removes support for afterSubmit
for now.param
property in serveNotFound
. This fixes a problem where page titles using diacritics triggered false 404 errors.Changelog
3.12.0 - 2022-01-21
i18n/
named to match the namespace, e.g. i18n/ourTeam
if the namespace is ourTeam
. This allows base class modules to deliver phrases to any namespace without conflicting with those introduced at project level. The i18n
option is now deprecated in favor of the new i18n
module format section, which is only needed if browser: true
must be specified for a namespace.nestedModuleSubdirs
feature from A2, which allows modules to be nested in subdirectories if nestedModuleSubdirs: true
is set in app.js
. As in A2, module configuration (including activation) can also be grouped in a modules.js
file in such subdirectories.:
). These were previously interpreted as i18next namespace/key pairs and the "namespace" portion was left out.null
by the parent schema after initial startup of the AposInputArea
or AposInputCheckboxes
component.i18n/
named to match the namespace, e.g. i18n/ourTeam
if the namespace is ourTeam
. This allows base class modules to deliver phrases to any namespace without conflicting with those introduced at project level. The i18n
option is now deprecated in favor of the new i18n
module format section, which is only needed if browser: true
must be specified for a namespace.@apostrophecms/util
module template helper indexBy
, which was using a lodash method not included in lodash v4.csrfExceptions
module section cascade. Use the csrfExceptions
option of any module to set an array of URLs excluded from CSRF protection. More information is forthcoming in the documentation.[Object Object]
in the console when warning A permission.can() call was made with a type that has no manager
is printed.npm audit
from our automated tests because of a sub-dependency of vue-loader that doesn't actually cause a security vulnerability for apostrophe.Changelog
3.11.0 - 2022-01-06
req.login
to emit an afterSessionLogin
event from the @apostrophecms:login
module, with req
as an argument. Note that this does not occur at all for login API calls that return a bearer token rather than establishing an Express session.req.login
now accounts for the req.logIn
alias and the skippable options
parameter, which is relied upon in some passport
strategies.-widget
has been erroneously included in the name. For backwards compatibility this is a startup warning rather than a fatal error, as sites generally did operate successfully otherwise with this type of bug present.vue-click-outside-element
the packaging of which has been fixed upstream.__testDefaults
option. It is not in use, but removing would be a minor BC break we don't need to make.@apostrophecms/express
module.npm audit
back to the test scripts.Changelog
3.10.0 - 2021-12-22
slug
type fields can now have an empty string or null
as their def
value without the string 'none'
populating automatically.underline
feature works properly in tiptap toolbar configuration.vue-click-outside-element
to a version that does not attempt to use eval
in its distribution build, which is incompatible with a strict Content Security Policy.last
option to fields. Setting last: true
on a field puts that field at the end of the field's widget order. If more than one field has that option active the true last item will depend on general field registration order. If the field is ordered with the fields.order
array or field group ordering, those specified orders will take precedence.getWidgetWrapperClasses
and getWidgetClasses
from A2.reorganize
query builder for the next major version.template
property (components should require no changes, just apps require an update). These apps must now use a render
function instead. Since custom admin UI apps are not yet a documented feature we do not regard this as a bc break.@apostrophecms/security-headers
module, which supports a strict Content-Security-Policy
.addLateCriteria
query builder.toCount
doc type query method to use Math.ceil rather than Math.floor plus an additional step.Changelog
3.9.0 - 2021-12-08
ui/apos/components
folder of their own module. This is not always the best approach, see the documentation for details.maxUi
, maxLabel
, minUi
, and minLabel
localization strings for array input and other UI.self.partial
module method. It appeared only once outside of comments, but was not actually used by the UI. The self.render
method should be used for simple template rendering.apos.util.runPlayers
method is not called until all of the widgets in a particular tree of areas and sub-areas have been added to the DOM. This means a parent area widget player will see the expected markup for any sub-widgets when the "Edit" button is clicked.apostropheI18nDebugPlugin
i18next debugging plugin when using the APOS_SHOW_I18N
environment variable. The full set of l10n emoji indicators previously available for the UI is now available for template and server-side strings.searchable
option is false
.index
task.Changelog
3.8.1 - 2021-11-23
AposRichTextWidgetEditor.vue
when a rich text widget was specifically configured with an empty array as the styles
option. In that case a new empty rich text widget will initiate with an empty paragraph tag.fieldsPresent
method that is used with the presentFieldsOnly
option in doc-type was broken, looking for properties in strings and wasn't returning anything.Changelog
3.8.0 - 2021-11-15
batchOperations
on a piece-type will now become buttons in the manager batch operations "more menu" (styled as a kebab icon). Batch operations should include a label, messages
object, and modalOptions
for the confirmation modal.batchOperations
can be grouped into a single button with a menu using the group
cascade subproperty.batchOperations
can be conditional with an if
conditional object. This allows developers to pass a single value or an array of values.utilityOperations
configured as a top-level cascade property. These operations are made available in the piece manager as new buttons.event
property, which the AposNotification component will emit on mount. The event
property should be set to an object with name
(the event name) and optionally data
(data included with the event emission).modules/mymodulename/public/images/bg.png
can always be referenced in your .scss
and .css
files as /modules/mymodulename/images/bg.png
, even if assets are actually being deployed to S3, CDNs, etc. Note that public
and ui/public
module subdirectories have separate functions. See the documentation for more information.dimensionAttrs
option to image widget, which sets width & height attributes to optimize for Cumulative Layout Shift. Thank you to Qiao Lin for the contribution.apos.util.attachmentUrl
method now works correctly. To facilitate that, apos.uploadsUrl
is now populated browser-side at all times as the frontend logic originally expected. For backwards compatibility apos.attachment.uploadsUrl
is still populated when logged in.@apostrophecms/job
module. These options were not yet in use for A3.@apostrophecms/job
module that were not yet in use. This was not done lightly, but specifically because of the minimal likelihood that they were in use in project code given the lack of UI support.
cancel
route was removed and will likely be replaced at a later date.run
was renamed runBatch
as its purpose is specifically to run processes on a "batch selected" array of pieces or pages.runNonBatch
was renamed to run
as it is the more generic job-running method. It is likely that runBatch
will eventually be refactored to use this method.good
and bad
methods are renamed success
and failure
, respectively. The expected methods used in the run
method were similarly renamed. They still increment job document properties called good
and bad
.batchSimpleRoute
methods in the page and piece-type modules to avoid usage before they are fully implemented.dimensionAttrs
option to image widget, which sets width & height attributes to optimize for Cumulative Layout Shift.npm audit
from our automated tests because of a sub-dependency of uploadfs that doesn't actually cause a security vulnerability for apostrophe.Changelog
3.7.0 - 2021-10-28
choices
property to a method name of the calling module. That function should take a single argument of req
, and return an array of objects with label
and value
properties. The function can be async and will be awaited.APOS_CLUSTER_PROCESSES
environment variable is set to a number, that number of child processes are forked, sharing the same listening port. If the variable is set to 0
, one process is forked for each CPU core, with a minimum of 2
to provide availability during restarts. If the variable is set to a negative number, that number is added to the number of CPU cores, e.g. -1
is a good way to reserve one core for MongoDB if it is running on the same server. This is for production use only (NODE_ENV=production
). If a child process fails it is restarted automatically.date
and time
schema field types.require
their project app.js
file in the Node.js REPL for debugging and inspection. Thanks to Matthew Francis Brunetti.en
locale as a last resort, which ensures the admin UI works if it has not been translated.require
their project app.js
in the Node.js REPL for debugging and inspectionrelationship
fields have an optional builders
property, which replaces filters
from 2.x, and within that an optional project
property, which replaces projection
from 2.x (to match MongoDB's cursor.project
). Prior to this release leaving the old syntax in place could lead to severe performance problems due to a lack of projections. Starting with this release the 2.x syntax results in an error at startup to help the developer correct their code.className
option from the widget options in a rich text area field is now also applied to the rich text editor itself, for a consistently WYSIWYG appearance when editing and when viewing. Thanks to Max Mulatz for this contribution.afterLoad
events, which are deprecated.afterLogin
method in the login module.