Current
Maintained
release-2025-11
November 2025 Release

To get an overview about new functionality, read the Release Notes. To learn about the necessary actions to update Livingdocs to release-2025-11, read on.

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

Webinar

System Requirements

Suggested

NameVersion
Node24
NPM11
Postgres17
Elasticsearch9.x
OpenSearch2.3.0
Redis8
Livingdocs Server Docker Imagelivingdocs/server-base:24
Livingdocs Editor Docker Imagelivingdocs/editor-base:24
Browser SupportChrome >= 142, Edge >= 142, Firefox >= 144, Safari >= 26.0

Minimal

NameVersion
Node20.19.5
NPM10
Postgres13
Elasticsearch7.x
OpenSearch1
Redis6.2
Livingdocs Server Docker Imagelivingdocs/server-base:20:10
Livingdocs Editor Docker Imagelivingdocs/editor-base:20:10
Browser SupportChrome >= 130, Edge >= 130, Firefox >= 132, Safari >= 18.1

Deployment

Before the deployment

No pre-deployment steps are required before rolling out this release.

Rollout deployment

Migrate the Postgres Database

No migrations are required for this release.

After the deployment

No post-deployment steps are required after rolling out this release.

Rollback

No rollback steps are required for this release.

Breaking Changes 🔥

Replaced News Agency Properties displayFilterOptionsSource and displayFilterOptionsCategory 🔥

The news agency project configuration properties newsAgency.screens[].displayFilterOptionsSource and newsAgency.screens[].displayFilterOptionsCategory have been replaced by new properties newsAgency.sources and newsAgency.categories, respectively (see Displaying Custom Values for News Agency Report Properties).

Removed Server Feature li-design-stats 🔥

Server feature li-design-stats, including its server API (designStatsApi.listDesigns), has been removed. In addition, the server API projectApi.getStats has also been removed. Please remove any usages of these APIs.

Removed Functions sql, insert, and begin of lib/db 🔥

  • Function require('@livingdocs/server/lib/db').sql has been removed. Please use liServer.db.sql instead.
  • Function require('@livingdocs/server/lib/db').insert has been removed. Please use liServer.db.insert instead.
  • Function require('@livingdocs/server/lib/db').begin has been removed. Please use liServer.db.begin instead.

API documentApi.executeDocumentCommands Requires Parameter userId 🔥

Unpublishing documents with documentApi.executeDocumentCommands without providing a userId is no longer supported. Please provide a userId.

iMatrics Category Concepts Shown By Default 🔥

iMatrics concepts of type category are now shown by default. Previously, they were excluded unless ignoredConceptTypes: [] was set.

If you want to keep the existing behavior, please set ignoredConceptTypes: ['category'] in your li-imatrics-nlp-tags metadata configuration.

Removed Server Feature li-hooks 🔥

Server feature li-hooks, including its server APIs, has been removed. Please migrate to regular webhooks.

Deprecations

Simplified li-target-length and li-system-target-length UI Configuration

The following li-target-length and li-system-target-length UI configuration properties are deprecated and will be removed in release-2026-05:

  • ui.config.allowAnyNumber
  • ui.config.showExactCountCheckbox
  • ui.config.unit

Use the new property ui.config.modes instead.

Features 🎁

Media Library Multiselect & Batch Actions 🎁

We are extending the multi-selection functionality within the Media Library. To improve efficiency when working with Media Library elements (such as images, videos or files), users can now perform actions on multiple media items simultaneously. Additionally, this release introduces two enhancements to the Media Library Dashboard Side Panel.

Batch Actions on the Media Library Dashboard

On the Media Library Dashboard, users can select multiple media elements and perform the following actions:

  • Download selected elements
  • Send selected elements to a document inbox
  • Store selected elements in archive / remove selected elements from archive
  • Delete selected elements
  • Remove selection
Media Library Dashboard Sidepanel

Elements can only be deleted if the user has the necessary permissions and the selected items are not stored in the archive. Elements can only be stored in the archive if the selection does not include archived or revoked items and the user has sufficient permission rights.

How to select multiple elements:

  • Hold down the Shift key and use the arrow keys, or
  • Hold down the Command key (Mac) / Ctrl key (Windows) and click on the desired elements.
  • Press Escape to clear the selection.
To use the Store in Archive, Remove from Archive and Delete functionalities, the use2025behaviour needs to be enabled. If not configured, instead the legacy Archive functionality will be available. For more details, see the 2025 Behavior guide.

Improvements on the Media Library Dashboard Sidepanel

When an element is selected on the Media Library Dashboard, the Side Panel automatically opens. This panel has been enhanced with the following improvements:

  • A saving status indicator now appears in the top-left corner, showing whether an element’s metadata is currently being saved or has already been saved. This behavior is consistent with the Media Library Detail view.

  • Users can now navigate between selected items in the Side Panel to review them in more detail - without changing their selection on the main Media Library dashboard.

Media Library Dashboard Sidepanel

Optimzed Media Library Modal 🎁

We’ve optimized the image selection modal to display more images by increasing its width in a previous release. The modal now shows up to 6 images per row (depending on screen size), compared to the previous layout. This change makes better use of available screen space.

News Agency Improvements 🎁

This release refines the News Agency module with new metadata properties and user experience improvements.

These improvements have also been backported to release-2025-09.

New Metadata Properties for News Agency Reports

News agency reports have been extended to include two optional metadata properties:

  • location: Stores geographical information related to a report (e.g., city, region, or country).
  • note: Contains additional details from the news agency, such as contact information or publishing restrictions.

Both properties are displayed alongside the already existing metadata properties.

News Agency Report Metadata

Displaying Custom Values for News Agency Report Sources and Categories

You can now define custom labels for news agency report sources and categories. Previously, Livingdocs displayed the raw imported values (e.g., abbreviated sources or untranslated categories). This update allows you to map those raw values to more descriptive or localized labels.

To support this, two new project configuration properties have been added:

newsAgency: {
  sources: [
    {label: 'DPA', value: 'dpa'},
    {label: 'DPA - OTS', value: 'ots'},
    {label: 'SDA', value: 'sda'}
  ],
  categories: [
    {label: {en: 'Politics', de: 'Politik'}, value: 'politics'},
    {label: {en: 'Economy', de: 'Wirtschaft'}, value: 'economy'},
    {label: {en: 'Sports', de: 'Sport'}, value: 'sports'}
  ]
}

For example, if a news agency report import provides the source ots, editors will now see DPA - OTS. Similarly, categories like politics appear as Politik or Politics, depending on the active language.

In addition, these new properties define the display filter options shown on news agency screens for filtering reports by source or category. They therefore replace the project configuration properties newsAgency.screens[].displayFilterOptionsSource and newsAgency.screens[].displayFilterOptionsCategory (see Breaking Changes).

News Agency Screen Search Results Ordered by Datetime

Search results on news agency screens are now ordered by datetime instead of relevance. This ensures reports appear in the sequence they were received. Previously, results followed the same relevance-based order used on other dashboards, but feedback showed that for news agency reports, chronological order is more valuable.

Showing More Reports on News Agency Screens

News agency screens now show 100 instead of 35 reports per page, allowing users to view more reports at once without needing to click “load more”.

Enabling All News Agency Notifications

The user experience for managing news agency notification categories has been improved with a new “Select all” checkbox. Roles that want to receive all notifications can now enable every notification category with a single click.

News Agency Notifications Preferences

Distribution Dates UI Improvements 🎁

Editors use the planning board to manage articles scheduled for publishing and distribution. Since distribution dates often correspond to the current day or near future, setting them quickly and accurately is essential for efficient workflow management.

Previously, the workflow required selecting a date from the date picker and then pressing a green confirmation button. This additional confirmation step was unclear to many users, leading to confusion and mistakes — editors often didn’t realize they needed to click the button after selecting a date.

This release introduces two key improvements to address these issues:

Quick Action Buttons

When adding a distribution date, editors now see three quick action buttons instead of an empty date picker:

  • Today: Sets the distribution date to today at 12:00 (noon)
  • Tomorrow: Sets the distribution date to tomorrow at 12:00 (noon)
  • Other date: Opens the date picker for selecting a different date

Auto-Save Functionality

Valid dates are now automatically saved as soon as they are selected—no confirmation button required. The date picker remains open in edit mode, and any valid date selection is immediately committed to the document. This removes the confusing confirmation step and provides instant visual feedback.

Date-Only Precision Configuration

A new optional configuration property precision allows you to configure whether editors should enter dates with or without time information:

{
  handle: 'distributionDates',
  type: 'li-distribution-dates',
  ui: {
    config: {
      precision: 'date' // Options: 'datetime' (default) or 'date'
    }
  }
}

Configuration Options:

  • precision: 'datetime' (default): Editors can set both date and time
  • precision: 'date': Editors only set the date; time is automatically set to 12:00 (noon) for timezone consistency

Simplified li-target-length and li-system-target-length UI Configuration 🎁

Over time, the metadata plugins li-target-length and li-system-target-length have gained many UI configuration options, some of which are redundant. To make these plugins easier to understand and explain, we are simplifying their configuration.

To achieve this, we are introducing a new configuration property: ui.config.modes. This property replaces the existing configuration options ui.config.allowAnyNumber, ui.config.showExactCountCheckbox, and ui.config.unit (see Deprecations).

The new configuration property ui.config.modes defines which input modes are available in the Livingdocs editor:

  • steps: A slider with pre-configured step values, requires steps to be configured
  • characters: A number input for entering a character count
  • lines: A number input for entering a line count
ui: {
  config: {
    modes: ['steps', 'characters', 'lines'],
    steps: [
      {label: {en: 'S', de: 'Klein'}, value: 100},
      {label: {en: 'M', de: 'Mittel'}, value: 200}
    ]
    // ...
  }
}

The migration to the new configuration is straightforward. Determine which UI modes should be available to your users and specify them under modes.

Example:

// OLD (deprecated)
ui: {
  config: {
    steps: [{label: 'S', value: 100}],
    unit: 'characters',
    showExactCountCheckbox: true
  }
}
// NEW
ui: {
  config: {
    modes: ['steps', 'characters'], // replaces the old properties
    steps: [{label: 'S', value: 100}]
  }
}

Input Mode: steps

UI mode steps of metadata plugin li-target-length

Input Mode: characters

UI mode characters of metadata plugin li-target-length

Input Mode: lines

UI mode lines of metadata plugin li-target-length

Data Migration Improvements 🎁

Data Migrations, usually executed using the data-migration-run CLI, have received two improvements:

  • Data Migrations now also migrate any scheduled publication. Previously, only the latest draft and latest publication of a document were migrated.
  • Data Migrations have been optimized to minimize unnecessary duplication of revisions. When the same revision is linked to a document’s draft, publication, or scheduled publication, it will now only be duplicated once. Additionally, when migrating a publication or scheduled publication, only the associated revision is duplicated, not the publication itself.

Vulnerability Patches

We are constantly patching module vulnerabilities for the Livingdocs Server and Livingdocs Editor as module fixes are available. Below is a list of all patched vulnerabilities included in the release.

Livingdocs Server

This release we have patched the following vulnerabilities in the Livingdocs Server:

No known vulnerabilities. 🎉

Livingdocs Editor

This release we have patched the following vulnerabilities in the Livingdocs Editor:

We are aware of the following vulnerabilities in the Livingdocs Editor:

  • CVE-2023-44270 vulnerability in postcss, it affects linters using PostCSS to parse external Cascading Style Sheets (CSS). It is not exploitable in the editor as we don’t load untrusted external CSS at build time.
  • CVE-2022-25844, CVE-2022-25869, CVE-2023-26116, CVE-2023-26117, CVE-2023-26118, CVE-2024-8372, CVE-2024-8373, CVE-2024-21490, CVE-2025-0716 are all AngularJS vulnerabilities that don’t have a patch available. We are working on removing all AngularJS from our code and vulnerabilities will go away when we complete the transition to Vue.js.
  • CVE-2024-9506 vulnerability in vue, an ReDoS vulnerability exploitable through inefficient regex evaluation in parseHTML function. The issue can cause excessive CPU usage but is not exploitable in the editor as we don’t load untrusted HTML at runtime.

Patches

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

Livingdocs Server Patches

  • v284.0.14: chore(retresco): Simplify retresco config lookup further

  • v284.0.13: fix: add li-tree UI config property treeInitiallyCollapsed

  • v284.0.12: fix: serve image with media library entry mime type if format is not specified

  • v284.0.11: fix(retresco): Limit retries when re-enrich fails

  • v284.0.10: fix: Apply redaction if image is requested with a width larger than the cropped width

  • v284.0.9: fix: Set minimal v22 node version to v22.17.1

  • v284.0.8: fix(retresco): Support API versions in Retresco re-enrich endpoint

  • v284.0.7: fix(public-api): Add 2025-11 to Public API versions

  • v284.0.6: fix(auth): Use accessTokenTtl for serve-image token expiration

Livingdocs Editor Patches

  • v121.3.9: fix: collapse li-tree properties if treeInitiallyCollapsed is set

  • v121.3.8: fix(horizontal form): Teaser reference

  • v121.3.7: fix(clipboard): prevent duplicated ids when pasting component from clipboard

  • v121.3.6: fix(dashboards): Prevent error when searching on kanban boards

  • v121.3.5: fix(image-cropper): state pollution

  • v121.3.4: fix(dashboard filters): Overlooked “low res” filter

  • v121.3.3: fix(media-center-batch-actions): fix broken media library in article editor

  • v121.3.2: fix(media center): Multi select polish


Icon Legend

  • Breaking changes: 🔥
  • Feature: 🎁