Attention: If you skipped one or more releases, please also check the release-notes of the skipped ones.



This release consists of the following new versions of the livingdocs-server and the livingdocs-editor:


Livingdocs Server

How to require the server in your package.json:

"dependencies": {
  "@livingdocs/server": "release-2020-02",

Livingdocs Server Patches

  • v93.2.21: fix(impersonify): adapt to createAccessTokenV2
  • v93.2.20: fix: provoke tag and build artifacts
  • v93.2.19: fix: Upgrade to node 12
  • v93.2.18: fix(imatrics): make v1 backward compatible
  • v93.2.17: fix(imatrics): commit for tag
  • v93.2.16: chore(lint): indexing config
  • v93.2.15: fix(document-search): correctly return the promise
  • v93.2.14: fix(mutex): Only stop the indexer, when it actually was running
  • v93.2.13: fix(hugo): pass projectHandle to transform
  • v93.2.12: fix: Fix a rebase issue that resulted in a wrong require
  • v93.2.11: fix(setupProjects): auto-update design versions
  • v93.2.10: test: Fix an inconsistent test in the registration api
  • v93.2.9: fix: Use package-lock.json file to generate the shrinkwrap to fix the optional dependencies
  • v93.2.8: fix(includes): dont require preview
  • v93.2.7: fix(includes): actually validate context
  • v93.2.6: hugo: pass metadata on image upload
  • v93.2.5: user-api: add valid_from and valid_to to the editable user properties
  • v93.2.4: seeding-import: add default to groupmembership validation
  • v93.2.3: change-history: improve query
  • v93.2.2: migrations: Mutate the migration.version when using the apis, so multiple calls don’t lock each other
  • v93.2.1: group-seeding: correctly push group policies
  • v93.2.0: create new release-2020-02

Livingdocs Editor

How to require the editor in your package.json:

"dependencies": {
  "@livingdocs/editor": "release-2020-02",

Livingdocs Editor Patches

  • v44.4.34: fix(resolve-conflicts): check only on content, document.version and userId
  • v44.4.33: test(conflict): add tests
  • v44.4.32: fix(framework): upgrade framework 13.2.7 to 13.2.8
  • v44.4.31: chore: disable parts of the CI
  • v44.4.30: fix(collaboration): when a expired softlock is in the metadata
  • v44.4.29: fix(editor): pass editableConfig to framework again
  • v44.4.28: fix(impersonification): fix setting of token
  • v44.4.27: fix(publish-screen): indicate unpublished changes
  • v44.4.26: fix(date-picker): never set null when date reset
  • v44.4.25: refactor(livingdoc): do not pass editable config anymore
  • v44.4.24: fix(image-crop): Reset originalWidth/Height on upload

Fixes: An uploaded image might use the wrong dimensions of a previously selected image when calculating crop.

  • v44.4.23: fix: update framework to 13.2.7
  • v44.4.22: fix(image): take processedUrl from image service instead of originalUrl for image cropping
  • v44.4.21: fix(project-setup): guard against undef props
  • v44.4.20: comment(config): add links to list unicode characters
  • v44.4.19: fix: iframe scan regex
  • v44.4.18: chore: revert resetting localstorage
  • v44.4.17: fix: Use package-lock.json file to generate the shrinkwrap to fix the optional dependencies
  • v44.4.16: fix(iframe-api): pass interactive false
  • v44.4.15: fix: iframe behavior in real-time
  • v44.4.14: fix(redirect): correctly redirect with a destination
  • v44.4.13: editor: respect srcsets configs again
  • v44.4.12: public-api-docs: add design endpoint documentation
  • v44.4.11: filters: don’t do an extra query on resetting filters
  • v44.4.10: icons: re-add timetable icon
  • v44.4.9: includes: switch from get to post request
  • v44.4.8: dependencies: exactly match sortable versions
  • v44.4.7: pusher: don’t emit pusher event during init


Search API for Publications πŸŽ‰

The new publication search API allows customers to search and filter in the set of published documents. You can run your frontend search from it and use it to fetch documents for automated lists such as category lists or feed provider (SDA, DPA) lists. You can also configure custom sort dates as well as scheduled publishing, i.e. embargo dates for your content.


Real Time Activity Log on Publish Screen πŸŽ‰

The sidebar of the publish screen now receives realtime updates of the document (work status of other users).



Login into a Specific Project πŸŽ‰

There are 2 new improvements:

  • After a login the editor routes the user to the last opened project.
  • It’s now possible to login into a specific project with <your-editor-url>/login/:projectHandle


Breaking Changes πŸ”₯

Migrate the database

The migration is simple, the duration is short and there are no datalosses expected on up-/downgrade.

# run grunt migrate to update to the newest database schema
# migration - 128-add-user-agent-access-tokens.js
#   add field access_tokens.user_agent
# migration - 129-add-index-user-id-created-at-access-tokens.js
#   add index to access_tokens.user_id | access_tokens.created_at
# migration - 130-groups-stream-migration.js
#   add stream_types and stream_event_types for groups

livingdocs-server migrate up

Minimum node and npm version updated πŸ”₯

Due to security reasons, we are bumping node and npm minimum requirements

  • minimum node requirement: >= node@10.13.0
  • minimum NPM requirement: >= npm@6.13.4


Context Object for include API πŸ”₯

To have more infos during the rendering of doc-includes, we pass now a context object into the rendering functions of the includesApi.

New Required param context on includes API methods

  • πŸ”₯ includesApi.processHtml({html, context}) - context is now mandatory
  • πŸ”₯ includesApi.resolveChannelOutputs({renderConfig, channelOutputs, context}) context is now mandatory
  • πŸ”₯ includesApi.resolveInclude(serviceName, serviceParams, options) - options.context is now mandatory
  • πŸ”₯ Editing API: POST /includes/preview requires the context param (old Editor versions won’t be able to resolve includes).


embeds config allowUnrecognizedEmbeds is working again πŸ”₯

The config

embeds: {
  options: {
    allowUnrecognizedEmbeds: true

must be set to true if a free-html component is used and no custom embedHandler is registered. Otherwise the free-html component doesn’t work anymore and the input is not saved.

APIs 🎁

Public API - fetch a design - api/v1/design/:designVersion

It’s now possible to fetch a design configuration via Public API.


CoreAPI - Improve API for Dashboard Filters πŸŽ‰

We introduced a Dashboard List Filter named List Filter v2.

This filter has 2 advantages over List Filter:

  • Fetch the data asynchronous (instead of synchronous)
  • Be able to compose the filter with injected data like project, user, server


Other Changes