--- title: March 2026 Release description: Technical Release Notes for release-2026-03 --- To get an overview about new functionality, read the [Release Notes](https://livingdocs.io/en/release-march-2026). To learn about the necessary actions to update Livingdocs to `release-2026-03`, read on. **Attention:** If you skipped one or more releases, please also check the release-notes of the skipped ones. ## Webinar - [Feature Webinar Recording](https://us02web.zoom.us/rec/share/nrSoUutWO88VG_VqR2RLQk2pMe4CT-9_kzRSd6osEyjDXlSArpx2N8Ab6WZdZEfH.VWRgI5zM2JRpsKwr) | Passcode: `$eNi^5B@` - [Feature Webinar Slides](https://drive.google.com/file/d/1OInvT3uLj5cIgKctZ8mNmEjbrLuVYDYe/view?usp=sharing) - [Developer Webinar Recording](https://us02web.zoom.us/rec/share/ml5msPWlGXXtTx2llfk4-KmP9OuFBQO7Jqfp1tN4PleUOJY_s83zSOTYVUmbfSDR.iBVpet-oRs42V5Tv) | Passcode: `3$aJ&ztx` - [Developer Webinar Slides](https://drive.google.com/file/d/1XK9-bL8mLxy95yRe1Moy8d4wGXugOaYD/view?usp=sharing) - [Release Newsletter Subscription](https://confirmsubscription.com/h/j/61B064416E79453D) ## System Requirements ### Suggested | Name | Version | | ---- | ------- | | Node | 24 | | NPM | 11 | | Postgres | 17 | | Elasticsearch | 9 | | OpenSearch | 3 | | Redis | 8 | | Valkey | 9 | | 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 | | Valkey | 7 | | Livingdocs Server Docker Image | livingdocs/server-base:22 | | Livingdocs Editor Docker Image | livingdocs/editor-base:22 | | Browser Support | Chrome >= 133, Edge >= 133, Firefox >= 135, Safari >= 18.3 | ## Deployment ### Before the deployment No pre-deployment steps are required before rolling out this release. ### Rollout deployment #### Migrate the Postgres Database When upgrading, first run the database migrations. At Livingdocs, we run this command in an initContainer on Kubernetes. All migrations should execute quickly and not lock write-heavy tables. ```sh # 216-image-variants.js # Creates the `media_library_entries_image_variants` table for image editing # in documents. livingdocs-server migrate up ``` ### After the deployment #### Migrate image editing to documents [Image editing in documents](#image-editing-in-documents-gift) moves color adjustments from media library entries to individual document occurrences. A one-time migration script is available to apply this change to existing modifications. Run the following migration script if `use2025Behavior` is enabled and `disableImageEditingInDocuments` is not: ```sh npx livingdocs-server release-2026-03-image-editing-in-documents ``` This migrates image modifications (brightness, contrast, saturation) from media library entries to their respective image occurrences in documents. Without it, images can still be edited, but existing modifications remain applied globally on media library entries rather than locally per document occurrence. This migration is not reversible. Run it only once you are confident you won't switch back to the old behavior. If `disableImageEditingInDocuments` is currently enabled, run this script once you disable it. #### Fix rotated image dimensions A bug stored wrong dimensions for rotated images (EXIF orientation 5–8) when `use2025Behavior` was enabled. A one-time script loads the asset from storage, checks the dimensions, and corrects them in the database if they are wrong. Run the following script if `use2025Behavior` is enabled: ```sh npx livingdocs-server release-2026-03-fix-rotated-image-dimensions --yes ``` Optional flags: - `--since` (`-s`): Only check entries updated on or after this date, when the bug was introduced (default: `2025-03-01`) - `--delay` (`-d`): Delay in ms between entries to reduce database pressure (default: `50`) ### Rollback No rollback steps are required for this release. ## Breaking Changes :fire: ### Drop Support for Elasticsearch 7 and OpenSearch 1 :fire: Elasticsearch 7 and OpenSearch 1 are no longer maintained and therefore no longer supported by Livingdocs. Please upgrade to at least the new minimum versions: - Elasticsearch 8 - OpenSearch 2 Or preferably to our recommended versions: - Elasticsearch 9 - OpenSearch 3 ### Reserved `v/` Key Prefix for Image Editing in Documents :fire: Image variant keys use the `v/` prefix (e.g. `v/2026/02/10/abc123`). If you have configured a custom [`storage.computeKey`](/customising/server-configuration/storage/llms.txt#interface) function for image storage, ensure it does not return keys starting with `v/`. ### Validation of Media Source Plugin Return Properties `systemName` and `externalId` :fire: The media source plugin function `searchMediaImage` now requires `systemName` and `externalId` to be strings when returned. Previously, these properties were not validated and had no effect. ## Deprecations ### Removing Angular We’ve decided to remove more angular-specific examples in our documentation. We’ve also acquired a TuxCare Long Term Support License to ensure that Livingdocs is not affected by the known Vue.js & Angular vulnerabilities. To update to the `release-2026-03`, an npm access token requires permissions against those private modules: `@livingdocs/angular`, `@livingdocs/editor`, `@livingdocs/framework`, `@livingdocs/pintura`, `@livingdocs/server`, `@livingdocs/vue`, `@livingdocs/vue-demi`, `@livingdocs/vue-pintura`, `@livingdocs/vue-template-compiler` ### Deprecate Custom doc-html Embeds The `registerCustomEmbeds` function is deprecated and will be removed in `release-2026-09`. ### Deprecate iframe Plugins The `liEditor.registerIframePlugin` function is deprecated and will be removed in `release-2026-09`. ### Deprecate Old Push-Notification Feature The metadata plugin `li-push-notifications` is deprecated and will be removed in `release-2026-09`. Please use the `li-push-messages` metadata plugin instead. ### Deprecate Metadata Hooks The metadata plugin hooks `onUpdate`, `onPreparePublish`, `onUnpublish`, `onRender` are deprecated and will be removed in `release-2026-09`. The plugin hooks often caused issues or confusion with order of execution and resulted in complex logic in customer setups. With the standardization strategy we’re following, there haven’t been any needs anymore for those as there are alternatives. Please use the `registerPublicationHooks`. ### Deprecate `mediaLibrary.disableImageEditingInDocuments` The `mediaLibrary.disableImageEditingInDocuments` server configuration option is deprecated and will be removed in `release-2026-09`. It is introduced alongside [image editing in documents](#image-editing-in-documents-gift) as a temporary opt-out. ## Features :gift: ### Usage Log :gift: Customers need to keep track of where and when an image was published for legal reasons and royalty billing. This could be a web article, a print product, a social media post, or a digital edition. Some usages can be directly inferred from their presence in a published Livingdocs document. For publications outside of Livingdocs, usage needs to be tracked separately. To learn how to setup the Usage Log feature please see the [Usage Log](/guides/media-library/media-library-setup/llms.txt#usage-log) section of the Media Library guide. ### Image Editing in Documents :gift: Images can now be edited directly within a document. An "Adjust" button on each image placement lets users rotate images and apply colour adjustments (brightness, contrast, saturation) per placement, without affecting the original image or other documents that reference it. ![Adjust image](/operations/releases/release-2026-03-image-editing-adjust.png "The Adjust button lets users apply colour adjustments per placement.") As a result, colour adjustments are no longer available in the media library. The only image modification that remains in the media library is pixelation. Pixelation continues to be applied globally to all image placements. ![Pixelate image](/operations/releases/release-2026-03-image-editing-pixelate.png "Pixelation remains in the media library and applies globally to all placements of the image.") The new behavior is enabled automatically for all setups that have `use2025Behavior: true`. Once enabled, reverting to the previous behavior is not supported. A [one-time migration script](#after-the-deployment) is available to migrate existing image modifications from media library entries to their respective document occurrences. If newsrooms need time to adapt, image editing in documents can be temporarily disabled using `mediaLibrary.disableImageEditingInDocuments`. Note that this option is deprecated and will be removed in [`release-2026-09`](/operations/releases/release-2026-09/). This option must be set before users start editing images in documents. Disabling it afterwards will not remove existing variants, which will continue to be applied in their respective placements. This change is non-breaking for deliveries. Images can continue to be fetched by key as before. However, since an image can now have multiple variants, ensure you use `mediaLibraryApi.getAllKeysForMediaLibraryEntry()` when purging CDN caches after a media library entry is revoked or invalidated, as it returns all associated keys including any variant keys. See [Image Editing in Documents](/guides/media-library/2025-behavior/llms.txt#image-editing-in-documents) for details. ### Image Rotation :gift: Journalists can now rotate images directly within a document. This is particularly useful for correcting a skewed horizon. Rotation is applied per placement, so the original image and any other documents that reference it remain unchanged. Since rotating an image changes its dimensions, any existing crops on that placement are reset automatically. ![Rotate image](/operations/releases/release-2026-03-image-editing-rotate.png "Images can be rotated per placement directly within a document.") ### Media Library Thumbnail Sizes :gift: When working with image agency feeds, users often need to visually scan through large volumes of images, for example to pick relevant photos from a live coverage event or to identify the start and end of a photo series. The thumbnail size on Media Library Dashboard screens can now be adjusted between small (S), medium (M) and large (L). The dashboard also uses the full available screen width and scrolling through results works like infinite scrolling without interruptions. ![Media Library with adjustable thumbnail sizes](/operations/releases/release-2026-03-thumbnail-sizes.png) For more details, refer to the [Media Library Thumbnail Sizes guide](/guides/media-library/media-library-setup/llms.txt#thumbnail-sizes). ### Preserve Timestamps on Document Command API and Media Library Patch :gift: A new optional `preserveUpdatedAt` boolean parameter has been added to the [Document Command API](/reference/public-api/document-command-api/llms.txt) and the [Media Library](/reference/public-api/media-library/llms.txt) patch endpoint. When set to `true`, the `updated_at` timestamp of the document or media library entry is not modified by the operation. By default (`false`), `updated_at` is set to the current time as before. For the Document Command API, when combined with a `publish` command, the `lastPublicationDate` will also be set to the preserved `updated_at` timestamp instead of the current time. This is useful for imports and migrations where the original timestamps should be preserved to maintain correct dashboard sort order. Using the Document Command API: ```js publicApi.executeDocumentCommands({ userId, projectId, documentId, preserveUpdatedAt: true, commands: [{operation: 'setMetadataProperty', propertyName: 'title', value: 'updated title'}] }) ``` or using the Public API endpoint: ``` PATCH /api/:apiVersion/documents/{documentId}/commands {preserveUpdatedAt: true, commands: [...]} ``` Using the Media Library Patch API: ```js publicApi.patchMediaLibraryEntry({ userId, projectId, assetId, preserveUpdatedAt: true, patches: [{operation: 'setMetadataProperty', propertyName: 'title', value: 'updated title'}] }) ``` or using the Public API endpoint: ``` PATCH /api/:apiVersion/mediaLibrary/{id} {preserveUpdatedAt: true, patches: [...]} ``` ### Reuse Already Imported Media Source Items :gift: When a media source item has already been imported, Livingdocs now reuses the existing media library entry instead of importing it again. This allows keeping media libraries free of duplicates when using media from external systems. To enable the deduplication, [media source](/guides/media-library/media-sources/llms.txt) search results can include `systemName` and `externalId`. If a media library entry with the same `systemName`/`externalId` pair already exists, it is reused. ```diff module.exports = { handle: 'examplePlugin', async searchMediaImage() { return { total: 123, results: [ { metadata: {}, asset: {}, + systemName: 'exampleSource', + externalId: 'exampleExternalId' } ] } }, async fetchMediaImage() {} } ``` ### Official Valkey Support :gift: [Valkey](https://valkey.io/) is now officially supported as a drop-in alternative to Redis. Valkey 7 and 9 are included in our test pipeline. The minimum supported version is Valkey 7, and the recommended version is Valkey 9. To use Valkey, point the existing Redis configuration in the server config to your Valkey instance. No other changes are required. ## 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: - [CVE-2026-3419 / GHSA-573f-x89g-hqp9](https://github.com/advisories/GHSA-573f-x89g-hqp9) patched in fastify v5.8.1 - [CVE-2026-25639 / GHSA-43fc-jf86-j433](https://github.com/advisories/GHSA-43fc-jf86-j433) patched in axios v1.13.5 - [CVE-2025-13465 / GHSA-xxjr-mmjv-4gpg](https://github.com/advisories/GHSA-xxjr-mmjv-4gpg) patched in lodash v4.17.23 No known vulnerabilities. :tada: ### Livingdocs Editor This release we have patched the following vulnerabilities in the Livingdocs Editor: - [CVE-2026-3419 / GHSA-573f-x89g-hqp9](https://github.com/advisories/GHSA-573f-x89g-hqp9) patched in fastify v5.8.1 - [CVE-2025-68157 / GHSA-38r7-794h-5758](https://github.com/advisories/GHSA-38r7-794h-5758) patched in webpack 5.104.1 - [CVE-2026-25639 / GHSA-43fc-jf86-j433](https://github.com/advisories/GHSA-43fc-jf86-j433) patched in axios v1.13.5 - [CVE-2025-13465 / GHSA-xxjr-mmjv-4gpg](https://github.com/advisories/GHSA-xxjr-mmjv-4gpg) patched in lodash v4.17.23 - [GHSA-73rr-hh4g-fpgx](https://github.com/kpdecker/jsdiff/security/advisories/GHSA-73rr-hh4g-fpgx) patched in diff v8.0.0 We are aware of the following vulnerabilities in the Livingdocs Editor: - [CVE-2023-44270](https://github.com/advisories/GHSA-7fh5-64p2-3v2j) 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](https://github.com/advisories/GHSA-m2h2-264f-f486), [CVE-2022-25869](https://github.com/advisories/GHSA-prc3-vjfx-vhm9), [CVE-2023-26116](https://github.com/advisories/GHSA-2vrf-hf26-jrp5), [CVE-2023-26117](https://github.com/advisories/GHSA-2qqx-w9hr-q5gx), [CVE-2023-26118](https://github.com/advisories/GHSA-qwqh-hm9m-p5hr), [CVE-2024-8372](https://github.com/advisories/GHSA-m9gf-397r-hwpg), [CVE-2024-8373](https://github.com/advisories/GHSA-mqm9-c95h-x2p6), [CVE-2024-21490](https://github.com/advisories/GHSA-4w4v-5hc9-xrr2), [CVE-2025-0716](https://github.com/advisories/GHSA-j58c-ww9w-pwp5) 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](https://github.com/advisories/GHSA-5j4c-8p2g-v4jx) 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 - [v296.2.43](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.43): fix(blob-store): prevent S3 socket exhaustion on partial image reads - [v296.2.42](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.42): fix(deps): update dependency nodemailer from 8.0.5 to 9.0.1 [security] - [v296.2.41](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.41): chore(example-server): Add image read permissions to Readers group - [v296.2.40](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.40): fix(deps): update livingdocs-patch from 32.12.10 to v32.12.11 - [v296.2.39](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.39): fix(deps): update dependency exifreader from 4.36.2 to 4.39.0 [security] - [v296.2.38](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.38): fix: nest replaceTranslations flag in options property - [v296.2.37](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.37): fix(public-api): Expose getAllKeysForMediaLibraryEntry - [v296.2.36](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.36): fix: remove #lib alias - [v296.2.35](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.35): fix(deps): update dependency ws from 8.19.0 to 8.20.1 [security] - [v296.2.34](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.34): fix(migrations): Only generate statistics and references with content - [v296.2.33](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.33): test: Adjust transform tests to account for serialized component IDs - [v296.2.32](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.32): fix(deps): update dependency @opentelemetry/sdk-node from 0.212.0 to 0.217.0 [security] - [v296.2.31](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.31): chore: Use enumerable headers object in the axios test helper - [v296.2.30](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.30): fix(deps): update dependency @livingdocs/framework from 32.12.9 to v32.12.10 - [v296.2.29](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.29): fix(deps): automatically patch Node.js vulnerabilities - [v296.2.28](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.28): fix(media-library): Destroy asset stream on error to prevent leak - [v296.2.27](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.27): chore(notifications): Warn instead of error when Slack user not found - [v296.2.26](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.26): fix: Fix ajv string format for comma separated ids - [v296.2.25](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.25): fix(deps): update dependency fastify from 5.8.3 to 5.8.5 [security] - [v296.2.24](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.24): fix: Support quality, lossless and nearLossless options for webp images - [v296.2.23](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.23): fix(deps): automatically patch Node.js vulnerabilities - [v296.2.22](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.22): fix(deps): update dependency @livingdocs/framework from 32.12.8 to v32.12.9 - [v296.2.21](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.21): fix(deps): update dependency axios from 1.13.5 to 1.15.0 [security] - [v296.2.20](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.20): fix(image-processing): Do not swallow genuine errors - [v296.2.19](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.19): fix(channel-configs): Pass ttl to TTLCache in object - [v296.2.18](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.18): fix(project-config): Remove editMode: 'default' fallback value - [v296.2.17](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.17): chore(media-library): Simplify usage log params validation - [v296.2.16](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.16): fix(deps): update dependency nodemailer from 8.0.1 to 8.0.4 [security] - [v296.2.15](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.15): fix(deps): update dependency fastify from 5.8.1 to 5.8.3 [security] - [v296.2.14](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.14): fix(image-processing): Handle SVG files above 10MB - [v296.2.13](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.13): fix(deps): update dependency @livingdocs/framework from 32.12.7 to v32.12.8 - [v296.2.12](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.12): fix: do not expose maxDimension if use2025Behavior is enabled - [v296.2.11](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.11): fix: refactor migrations api - [v296.2.10](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.10): fix(deps): update dependency undici from 7.22.0 to 7.24.0 [security] - [v296.2.9](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.9): fix(deps): update dependency file-type from 21.3.0 to 21.3.2 [security] - [v296.2.8](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.8): fix(media-library): Don't replace time in usage log reporting date - [v296.2.7](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.7): fix(image-collections): remove custom desktop/mobile create label for simplicity - [v296.2.6](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.6): fix(deps): update dependency fastify from 5.7.4 to 5.8.1 [security] - [v296.2.5](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.5): refactor: rename preserveDate to preserveUpdatedAt - [v296.2.4](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.4): refactor(image-rotation): retry logic and sanity checks - [v296.2.3](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.3): fix: review feedback - [v296.2.2](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.2): fix(images): Allow gif uploads with 1800 frames - [v296.2.1](https://github.com/livingdocsIO/livingdocs-server/releases/tag/v296.2.1): fix(deps): update dependency @livingdocs/framework from 32.12.6 to v32.12.7 ### Livingdocs Editor Patches - [v123.10.55](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.55): fix(deps): update dependency js-yaml from 4.1.1 to 4.2.0 [security] - [v123.10.54](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.54): chore(embeds): Access embed data consistently - [v123.10.53](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.53): fix(deps): update livingdocs-patch from 32.12.10 to v32.12.11 - [v123.10.52](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.52): fix: show translated documents even if languages became unavailable - [v123.10.51](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.51): fix(deps): update dependency axios from 1.15.2 to 1.16.0 [security] - [v123.10.50](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.50): fix(project-config): show kordiam form and nav - [v123.10.49](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.49): fix(drafts): Reload editor when document contentType changes via remote update - [v123.10.48](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.48): fix(deps): update dependency sanitize-html from 2.17.1 to 2.17.4 [security] - [v123.10.47](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.47): fix(image-collections): use container's filtered items for move position - [v123.10.46](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.46): fix(deps): update dependency @livingdocs/framework from 32.12.9 to v32.12.10 - [v123.10.45](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.45): fix(includes): expose params getter to maintain public API for tests - [v123.10.44](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.44): fix(media-library): Support media source selection in collection dialog - [v123.10.43](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.43): fix(publish-control): Use correct publishControlMode for labels - [v123.10.42](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.42): fix(media-library): actionbar positioning when closing sidepanel - [v123.10.41](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.41): fix(deps): automatically patch Node.js vulnerabilities - [v123.10.40](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.40): fix(named-crops): triggering auto save on sidepanel open - [v123.10.39](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.39): fix(deps): update dependency @fastify/static from 9.0.0 to 9.1.1 [security] - [v123.10.38](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.38): chore(properties): Remove handling for AngularJS panel - [v123.10.37](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.37): fix(deps): update dependency @livingdocs/framework from 32.12.8 to v32.12.9 - [v123.10.36](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.36): fix(deps): automatically patch Node.js vulnerabilities - [v123.10.35](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.35): fix(deps): update dependency axios from 1.13.5 to 1.15.0 [security] - [v123.10.34](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.34): fix(ld panel title): Collapse indicator position - [v123.10.33](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.33): fix(media-library): restore media source pagination - [v123.10.32](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.32): fix(navigation): Chevron spacing on mobile - [v123.10.31](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.31): fix(project-config): Remove editMode: 'default' fallback value - [v123.10.30](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.30): fix(media-library): Support display filters on multi-source side panel - [v123.10.29](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.29): chore(properties): Remove unused translation string from video panel - [v123.10.28](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.28): fix(deps): update dependency fastify to v5.8.3 [security] - [v123.10.27](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.27): fix(media-library): Disable toggle select when multi-select is disabled - [v123.10.26](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.26): fix(editor): Remove unused scrollPosition property - [v123.10.25](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.25): chore(comments): Do not return initialRange from createThreadDraft - [v123.10.24](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.24): fix(tests): Clear localStorage to prevent cross-test contamination - [v123.10.23](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.23): fix(deps): update dependency @livingdocs/framework from 32.12.7 to v32.12.8 - [v123.10.22](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.22): fix(deps): Add vue-template-compiler to dependencies to ensure it's always present - [v123.10.21](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.21): fix(assistants): Fix image proposals in assistants - [v123.10.20](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.20): fix: request confirmation before archiving a group - [v123.10.19](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.19): fix: add scroll offset - [v123.10.18](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.18): fix(image-collections): remove specific mobile/desktop label after refactoring - [v123.10.17](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.17): fix(app navigation): Line wrapping - [v123.10.16](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.16): fix(deps): update dependency fastify from 5.7.4 to 5.8.1 [security] - [v123.10.15](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.15): fix(image-collections): prevent check of undefined - [v123.10.14](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.14): fix: add an early return guard if onDrag is not a function - [v123.10.13](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.13): fix: support toggling media libary panel with collections - [v123.10.12](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.12): fix(images): Allow gif uploads with 1800 frames - [v123.10.11](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.11): fix(tasks): Sort completed tasks by completed date - [v123.10.10](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.10): fix(task-boards): take total results from request - [v123.10.9](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.9): fix(image-collections): make deleted collections readonly and allow to restore them - [v123.10.8](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.8): fix(search): Limit query length and display understandable error - [v123.10.7](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.7): fix(metadata): Fix undefined property error in user needs form - [v123.10.6](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.6): fix: Fix errors for edge cases of certain configurations/behaviors - [v123.10.5](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.5): refactor(multiselect-navigation): improve naming of function useMultiSelectSelection - [v123.10.4](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.4): fix(metadata): Reset additional language after translation deletion - [v123.10.3](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.3): fix(media-library): Fix redirect after translation deletion - [v123.10.2](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.2): fix(image-editor): prevent save button from overflowing - [v123.10.1](https://github.com/livingdocsIO/livingdocs-editor/releases/tag/v123.10.1): fix(release-2026-03): recreate package-lock.json --- **Icon Legend** - Breaking changes: :fire: - Feature: :gift: