ApostropheCMS v2.105.0 Release Notes
Release Date: 2020-03-26 // about 4 years ago-
- 🚀 Security: Node 6.x has not been supported by its creators since April 2019, and Node 8.x reached its end of support date in December 2019. As of this release of Apostrophe, we are officially acknowledging that it is not possible to maintain support for Node 6.x in Apostrophe and it is unlikely to work on that version, since both the testing frameworks on which we rely and common sub-dependencies of essential open source modules used by Apostrophe now require Node 8 at a minimum. While we will make a good-faith effort to maintain Node 8.x usability as long as possible, we expect to similarly be forced to drop Node 8 compatibility soon. Both Node 6 and Node 8 might not be safe to use for reasons entirely unrelated to Apostrophe, so you should upgrade your servers as soon as practical. Few or no code changes should be needed in Apostrophe 2.x projects. We strongly recommend moving to Node 12.x, the most up to date LTS (Long-Term Support) release of Node. In the future, we recommend becoming familiar with the Node.js release schedule so you can better plan for such upgrades.
- 🔒 Security: all of the recently new
npm audit
warnings were fixed. These were consideredlow
risk according to thenpm audit
tool. In the process we removed dependencies on thetar
andprompt
modules in favor of simpler solutions with fewer moving parts. - Lean mode: the
apos.utils.get
andapos.utils.post
methods no longer prepend the site's globalprefix
when the call targets a different origin (another site's API, for instance). This is a bug fix to match the behavior of$.jsonCall()
which set the standard for this in Apostrophe. - 💻 Lean mode:
apos.utils.emit(el, name, data)
has been introduced. This method emits a custom DOM event with the givenname
and adds the properties of thedata
object to the event. The event is emitted onel
. When emitting events with global significance, our convention is to emit them ondocument.body
. To listen for such events one uses the standard browser methoddocument.body.addEventListener('eventname', function(event) { ... })
. - Lean mode:
apos.utils.get
now emits anapos-before-get
event withuri
,data
andrequest
properties just before the request is actually sent. You may use this hook to add headers torequest
. - 🍱 Cloud deployment: when starting up a site with
APOS_BUNDLE=1
, the asset bundle is by default extracted to the root of the project so that the assets can be found in the filesystem of each server if needed. New feature: for the benefit of environments in which the bundle files are already present and the root of the project is not writable,APOS_EXTRACT_BUNDLE=0
may now be set to disable the extraction (note0
, not1
). - Localization: Apostrophe's static i18n of its user interface can now be "namespaced," opening the door to giving your translators better guidance on whether to translate it or ignore it when working with the JSON files in the
locales/
folder of your site. You can turn this on by enabling thenamespaces: true
option for theapostrophe-i18n
module. When you do, Apostrophe's i18n phrases will be prefaced withapostrophe<:>
in the JSON files (not in the browser). You can create your own namespaced translations by calling__ns('namespacename', 'phrase')
rather than__('phrase')
,__ns_n
rather than__n
, etc. Note that if the namespaces option is not actually turned on, these new helpers are still available in templates; they just don't prefix a namespace. The forthcomingapostrophe-static-i18n
module, which allows for editing static translations as pieces, will also have an option to ignore a namespace, which is helpful if you wish to avoid showing our user interface phrases to your translation team at all.