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

Newsletter

Webinar

Features

Developers

System Requirements

Suggested

NameVersion
Node16
NPM7
Postgres13
Elasticsearch7
Redis6
Livingdocs Server Docker Imagelivingdocs/server-base:16.1
Livingdocs Editor Docker Imagelivingdocs/editor-base:16.1
Browser SupportEdge >= 80, Firefox >= 74, Chrome >= 80, Safari >= 13.1, iOS Safari >= 13.4, Opera >= 67

Minimal

NameVersion
Node14
NPM7
Postgres9.6 (Deprecated Postgres 9 and 10)
Elasticsearch6.x
Redis5
Livingdocs Server Docker Imagelivingdocs/server-base:14.3
Livingdocs Editor Docker Imagelivingdocs/editor-base:14.3
Browser SupportEdge >= 80, Firefox >= 74, Chrome >= 80, Safari >= 13.1, iOS Safari >= 13.4, Opera >= 67

Highlights

Metadata Translations for Data Records

We introduce “Metadata Translations for Data Records”. It allows to translate data records into different languages. The behavior and look is similar like for the translation of Media Library Assets.

Multilist Editor

The multilist editor lets a user view and edit multiple document lists in one screen (before you had to jump from list to list)

  • the multilist editor is accessible from the editor toolbar while editing a page
  • lists can individually be filtered (visible/invisible)
  • optionally it shows the inbox for one specific document.

image

Document Inbox

We introduce the “Document Inbox” feature to support teams with splitted responsibilities. In bigger editorial teams there are different roles (e.g. writing an article and orchestrating pages). As an example: Editor A writes an article and put it to the inbox of the front page. Editor B then can decide into which list of the front page the article should go.

Extended Text Formatting Toolbar

We added 3 new possibilities to select data for custom attributes in the text formattting toolbar

Breaking Changes 🔥

Migrate the database

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

# run grunt migrate to update to the newest database schema
# migration - 167-add-document-inbox.js
#   create new table document_inbox
# migration - 168-add-started_at-index-on-import_jobs.js
#   add index to import_jobs.started_at
# migration - 169-add-li_jsonb_find_index-and-improve-li_jsonb_patch-error-handling.js
#   add new pg function for json patching
# migration - 170-add-translations-to-document_metadata-table.js
#   add column document_metadata.translations
# migration - 170-support-postgres-14.js
#   add support for postgres 14
# migration - 171-add-project-secrets.js
#   add new table project_secrets
# migration - 172-prepare-content_type_id-migration.js
#   add new pg function for content type population
livingdocs-server migrate up

Remove Deprecated Editor Config 🔥

  • 🔥 remove deprecated editor config hugo.assetHost - use server config hugo.assetHost instead
  • 🔥 remove deprecated editor config app.imageService - use server config documents.selectedImageService instead

References: Editor PR

Remove DocumentWriteModel Getters I 🔥

Some internal methods got removed. If you use any of the following methods, please rather use documentWriteModel.metadata directly.

  • 🔥 documentWriteModel.metadata.setProperties(obj) got removed. Please use documentWriteModel.metadata.setProperty for now.
  • 🔥 documentWriteModel.metadata.serialize() got removed. Please use documentWriteModel.metadata.splittedSerialize()
  • 🔥 documentWriteModel.metadata.getEntity() got removed. Please use documentWriteModel.metadata.entity

References: Server PR

Remove DocumentWriteModel Getters II 🔥

  • 🔥 documentWriteModel.document got removed. Please use documentWriteModel.documentEntity instead
  • 🔥 documentWriteModel.metadata got removed. Please use documentWriteModel.metadataModel instead
  • 🔥 documentWriteModel.revision got removed. Please use documentWriteModel.revisionEntity instead

Instead of using higher level getters like documentWriteModel.content and documentWriteModel.metadataContent, you can use low level getters instead:

  • documentModel.id
  • documentModel.documentId
  • documentModel.revisionId
  • documentModel.projectId
  • documentModel.channelId

References: Server PR

Rename channelConfig to projectConfig 🔥

  • 🔥 removed server config property channelConfigs.enabled - it has no effect anymore
  • 🔥 removed server config channelConfigs - use projectConfigs instead

References: Server PR

Button cleanup iteration 1 🔥

If you have any custom UI in your downstream that makes use of any of the following you want to read this:

classes:

  • .ld-btn-group--link, .ld-btn-group--narrow, .ld-btn-group--no-margin
  • .ld-btn--center, .ld-btn--kill-radius, .ld-btn--text-left, .ld-btn--project-setup, .ld-btn--primary-dark, .ld-btn--white, .ld-btn--border, .ld-btn--refresh, .ld-btn--dropdown, .ld-btn--bar
  • .ld-btn__bar, .ld-btn .li-icon, .li-toolbar-action-button

SCSS variabales:

  • $ld-btn--border-color, $ld-btn--border-background, $ld-btn--border-border, $ld-btn--border-hover

You are highly encouraged to refactor your markup / custom stylesheets to not use these things anymore. In order to ease that process, there is a file you can @import in your custom SCSS to get support for the mentioned classes and variables: In the SCSS file you have configured as CUSTOM_STYLE_PATH_BEFORE or CUSTOM_STYLE_PATH_AFTER add this line at the top:

@import "~styles/backwards-compatibiliy/release-2021-11.scss";

This will define the removed classes and variables within your SCSS file tree. Your Sass files will compile again and your custom UI will most probably look just fine. From there on you can refactor your code and remove the @import "~styles/backwards-compatibiliy/release-2021-11.scss"; after you are done. We will keep this file around for some time, but it will eventually get removed. If you have any questions about this, don’t hesitate to contact us.

References: Editor PR

Button cleanup iteration 2 🔥

If you have any custom UI in your downstream that makes use of any of the following you want to read this:

classes:

  • .ld-btn, .ld-btn--full, .ld-btn--large, .ld-btn--small, .ld-btn--tiny, .ld-btn--square, .ld-btn--circle, .ld-btn--circle-small, .ld-btn--primary, .ld-btn--confirm, .ld-btn__extension, .ld-btn--tab, .ld-btn--tab-blocky-on-mobile, .ld-btn--default, .ld-btn--ghost, .ld-btn--link, .ld-btn--negative, .ld-btn--link-negative, .ld-btn--icon, .ld-btn[disabled], .ld-btn--disabled, .ld-btn--in-progress, .ld-btn--loading, .ld-btn--loading-auto, .d-btn--numberdot, .ld-btn--github, .ld-btn--google, .ld-btn--facebook, .ld-btn--pagination, .ld-btn--overlay, .ld-btn--icon-only-small, .ld-btn--icon-only-large, .ld-btn--clean, .ld-modal__footer, .ld-btn-file

SCSS variables:

  • $ld-btn-radius, $ld-btn-vertical-padding, $ld-btn-horizontal-padding, $ld-btn-padding, $ld-btn-padding--tiny, $ld-btn-padding--small, $ld-btn-padding--large, $ld-btn--primary-color, $ld-btn--primary-background, $ld-btn--primary-border, $ld-btn--primary-hover, $ld-btn--negative-color, $ld-btn--negative-background, $ld-btn--negative-border, $ld-btn--negative-hover, $ld-btn--link-color, $ld-btn--link-background, $ld-btn--link-hover, $ld-btn--default-color, $ld-btn--default-background, $ld-btn--default-border, $ld-btn--default-hover

No longer existing button types:

  • Default (li-button is the default button), Tab, Square, Confirm, Tab Blocky on Mobile, Kill Radius, Text Left, Project Setup, Primary Dark, White, Border, Dropdown

You are highly encouraged to refactor your markup / custom stylesheets to not use these things anymore. In order to ease that process, there is a file you can @import in your custom SCSS to get support for the mentioned classes and variables: In the SCSS file you have configured as CUSTOM_STYLE_PATH_BEFORE or CUSTOM_STYLE_PATH_AFTER add this line at the top:

@import "~styles/backwards-compatibility/release-2021-11";

This will define the removed classes and variables within your SCSS file tree. Your Sass files will compile again and your custom UI will most probably look just fine. From there on you can refactor your code and remove the @import "~styles/backwards-compatibiliy/release-2021-11.scss"; after you are done. We will keep this file around for some time, but it will eventually get removed. If you have any questions about this, don’t hesitate to contact us.

References: Editor PR

Deprecations

Formatting Toolbar - Custom Elements

customElements[].placeholder are deprecated. Please replace them with with customElements[].attributes[]

// deprecated
customElements: [{
      label: 'icon',
      handle: 'customIcon',
      tagName: 'span',
      icon: 'format-color-highlight',
      attributes: [
        {name: 'class', value: 'custom-icon'}
      ],
      // deprecated: the placeholder attribute which will be filled with the inserted value
      placeholder: {name: 'data-input'}
}]

// new approach with attributes
customElements: [{
      label: 'icon',
      handle: 'customIcon',
      tagName: 'span',
      icon: 'format-color-highlight',
      attributes: [
        {name: 'class', value: 'custom-icon'},
        // add li-text attribute
        {
          handle: 'input',
          type: 'li-text',
          name: 'data-input'
        }
      ]
}]

References:

Other Changes

Features

Design

Improvements

Bugfixes

Patches

Livingdocs Server Patches

  • v157.2.38: fix(referenceMigration): Supports all list configs
  • v157.2.37: fix: hugo-controller return hugoPicture for new and old Media
  • v157.2.36: fix(documents): Fix content type update support
  • v157.2.35: fix: remove unconfigured metadata properties
  • v157.2.34: fix(projectSecrets): tolerate missing projectConfigs config
  • v157.2.33: fix(publicApi): add id to nodes in menu
  • v157.2.32: fix(pagination): Introduce after query string validation in /latestPublications of public api
  • v157.2.31: fix(mediaLibrary): fallback to ffprobe system binary when ffprobe-static has no binaries
  • v157.2.30: chore: adapt tests with the new conceptFields
  • v157.2.28: chore: Sign drone file
  • v157.2.27: fix: bump framework to version 21.1.8
  • v157.2.26: fix(vision): fix translate call and use base64
  • v157.2.25: fix(sso): Convert arguments in strategybuilder to an object to fix wrongly passed parameters
  • v157.2.24: fix(search): Use the index name as fallback in case there’s no alias to query
  • v157.2.23: fix(tokens): Improve the accessTokenSigningKeys configuration to throw on misconfiguration edge cases
  • v157.2.22: fix: Upgrade @livingdocs/conf to v3 to update jsonpointer
  • v157.2.21: fix(desknet): make category optional
  • v157.2.20: fix(force reset email): user emailed, delay removed
  • v157.2.19: fix(image-processing): Allow application/xml mimetype to support svg image uploads
  • v157.2.18: fix(document-relations): Do not throw an error when there are no relations
  • v157.2.17: test(metadata-plugins): Write more tests for metadata plugin lookups
  • v157.2.16: fix(duplicate-filter): Set fallback list length to 3
  • v157.2.15: chore(public-api): Fix shaky document import test
  • v157.2.14: fix: Fix typo in handle checks of documents and media library config
  • v157.2.13: fix(data-migration-run): use correct contentType argument name
  • v157.2.12: fix(media-library): Fix support for running the Livingdocs Server against Postgres replicas
  • v157.2.11: fix(document-lists): Sort results by id
  • v157.2.10: fix: Support a accessTokenCacheSize config to increase the token cache size on heavy used servers
  • v157.2.9: return revision also in case metadata_id is null

Livingdocs Editor Patches

  • v74.4.74: fix(cacheIdentifier): now defined

  • v74.4.73: fix(translation manager): Use correct locale for checking if there is a new asset

  • v74.4.72: fix(hugo): Fallback field for hugo image import

  • v74.4.71: fix: remove nzz downstream test

  • v74.4.70: fix(multiListEditor): Service always found

  • v74.4.69: fix: wrap text for long document titles on document lists

  • v74.4.68: fix: use the directiveMappings for Hugo upload

  • v74.4.67: fix: add origins for hugo images

  • v74.4.66: fix(center buttons): load more article buttons centered

  • v74.4.65: fix: set default value for minResolution on li-image-crop

  • v74.4.64: fix(documentFields): All fields added for downstream data

  • v74.4.63: fix(proofReading Buttons): Flex style added

  • v74.4.62: fix(type styling moved): Type styling separated for semantic tags

  • v74.4.61: chore: set the release name to the @livingdocs/framework version

  • v74.4.60: fix(articleMetadata): Metadata now requested from server

  • v74.4.59: fix(filterOverlap): Date Time pop up fits in modal)

  • v74.4.58: fix: add property componentGroups in the content_type_config

  • v74.4.57: chore: address comment

  • v74.4.56: fix(resolvecard): comment card buttons realigned

  • v74.4.55: fix: bump framework to version 21.1.8

  • v74.4.54: fix(buttonStyling): iframe buttons styled

  • v74.4.53: chore: adapt test by adding fields on the search documents query

  • v74.4.52: minor change

  • v74.4.51: fix(includes): pass paramsSchemaExtension to includes core api getter

  • v74.4.50: removed unnecessary line of code

  • v74.4.49: chore(style guide): Updated

  • v74.4.48: fix: enable show comments after creating a new comment

  • v74.4.47: fix(historyStyling): Removed tag has correct padding

  • v74.4.46: fix(workspaceUnloading): Workspace is unloaded now if softLocked

  • v74.4.45: fix(buttonType): Button types re-added for new li-buttons

  • v74.4.44: fix(notification-list): stops notifications covering each other up

  • v74.4.43: fix(navigation-toolbar): button positioning

  • v74.4.42: fix(hugoDrag): hugo metadata now is populated

  • v74.4.41: fix: upgrade framework to 21.1.7

  • v74.4.40: fix(document-list): Reorganise tests

  • v74.4.39: fix(dialogs): simplify outside click handling for dialogs opened through the dialogService

  • v74.4.38: fix(notificatins): Stacking

  • v74.4.37: fix(service start screen): Activity feed

  • v74.4.36: fix(dialog): don’t close on click outside to not close dialogs opening other dialogs automatically

  • v74.4.35: fix: Fix pathname lookup to not fail

  • v74.4.34: fix(task card): ensure invisible a tag covering the card is correctly positioned

  • v74.4.33: fix(media source drop handler): Use correct target component

  • v74.4.32: fix error in defaultSelectService and defaultMultiSelectService


    Icon Legend

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