Attention: If you skipped one or more releases, please also check the release-notes of the skipped ones.
Newsletter
- Subscribe here: https://confirmsubscription.com/h/j/61B064416E79453D
Webinar
Features
- Recording | PW: 9RmW6ZH#
- Documentation
Developers
System Requirements
Suggested
Name | Version |
---|---|
Node | 16 |
NPM | 7 |
Postgres | 13 |
Elasticsearch | 7 |
Redis | 6 |
Livingdocs Server Docker Image | livingdocs/server-base:16 |
Livingdocs Editor Docker Image | livingdocs/editor-base:16 |
Minimal
Name | Version |
---|---|
Node | 14 🔥 |
NPM | 7 |
Postgres | 9.6 (Deprecated Postgres 9 and 10) |
Elasticsearch | 6.x |
Redis | 5 |
Livingdocs Server Docker Image | livingdocs/server-base:14.3 |
Livingdocs Editor Docker Image | livingdocs/editor-base:14.3 |
Highlights
Document Import between Projects (Drag + Drop)
Allows to export/import a document via drag + drop (only between 2 projects of the same design on the same server). A user can drag a document A in project A onto the dashboard of project B, then the dropped document will be imported.
- References
Comment mentions 🎉
Allows to mention another user in the comments. When writing ‘@’ in a comment a user search will appear to select a user to be mentioned. The mentioned user then gets a notification. Check the Editor PR if you want to get some visual impressions.
Important: If you want to use comments mentioning, you have to enable Notifications
- References
Composition API (in beta)
There is a new public api endpoint:
POST /api/beta/composition/:documentId
This endpoint is meant to serve as a replacement of GET api/v1/documents/:documentId/latestPublication
for deliveries when rendering documents. The goal of the composition endpoint is to gather all required information to render a document in one endpoint and to work for different rendering strategies (e.g. render from JSON or use the prerendered Html). The composition Api currently supports rendering Html without any configuration, can preload references in metadata and can return resolved includes as JSON.
It also offers optimised performance for all those tasks and will replace the RenderPipeline feature.
We plan to add additional functionalities like automatic design updates of documents and more to the composition Api in upcoming releases and are open for inputs what we could add to the composition Api.
Media Library - Multi Language 🎉
With the introduction of the multi language metadata feature, one can now translate metadata into different languages.
- References
Media Library - File - Add Support for Files 🎉
Additionally to the existing images and videos, we now also support files in the Media Library. Files can be added to documents in order to allow downloads, e.g. providing a downloadable press release next to an article.
- References
Media Library - Video - Add Transcoding Metadata Plugin 🎉
With the video transcoding metadata plugin
- You can notify an external system to start transcoding a video
- The external system can call the public API and respond with transcoding state
- The editor shows the current state
- References
Sitemaps + Feeds 🎉
- Consume Sitemaps via public API
- We support you to implement your own RSS Feed (RSS 2.0) via server APIs (because feeds are highly customizable)
New License Model and Billing 🎉
We provide a new “Billing” screen in the server admin backend that shows per month which kinds of users are on the system and the changes from month to month. In that way customers can keep track of their inferred license costs. Also, all screens to invite users to your projects now require you to specify the kind of user: Editorial User (full license), Freelancer or Technical User (free). The employment type can be corrected if need be on the server admin detail screen.
- References
Breaking Changes 🔥
This time we have a rather high amount of breaking changes, therefore we grouped the breaking changes into different sections:
Pre Deployment 🔥
Migrate firstPublicationDate to documents table (pre deployment) 🔥
In order for a delivery to know when a document was first published, we want to provide the firstPublicationDate when a Publication is fetched from the Public API. To be able to fullfill that goal we need a db migration.
For productive systems please run a manual migration using node ./node_modules/@livingdocs/server/db/manual-migrations/007-populate-first-publication-date.js
to process the documents in batches. The manual migration must be done before livingdocs-server migrate up
, which contains the same migration, but locks the database by ~10s for 100k documents.
References: Server PR
Move metadata id’s (pre deployment) 🔥
Tidy-up after populating document_revisions.metadata_id
as part of the firstPublicationDate
feature in Server PR
For productive systems please run a manual migration using node ./node_modules/@livingdocs/server/db/manual-migrations/008-move-metadata_id.js
to process the documents in batches. The manual migration must be done before livingdocs-server migrate up
, which contains the same migration, but locks the database. We propose to have enough disk space left for this migration (2 x used disk space by the database). After the migration, the disk space should be smaller, but during the migration, it will grow.
References: Server PR
Main 🔥
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 - 156-add-content-type-id-on-document-publication-events.js
# migration - 157-add-documents-data-column.js
# migration - 158-remove-metadata_id-columns.js
# migration - 159-add-content_type_id_indexes.js
# migration - 160-add-li_jsonb_patch-function.js
# migration - 161-add-user-occupations.js
# migration - 162-update-li_jsonb_patch-function.js
livingdocs-server migrate up
Drop Node 12 support 🔥
- 🔥 Upgrade to npm v7
- 🔥 Drop node
v12
. Only nodev14
andv16
are supported from now on. - π‘οΈ Run the process as non-root user in production
Migration Howto (node 16)
- Change the content of the
.nvmrc
in your project root to16
- Change the
engines.node
declaration in thepackage.json
to>=16
- Change the Docker image versions in your
Dockerfile
tolivingdocs/server-base:16.0
/livingdocs/editor-base:16.0
References: Editor PR
Add Strict Schema Validation for JSON Schema 🔥
- We’ve migrated our json validator from
tv4
toajv
and applied a 🔥 strict schema validation. - Invalid json schemas now cause a shutdown of the server.
- If the server stops during startup, you’ll need to fix the schemas.
The type
declaration on a schema is now mandatory. Previously it was implicitly declared.
body: {
type: 'object', // < this attribute was optional with
// the old validator. It's mandatory now.
properties: {
something: {type: 'string'}
}
}
References: Server PR
Remove set() hook for metadata plugins 🔥
🔥 Remove set()
hook for metadata plugins. Use onUpdate()
instead.
References: Server PR
Remove Gravatar for User Avatars as Default Solution 🔥
User Avatars are now generated using initials of the user name (first letter of firstname, first letter of lastname).
Gravatar: If you want to keep using Gravatar for user avatars, you have to opt-in by setting app.useGravatar: true
in the editor config.
References: Editor PR
LegacyDocumentModel Getters 🔥
This change should not affect customers, but based on how deep you dived into Livingdocs document models, it could affect you.
Some writing operations of the documentsApi
return a LegacyDocumentModel
.
LegacyDocumentModel.revision
, LegacyDocumentModel.document
, LegacyDocumentModel.metadata
and LegacyDocumentModel.last_publication
are now getters and will 🔥 throw when you try to assign a value. If you really need to assign a value, please use the new LegacyDocumentModel.revisionEntity
or similar property.
References: Server PR
Old File Upload 🔥
If you used the file upload through drag&drop into documents before, you now have to configure a mediaType
like this to restore that behavior:
module.exports = {
type: 'mediaFile',
handle: 'file',
info: {
label: 'File'
},
metadata: [
{
handle: 'title',
type: 'li-text',
ui: {component: 'liMetaTextForm'},
}
]
}
References:
Remove Registration Endpoints 🔥
- 🔥 removed editing API endpoint
register
- 🔥 removed editing API endpoint
register/website
References:
Configs 🔥
Remove editor configs 🔥
- π₯ Removed editor config
supportedBrowsers
. No replacement is provided for now. If you really need one, talk to us. - π₯ Removed editor config
sidePanelBehaviour
. The main navigation opens/closes on click (by ignoring double-clicks). The possibility to activate open/close on mouseenter (hover) is removed. - π₯ Removed dependency
bowser
(https://www.npmjs.com/package/bowser). If you use it in downstream, we suggest to replace by feature/touch input detection or adding the dependency to your downstream project
References: Editor PR
Remove Deprecated Upload Configs 🔥
We removed a few server configs which are deprecated for a long time.
- 🔥 removed
files.aws
. Usefiles.storage
instead - 🔥 removed
files.public
. Usefiles.publicUrl
instead - 🔥 removed
designs.bucket
anddesigns.bucketPath
. Usedesigns.assets.storage
instead - 🔥 removed
designs.public
. Usedesigns.assets.publicUrl
instead - 🔥 removed
images.public
. Useimages.publicUrl
instead - 🔥 removed
images.bucket
andimages.bucketPath
. Useimages.storage
instead - 🔥 removed
images.upload
. Useimages.uploadRestrictions
instead - 🔥 do not support deprecated format in
images.processing.convert
anymore. Use the new format instead (see example)// old format images.processing.convert: {pdf: 'png'} // new format convert: [{sourceFormat: 'pdf', targetFormat: 'png'}]
References: Server PR
Media Library Server Config 🔥
- 🔥 remove serverConfig
assetManagement
(googleVision and enabled has no effect since release-2020-07) - 🔥 remove serverConfig
mediaLibrary.enabled
(had no effect since release-2020-07) - 🔥 remove serverConfig
mediaLibrary.types
(had no effect since release-2020-07) use mediaTypes instead - 🔥 remove serverConfig
mediaLibrary.autoTagging
(googleVision has no effect since release-2020-07) use project integrations instead - 🔥 remove serverConfig
mediaLibrary.paginationSize
(had no effect since release-2020-07)
References:
Moved Elasticsearch Properties 🔥
The server configuration search.indexer
got moved into elasticIndex
. The old search.indexer
config got removed.
- 🔥 Move
search.indexer.concurrency
toelasticIndex.concurrency
- 🔥 Move
search.indexer.batchSize
toelasticIndex.batchSize
- 🔥 Move
search.indexer.maxCpu
toelasticIndex.maxCpu
References:
Handles and mediaLibraryEntry.asset.url 🔥
Handles 🔥
Content Type and Media Type handles must conform to the pattern ^[a-z][a-zA-Z0-9-]{2,49}$
.
Metadata properties must conform to the pattern ^[a-zA-Z][a-zA-Z0-9-_]{2,49}$
.
Please alert us if the pattern is too restrictive. We already applied those patterns in the editor when Content Types got configured on the Project Settings screen. It was just the validation on the server that was missing. In all the cases known to us, this won’t affect the existing setups.
mediaLibraryEntry.asset.url
Before the changes in here either the mediaLibraryEntry.asset.key
or mediaLibraryEntry.asset.url
were mandatory on an media library asset object. From now on the url
is not considered as fallback for the key and therefore the key
property is 🔥 mandatory
.
This change shouldn’t affect you and you should see warnings in case you’ve invoked the internal apis without key, you should see a validation error.
Please let us know if you run into any issues with that.
References:
Drop Callback Support 🔥
Drop Callbacks for Authentication API 🔥
🔥 Remove callback support for authenticationApi
(server.features.api('li-authentication')
) functions. Only promise based calls are supported.
References:
Drop Callbacks for localAuthenticationApi 🔥
🔥 Remove callback support for localAuthenticationApi (server.features.api(’li-authentication-local’)) functions. Only promise based calls are supported
References:
Deprecations
We did a cleanup for asset related server configs and moved them into the mediaLibrary feature. The old configs are still supported, but we suggest to move them now.
π§ Deprecate server config files
. Move config to server config mediaLibrary.files
π§ Deprecate server config videos
. Move config to server config mediaLibrary.videos
π§ Deprecate server config images
. Move config to server config mediaLibrary.images
References:
APIs 🎁
Server API’s
Includes API
The includes API got a lot of improvements regarding batch loading and performance, please check out the pull request to get more info. The most important features are:
- Bulk include resolver
- Preloading include param refrences
- Duplicate Filtering
- Added
li-list
metadata plugin
Extended APIs:
- π
includesApi.resolveIncludes({options, includes})
: resolve multiple includes at once. This will automatically batch requests with the new batchLoader. This will drastically reduce the number of database requests as well as response times. - π¬
includesApi.resolveIncludes({..., batchLoader})
: you can now pass in a batchLoader instance. - π
includesApi.buildOptions({documentVersion})
: new helper method to build the options params which need to be passed to resolveInclude() and resolveIncludes()
References:
Sitemaps API
Added a new Sitemaps API to simplify setting up and maintaining sitemaps and RSS feeds.
- π
sitemapsApi.getSitemapIndex({contentTypes, baseUrl, projectId})
- π
sitemapsApi.getSitemapUrlSet({date, contentTypes, projectId, baseUrl})
- π
sitemapsApi.renderFeedXml({...})
The renderFeedXml is based on RSS 2.0 Specification
References:
Import API
- π
server.features.api('li-import').importDocumentAndMedia()
- added new function to import documents and media assets from another project
Document API
- π¬
documentApi.createV2()
Now accepts params content and design (Previously one had to pass revision: {data: {content, design}}.
Document List API
- π
documentListApi.get(id, null, {reverseMatched: false})
- Add reverse option
References:
DocumentVersion
Some customers still use internal properties of the DocumentVersion
model which always can change. Please don’t use them.
- 🔥 don’t use
documentVersion.documentEntity
- 🔥 don’t use
documentVersion.revisionEntity
- 🔥 don’t use
documentVersion.publicationEntity
- 🔥 don’t use
documentVersion.metadataEntity
Always use the official API of the documentVersion.
We also have deprecated some functions in the DocumentVersion
. Please go through the list below and replace internal and deprecated calls.
Deprecations
documentVersion.getContentType()
->documentVersion.contentType
documentVersion.getDocumentType()
->documentVersion.documentType
documentVersion.getProjectId()
->documentVersion.projectId
documentVersion.getChannelId()
->documentVersion.channelId
documentVersion.getDocumentId()
->documentVersion.id
documentVersion.getDesignDescriptor()
->documentVersion.design
documentVersion.getDesignVersion()
->documentVersion.design.version
documentVersion.getTitle()
->documentVersion.title
documentVersion.getMetadata()
->documentVersion.metadata
documentVersion.getMetadataSource()
->documentVersion.metadataSource
documentVersion.getSystemdata()
->documentVersion.systemdata
Public API’s
Add Filters for latestPublications
Introduce more filters on api/v1/documents/latestPublications
.
/api/v1/documents/latestPublications
- π Introduce
?reverse=true
to order publications in ascending order - π Introduce
?contentTypes=regular,interview
content type filters - π Introduce
?documentTypes=article,page
document type filters - π Introduce
?id.gte=1&id.lte=100
range filters Supported filters:id.gte
,id.gt
,id.lte
,id.lt
,publishedAt.gte
,publishedAt.gt
,publishedAt.lte
,publishedAt.lt
/api/v1/publicationEvents
- π Introduce
?reverse
in addition to/api/v1/publicationEvents?reverse=true
- π Introduce
?contentTypes=regular,interview
content type filters - π Introduce
?documentTypes=article,page
document type filters - π Introduce
?id.gte=1&id.lte=100
range filters Supported filters:id.gte
,id.gt
,id.lte
,id.lt
,createdAt.gte
,createdAt.gt
,createdAt.lte
,createdAt.lt
References:
Media Library - Add Version property
References:
Document Import - Set Creation Date of Publication
Allows to import documents with a publicationDate flag which will set the creation date of a publication.
References:
Sitemaps
Allows to get sitemap infos. Two new HTTP endpoints accessible with a public API token with the ‘read’-scope
- π Introduce
GET ${serverUrl}/api/v1/sitemaps/index?contentTypes=articles&baseUrl=https://livingdocs.io
(public API token with ‘read’-scope needed) - π Introduce
GET ${serverUrl}/api/v1/sitemaps/entries?date=2020-01&contentTypes=article&baseUrl=https://livingdocs.io/&entriesPerPage=20000
(public API token with ‘read’-scope needed)
References:
Server CLI
livingdocs-server project-truncate
livingdocs-server project-truncate -p <your-project> -y
truncates documents in Elasticsearch too (instead of only truncating Postgres documents).
References:
Other Changes
Opt-In for Vue based metadata form rendering (support us!)
When you opt-in by setting the editor config to metadata.useVueBasedFormRendering: true
, all Metadata Forms are rendered using a Vue based rendering. For any properties/forms without a Vue component, the Angular component is rendered. This is also how custom metadata plugins using angular forms is supported.
🎁 You can support us with the transition to Vue when opt-in to the vue based form rendering.
References:
Features
- Add
minLength
,recommendedMinLength
andrecommendedMaxLength
todoc-editable
directive livingdocs-editor #4255 🎁 - Woodwing: Add media source example into the example server livingdocs-server #3565 🎁
- Auth: Sync OpenId Connect user groups on login livingdocs-server #3563 🎁
- Storage: Add support for storage prefix livingdocs-server #3587 🎁
- Includes: add bulk resolve endpoint to editingApi livingdocs-server #3688 🎁
- Toolbar: Add localised quotation marks to toolbar livingdocs-editor #4391 🎁
Improvements
- Do not use offensive project handles livingdocs-server #3589 🎁
- Show tasks in toolbar as soon as the content-type has a task config livingdocs-editor #4359 🎁
- MediaLibrary
- Download files in editor via server livingdocs-server #3627 🎁
- Improve config error handling livingdocs-server #3647 🎁
- Use video poster image in dashboard card livingdocs-editor #4363 🎁
- Public API: fix order and validation in
/api/v1/documents/latestPublications
livingdocs-server #3649 🎁 - Editor
- Emitting event before a connection is initialised no longer throws errors. livingdocs-editor #4366 🎁
- Consider image drop cases with insertsBlocked livingdocs-editor #4377 🎁
- Configure Icons for each ContentType livingdocs-editor #4339 🎁
- Imatrics performance improvements livingdocs-editor #4347 🎁
- Includes: bulk resolve includes livingdocs-editor #4400 🎁
Bugfixes
Security
- Prevent identity creation without a user livingdocs-server #3560 🪲
- Do not send out too many ’new device login’ emails livingdocs-server #3571 🪲
- Users will be able to log in even if new device emails cant be sent livingdocs-server #3597 🪲
- Correctly redirect upon signup livingdocs-editor #4232 🪲
- Log users in even if they dont have a default design livingdocs-editor #4275 🪲
Editor
- Link tool
- Make removing an existing link possible again livingdocs-editor #4321 🪲
- Improve delivery path pattern matching and handling of matching paths with nonexisting IDs livingdocs-editor #4325 🪲
- Multiselect: Only allow to transform available components of a content-type livingdocs-editor #4331 🪲
- Clipboard
- Fix drag and drop of a container livingdocs-editor #4243 🪲
- Render includes when dropping a component from the clipboard livingdocs-editor #4330 🪲
- Do not insert default content when dropping a component livingdocs-editor #4358 🪲
- Search Filter: Fix multiSourceSearch to use filters livingdocs-editor #4257 🪲
- Editor Admin
- Fix ordering of semantic versions in design screen livingdocs-editor #4260 🪲
- Fix group screen errors livingdocs-editor #4226 🪲
- Webhooks: fix the form layout for the event checkboxes livingdocs-editor #4320 🪲
- Includes: Fix checkboxes for twitch and instagram include livingdocs-editor #4262 🪲
- Show correct message when server is offline and proxiedHost is enabled livingdocs-editor #4264 🪲
- Metadata
- li-text: correctly render when
config.useAsTitle
livingdocs-editor #4270 🪲 - li-image: Crop url fix livingdocs-editor #4348 🪲
- li-image / li-poster-image: Crop handling livingdocs-editor #4352 🪲
- li-date-time-validity: Ensure date input format for all metadata fields is ISO 8601 compatible livingdocs-editor #4356 🪲
- li-text: correctly render when
- Images:
- Fix the step behavior of the zoom buttons on the image cropper livingdocs-editor #4367 🪲
- Fix issue where an image could not be dropped onto a directive of a fixed component if no insert before or after this component is allowed. livingdocs-editor #4377 🪲
- Upload Center: Don’t close the upload dialog when the crop tool is opened from the upload dialog livingdocs-editor #4383 🪲
- Comments: Init comments only when they are enabled on collab bar livingdocs-editor #4337 🪲
- Handle multiple open dialogs in dialogService livingdocs-editor #4383 🪲
Server
- Fix Desk-Net plugin livingdocs-server #3547 🪲
- Seeding: Always reset project handle cache on every project seeding livingdocs-server #3556 🪲
- Lists: Fix config schema validation livingdocs-server #3579 🪲
- Indexing
- Do not delete consumers when we can’t transfer the pending messages livingdocs-server #3581 🪲
- Fix typo in xtransferexit and reduce the Redis calls during xcleanup livingdocs-server #3584 🪲
- Queue Fixes livingdocs-server #3607 🪲
- Resume indexing after a process and queue got paused livingdocs-server #3615 🪲
- Media Sources: Fix Unsplash plugin livingdocs-server #3588 🪲
- Print: Fix crash on certificate errors livingdocs-server #3590 🪲
- Copy: Copy Config Fix livingdocs-server #3613 🪲
- Email: Schema Fix livingdocs-server #3692 🎁
Patches
Livingdocs Server Patches
- v135.1.84: chore: check type of assets
- v135.1.83: fix: use the updated release-notes-patch repo
- v135.1.82: fix(document-lists): Allow empty lists to be published
- v135.1.81: chore(build): Upgrade to @livingdocs/secure-password
- v135.1.80: fix(project-config): Lower the minimum metadata handle length to two characters
- v135.1.79: fix(publication-hooks): Pass the correct documentType, add the contentType additionally to the documentType
- v135.1.78: fix(group-projection): do nothing on an insert conflict
- v135.1.77: chore: Update npm read token
- v135.1.76: fix: add module ~lib/extract-header
- v135.1.75: test(push notifications): Add tests for airship
- v135.1.74: test: adapt tests
- v135.1.73: chore(blob-store): Isolate the computeKey tests more
- v135.1.72: fix(indexing): Do not trigger a catchup job with the publication indexing to not trigger an ‘Invalid Index Job’ message
- v135.1.71: fix: respect the date range coming from the API call
- v135.1.70: fix(indexing): Do not trigger a catchup job with the publication indexing to not trigger an ‘Invalid Index Job’ message
- v135.1.69: fix(log): Improve handling of circular references and functions in pino: https://github.com/davidmarkclements/fast-safe-stringify/pull/52
- v135.1.68: fix(server): Replace broken http-terminator with lil-http-terminator that doesn’t have any dependencies
- v135.1.67: fix(elasticsearch): Do not push the
_type
in Elasticsearch 7 bulk payloads - v135.1.66: fix(github-sso): Migrate to another github passport module that’s more up to date
- v135.1.65: fix(media library): correctly validate maxItems on li-string-list and li-numeric-list
- v135.1.64: fix(indexing): Fix context filter/normalization during bulk index
- v135.1.63: fix(authentication): Ensure we never query expired sessions
- v135.1.62: fix: Skip bulk index jobs coming in with a wrong context
- v135.1.61: fix(release): npm only pushed the version to the registry
- v135.1.60: fix(sso): Fix legacy github, facebook and google login
- v135.1.59: fix(indexing):
null
values in a filter declaration should behave exactly likeundefined
values - v135.1.58: fix: create new version because of npm
- v135.1.57: fix: use image proxy for import-api
- v135.1.56: fix(slack_api): use mail always case insensitive
- v135.1.55: fix(image-upload): Use the filetype support detection of the image processing instead of duplicating it during the upload
- v135.1.54: fix(openid-connect): Properly resolve the project handle during the group syncing
- v135.1.53: fix: create new patch version for release management
- v135.1.52: fix(indexing): Improve the indexing to handle deleted projects or content types
- v135.1.51: fix: unsubscribe url in notifications mail template
- v135.1.50: chore(hugo): add tests for drop image
- v135.1.48: fix(design): add new CLI command design-set-active
- v135.1.47: chore(revision): add test for metadata
- v135.1.46: fix(project-delete): Delete media_library_entries, types and events correctly when deleting a project
- v135.1.45: fix(migrations): incorporate PR feedback
- v135.1.44: chore: change the slack messages template
- v135.1.43: fix: read channelId from documentVersion
- v135.1.42: fix(datetime validity): allow undefined to/from values
- v135.1.41: fix(media): add read-only metadata field
- v135.1.40: fix: allow to add only ids instead of range for processBatch
- v135.1.39: fix(media-library): Fix the li_jsonb_patch function in Postgres to properly set keys that include a slash
- v135.1.38: chore(ajv): Add benchmark/ajv-compile.js script
- v135.1.37: chore: Use date-fns instead of moment
- v135.1.36: fix: add comment.resolve action to notifications
- v135.1.35: fix(notifications): Set a default sender address for
notifications.channels[].email.fromAddress
based on the configured template and transport - v135.1.34: fix: assign user to a task
- v135.1.33: fix: document.transform notification
- v135.1.32: fix(emails): Fix schema.org annotations in email templates. The examples at google are wrong on that page. There are correct examples here.
- v135.1.31: fix: trigger a new release version
- v135.1.30: fix(import): Process jobs in series to not run into pool allocation timeouts
- v135.1.29: chore(document-migrations): Lower the concurrency to 2 as we’re running multiple processes most times
- v135.1.28: chore(migrations): Improve the job status logs
- v135.1.27: fix(cli): fix data migration run link
- v135.1.26: fix(redis): Fix support for Redis sentinel with the
livingdocs-server redis-flushdb
command - v135.1.25: fix: add indexing config for datetime-validity plugin
- v135.1.24: fix(iptc extraction): add an additional safety check to not run into errors in getValueForStorage
- v135.1.23: fix(elasticsearch): Fix Elasticsearch bulk retries by matching failed entries in reverse order
- v135.1.22: test(sitemaps): Use the correct timestamp in tests
- v135.1.21: fix(user): Don’t throw when reactivating users without occupations
- v135.1.20: fix(indexing): Retry bulk requests that respond with a 429 error when Elasticsearch is overloaded
- v135.1.19: fix(import): Make config type mappings optional
- v135.1.18: fix(li-users): Do not respond with duplicate users in the userApi.findMany and userApi.findByProjectId methods
- v135.1.17: chore(import): Pass documentVersion from the controller
- v135.1.16: fix(file-upload): Do not handle files as strings when calculating the byte size
- v135.1.15: fix(search): Invoke search requests against Elasticsearch with the correct publication index
- v135.1.14: test(sitemaps): use datefns instead of magic strings
- v135.1.13: fix(files): Fix exposed
files.publicUrl
in/serverConfiguration
endpoint - v135.1.12: fix(import): Delay media indexing and notifications
- v135.1.11: chore: Do not fallback to an empty array for the
documentVersion.content
getter - v135.1.10: fix(imatrics): Fix typos in the imatrics implementation that got introduced during the introduction of the new DocumentVersion getters
- v135.1.9: fix(indexing): Fix channelId comparison in live indexing
- v135.1.8: Group projection: add archived to return object
Livingdocs Editor Patches
v67.6.83: chore: Change NZZ default integration branch
v67.6.82: fix: use the updated release-notes-patch repo
v67.6.81: fix(collab bar): Show tooltip with name to the left of avatar
v67.6.80: fix(search filter bar): Update show/hide when items are added asynchronously
v67.6.79: fix: rename Ignore to Off
v67.6.78: fix(user): Escape user initials that would break the avatar svg
v67.6.77: fix: move file downloader to it’s own helper and improve logic
v67.6.76: fix(media-library): Hide “set” button for non-translatable assets
v67.6.75: fix: change toolbar max offset to fix overlapping action bar issue
v67.6.74: fix: invoke PR feedback
v67.6.73: fix: request the whole month (inclusive current)
v67.6.72: fix(menu): do not allow to move a menu item before first save
v67.6.71: chore(menu): move event extraction to the right place
v67.6.70: fix: update framework (incorporate css loader fix)
v67.6.69: fix(li-image): allow download of crops in fullres when customBuilt.allowDownloadOfLiImageCrops is true
v67.6.68: fix(kanban boards): ensure kanban board columns don’t outgrow the screen
v67.6.67: fix(image cropping): properly handle original with recommendedRatios
v67.6.66: fix(drop-handler): Use queue for huGO and WoodWing uploads
v67.6.65: fix(tags): Dashboard
v67.6.64: fix(metadata): ensure li-numeric-list and li-string-list metadata changes trigger updates
v67.6.63: fix(collaboration): remove special treatment of li-image metadata property crops
v67.6.62: fix(li-image-crop): Fix aspect ratio update behavior
v67.6.61: fix(editable text count): ensure editable text count works when loading a document editor directly and when opening from the dashboard
v67.6.60: fix(text count): fix config property typo
v67.6.59: fix(text count): show the selected editable directive count next to the document text count
v67.6.58: fix: set width of named crops to 200
v67.6.57: fix(icons): Upgrade to the newest version of material-design-icons-svg
v67.6.56: fix: use width instead of size and set it to 100
v67.6.55: fix(image metadata plugin): show correct order not reversed
v67.6.54: fix(media library): ensure video and image are rerendered after replace
v67.6.53: chore: fix test to have correct order
v67.6.52: fix(select form): Always show clear button
v67.6.51: fix(hugo): add over media library
v67.6.50: fix(filters): Hide filters with one option
v67.6.49: fix(history): implement feedback
v67.6.48: fix(properties panel): Handle initial undefined value in li-form-color
v67.6.47: fix: select print layout use arrow function
v67.6.46: fix(print-preview): only set editMode from contentType when it is defined
v67.6.45: fix(date inputs): make it easier to reset a date input
v67.6.44: fix(media library): Use locale-specific asset when inserting file into document
v67.6.43: fix(read-only): nest in ui object
v67.6.42: chore(viewport): fix specs
v67.6.41: fix(li-image): show crop previews larger for li-image metadata if there are no more than 2 namedCrop options
v67.6.40: fix(lists): show error message when publishing a list fails
v67.6.39: code(image manager): Address PR feedback
v67.6.38: fix(employment type): correctly show error message when revoking fails
v67.6.37: fix(media library): properly remove event listeners
v67.6.36: fix(mediaLibrary): do not throw reactive errors
v67.6.35: fix(dependencies): remove release-tools as editor dependency
v67.6.34: fix(defaultProject): respect the default project
v67.6.33: code(media library): Incorporate PR feedback
v67.6.32: fix(crop handling): Fix cropping for poster images
v67.6.31: fix(link tool): don’t reset the linkedDocument as soon as the user starts typing but only when actually linking a URL
v67.6.30: fix: fix icon link
v67.6.29: chore: improve sitemap entries example
v67.6.28: fix(comments): Disable multiselect mode while editing a comment
v67.6.27: fix(media library): Consistent asset replacement for default language
v67.6.26: fix(media library): Hide transcoding state + poster image in upload dialog
v67.6.25: fix(icons): fix some icons missing from the icon lib
v67.6.24: fix(embed): Extract html from directive content
v67.6.23: fix(dashboards): fix loading more articles
v67.6.22: fix(embeds): fix twitter embeds
v67.6.21: fix: correctly align context menu for the admin screen occupations table
v67.6.20: chore: Update @livingdocs/framework
v67.6.19: fix: display the creation date for new API tokens
v67.6.18: fix: throw errors on user invitation if they exist
v67.6.17: chore: skip metadata permission error Cypress test
v67.6.16: chore: Upgrade nzz and bluewin tests to node 16
v67.6.15: chore: fix shaky cypress
v67.6.14: fix(media-library): Fix context menu download link
v67.6.13: fix(css): Load the fonts only once
v67.6.12: chore: use userInfoService and add ignoreArchived
v67.6.11: fix(media upload): make cancelling a single upload in the upload dialog work again
v67.6.10: fix(media library): don’t show upload dialog for uploads without required metadata
v67.6.9: Upgrade fastify-reply-from to get rid of deprecation message with node 16
Icon Legend
- Breaking changes: 🔥
- Feature: 🎁
- Bugfix: 🪲
- Chore: 🔧