Attention: If you skipped one or more release, 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": "v75.2.15",

Livingdocs Server Patches

  • v75.2.15: test(push): add notificationParams config for ethinking
  • v75.2.14: chore(ci): use local integration file
  • v75.2.13: fix: push patch info to release-notes
  • v75.2.12: Add ethinking as a possible new provider for push notifications (alternative to firebase)
  • v75.2.6: add property disableEditTitleAtToolbar to the content-type config
  • v75.2.5: revisions: pass layout property by default at /revisions
  • v75.2.4: routing: Use correct document route path on routes checker
  • v75.2.3: routing: There is a document route checker that wasnt update to the recent routing change
  • v75.2.2: routing: Fix bug and leanup routing arguments & storage
  • v75.2.1: hugo: return res.error(err) in error case

Livingdocs Editor

How to require the editor in your package.json:

"dependencies": {
  "@livingdocs/editor": "v34.4.19",

Livingdocs Editor Patches

  • v34.4.19: chore(readme): trigger status checks, semantic release hang up
  • v34.4.16: Enable character count for print mode
  • v34.4.15: Add support for push platforms for push notifications
  • v34.4.14: copy: fix print->print copy fix regular->print copy
  • v34.4.13: remove type check for title property
  • v34.4.12: Add flag to disable editing the document title at the toolbar
  • v34.4.11: show content-type in history
  • v34.4.10: fix create print article
  • v34.4.9: do not check for active filter state
  • v34.4.8: fix key edge cases in editor / immediately save on going to dashboar
  • v34.4.7: Disable watcher on dist directory
  • v34.4.6: history: return “Today” instead of hours from now for a date without time / do not show a revision restore option when the content-type is different
  • v34.4.5: lists: fix the debounce of the list search
  • v34.4.4: adjust title in editor iframe
  • v34.4.3: adjust font size
  • v34.4.2: always show alternative logins if they are configured


Document Copy Feature 🎁 🔥

Since this release, you have some more options to copy a document.

  • create a copy with a copy configuration (same as before)
  • create a simple copy (without a copy configuration)
  • transform a document (the document id is the same, but the content-type can be changed)

If you want to know more, you can read the documentation of the copy feature or look into the related pull requests at the end of this section.

Breaking Changes

  • renamed documentCopyApi.copy to documentCopyApi.copyByDocumentId
  • removed source parameter in the afterConversion function of a conversionInstruction.
  • removed copyUnknownComponents of the copy config (but this setting had no effect anyway)

Metadata References 🎁

This feature adds two new metadata plugins li-reference and li-reference-list in order to reference entities (at the moment only references of the type document).


Example of a li-reference configuration

    handle: 'author',
    type: 'li-reference',
    config: {
      referenceType: 'document',
      documentType: 'data-record',
      contentType: 'author'
    ui: {
      component: 'liMetaReferenceForm',
      label: 'Author'

Design Viewer (beta) 🎁

It’s still in beta, but worth a look. When you go to “project setup” -> “component library”, you can choose a component and

  • enter some text and get a rendered preview
  • see the structure of the component (directives)
  • see the html template

Related PR: livingdocs-editor #2202

Service Features - Channel + Metadata Administration 🎁

We made huge improvements regarding the channel- and metadata-administration with the editor. Maybe at some point it’s interesting for business customers to use this feature.

Some of the features are

  • create and configure content types in the editor
  • create and configure metadata fields in the editor
  • create and configure multi-language - handle documents in multiple languages within one project

You can find all related changes at the “Other Changes - Metadata Administration / Channel Config v2” section.

Mobile Support - Version 1

Livingdocs can now be fully used on a tablet and has full read support on phones. The changes can be found at the UX/Design section.

Breaking Changes 🔥

Indexing API and index separation 🎁 🔥

This change improves the speed and reliability of (re)indexing documents to Elasticsearch.

  • Redis is required as a dependency
  • New Redis config is required:
redis: {
  // Simple configuration (HA redis cluster can be found in PR 2009)
  host: process.env.redis__host || 'localhost',
  port: process.env.redis__port || 6379,

For a more detailed description check the server PR #2009

Removed (unused) image API 🔧 🔥

Removed the /images endpoint and API on the server.

Required actions:

  • If liServer.features.api('li-images').create was used, go to the server PR #2068 and check the description in more detail

Improve the build performance 🔧 🔥

During development, sourcemaps are not built with npm start anymore. Use npm run start:sourcemaps instead.

Read more at livingdocs-editor #2262

Search Filters 🔥

Caution: Custom filters should be tested for the reset. It depends on their implementation if they react to ‘reset all filters’.

Read more at livingdocs-editor #2267

Title handling 🔥

Implicit title behaviour where the metadata property ’title’ was synced with the document title now has to be defined explicitly in the configuration.

The previous behaviour can be achieved with setting useAsTitle to true on the title property.

metadata: [{
  type: 'li-text',
  handle: 'title',
  config: {
    useAsTitle: true

Read more at livingdocs-editor #2253

Store editor user settings in the session store by default 🔥

Breaking Change: filters are stored per tab now by default.

To keep the current behavior where filter state is shared between tabs use the following editor config option:

app: {
  userPreferencesStore: 'localstore' // default: 'sessionstore'

Other Changes