March 2023 Release

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


System Requirements


Livingdocs Server Docker Imagelivingdocs/server-base:18
Livingdocs Editor Docker Imagelivingdocs/editor-base:18
Browser SupportEdge >= 80, Firefox >= 74, Chrome >= 80, Safari >= 13.1, iOS Safari >= 13.4, Opera >= 67


Livingdocs Server Docker Imagelivingdocs/server-base:16.3
Livingdocs Editor Docker Imagelivingdocs/editor-base:16.3
Browser SupportEdge >= 80, Firefox >= 74, Chrome >= 80, Safari >= 13.1, iOS Safari >= 13.4, Opera >= 67


Planning System

Estimated Time of Completion Plugin

The Estimated Time of Completion Metadata Plugin li-estimated-time-of-completion enables a user to set an estimated time of completion for the current document. The plugin is available in the Metadata Form.

Notice: The li-estimated-time-of-completion plugin is only available if the Planning System is enabled.

Team Plugin

The team Metadata Plugin li-team enables a user to associate other users with the current document by adding or removing them from the teams plugin. Additionally one user can be marked as the owner. The owner can not be removed from the team. The plugin is available in the Metadata Form and the Table Dashboard.

Notice: The li-team plugin is only available if the Planning System is enabled.

Task List Table Dashboard Cell

The Task List Table Dashboard Cell liTableDashboardCellTaskList is a read only component for the Table Dashboard. It gives an overview of current tasks connected with the given document.

API Consumer Management

With the new API Consumer Management feature you are now able to manage the lifecycle for tokens, e.g.

  • manage token rotation
  • manage token suspension
  • manage token expiration

Notable Features

Retresco Queued Retagging

A new hook is introduced to the Retresco integration. It allows document re-enrich functionality with Retresco tags in a queued manner. This is useful if you want to re-enrich a large number of documents in a batch.

Metadata Property Display Filters

A new type of Display Filters is introduced: metadataPropertyName.

With these filters, you will be able to easily configure a filter for any metadata property on your documents. Currently, only 2 types of metadata properties are supported: li-integer and li-category. Support for other types will be added in future releases.

You can now add rel="sponsored" tag to an HTML link in the text formatting toolbar. This is useful if you want to mark links as sponsored for search engines.

Anonymize User History

You can now configure timespan in the server configuration after which the revision history will be anonymized. After said time, the editor does not receive a user_id with the revisions response and thus can not render the associated users but renders a fallback “Anonymous User”.

Small Improvements

Publish Control Import API Support

You can now set publishControl.firstPublicationDate and publishControl.lastPublicationDate when importing documents using the Import API.

Breaking Changes 🔥

Migrate the Postgres Database 🔥

It’s a simple/fast migration with no expected data losses.

# run `livingdocs-server migrate up` to update to the newest database scheme
livingdocs-server migrate up

Upgrade cheerio to 1.0.0-rc.12 🔥

This change only affects customers using a customized render pipeline or the hugo feature and if you have cheerio in your package.json.


Drop Imagemagick support 🔥

The usage of it was discouraged since a long time because of security issues. Remove the server config property mediaLibrary.images.processingStrategy.


Do not support running the core tests in a downstream editor 🔥

🔥 Remove testing core editor tests from a downstream with npm explore @livingdocs/editor -- npm test 🔥 If you copied the testing setup of Livingdocs, you have to add "angular-mocks": "^1.8.3" in your devDependencies.

Another recommended cleanup step is to move all chai, mocha, karma and sinon packages from dependencies to devDependencies

Remove Dashboard Display Filters 🔥

These Dashboard Display Filters are not supported anymore:

  • coreApi.searchFilters.register
  • coreApi.searchFilters.registerList
  • coreApi.searchFilters.registerAngularComponent

Update the deprecated filter to the supported Display Filters from the core.

  • Named Filters
  • Metadata Filters
  • ListV2 Filters

If you can’t handle your requirements with core filters it’s best to contact your Customer Solutions manager to get inputs for solutions (one option is to create your custom Vue component, but that should be prevented whenever possible).


Remove Editor Config 🔥

The Editor Config is removed, move the config to the Project Config editorSettings.mainNavigation.


Document Revision Creation

Previously we created a new revision for document updates when any of the following conditions were true:

  • First change after publication
  • User did not make the previous change
  • Revision is over 15 minutes old
  • Revision has not been updated for over 2 minutes

🔥 The rules above still apply, but only when revision data has changed. Changes to Document Title, System Metadataand Publish Control data will not create a new revision.



Deprecate appConfig.ui.welcome

The editor config appConfig.ui.welcome is deprecated and will be removed in release-2023-03.

  • Option 1: Configure your welcome screen in the Project Config via startPage
  • Option 2: Switch to a Home Screen

Breaking Change: release-2023-03

References: PR

Deprecate Display Filter config for category

The Display Filter of a metadata property of type li-category should be reconfigured as {metadataPropertyName: 'category'}

Breaking Change: not defined yet

References: PR

Public API - Project Endpoints

  • Deprecate /api/v1/project -> use /api/v1/projectConfig instead
  • Deprecate /api/v1/channels -> use /api/v1/projectConfig instead
  • Deprecate /api/v1/channels/:channelHandle -> use /api/v1/projectConfig instead

Breaking Change: release-2023-11

References: Server PR

APIs 🎁

Import API - Payload

🎁 Make content and metadata optional in payload -> easier to handle Data Records with that. Pass content and design on the top level of a document payload instead in a livingdoc

  "systemName": "identifier-for-your-system",
  "documents": [
      "title": "test import",
      // before, deprecated
      "livingdoc": {
        "content": [ ... ],
        "design": {
          "name": "living-times",
          "version": "1.0.1"
      // now
      "content": [ ... ],
      "design": {
        "name": "living-times",
        "version": "1.0.1"

Other Changes





Here is a list of all patches after the release has been announced.

Livingdocs Server Patches

  • v213.6.22: chore: Add a comment about elasticsearch version conflicts in the delete_by_query call
  • v213.6.21: fix(dashboard): allow allowQuickPublish option for publish state dashboard cell
  • v213.6.20: fix(sort): correctly support arrays
  • v213.6.19: chore: Log warnings about deleted content types that are still present on postgres
  • v213.6.18: fix(dataSource): allow dataSources to return integers as values
  • v213.6.17: fix(redis): Coerce strings to numbers. There was an inconsistency with some integers where tonumber('0') fails as it requires a base with that.
  • v213.6.16: fix: improve isTestFile regex
  • v213.6.15: test: Fix test description in app/features/retresco/retresco-api.test.js
  • v213.6.14: fix(password-validation): Generic error (5XX) was used for Password input verification and error properties where removed, replaced with validationError which will return clearer 4XX error
  • v213.6.13: chore(revisions): remove code duplication
  • v213.6.12: fix: update framework version
  • v213.6.11: fix(distribution-planning): Remove document content from response
  • v213.6.10: fix(lib): Get require("~lib") to work again with newer npm versions
  • v213.6.9: test(distribution-planning): Create documents in series again to fix expectations
  • v213.6.8: chore(framework): Update @livingdocs/framework version
  • v213.6.7: chore: PR feedback
  • v213.6.6: fix(document-lists): Support list updates with a lot of document ids
  • v213.6.5: fix: Fix axios 1 querystring compatibility in the document search
  • v213.6.4: fix(queue): Fix waiting delay increment when a fetch returned an empty result set
  • v213.6.3: fix(redis): Fix redis support in the repl

Livingdocs Editor Patches

  • v90.33.47: fix(use_embedded_overrides): Fix “Has local changes” for editable teasers - make sure it shows when there are changes for editable teasers that have been edited for the first time

  • v90.33.46: fix(li-tree): allow unparsable links

  • v90.33.45: fix(li-comment-mention): fix undefined session console error

  • v90.33.44: fix(teasers): allow component creation by document drop with any param handle for the document reference

  • v90.33.43: fix(dashboards): take componentOptions.allowQuickPublish into account for liTableDashboardCellPublishState if defined

  • v90.33.42: fix(dashboards): show quick publish only when reasonable

  • v90.33.41: fix(li-integer): correctly treat 0 value

  • v90.33.40: fix(buy-in): improve wording

  • v90.33.39: fix(li-link-edit): Pass all linkAttributes properties to be included in a tag

  • v90.33.38: fix(li-table-dashboard-cell-context-menu): filter out hidden actions

  • v90.33.37: fix(embedded documents): allow document references on any param, not just ‘article’

  • v90.33.36: fix(menu tool): apply filters.menuList when not using legacy dashboards

  • v90.33.35: fix(document selection): ensure filters are applied when using legacy dashboards

  • v90.33.34: chore(context-menu): Remove unnecessary hover logic

  • v90.33.33: fix: add favicon.ico and apple-touch-icon

  • v90.33.32: fix(image_form): hide download button when no crops are available

  • v90.33.31: fix(vue): Fix default parameter of components that should fallback to an empty object

  • v90.33.30: fix(insert panel): Spacing

  • v90.33.29: fix(creation flow): Made content type boxes keep their size

  • v90.33.28: fix: remove unnecessary, layout breaking app__notifications div

  • v90.33.27: fix: pass the correct config object to custom angular display filters

  • v90.33.26: fix(create): correctly check if contentType on defaultChannel to use the right code path during creation

  • v90.33.25: fix(desknet): Fix automatic placement errors due to schedule properties

  • v90.33.24: fix: bump framework version

  • v90.33.23: fix(document tooltip): shows scheduled docs

  • v90.33.22: fix(dashboards): don’t show the open task count since we have a separate cell for this now

  • v90.33.21: fix(distribution-planning): Use yyyy-MM-dd for fixed date request

  • v90.33.20: fix(buy-in): remove 2nd line of empty state

  • v90.33.19: fix(dashboards): Don’t load document content in table dashboards

  • v90.33.18: fix(task list): show only the assigned user, never the requester

  • v90.33.17: fix(li-buy-in): add planning system guard

  • v90.33.16: fix: remove animations from overflow table rows

  • v90.33.15: fix(li-list-assignments): avoid flickering after list was selected

  • v90.33.14: fix(dashboards): correctly apply filter state from store on inintial search

  • v90.33.13: fix(distribution flyouts): Overflow and layout

  • v90.33.12: fix(li-meta-integer-filter): don’t emit change if no integer selected

  • v90.33.11: fix(framework): Update @livingdocs/framework version to include latest fix for imgIX URL generation

  • v90.33.10: fix(kanban board): reloads results correctly when result is less than page size

  • v90.33.9: fix(distribution-planning): Don’t show unconfigured content types

  • v90.33.8: fix(publish control): ensure button state changes on publish/draft creation

  • v90.33.7: fix(distribution dashboard): Time cell

    Icon Legend

    • Breaking changes: 🔥
    • Feature: 🎁
    • Bugfix: 🪲
    • Chore: 🔧