Caveat 🔥
These are the release notes of the upcoming release (pull requests merged to the main branch).
- ℹ️ this document is updated automatically by a bot (pr’s to categorize section)
- ℹ️ this document will be roughly updated manually once a week (put PRs + description to the right section)
- 🔥 We don’t guarantee stable APIs. They can still change until the official release
- 🔥 Integration against the upcoming release (currently
mainbranch) is at your own risk
PRs to Categorize
chore(deps): update dependency webpack from 5.109.2 to v5.110.1 (main)
Stop storing generated component data in the comment thread context
test(playwright): Automate the release-2026-07 manual test cases
feat(search): Add /documents/count endpoint for exact ES totals
fix(media-library): keep legacy search fields for un-reindexed entries
Remove mediaLibrary.disableImageEditingInDocuments (LIBREAKING078)
Keep auto-loading search results until the container is filled
chore(deps): update dependency eslint from 10.8.1 to v10.9.0 (main)
Use the collapse icon for the recenter button in the crop editor
chore(deps): update dependency sass from 1.102.0 to v1.103.0 (main)
feat(media-library): search media entries by usage log details
fix(properties): correct German word order in char-limit labels
Fix 500 error when a document’s media already exists in the target project
Stop the media library indexing consumer group from drifting
chore(deps): update aws-sdk from 3.1110.0 to v3.1111.0 (main)
chore(deps): update dependency mocha from 12.0.0-rc.5 to v12.0.0-rc.6 (main)
Preserve document updatedAt when re-enriching Retresco metadata
fix(deps): update dependency @livingdocs/framework from 34.2.1 to v34.2.2 (main)
Replace the legacy ld-card CSS class with the li-card component
fix(indexing): Always load the elasticsearch configs into the process
feat(media-library): improve filename visibility and add copy button
feat(media-library): substring search on asset filenames via ngram
Match metadata image urls to the server to avoid merge conflicts
chore(deps): update dependency execa from 10.0.0 to v10.0.1 (main)
fix(deps): update dependency @livingdocs/framework from 34.2.0 to v34.2.1 (main)
chore(deps): update dependency posthog-node from 5.46.1 to v5.47.0 (main)
fix(indexing): Avoid caching empty media-library locale fields at startup
fix(deps): update dependency pusher-js from 8.5.0 to v8.6.0 (main)
chore(deps): update dependency jose from 6.2.3 to v6.2.4 (main)
fix(deps): update dependency js-yaml from 5.2.1 to 5.2.2 [security] (main)
fix(i18n): adjust nb-NO editor labels and bundle panel strings
fix(deps): update dependency nanoid from 5.1.16 to v6 (main)
fix(deps): update dependency nanoid from 5.1.16 to v6 (main)
fix(draft-storage): Never silently drop unsaved content when saving is disabled
Update logo and favicon assets; serve browser-support logo locally
Fix release date in deprecation message of li-authentication functions
Run node vulnerability patch weekly across main and the three latest releases
fix(search): Position simple-search cheat sheet flyout correctly
Hide license profile tag when license profiles are not configured
fix(auth): Always refresh tokens, makes
auth.authTokenRenewalIntervalconfig obsoleteAdd standard cost class translation to the license profile form
chore(deps): update dependency webpack from 5.108.3 to v5.108.4 (main)
To get an overview about new functionality, read the Release Notes.
To learn about the necessary actions to update Livingdocs to release-2026-09, read on.
Attention: If you skipped one or more releases, please also check the release-notes of the skipped ones.
Webinar
- Feature Webinar Recording: TODO
- Feature Webinar Documentation: TODO
- Release Newsletter Subscription
System Requirements
Suggested
| Name | Version |
|---|---|
| Node | 24 |
| NPM | 11 |
| Postgres | 17 |
| Elasticsearch | 9 |
| OpenSearch | 3 |
| Redis | 8 |
| Livingdocs Server Docker Image | livingdocs/server-base:24 |
| Livingdocs Editor Docker Image | livingdocs/editor-base:24 |
| Browser Support | Chrome >= 145, Edge >= 145, Firefox >= 148, Safari >= 26.3 |
Minimal
| Name | Version |
|---|---|
| Node | 22.17.1 |
| NPM | 10 |
| Postgres | 14 |
| Elasticsearch | 8 |
| OpenSearch | 2 |
| Redis | 6.2 |
| Livingdocs Server Docker Image | livingdocs/server-base:22 |
| Livingdocs Editor Docker Image | livingdocs/editor-base:22 |
| Browser Support | Chrome >= 138, Edge >= 138, Firefox >= 140, Safari >= 18.6 |
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 🔥
Removal of the editor.imageCrop configuration
The editor cropping tool was rebuilt in this release (see Improved Image Cropping). Its settings were specific to the old tool and have been removed without replacement.
Detect
In the editor config, an imageCrop key under editor. Search for imageCrop.
Fix
Remove the editor.imageCrop block and its options (maxArea, showSurroundingImage, surroundingImageOpacity, and zoomStep) from all editor configs and test fixtures. No replacement is needed.
Changed Default of licenseProfiles.enabled
The project config property mediaCenter.licenseProfiles.enabled now defaults to false instead of true. License profiles are now only enforced when the feature is explicitly enabled and at least one profile is configured.
Projects that configured license profiles without the property were enforcing them implicitly. After the upgrade, those projects silently stop blocking publication, stop requesting approval tasks, and stop warning about license violations while editing. See the License Profiles guide for what enforcement covers.
Detect
In the project config, mediaCenter.licenseProfiles has a non-empty profiles array and no enabled key. Search for licenseProfiles and check each hit for an enabled child property.
// project config
mediaCenter: {
licenseProfiles: {
profiles: [
/* ... */
]
}
}
Fix
Set mediaCenter.licenseProfiles.enabled to true to keep the behavior from before the upgrade. Projects that already set the property explicitly need no change.
// project config
mediaCenter: {
licenseProfiles: {
enabled: true,
profiles: [
/* ... */
]
}
}
Deprecations ⚠️
Features 🎁
Improved Image Cropping
The image cropping tool has been improved, visually and functionally. It is more intuitive to use. Editors can now:
- Resize crops with a fixed aspect ratio by dragging the frame, which previously was not possible.
- Grab the crop frame on its corners as well as on its sides.
- Move one edge of the frame without moving the opposite edge along with it.

Ratios configured with recommendedRatios are now always enforced. The crop can be resized, but it keeps the selected ratio. Previously the ratio was dropped as soon as an editor resized the crop. For unconstrained cropping, the picker now offers an additional freeform ratio. In freeform mode, the current aspect ratio can still be preserved by holding the Shift key while resizing.
The behavior of imageRatios is unchanged. Those ratios are always enforced and there is no freeform option.
The new cropping tool is available automatically. No configuration is required.
For more information, see the doc-image directive documentation.
Search by Filename
Not every image arrives with a title or description. When metadata is missing, the filename is often the only thing that identifies an image. Editors can now search for images by their filename, and read or copy the full name straight from the detail view.
Find images by any part of the filename
Media Library text search now matches any part of a filename, not just the beginning. Matching is case-insensitive and needs at least three characters. Searching for AXZ87D3X finds imago-AXZ87D3X-john-doe-cc.jpg.
Substring filename search is opt-in. Recreate the media library Elasticsearch index only if you want the feature; until then, search keeps working as before, and it activates automatically the next time the index is recreated for any other reason.
livingdocs-server elasticsearch-index --handle li-media --recreate -y
--recreate deletes and rebuilds the index in place, so media search returns incomplete results while it runs (roughly 6,000 to 7,000 entries per second). Plan it for a low-traffic window.
Read and copy the full filename
In the media detail view, the “Information” section now shows the complete filename instead of truncating it to a single line. A copy button next to it grabs the full name in one click, which makes long agency filenames and stock IDs easy to reuse.
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:
- TBD
No known vulnerabilities. 🎉
Livingdocs Editor
This release we have patched the following vulnerabilities in the Livingdocs Editor:
- TBD
No known vulnerabilities. 🎉
Patches
Patches typically fix bugs and apply improvements within the current release. Keeping your deployment up-to-date with the latest patch version means you benefit from those fixes. No explicit action is required per patch — bumping the version is enough.
Livingdocs Server Patches
- v312.0.7: fix: Deprecate Postgres 14
- v312.0.6: fix(deps): automatically patch Node.js vulnerabilities
- v312.0.5: fix(deps): update dependency nodemailer from 9.0.6 to 9.1.1 [security]
- v312.0.4: chore(benchmarks): import job-queue-scripts default export
- v312.0.3: chore: Add fontconfig to server dockerfile
- v312.0.2: fix(imatrics-nlp): Add createConceptSuggestion to the API mock and match the getConcepts shape
Livingdocs Editor Patches
- v128.1.6: fix(media-library): show open state on display settings dropdown
- v128.1.5: fix(webpack): Prevent dart-sass BOM from breaking scoped styles
- v128.1.4: test(dashboard): restore an article on the article management dashboard
- v128.1.3: fix(playwright): Use e2e-planning-system components in the publish control spec
- v128.1.2: fix(deps): update dependency @livingdocs/framework from 34.2.2 to v34.2.3