Attention: If you skipped one or more releases, please also check the release-notes of the skipped ones.
Webinar
- Feature Webinar Recording | Passcode: .0!7P1Ln
- Feature Webinar Documentation
- Dev Webinar Recording | Passcode: 1Ck$qQ8j
- Dev Webinar Slides
- Release Newsletter Subscription
System Requirements
Suggested
Name | Version |
---|---|
Node | 16 |
NPM | 8 |
Postgres | 14 |
Elasticsearch | 7 |
Redis | 7 |
Livingdocs Server Docker Image | livingdocs/server-base:16 |
Livingdocs Editor Docker Image | livingdocs/editor-base:16 |
Browser Support | Edge >= 80, Firefox >= 74, Chrome >= 80, Safari >= 13.1, iOS Safari >= 13.4, Opera >= 67 |
Minimal
Name | Version |
---|---|
Node | 14 |
NPM | 7 |
Postgres | 12 |
Elasticsearch | 6.x (Deprecated) |
Redis | 5 (Deprecated) |
Livingdocs Server Docker Image | livingdocs/server-base:14.3 |
Livingdocs Editor Docker Image | livingdocs/editor-base:14.3 |
Browser Support | Edge >= 80, Firefox >= 74, Chrome >= 80, Safari >= 13.1, iOS Safari >= 13.4, Opera >= 67 |
Highlights
Metadata Plugin li-text improvements
Add new config options minLength
, recommendedMinLength
, maxLength
, recommendedMaxLength
and a better visual feedback if the values are exceeded or fallen below.
Metadata Plugin li-date
The metadata plugin li-date
allows to set a date without time.
Metadata Plugin li-tree
li-tree
lets you set up a tree with items of the 3 possible types group
, link
, document
.
Metadata Plugin li-issue-management
The li-issue-management
metadata plugin can be used to manage issues (a data-record with references to pages).
Document Creation Flow
With a Document Creation Flow you can configure how a document gets created:
- Define a create button (only supported for Table Dashboards)
- Define fields on the document creation modal
- Register a create function to parse the data which creates the document
References:
- Guide
- PR: Register Create Function
- PR: Document Creation Flow Config
- PR: Editor Project Config - Webhook: Add webhook event ‘document.build’
- PR: Add Create Button to Dashboard
- PR: Simplify Create Wizard
- PR: Allow Flow Config on editorSettings.documentCreationFlows
Deliveries: Status and Build Triggers
For infinite products like an e-paper there is usually a “build” stage involved. With the new Deliveries feature we allow a customer to trigger a remote system to kick off a build and report the status of the build back to Livingdocs. This allows an editor to get a better view on the infinite product life cycle. These are the features:
- Trigger a build of a remote build system in the Publish Control view
- Get an overview of the build state in the Publish Control view
- Allow a remote build system to report its status back to Livingdocs
References:
- Guide
- PR: Server Config + Webhook + Events
- PR: Delivery Status Reporting
- PR: Delivery Status Fetching
- PR: UI
Table Dashboards (full working version)
Table Dashboards are a flexible type of dashboards where individual columns can be configured. From the September release on this is the new standard Dashboard and old versions should be migrated to these new type of Dashboard.
References:
Desk-Net: Schedule Extensions + Production Features
The Desk-Net integration has been extended with some new features:
- Fixing the Desk-Net Schedule side panel to a specific date
- Filtering the documents displayed in the Desk-Net Schedule side panel by story status, platform status, and whether they have been imported to Livingdocs
- Linking Livingdocs documents to Desk-Net using a metadata value when li-desknet-integration is not used
- Registering a server function to handle the placement of teasers into a document using the Desk-Net Schedule data
References:
- Documentation:
- li-desknet-schedule Metadata Plugin:
- Automatic Placement:
- UI Improvements:
Breaking Changes ๐ฅ
Migrate the database ๐ฅ
It’s a simple/fast migration with no expected data losses.
# run `livingdocs-server migrate up` to update to the newest database scheme
# migration 179-fix-media-library-index.js
# alter media library index
# migration 180-inbox-insert-item.js
# add 3 psql function to handle inbox
# migration 181-add-document-publication-delivery-statuses.js
# add table document_publication_delivery_status_reports
livingdocs-server migrate up
Remove Support for Postgres 11 ๐ฅ
๐ฅ Support for Postgres 11 has been removed. Please Update to Postgres 14 (12+ is supported).
Remove Support for Redis <5 ๐ฅ
๐ฅ Support for Redis <5 has been removed. Please Update to Redis 7 (5+ is supported).
Metadata Plugin li-text
- ๐ฅ metadata type
li-text
: remove propertyui.component
- ๐ฅ metadata type
li-text
: remove propertyui.config.rows
restore to the old behavior
To restore to the old behavior is not 100% possible because the updated version of li-text
is smarter and needs less config. One important change is that the field extends its size automatically based on the amount of content added.
If you have defined LiMetaTextareaForm
as UI component or set rows
, you have now to set allowNewlines: true
.
For other changes please consult the documentation
Backward Compatibility Mode
If you have issues with the update, you can enable the backward compatibility mode where li-text configs are not validated.
โ Only need that mode until you solved your issues with li-text! This mode is only thought for a short time period to migrate the old metadata.
// server config
// ignore validation for metadata plugin 'li-text' and 'li-string-list', all other plugins are validated
metadataPluginsToIgnoreForConfigValidation: ['li-text', 'li-string-list'],
All HTTP APIs: Remove support for contentType: ‘multipart/form-data’"
- ๐ฅ Remove
multer
module by removing support forcontentType: 'multipart/form-data'
configs on route declarations (LIBREAKING011
). Please come to us if the server doesn’t start anymore because of that (as stated in the error message). - ๐ฅ Remove jsonp callback support as there was never a need for it and it wasn’t documented at all.
Document Publication Lifecycle Update
๐ฅ Move server hook preparePublish
hooks after metadata plugin onPreparePublish
hooks (see Diagram).
During the migration to the preparePublish
hooks, the order accidentally changed. Before, the prePublish
hooks were run after the metadata plugin onPublish
hooks.
This has the effect that required metadata are always present in the preparePublish
hooks, unlike before where they still could be missing.
Deprecations
Dashboards Configs โโโ
The following configurations are deprecated and will be removed in the future. If you need them longer than release-2022-11
, please think about a plan with timing to not depend on the Legacy Dashboards anymore and let your Customer Solutions Manager know about it. We will find a solution.
Deprecated Editor Configs:
app.filters.inlineArticleList
app.filters.articleList
app.filters.pageList
app.filters.dataRecordList
app.filters.menuList
search.articleSearch.listItemComponent
Systemdata
Normalize documentWriteModel.systemdata
and documentVersion.systemdata
.
Old properties are defined as getters and emit deprecation warnings (LIDEP018
), new properties are enumerable on the object.
systemdata.project_id
>systemdata.projectId
systemdata.channel_id
>systemdata.channelId
systemdata.document_id
>systemdata.documentId
systemdata.revision_id
>systemdata.revisionId
systemdata.remote_id
>systemdata.remoteId
systemdata.content_type
>systemdata.contentType
systemdata.document_type
>systemdata.documentType
systemdata.designDescriptor
>systemdata.design
systemdata.publication_id
>systemdata.publicationId
systemdata.publication_date
>systemdata.lastPublicationDate
systemdata.first_publication_date
>systemdata.firstPublicationDate
Redis 5
Redis 5 has been deprecated. Please Update to Redis 7.
Metadata Plugin li-desknet-platforms
The li-desknet-platforms
metadata plugin has been replaced by li-desknet-schedule
. The li-desknet-platforms
plugin stored an array of objects containing platformId
and categoryId
values. The new li-desknet-schedule
storage schema is an object with a platforms
property which stores this array, along with a new date
property. The new plugin also has some additional config options.
Desk-Net scheduleEnabled
Please remove projectConfig.settings.desknet.scheduleEnabled
, because it has no longer has any effect. The schedule will be enabled when Desk-Net is enabled in the server config, and the content type has the li-desknet-schedule metadata plugin.
Deprecate ui.config.rows of li-text
Remove ui.config.rows
config of metadata plugin li-text
. If defined, replace it with config.allowNewlines: true
, if you want to allow newline characters stored.
APIs ๐
Publication Delivery
- ๐ Add server API
publicationApi.getDeliveryStatusReport({projectId, documentId})
- ๐ Add server API
publicationApi.triggerBuild
-> fires a new Server Eventdocument.build
- ๐ Add
POST /api/v1/documents/:documentId/addDeliveryStatus
endpoint to Public API - ๐ Add Server Event
document.build
- ๐ Add Webhook Event
document.build
Other Changes
Security
- Cheerio is now an optional dependency, downstream has to include it
- Google Vision and Google Translate are now an optional dependency, downstream has to include it
Design
Features
- Define storage.computeKey() function to compute the storage path fo a Media Library asset
- Enable Publish Control for Data Records
- Public API: /latestDraft allows access with token ‘public-api:drafts:read’
Improvements
- Project Config: Add maxTextLength config for Retresco Integration
- Editor Back Button: Find the best dashboard to navigate to if article was opened directly
- Document Inbox: allow manual sorting
- Administration: Regular users can modify their first-/last-name
- Dragon Drop: Allow to replace teaser images in resolved includes
- Dashboards: compute entity labels with best effort from baseFilters
- Safe error serializer that handles circular references
- Support
mediaIndex
configuration inli-category
plugin
Bugfixes
- Editable links: Show current (and not configured link)
- Desk-Net: Support any handle for li-desknet-integration
- Document Copy: Filter unknown components during copy
- Fix fake progress bar for image drops on embedded livingdoc
- Document Editing: Correctly handle multiple dashboard actions
- Fix login redirect when session expired using OpenID
- Deliveries: Ensure optional url property is handled correctly
- Avoid loading content when retrieving lists
- Disable editing toolbar actions on conflict mode
- Add IDs for components of defaultContent on document creation
- Highlight error for Vue Select inputs
- Fix issues related with pasting over selected text that contained formatting tags.
- ImportApi: ensure untouched flag is respected
- Confirm remove page action in li-publish-control-delivery
- Media Library: Don’t show Media Library Navigation/Toolbar Buttons for types with only hidden mediaTypes
Patches
Here is a list of all patches after the release has been announced.
Livingdocs Server Patches
- v194.0.28: fix(local-authentication): Make the current_password validation more strict
- v194.0.27: fix: extend test for filtering unknown components when nested default content is defined in the contentType
- v194.0.26: fix(xmldom): Update
@xmldom/xmldom
to a newer release that includes fix for security vulnerability - v194.0.25: fix(desknet): Prevent empty userId from Desk-Net
- v194.0.24: fix(metadata): li-publish-date failing validation
- v194.0.23: fix(logs): Error logs were missing the stack sometimes due to missing
...serializers
inserializers
- v194.0.22: fix(print): Add params to print export
- v194.0.21: fix(redis): Set sentinel username and password if credentials are set
- v194.0.20: fix(includes): Fix paramsSchema
config.published
handling - v194.0.19: fix(unPublishNow): Workflow improved/implemented
- v194.0.18: fix(desknet): Check value changed before publication status sync
- v194.0.17: fix(includes): load drafts in preview
- v194.0.16: fix(desknet): get all desknet entries in search
- v194.0.15: fix(media-library): Allow to add translation assets into a MediaLibraryEntry
- v194.0.14: fix: incorporate feedback
- v194.0.13: test(import): mediaLibraryEntry import - fix tests after open up schema again
- v194.0.12: fix(publicApi): Allow to import MediaLibraryEntries of type video
- v194.0.11: fix(hugo-api): Make royaltyRecipients path configurable
- v194.0.10: fix: add index for user_id in user_occupations
- v194.0.9: fix(desknet): Get default content from content type, not settings
- v194.0.8: fix(cheerio):
cheerio
can be passed from downstream implementation toCheerioHtml
inparams
argument, wrapper around cheerio require - v194.0.7: fix: allow null values for ‘validFrom’ and ‘validTo’.
- v194.0.6: fix(google-vision): Rework google vision feature register function and set to disable by default
- v194.0.5: chore(httpServer): Log deprecation warnings about server configs that moved to httpServer
- v194.0.4: fix(issue-management): enable composition api
- v194.0.3: fix: add assets property to contentType config
- v??.?.?: text
Livingdocs Editor Patches
-
v81.20.88: fix(metadata): Re-render metadata form every time panel is opened
-
v81.20.87: fix(security): Applies all security patches that do not have the patch in a breaking version
-
v81.20.86: fix(security): Upgrade
socket.io
to fix critical vulnerability -
v81.20.85: fix(security): Upgrade
resolve-url-loader
to fixloader-utils
critical vulnerability -
v81.20.84: fix(metadata): Wrap document references in default list
-
v81.20.83: chore(li-link-edit): tests added
-
v81.20.82: fix(namedCrops): Delete button works correctly
-
v81.20.81: fix: add system user for empty userid
-
v81.20.80: fix(metadata): Prevent manual source with image config sync update
-
v81.20.79: fix(inlineListEditor): Only publishable when dirty
-
v81.20.78: fix: change to selected service on copy
-
v81.20.77: fix(translationCard): loading state correct
-
v81.20.76: fix(count): For reference list
-
v81.20.75: fix: escape error messages on login screen
-
v81.20.74: fix(table dashboard): don’t show the empty state while loading a search result but the old result until the new one is ready
-
v81.20.73: fix(dashboards): Handle
published: false
in legacy dashboards -
v81.20.72: refactor: optimize code for internal vs external link handling
-
v81.20.71: fix: correctly compute minHeight with an incomplete config
-
v81.20.70: fix: update framework 24.3.4
-
v81.20.69: fix(conflictUI): Discard and Apply buttons correctly positioned
-
v81.20.68: fix: prevent refreshing table dashboard when loading more elements
-
v81.20.67: fix: prevent endless calling of finalDashboardConfig by moving it from a computed property to the creation lifecycle
-
v81.20.66: fix(li-tree): reset search results properly
-
v81.20.65: fix(metadata): ensure teaser card in li-document-references doesn’t overflow
-
v81.20.64: fix(issue-management): improve UX
-
v81.20.63: fix(resetFilterButton): Correctly styled
-
v81.20.62: fix(unpublishNow): Calls correct server endpoint
-
v81.20.61: chore(li-tree): implement code review feedback
-
v81.20.60: chore(li-tree): implement code review feedback
-
v81.20.59: fix(li-tree): do not remove link/reference when updatinglabel name
-
v81.20.58: fix(publish): Back returns to custom dashboard after create
-
v81.20.57: fix: full body iframe height and better growth detection
-
v81.20.56: fix(media-library): Restore upload center placeholders
-
v81.20.55: fix(findIdfromUrl): Updated regex finder
-
v81.20.54: fix: include target in component Link
-
v81.20.53: fix: make sure selected items fit inside the dropdown
-
v81.20.52: code(multi-language): incorporate review feedback
-
v81.20.51: fix(documentList): Icon is reactive
-
v81.20.50: fix(findIdfromUrl): Updated regex finder
-
v81.20.49: fix: ignore htmlmin from webpack on two html files
-
v81.20.48: fix(metadata): Only handle
true
for legacy searchOnlyPublished -
v81.20.47: fix(metadata): Fix legacy configs with document reference dialogs
-
v81.20.46: fix(dashboards): Always use create wizard for multi-channel projects
-
v81.20.45: fix(realtime): Handle wrapped error objects from Pusher
-
v81.20.44: fix(mismatched): Password realigned
-
v81.20.43: fix(teaser): set default params
-
v81.20.41: fix(toolbar): Handle anchor links as internal
-
v81.20.40: fix(creation-flow): Prefill values after creating document
-
v81.20.39: fix(editor): fix prepare-publication endless loop
-
v81.20.38: fix(German Comments): Mix up corrected
-
v81.20.37: fix: remove unnecessary newline
-
v81.20.36: fix(metadata): fix vue type of reference label to not log error
-
v81.20.35: fix(media-library): Move validity icon to avoid duration overlap
-
v81.20.34: chore(cypress): improve the video test reliability
-
v81.20.33: fix(properties): Hide teaser format select when no transforms
-
v81.20.32: fix(li-component-link): update link if component changed
-
v81.20.31: chore(prepare-publish): implement code review feedback
-
v81.20.30: fix(ComponentLink): Now moves with componentSelection
-
v81.20.29: fix: clearing of ‘validFrom’ and ‘validTo’
-
v81.20.28: fix(copyButton): Article State persists on cancel
-
v81.20.27: fix(desknet-create): resolve includes
-
v81.20.26: fix(insert panel): Divider visibility
-
v81.20.25: fix(Session): Styling updated when expired
-
v81.20.24: fix(table dashboards): provide a documentLoader to dashboard cards
-
v81.20.23: fix(documentSoftLock): Counter alginment
-
v81.20.22: fix: close document copy popup when clicking on X or outside the popup
-
v81.20.21: chore: improve comment
-
v81.20.20: fix: update framework to latest release-2022-09 patch 24.3.3
-
v81.20.19: chore(text-formatting): Remove AngularJS component link directive
-
v81.20.18: fix(archived documents): Are removed from multilist inbox
-
v81.20.17: fix(li-metadata-form): save open/closed state of metadata cards for each contentType seperatly
-
v81.20.16: fix(metadata-mapper): always emit event when updating metadata
-
v81.20.15: fix(text only buttons): Spacing
-
v81.20.14: fix(history): Prevent app from crashing when toggling history
-
v81.20.13: fix: log framework violations after initialization
-
v81.20.12: fix(dashboards): Add back button fallback
-
v81.20.11: fix(document editing toolbar): enable flyouts opened from hidden actions on narrow screens
-
v81.20.10: fix: handle cases where no teaserComponents are configured
-
v81.20.9: fix: use require instead of import for VUE composition apis
-
v81.20.8: fix(dashboards): when a dashboard holds a configured document creation flow button(s), no default create button is shown
-
v81.20.7: fix(draft): Fix bug preventing publication of data records
-
v81.20.6: fix(listInbox): Cannot remove doc during publish
-
v81.20.5: fix(metadata): don’t error in any case when metadata properties are updated
-
v81.20.4: fix(publish state): Line Wrap
-
v81.20.3: fix: update framework version to release-2022-09
-
v??.?.?: text
Icon Legend
- Breaking changes: ๐ฅ
- Feature: ๐
- Bugfix: ๐ชฒ
- Chore: ๐ง