# CKEditor Collaboration Server On-Premises

<a id="550-2026-09-22">

## 5.5.0 (2026-09-22)

<a id="features">

### Features

* Added support for importing and exporting documents without content

  Comments, comment threads, suggestions and revisions can now be imported and exported without\
  uploading an editor bundle, which unblocks migration and backup workflows that only need document\
  data. Pass `{ "omit": true }` in place of the request body’s `content` object on import, or the\
  new `omit_content` parameter on export.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Documents`.

* Added a collaboration snapshot when a document is restored

  Restoring a document discarded the pending changes with no way to inspect or recover them.\
  A snapshot is now created on every restore, so the discarded changes can be reviewed and\
  recovered afterwards.

<a id="bug-fixes">

### Bug fixes

* Fixed documents becoming inaccessible when the collaboration history is compressed during editing

  When the collaboration history was compressed while someone was still typing, the document could\
  become impossible to open and users could no longer join the session or make changes. Editing\
  continues uninterrupted now, whenever the compression happens.

* Fixed long-running Server-Side Editor API scripts being retried before the previous run finished

  A script running in the asynchronous execution mode that took longer than the allowed time was\
  started again while the first run was still going, which consumed extra resources and could leave\
  the document in an incorrect state. A script that exceeds the time limit is now stopped instead.

* Improved database connection stability

  The application no longer restarts when the connection to the database is interrupted, for\
  example during a failover. A temporary database problem is also no longer reported as an expired\
  license, which used to stop a correctly licensed installation.

* Fixed possible loss of document changes when a write to the in-memory database fails

  A failed write could leave a collaborative document’s change history incomplete while the\
  document itself was already published as updated. Such writes are now detected and rolled back.

* Improved license mechanism stability and performance

<a id="other-changes">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="540-2026-08-11">

## 5.4.0 (2026-08-11)

<a id="features-2">

### Features

* The Observability Hub is now generally available

  Introduced as a beta service in 5.3.0, the Observability Hub is now a fully supported part\
  of the On-premises application.

  It also gained a broader view of the collaboration history, and browsing the collected data is\
  easier thanks to filters and other interface improvements in the Management Panel.

* Added information about who resolved a suggestion and when

  Track changes suggestions now store and return the resolving user and the resolution time, so\
  this information survives beyond the editing session and is available through the REST API.\
  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Suggestions/paths/~1suggestions~1%7Bsuggestion_id%7D/get`.

<a id="bug-fixes-2">

### Bug fixes

* Fixed document locking when several users join the same environment at once

  An incorrect lock manager binding in the bundled sessions service could hand out conflicting\
  document locks when multiple users connected concurrently within one environment.

* Fixed the Server-Side Editor API not reaching a locally hosted CKEditor AI On-Premises

  When CKEditor AI On-Premises was hosted on an address the browser treats as a private network,\
  Server-Side Editor API requests to it failed. Such deployments now work.

* Fixed orphaned Redis subscriptions and queues accumulating over time

  Inactive Redis queues are now unsubscribed automatically and queues left over from earlier\
  versions are removed, so Redis memory no longer grows with abandoned collaboration channels.

* Fixed Redis memory growth after interrupted document exports

  Export payloads left behind by an interrupted export are now expired instead of being kept\
  indefinitely.

* Fixed leaking network connections on interrupted image downloads

  Easy Image now aborts the underlying request when a download is interrupted, releasing the\
  connection instead of holding it open.

* Fixed disk space not being reclaimed after a Chromium instance is closed

  Previously, when a Chromium instance was closed, its user directory was left behind. Such\
  directories are now removed automatically, which limits the disk space used inside the container.

* Fixed support for editor bundles containing plugins that depend on plugins removed on the server side

  Previously, when an editor bundle contained a plugin that depended on a plugin removed during\
  server-side processing, requests using such a bundle could fail with\
  `The request to export document <document-id> has failed` and `plugincollection-required` errors.\
  Now, the plugins that depend on the removed plugins are disabled instead.

* Fixed root attributes being lost when a document is processed by the editor bundle

  Previously, root attributes were collected from only one source, so attributes provided by the\
  editor and attributes stored on the document roots were not combined. As a result, some root\
  attributes could be lost while the document was being processed. Now both sources are merged and\
  all root attributes are preserved.

<a id="other-changes-2">

### Other changes

* Extended the diagnostic data captured when revision creation fails

  When creating a revision fails, the collaboration snapshot now records the operations metadata\
  (author, type and time) and the revision the failed attempt was meant to extend, and returns them\
  through the REST API. This provides the full context needed to reproduce and diagnose the failure.\
  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration-snapshots/paths/~1collaboration-snapshots~1%7Bdocument_id%7D/get`.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="530-2026-06-30">

## 5.3.0 (2026-06-30)

<a id="features-3">

### Features

* \[BETA] Introduced the Observability Hub as a bundled service in the On-premises application

  The **Observability Hub** is a new bundled service that brings visibility into your collaborative documents to the Management Panel. Use it to:

  * **Monitor document state** — browse all collaborative documents and their current status.
  * **Inspect audit history** — track “who”, “what” and “when” of your documents.
  * **Review storage history** — see each document’s storage status and how it changed over time to detect potential anomalies.
  * **Browse snapshots** — view the full list of snapshots for a document and download a debug bundle for any one of them.

  It is enabled by default. Set `ENABLE_OBSERVABILITY_HUB` configuration option to `false` to disable.

* Added asynchronous execution mode for the Server-Side Editor API

  Scripts can now be evaluated in the background, with the server responding immediately with an evaluation ID.\
  A new status endpoint allows checking the result when ready.\
  This removes timeout limitations for long-running scripts, such as those using CKEditor AI Services.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration/paths/~1collaborations~1%7Bdocument_id%7D~1evaluate-script/post`.

* Improved handling of Server-Side Editor API users in collaboration sessions

  Connect and disconnect webhook events are no longer triggered when a Server-Side Editor API user\
  joins or leaves a collaboration session.

* Added snapshot creation trigger during document storage save

  A collaboration snapshot is now created each time a document is saved in the document storage, in addition to existing snapshot triggers.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration-snapshots`

* Added a debug bundle download endpoint for collaboration snapshots

  A new endpoint allows downloading a ZIP archive with all data related to a collaboration snapshot,\
  making it easier to diagnose issues.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration-snapshots`.

<a id="bug-fixes-3">

### Bug fixes

* Fixed behavior when flushing a specific document in a context

  Clients are now notified before being disconnected from a flushed document channel, preventing\
  unnecessary reconnection attempts. When flushing one document from a multi-document context,\
  collaboration services for other documents in the same context are no longer affected.\
  Requires CKEditor 5 v48.3.0 or higher.

* Fixed a bug where connecting to a document while it was being exported could return empty content

  Previously, a user connecting at the same moment as an export could receive an empty document.\
  Now, the connection waits for the export to complete and the user always receives the correct document content.

<a id="other-changes-3">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="520-2026-05-26">

## 5.2.0 (2026-05-26)

<a id="features-4">

### Features

* Added support for multiple SSE scripts in a single document

  Multiple simultaneous calls can now be made through the Server-Side Editor API for the same document.

<a id="bug-fixes-4">

### Bug fixes

* Fixed a bug where collaboration changes were not propagated immediately to other users

  A bug introduced in version 5.0.0 was causing delays in the propagation of collaboration changes to other users.\
  Now, the collaboration changes are propagated immediately to other users connected to the same document.

* Fixed support for multi-root documents without roots

  Previously, multi-root documents without roots could not be processed correctly, even though\
  this was supported by CKEditor itself.\
  Now, multi-root documents without roots are processed correctly for all editor bundles\
  based on CKEditor 5 version 39.0.0 or higher.

<a id="other-changes-4">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="510-2026-04-14">

## 5.1.0 (2026-04-14)

<a id="features-5">

### Features

* Added a new REST API endpoint to list uploaded editor bundles

  The new `GET /editors` REST API endpoint allows for listing all uploaded editor bundles.\
  It lets you get a list of all uploaded editor bundles and their versions.

  You can find more information in the REST API documentation available\
  under `/api/v5/docs#tag/Editor-bundles/paths/~1editors/get`.

* Added a new environment variable `SSE_API_WEBSOCKET_URL` to configure the WebSocket URL for the Server-Side Editors API

  Before, the Server Side Editor API was using the `APPLICATION_EXTERNAL_ENDPOINT` environment variable to connect to the Cloud Services server, now it can be configured using the `SSE_API_WEBSOCKET_URL` environment variable.\
  The `APPLICATION_EXTERNAL_ENDPOINT` is still supported for backward compatibility.

* \[EXPERIMENTAL] Added support for OpenTelemetry

  When the `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` environment variable is set, the OpenTelemetry instrumentation is enabled so that traces are sent to the defined OTLP HTTP endpoint. You can set `OTEL_SERVICE_NAME` to identify the service in your telemetry backend, and optionally `OTEL_TRACES_SAMPLER_ARG` (defaults to `1.0`) to control the root trace sampling ratio.

  **This integration is experimental; behavior and configuration may change in future releases.**

<a id="fixes">

### Fixes

* Fixed handling editor bundles with AI plugins

  Fixed an issue where editor bundles containing AI plugins were not handled correctly.\
  The AI plugins are now properly excluded from the bundle processing on the server side.

* Fixed bundle caching

  Fixed an issue with the editor bundle caching mechanism that could cause stale bundles to be served.\
  The issue could lead to an `Could not load script` error.\
  The caching mechanism now correctly invalidates and refreshes the cached bundles.

* Fixed a potential content duplication issue during document loading

  Previously, a lack of locking during the document loading process could result in duplicated content\
  in rare race condition scenarios. The loading process now correctly acquires a lock to prevent this issue.

<a id="other-changes-5">

### Other changes

* Improved the stability of the restore endpoint

  Previously, restoring a document could fail in certain edge cases.\
  The restore endpoint has been improved to handle these cases correctly, providing better stability.

* Security improvements

  Applied security improvements to the Server-Side Editors API and the offline document conversion.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="500-2026-03-03">

## 5.0.0 (2026-03-03)

**Note:** The major version bump is due to the introduction of the compatibility with the CKEditor AI On-premises.\
From this version, both applications can be run on the same server.\
There are not any breaking changes in the Collaboration Server On-premises and the new release is fully compatible with the older versions.

It is highly recommended to synchronize the version of the CKEditor AI On-Premises with\
the CKEditor Collaboration Server On-Premises to ensure the compatibility of the two applications.

<a id="features-6">

### Features

<a id="other-changes-6">

### Other changes

* Improved performance and stability of collaboration features

  The way the editor bundle is run was improved, providing better performance and stability\
  of features that rely on the backend document conversion.

* Updated Node to v24 LTS

  The Node version has been updated to v24 LTS to improve performance and security.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4262-2026-01-29">

## 4.26.2 (2026-01-29)

<a id="other-changes-7">

### Other changes

* Added a possibility to skip SSL certificate verification for SSE API external requests

  Before, the SSE API external requests were blocked if the SSL certificate was not verified\
  or if it was not trusted.\
  To skip SSL certificate verification for SSE API external requests,\
  the `ACCEPT_INSECURE_CERTS` environment variable must be set to `true`.\
  It is disabled by default for security reasons.

* Improved performance of the adding new suggestions

  The locking mechanism used while adding new suggestions was replaced with a more efficient one.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4261-2025-12-08">

## 4.26.1 (2025-12-08)

<a id="other-changes-8">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4260-2025-12-02">

## 4.26.0 (2025-12-02)

<a id="features-7">

### Features

* Added the possibility to initialize a new collaboration session directly from the Document storage through the REST API

  Now the `/api/v5/{environment_id}/collaborations` method called without the `data` parameter will initialize\
  a new collaboration session from the Document storage if the document is stored there.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration/paths/~1collaborations/post`.

<a id="fixes-2">

### Fixes

* Fixed support for multi-root editors in the SSE API

  Fixed support for multi-root editors in Server-Side Editors API. The parameter `multi_root_configuration.roots_to_initialize`\
  now allows specifying which roots should be initialized on the backend side.\
  By default, the editor is initialized with the roots declared while uploading the editor bundle.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration/paths/~1collaborations~1%7Bdocument_id%7D~1evaluate-script/post`.

* Fixed a race condition while adding a suggestion with a parent suggestion

  Previously, in rare cases, a race condition could occur while adding a suggestion with a parent suggestion.\
  The race condition could be visible when adding a suggestion while adding a link to a text in the document.\
  The race condition could lead to the `Cannot find original suggestion` error.\
  Now the race condition is fixed, and the suggestions are added correctly.

<a id="other-changes-9">

### Other changes

* Added support for MySQL 8.4

  MySQL 8.4 is now supported as the database engine.\
  When the database was created in a version older than 8.0, the database user must be manually upgraded\
  to not use the deprecated `mysql_native_password` authentication plugin.\
  The support for the plugin was dropped by the MySQL engine itself.\
  The legacy user might be migrated to the `caching_sha2_password` authentication plugin.\
  The migration process depends on the used infrastructure and database engine, so it is not possible\
  to provide a generic solution.

* Added support for Valkey as the Redis alternative

  Valkey is a community-driven fork of Redis led by the Linux Foundation and supported by AWS and others.\
  It might be used as an alternative to Redis; there are no additional steps required to use it.\
  All authentication and configuration parameters are the same as for Redis.

* Increased the timeout for the SSE API to 60 seconds

  The increased timeout allows for more complex script executions and longer external requests.

* Lowered the log level of a message that is logged when an external request from the editor bundle fails

  The log level was lowered from `warn` to `debug` to not flood the logs.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4253-2025-10-14">

## 4.25.3 (2025-10-14)

<a id="fixes-3">

### Fixes

* Fixed document processing when relative paths to resources are used

  Documents that used relative paths in its content were failing while being processed by the editor bundle.\
  Now, the relative paths are ignored and documents are processed correctly.

* Fixed support for AWS S3 Endpoint configuration in Easy Image

  Previously, the `STORAGE_ENDPOINT` environmental variable was not working properly when used with AWS S3.\
  It could lead to errors resulting in an inability to upload or download images from Easy Image until the application restarts.\
  Now the `STORAGE_ENDPOINT` environmental variable is supported when used with AWS S3.

* Fixed support for root attributes in a single-root editors

  Previously, the root attributes were not supported in a single-root editor, resulting in a attributes loss.\
  Now, the root attributes are stored, decoded and returned correctly.

* Fixed issue with Environments API documentation

  Previously, the Environments API documentation page, contained only introduction and did not list\
  any available endpoints.\
  Now, the API correctly lists all available endpoints.

<a id="other-changes-10">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4252-2025-09-02">

## 4.25.2 (2025-09-02)

<a id="fixes-4">

### Fixes

* Fixed ghost sessions appearing after a quick connect-disconnect to a document

  After a quick connect-disconnect to a document, session was not terminated properly.\
  Now, the session expires properly.

* Fixed Insights Panel’s filters in the Management Panel

  Previously, filtering the logs by level in the Management Panel was not working properly.\
  Now, the logs are correctly filtered by level.

<a id="other-changes-11">

### Other changes

* Added support for the `debug` mode in the Server-Side Editors API

  When developing and testing your editor scripts, you can enable the debug mode by setting the `debug: true` parameter in your API request.\
  This will allow you to collect the `console.debug` logs from the script execution.\
  It can be helpful for troubleshooting and understanding script behavior.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4251-2025-08-14">

## 4.25.1 (2025-08-14)

<a id="fixes-5">

### Fixes

* Improved Server-Side Editors API response serialization

  The SSE API can return only serializable values (e.g., plain objects, arrays, strings, numbers, booleans, and null).\
  To accommodate the need for returning more complex values, the server will now try to serialize the value returned\
  from the script into a JSON object. You can read more about syntax and response restrictions in our official\
  documentation https\://ckeditor.com/docs/cs/latest/developer-resources/server-side-editor-api/editor-scripts.html#syntax

* Fixed compatibility with editor bundles that contain the Line Height plugin

  Using the Line Height plugin in the uploaded bundle caused errors while using\
  features that required the editor bundle. Now, the plugin can be included in an uploaded\
  editor bundle.

* Fixed occasional errors when uploading editor bundles

  Previously, there was a chance of an occasional `409 Conflict` error response when\
  uploading the editor bundle. Now, the editor bundles will be properly processed and uploaded.

<a id="other-changes-12">

### Other changes

* Added `plugins_to_remove` parameter to Server-Side Editors API

  The new parameter in the request body will allow you to specify a list of plugins that should be excluded\
  from the editor during script evaluation.

  This option is useful when certain plugins can interfere with proper script execution.

* Improved stability and security of Server-Side Editors API

  Improved selected aspects of Server-Side Editors API behavior and sandboxing to ensure better\
  stability, reliability, and security.

<a id="4250-2025-07-22">

## 4.25.0 (2025-07-22)

<a id="features-8">

### Features

* Added support for the Server-side Editor API

  The Server-side Editor API (SSE API) allows for evaluating editor scripts on the server side.\
  It is useful for performing complex operations on the document data, such as\
  applying styles, inserting content, etc.

  To use the SSE API with an `Collaboration worker` the `APPLICATION_EXTERNAL_ENDPOINT` must be set.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration/paths/~1collaborations~1%7Bdocument_id%7D~1evaluate-script/post`\
  and to our online documentation.

<a id="fixes-6">

### Fixes

* Fixed an issue with frequent consecutive calls to the Document export API endpoint

  Previously, a frequent consecutive requests might have resulted in locking document exports without manual updates of revisions.\
  Now, the document export is properly performed.

<a id="other-changes-13">

### Other changes

* Added `initialData` to Collaboration snapshots

  The `initialData` improves the ability of debugging in case of Editor bundle failures.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration-snapshots`

* Extended selected Webhooks events with userId

  Webhooks events now contain the `userId` of the user who performed the action:

  * `commentthread.updated`
  * `commentthread.reopened`
  * `commentthread.removed`
  * `commentthread.restored`
  * `suggestion.removed`
  * `suggestion.restored`

  For more information, please refer to our online documentation.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4241-2025-07-01">

## 4.24.1 (2025-07-01)

<a id="fixes-7">

### Fixes

* Fixed Authorization for the Management Panel

  The Authorization for the Management Panel wasn’t verified properly.\
  Now, the correct password is required to access the Management Panel.

  The issue was reported by Adam Wójs from [Ibexa](https://www.ibexa.co/). Thank you!

<a id="4240-2025-06-10">

## 4.24.0 (2025-06-10)

<a id="features-9">

### Features

* Added a new Management Panel

  The Management Panel have been unified with the cloud version.\
  Credentials to access the Management Panel are the same as for the old version.

<a id="fixes-8">

### Fixes

* Fixed comments and collaboration permissions

  Previously, there existed a possibility that during connecting\
  to collaborative editing sessions with specific content and comments,\
  the server incorrectly expected `comment:write` permissions.\
  Because of that, the users with `comment:read` permissions were not able\
  to connect to said documents.

  This version fixes that situation by correctly expecting only `comment:read` during connection in read-only mode.

  Fixed an issue with Ghost comment threads created when a user\
  with `comment:read`, `document:read` and `comment:admin` permissions\
  was trying to add a comment on the document. Due to incorrect permissions handling the comment thread was created without a reference in the document.

  **Important notes**

  * To not introduce breaking changes and misalignment between older editor versions and Collaboration Server On-Premises the changes will take effect **only** from CKEditor5 version greater than or equal to `43.3.0`

  * All the behavior related to other permissions as well as roles is left intact

* Fixed minimap plugin handling in the editor bundles

  The minimap plugin is now disabled by default in the editor bundles.\
  The plugin is disabled as it isn’t affecting the document content but could lead\
  to a document conversions process to fail.

<a id="others">

### Others

* Improved a Webhook creation process

  A new webhook cannot be created if no access key is marked to be used for webhooks.\
  It ensures that the event will contain the correct signature.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4230-2025-04-22">

## 4.23.0 (2025-04-22)

<a id="features-10">

### Features

* The Recovery snapshots feature is now enabled by default

  This means that the snapshots\
  of the document will be created and saved to the configured storage in case of any failures\
  during document processing.

  To disable this feature, set the `ENABLE_SNAPSHOTS=false` environmental variable.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration-snapshots`.

<a id="fixes-9">

### Fixes

* Fixed a bug where exporting or copying documents created a new collaboration session that never expires

  Now, the new collaboration session will not be created if it does not exist.

* Fixed a bug where copying, exporting or importing documents could lead to corrupting the document

  Before, a race condition could happen when invoking the same request multiple times in a row.\
  It could block a given document from further import/get/remove requests.\
  Now, the race condition is fixed and the document is not blocked.

* Fixed Connection optimization feature

  Before, when the Connection optimization feature and Document storage were enabled,\
  the bug led to situation where the document export was unsuccessful.\
  Now, the compression is done properly and the document export is successful.

<a id="others-2">

### Others

* Improved logger performance and optimized memory consumption

  The logger module has been improved to reduce a memory consumption and improve performance.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4220-2025-03-11">

## 4.22.0 (2025-03-11)

<a id="features-11">

### Features

* Extended the Beta version of the Recovery snapshots feature

  In case of failed operations while using bundle-based editor, the snapshots of the document\
  are now created and saved to the configured storage. This allows for recovering\
  the document data in case of any failures during document processing and allows\
  to track and reproduce a bug in case of a failure during the editor bundle execution.\
  The recovery snapshots are kept in the storage for 30 days.

  To enable this option, set the `ENABLE_SNAPSHOTS=true` environmental variable.\
  Please note that the feature is still under development and its behavior\
  may be changed in upcoming releases.

  For more information, please refer to the REST API documentation at\
  `/api/v5/docs#tag/Collaboration-snapshots`.

<a id="fixes-10">

### Fixes

* Fixed the `Target closed` error

  The `Target closed` error appeared randomly while handling higher traffic. It could lead\
  to a temporary performance degradation and container restarts. The error has been fixed.

* Fixed the `NOSCRIPT` Redis error

  The `NOSCRIPT` Redis error appeared when one of the Redis instances was restarted\
  or the `SCRIPT FLUSH` command was executed. Now, in the case of the `NOSCRIPT` error,\
  the script is loaded again to the Redis instance.

<a id="other">

### Other

* Improved License module reliability

  The License module has been improved to handle license server unavailability.

* Updated node version to 22.14.0

  The node version has been updated to 22.14.0 improving the security, reliability\
  and performance of the application.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4211-2025-02-19">

## 4.21.1 (2025-02-19)

<a id="fixes-11">

### Fixes

* Fixed validation for selected types of licenses

  Selected types of licenses couldn’t be validated again after 90 days from the activation\
  resulting in the `Can not change the license! Wrong server time!` error.

<a id="4210-2025-01-28">

## 4.21.0 (2025-01-28)

<a id="features-12">

### Features

* Added REST API to the GET editor bundle

  The new `GET /editors/{bundle_version}` REST API endpoint allows for fetching editor bundle.\
  It lets you get the exact editor bundle that is used on the server to make debugging easier.

  You can find more information in the REST API documentation available\
  under `/api/v5/docs#tag/Editor-bundles/paths/~1editors~1%7Bbundle_version%7D/get`.

* Added REST API to the GET editor bundle config

  The new `GET /editors/{bundle_version}/config` REST API endpoint allows for fetching editor bundle config.\
  It lets you get the editor bundle config which may be used for debugging purposes.

  You can find more information in the REST API documentation available\
  under `/api/v5/docs#tag/Editor-bundles/paths/~1editors~1%7Bbundle_version%7D~1config/get`.

<a id="fixes-12">

### Fixes

* Fixed compatibility with editor bundles that contain the Document outline plugin

  Using the Document outline plugin in the uploaded bundle caused errors while using\
  features that required the editor bundle. Now, the plugin can be included into a uploaded\
  editor bundle.

* Fixed support for special characters in the `document_id_patterns` parameter in the `DELETE /collaborations` endpoint

  Using special characters such as `|` in the document ID could lead to flushing\
  more documents than expected, as special characters were interpreted as a part of a regular\
  expression. Now, only the `*` can be used as a wildcard, as stated in the REST API documentation.

  You can find more information in the REST API documentation available under\
  `/api/v5/docs#tag/Collaboration/paths/~1collaborations/delete`

* Fixed the `target` attribute support in comments

  The `target` attribute was previously lost while fetching comments.\
  Now the `target` attribute is permanently preserved.

* Fixed the `/collaborations/{document_id}/save` endpoint responses

  Before, when the `/collaborations/{document_id}/save` endpoint was called for a document\
  session created before enabling the Document storage, the `202` response was returned\
  despite the fact that the document was not saved correctly.\
  Now, in such a case, the `409` response will be returned.

  You can find more information in the REST API documentation available under\
  `/api/v5/{environment_id}/collaborations/{document_id}/save`.

* Fixed OpenAPI 3 REST API Documentation compatibility

  The REST API definitions were adjusted to meet the OpenAPI 3.0.0 requirements.

<a id="other-2">

### Other

* Improved API documentations reliability

  The Environments API, Webhooks API and REST API were standardized.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4202-2024-11-19">

## 4.20.2 (2024-11-19)

<a id="features-13">

### Features

* Added a beta version of the Recovery snapshots feature

  After the collaborative session has been finished, the raw copy of document data is\
  saved to a configured storage. Thanks to this, in case of any failures during document\
  processing, there will be possibility to fetch raw document and share it with\
  the CKEditor support to recover the document data.\
  The recovery snapshots are kept in the storage for 30 days.

  To enable the option, set the `ENABLE_SNAPSHOTS=true` environmental variable.\
  Please note that the feature is still under development and its behavior\
  may be changed in upcoming releases.

<a id="fixes-13">

### Fixes

* Fixed error handling when a revision for a documentID already existed in case of \[POST] `/documents`

  Such a situation could lead to data inconsistency. Now the 400 error will be returned.

* Fixed error handling for a case where revisions with duplicated from/to pair was added

  Such a situation could lead to data inconsistency. Now the 400 error will be returned.

<a id="other-3">

### Other

* Extended the `collaboration.document.updated` webhook event with an `updated_by` field

  The `updated_by` property contains ID of the user who updated the document recently.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4201-2024-10-08">

## 4.20.1 (2024-10-08)

<a id="other-4">

### Other

* Improved reliability of the license module

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4200-2024-08-27">

## 4.20.0 (2024-08-27)

<a id="features-14">

### Features

* Added REST API to the GET business logs

  The new `GET /insights/business-logs` REST API endpoint allows to fetch business logs.\
  It allows for fetching logs and share them in a form of JSON, making sharing logs easier.

  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Insights/paths/~1insights~1business-logs/get`.

<a id="other-5">

### Other

* Improved validation of the Pagination cursor

  Now the pagination cursor is validated properly.

* Improved reliability of the license module

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4192-2024-07-24">

## 4.19.2 (2024-07-24)

<a id="other-6">

### Other

* Improved reliability of the license module

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4191-2024-07-18">

## 4.19.1 (2024-07-18)

<a id="fixes-14">

### Fixes

* Fixed a bug where the `unlinkedAt` property was lost after a comment was resolved or reopened.

  Before the fix, the `unlinkedAt` property was lost after a comment was resolved or reopened.\
  This resulted in the comment thread disappearing from the comment archive after a reconnection or page refresh.\
  Now the property is set to its previous value.

<a id="4190-2024-07-16">

## 4.19.0 (2024-07-16)

<a id="features-15">

### Features

* Extend the `GET /collaborations/{document_id}/exists` endpoint with the Document storage status

  The `GET /collaborations/{document_id}/exists` accepts now additional `include_storage`\
  query parameter. After the parameter is set, the response includes the `exists_in_storage`\
  property, that indicates if the given document is stored in the Document storage or not.

  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Collaboration/paths/~1collaborations~1%7Bdocument_id%7D~1exists/get`.

* Extend the `GET /storage/{document_id}` endpoint with a status of stored document

  The `GET /storage/{document_id}` returns now the information if the document in Document storage is stored properly.\
  When the `?details=true` query parameter is set, then the response will include the `is_stored_properly` property.

  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Storage/paths/~1storage~1%7Bdocument_id%7D/get`.

* Extend the `GET /storage` endpoint with a status of stored documents

  The `GET /storage` returns now the information if each document from the Document storage is stored properly.\
  The response will include the `is_stored_properly` property for every document on the lists.

  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Storage/paths/~1storage/get`.

* Filter the `GET /storage` response by the status of documents

  The `GET /storage` accepts now an additional parameter `is_stored_properly` that indicates if all,\
  correctly stored or only corrupted documents should be returned.

  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Storage/paths/~1storage/get`.

<a id="fixes-15">

### Fixes

* Fixed a bug where corrupted document could be copied by using the Copy API

  Now, copying corrupted documents is blocked to prevent a case where corrupted document is duplicated without any notice.\
  It will help to detect cases of currupted document earlier.

* Fixed a bug where `last_updated_at` and `last_updated_by` were not updated after document was imported.

  Now, after a document is removed and imported again, the `last_updated_at` will be set to a date of document import.\
  The `last_updated_by` will be set to `null`.

<a id="other-changes-14">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4180-2024-06-04">

## 4.18.0 (2024-06-04)

<a id="features-16">

### Features

* Triggerring the document storage

  A new `PUT /api/v5/collaborations/{document_id}/save` method allows for manually\
  triggerring a process of saving a document to the document storage without removing\
  a collaboration session.

  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Collaboration/paths/~1collaborations~1%7Bdocument_id%7D~1save/put`.

<a id="fixes-16">

### Fixes

* Fixed validation for comment’s type

  While using the `POST /api/v5/{environment_id}/documents` endpoint,\
  only comments having `type` with value `1` or `2` will be accepted.\
  The validation was introduced as no other types exists.

  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Documents/paths/~1documents/post`.

<a id="other-changes-15">

### Other changes

* Improved Document Storage to avoid breaking documents while connecting

  A process of creating a collaborative session from a document stored in a Document Storage will be blocked\
  if an editor bundle will be not uploaded. To create a collaborative session from a document from a Document Storage\
  the document needs to be processed by the editor bundle.\
  Now, an attempt of creating collaborative session without editor bundle will be blocked to prevent document corruption.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4173-2024-04-23">

## 4.17.3 (2024-04-23)

<a id="fixes-17">

### Fixes

* Fixed displaying the Webhooks tab in the Management Panel

  The Webhooks tab is now displayed correctly in the Management Panel.

<a id="other-changes-16">

### Other changes

* Improve the Copy method from the Documents REST API

  The `POST /api/v5/{environment_id}/documents/{source_document_id}` method accepts\
  the `bundle_version` parameter now. Thanks to the parameter, the `bundle_version`\
  that will be used to run a new session of a copied document can be set explicitly.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4172-2024-03-12">

## 4.17.2 (2024-03-12)

<a id="fixes-18">

### Fixes

* Fixed support for the `|` character in the document ID

  Before, using the pipe `|` character in the document ID could cause problems with applying correct\
  document privileges. Now the pipe character is supported and can be used in a document ID.

<a id="other-changes-17">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4171-2024-01-23">

## 4.17.1 (2024-01-23)

<a id="other-changes-18">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4170-2023-12-19">

## 4.17.0 (2023-12-19)

<a id="features-17">

### Features

* Added REST API endpoints for the API Secret and Access Key management

  The new REST API allows you to get, create, and remove API Secrets and Access Keys.\
  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Environments`.

* Added possibility to disconnect a user from a particular collaboration session or a set of collaboration sessions

  Introduced a new query parameter, `document_ids` to the `/api/v5/{environment_id}/users/{user_id}/collaborations` endpoint which takes a list of collaboration session IDs separated by a comma.

  The new parameter makes it possible to provide a list of documents from which the user should be disconnected.

<a id="fixes-19">

### Fixes

* Increased the number of available connections to a PostgreSQL database, in a connection pool

  Before, the number of connections could be insufficient while the application was handling higher traffic, depending on a use-case.\
  Now the number of available connections has been increased, to cover the case.

<a id="other-changes-19">

### Other changes

* Extended the collaboration details response with properties related to the last update

  The new fields are `lastUpdatedAt` and `lastUpdatedBy` and will contain the date of the last update and the ID of the user performing it respectively. It will be returned for the below REST API endpoints:

  * `GET /api/v5/collaborations/{collaboration_id}/details`
  * `GET /api/v5/collaborations/{collaboration_id}?details=true`

* Extended the document storage details response with the date of the last save in the storage

  When exporting the content of the document from the storage with details using the `GET api/storage/{document_id}?details=true` endpoint, the date of the last save will also be included in the response.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4162-2023-11-07">

## 4.16.2 (2023-11-07)

<a id="other-changes-20">

### Other changes

* Improved performance of the license module

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4161-2023-10-06">

## 4.16.1 (2023-10-06)

<a id="other-changes-21">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

  The above update patches the security vulnerability related to the heap buffer overflow risk.

<a id="4160-2023-09-27">

## 4.16.0 (2023-09-27)

The newest version of CKEditor Cloud Services On-Premises introduces a three-month webhook request retention.\
Thanks to this, the increasing number of webhook requests will not take up too much space as time goes by.\
To allow the removal of outdated requests without introducing any interruptions or blocking the application the old\
requests have been archived. Note that the data will **not** be deleted permanently. If you want to restore your\
old webhook requests, please contact our support - https\://ckeditor.com/contact/.

All webhooks behaviors stay unchanged.

<a id="features-18">

### Features

* Added REST API for Revision History

  The new REST API allows you to get, create, and remove revisions of the document.\
  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Revisions`.

* Added REST API endpoint to disconnect a single user from all active editing sessions

  The `DELETE:/users/{user_id}/collaborations` endpoint can be used to force a user to disconnect from all documents in case of e.g. privileges update.\
  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Collaboration/paths/~1users~1%7Buser_id%7D~1collaborations/delete`.

* Added a possibility to flush specific documents by providing a list of their IDs or IDs containing wildcards

  The `DELETE:/collaborations` method has been extended with the `documentIdPatterns` query parameter. A list of document IDs or ID patterns is accepted.\
  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Collaboration/paths/~1collaborations/delete`.

* Added support for MySQL 8

  From this version, the CKEditor Collaboration Server On-premises will be tested with MySQL in version 8.

* Added support for PostgreSQL 14

  From this version, the CKEditor Collaboration Server On-premises will be tested with PostgreSQL in version 14.

<a id="fixes-20">

### Fixes

* Fixed a problem while connecting with a database thru the TLS connection

  The TLS connection wasn’t possible, now TLS can be used properly.

<a id="other-changes-22">

### Other changes

* Improved licensing mechanism

  A race condition while quick connecting and disconnection was solved.

* Improved mechanism to release unused database connections

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4151-2023-08-22">

## 4.15.1 (2023-08-22)

<a id="fixes-21">

### Fixes

* Fixed support for the CKEditor Nightly releases

  CKEditor Collaboration Server now fully supports the CKEditor Nightly releases.

* Fixed validation for authentication tokens

  JWT tokens with `-` are now accepted.

* Fixed usage of the `force` flag with the `DELETE:/collaborations/{document_id}` REST API endpoint

  Now, when the `force` flag is set to `true`, connected users are properly disconnected from the editing session while flushing the document.\
  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Collaboration/paths/~1collaborations~1%7Bdocument_id%7D/delete`.

<a id="other-changes-23">

### Other changes

* Improved error handling for SQL databases

  Some errors from the SQL database are now handled and solved by default without throwing them.\
  Other errors are now more readable.

* Extended the `GET:/users` REST API endpoint response

  The response now contains `first_connected_at` and `last_connected_at` properties.\
  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Users/paths/~1users/get`.

* Simplified the `POST:/documents` REST API endpoint request

  Now, the `requestId` for revisions and `documentId` for comments and suggestions are not required anymore while using the `POST:/documents` endpoint.\
  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Documents/paths/~1documents/post`.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4150-2023-07-11">

## 4.15.0 (2023-07-11)

<a id="features-19">

### Features

* Added support for synchronous document import

  A document can now be imported directly into the document storage without initializing a new editing session.\
  It can be done in the REST API through the POST method from the `/storage` endpoint.\
  You can find more information in the REST API documentation available under `/api/v5/docs#tag/Storage/paths/~1storage/post`.

* Added support for revision history in the `/documents` REST API

  Document revisions can be imported and exported through the `/documents` REST API.\
  You can find more information in our online documentation or the REST API documentation available under `/api/v5/docs#tag/Documents/`.

* Extended support for multi-root editors

  Added the possibility to preserve, export, and initiate the attributes for multi-root documents through webhooks and REST API.\
  You can find more information in our online webhooks documentation or the REST API documentation available under `/api/v5/docs#tag/Collaboration` and `/api/v5/docs#tag/Documents`.

* Added support for the `MIGRATE_ONLY` mode

  The application can be run now in a mode, where only database migrations will run, after migration the instance will be stopped. It gives more flexibility to the CKEditor Collaboration Server On-premises upgrade process.\
  You can find more information in our online documentation.

* Added support for multiple API secrets

  A single environment can include multiple API secrets, it allows for rotation of the API secrets without any downtime.\
  The new API secrets can be managed from the “API secrets” tab in the Management Panel.\
  You can find more information in our online documentation.

<a id="fixes-22">

### Fixes

* Fixed support for special characters in IDs

  Special characters are now fully supported in the document, comment, suggestion, user, and other IDs.

* Fixed performance issues with database connections under heavy load

  User connection peaks do not cause application performance degradation.

* Fixed problem with failing heartbeat

  The heartbeat mechanism was reworked to be more reliable.

<a id="other-changes-24">

### Other changes

* Improved notifications and errors in the license mechanism

  The notifications and errors are now more verbose.

* Improved mechanism to manage database connections

  Idle and stale connections from a pool are now closed earlier.\
  The number of connections in a single pool has been increased to handle more traffic.

* Optimized the memory usage by the real-time collaboration feature

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4140-2023-05-30">

## 4.14.0 (2023-05-30)

<a id="features-20">

### Features

* Added support for the `REDIS_USER` variable

  The new environmental variable allows for setting the user while connecting to a Redis instance.\
  More details can be found in the online documentation.

<a id="fixes-23">

### Fixes

* Fixed memory leak while using the Easy Image feature

  Memory was not released after getting an image under some circumstances.

* Fixed a problem with application performance while connecting thousands of users in a period of time

  When user connected thousands of unique users in a period of time application was restarting or freezing.

<a id="other-changes-25">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4130-2023-04-18">

## 4.13.0 (2023-04-18)

<a id="features-21">

### Features

* Added support for the comments archive feature

  The new CKEditor 5 comments archive feature is now supported.

* Added the `collaboration.document.update.exported` webhook event

  The new webhook is triggered whenever a collaboration session is updated, has ended, or when the last user disconnects.\
  The webhook’s payload contains the document content.\
  You can find more information about it in our online documentation.

* Added support for the `comment:modify_all` privilege

  The new privilege allows to remove or modify a single comment of another user.

* Added support for case sensitive ids in new installations

  The case of letters used in identifiers is now distinguished. Eg., `userId-1` is now different from `UserId-1`.

<a id="fixes-24">

### Fixes

* Improved logs printed when a database migration fails

  The logs provide more information about the failed migration. It will make it easier to debug such cases.

* Improved the migrations script

  The script to run migrations is now insensitive to restarts and shutdowns of the application during database upgrades.

<a id="other-changes-26">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4121-2023-02-28">

## 4.12.1 (2023-02-28)

<a id="fixes-25">

### Fixes

* Fixed minor UI bugs in the Management Panel

<a id="other-changes-27">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4120-2023-01-24">

## 4.12.0 (2023-01-24)

<a id="features-22">

### Features

* Added possibility to omit comments and suggestions while using `/documents` API

  It allows skiping exporting comments or/and suggestions while exporting and importing documents using the `/documents` API.\
  This would allow importing the document without comment and/or suggestions and their respective markers.

* Added filters to the Webhooks Requests view in the Management Panel

  Filters allow checking requests related to selected events with a chosen status code.

* Improved UX of the Insight Panel view in the management panel

  It is now possible to set a relative time frame for logs, so e.g. logs from the last hour can be checked.

<a id="fixes-26">

### Fixes

* Fixed random timeouts while processing documents stored in the Document Storage

* Fixed date parsing in the `/documents` API

  The date in comments added along with a document can now be provided as a Date ISO8601 String and as a timestamp.

* Fixed problem with CORS restrictions

  Now all necessary to communicate headers are allowed by the `Access-Control-Allow-Headers` header.

* Fixed returning the correct version of a document after the session flushing

  Previously the incorrect document version was returned after the document session was flushed.\
  The bug affected the following REST API’s endpoints:

  * GET `collaboration/:documentId?details=true`
  * GET `documents/:documentId`

  and webhooks:

  * `collaboration.document.exported`
  * `collaboration.document.export.failed`
  * `collaboration.document.recovered`

<a id="other-changes-28">

### Other changes

* Updated Node to Node 18

* Improved performance and stability of Documents workers

  It will affect all features that use the Editor Bundle.\
  The mechanism which runs the Editor Bundle inside of the Server has been refactored and optimized.

* Improved socket refresh mechanism

  Every instance of the CKEditor Collaboration On-premises service now only refreshes its own connections instead of all.

* Added version of the CKEditor Collaboration On-premises to logs

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4110-2022-11-29">

## 4.11.0 (2022-11-29)

<a id="features-23">

### Features

* Added the Users REST API

  The new REST API allows adding new user data to and getting the data from the CKEditor Collaboration Server.\
  You can find more information in our online documentation or in the REST API documentation available under `/api/v5/docs#tag/Users`.

* Added the documents `version` field to selected webhooks

  The new field contains the version of the document which is included in a webhook payload.\
  It can be used to ensure that a stored document will not be overwritten with an older version.\
  The `version` field has been added to:

  * `collaboration.document.exported`
  * `collaboration.document.export.failed`
  * `collaboration.document.recovered`

* Added documents `version` field to REST API responses

  The new field contains the version of a document that was requested.\
  It can be used to ensure that a stored document will not be overridden with an older version.\
  The `version` field has been added to:

  * GET `collaboration/:documentId?details=true`
  * GET `documents/:documentId`

<a id="fixes-27">

### Fixes

* Fixed random `Connection hasn't been authenticated in a period of time` errors

  The error occurred when a computer with a document opened in a browser was put into sleep mode for a few hours.\
  After waking up the device the collaboration was still possible, however, numerous errors in the browser console were prompted.\
  The fix requires CKEditor 5 in version v35.3.0 or newer.

<a id="other-changes-29">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4101-2022-11-07">

## 4.10.1 (2022-11-07)

<a id="other-changes-30">

### Other changes

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="4100-2022-10-18">

## 4.10.0 (2022-10-18)

<a id="features-24">

### Features

* Added ability of import, export and remove documents with all related data

  With the new feature a document can be imported, exported or removed with all assigned data, such as comments and suggestions.\
  You can find more information in our on-line documentation or in the REST API documentation available under `/api/v5/docs#tag/Documents`.

<a id="other-changes-31">

### Other changes

* Improved performance of document export

  Exporting documents takes less time for environments with `Connection optimization` enabled.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="490-2022-09-06">

## 4.9.0 (2022-09-06)

<a id="features-25">

### Features

* Added the Copy feature

  The new feature allows to copy documents with their data by using the REST API method `/api/v5/{environment_id}/documents/{source_document_id}`.\
  More information can be found in the online documentation.

<a id="fixes-28">

### Fixes

* Fixed urls in the management panel

  Links containing details of connecting CKEditor Collaboration Server with the CKEditor 5 point to the latest version of documentation now.

* Fixed urls in returned errors

  Links placed in the error messages, action and explaination field points to the latest REST API endpoints version.

* Fixed support for regular expressions in the editor config

  The regular expression will be now interpreted correctly while using the GHS plugin in the editor bundle.

<a id="other-changes-32">

### Other changes

* Increased size limit for attributes in suggestions and comments

  While using MySQL there was a limit of 64 kB of attributes. It has been changed to 16 MB.\
  The change allows to store more attributes. The value for PostgreSQL stays without changes, 1 MB.

* Increased default ping interval and timeout for socket communication

  The increased value stabilizes the pings mechanism in case of a slow internet connection or when documents in the editor are processed slowly.

* Improved application performance

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="480-2022-07-26">

## 4.8.0 (2022-07-26)

<a id="features-26">

### Features

* Added support for multi-root editor bundles

  Multi-root editor bundles can be now used with the CKEditor Collaboration Server On-Premises.

* Added support for revision resuming

  The revision resuming feature now works for Real Time Collaboration features that use an editor bundle uploaded to the Cloud Services server.

* Added `collaboration.document.exported` webhook event

  The new webhook is triggered whenever a collaboration session has ended and the document data has been successfully exported while the document storage is disabled.

* Added `collaboration.document.export.failed` webhook event

  The new webhook is triggered whenever the system cannot convert document operation after a collaboration session has ended. It works only when the editor bundle is uploaded and the document storage is disabled.

* Added `GET:/collaboration/{document_id}/sockets` REST API method

  The new endpoint returns a list of sockets IDs connected to a document with the provided ID.

* Extended `GET:/collaboration/{document_id}/users` REST API method

  Now the endpoint returns a list of user IDs along with sockets IDs when the `?details=true` query parameter is passed.

<a id="other-changes-33">

### Other changes

* Improved performance

  Parts of the application were reviewed and optimized.\
  As a result, the time needed to fully process requests has been reduced.

* Added server version to Management Panel and Info Page

  The version of the currently running CKEditor Collaboration Server On-Premises is now displayed in the Management Panel and on the Info Page.\
  The version can be now checked by visiting `/panel` and `/` in the browser.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="470-2022-06-14">

## 4.7.0 (2022-06-14)

Legacy REST API versions (v1, v2) have been removed

Due to the changes in the license key validation for Revision History, in order to use the latest version of Collaboration Server On-Premises, please make sure that you provide the correct (latest) license key that you can find in the CKEditor Ecosystem Dashboard.

<a id="features-27">

### Features

* Enabled support for Revision History with editor bundle

  Using the Revision History feature with an editor bundle allows to limit data transferred between CKEditor and the Collaboration Server.

* Introduced REST API v5

  The new version of the REST API contains more consistent requests and response payloads.\
  Version 4 has been deprecated.\
  The documentation for the new version 5 was reviewed and improved by adding missing information and rephrasing\
  parts of the already existing content.

  Version 5 contains one _breaking change_: the `/documents` resource was renamed to `/storage`.

<a id="bug-fixes-5">

### Bug fixes

* Fixed removing comments and suggestions in imported documents

  Previously, importing a document collaboration session with suggestion and comment markers resulted in an incorrect database state. As a result, an attempt to delete such comments or suggestions would not mark them as deleted. Moreover, corresponding webhooks would not be sent. Now, the delete mechanism works correctly.

* Fixed removing documents with active sessions from document storage

  Now, as long as there is an active editing session, an attempt to remove a document from the document storage will result in a 409 error.\
  This prevents breaking a currently edited document. To remove a stored document that has an active editing session,\
  flush it manually or wait for the session to expire.

<a id="other-changes-34">

### Other changes

* Increased maximum size of Web Socket message to 100 MB

  Increasing the limit allows to initialize collaboration sessions with bigger documents.

* Increased maximum length of webhooks URL to 512 characters

* Increased history compression threshold to 15k operations

  It improves the performance of CKEditor 5 and Revision History by limiting auto-save usage.

* Improved webhooks retries mechanism

  The webhooks mechanism has been optimized. The reliability of retries has been also improved.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

* Added support for Revision History licensing

<a id="460-2022-05-05">

## 4.6.0 (2022-05-05)

Legacy REST API versions (v1, v2) of selected endpoints have been removed

The change affects:

* all `/comments` endpoints
* `/documents/{document_id}/users`

<a id="features-28">

### Features

* Added Insights Panel

  The new tool allows to access the logs of CKEditor Collaboration Server On-Premises.\
  The Insights Panel can be found in the Management Panel after selecting an environment.

* Added support for ARM64v8 CPU architecture

  CKEditor Collaboration Server On-Premises can now be run on machines with the ARM64v8 CPU architecture.

<a id="bug-fixes-6">

### Bug fixes

* Fixed adding suggestion to tables

  Previously, adding a suggestion for inserting a row and a suggestion for inserting a column that was crossing\
  the suggested row resulted in inappropriate behavior. Deleting the row suggestion would also delete\
  the column suggestion. Now, suggestions can be applied to tables correctly.

* Fixed `Content-Type` HTTP header in `GET:/collaborations/{document_id}`

  The returned header was changed from `application/json` to `text/html` as the endpoint returns data\
  in the HTML format.

* Fixed user count returned from `/organization-statistics`

  The `/organization-statistics` endpoint used to count the same user from different environments as one user,\
  while the licensing mechanism treats such users as distinct ones. Now, the number returned from the endpoint\
  matches the current license usage.

* Fixed server error while adding comments without `user` via REST API

  The `user` field is now handled correctly and a meaningful error (status 400) will be returned if the provided\
  value is invalid.

<a id="other-changes-35">

### Other changes

* Improved licensing mechanism

  The licensing mechanism is now more stable and reliable. The details about the license are now displayed in\
  the Management Panel. The problem with counting concurrent users has been fixed. Now, the limits are checked\
  immediately upon connection to the server.

* Updated dependencies

  Selected dependencies have been updated to the latest versions, improving performance and security.

<a id="450-2022-03-22">

## 4.5.0 (2022-03-22)

<a id="features-29">

### Features

* Added support for the Real-time Revision History feature

* Added mechanism for soft delete in comments and suggestion

  The removal mechanism for comments and suggestion has been changed. Now the comments and suggestions are marked as removed\
  instead of removing them permanently. More information can be found in our online documentation.\
  Comments and suggestions can be removed permanently via the REST API.

* Added a default page for the root address

  Now the root address of CKEditor Collaboration Server On-Premises shows a page with useful links.\
  Before the change, nothing was displayed.

* Added the `/collaborations/{document_id}/details` endpoint to the REST API

  The new endpoint returns details about the active collaboration session assigned to a given document.\
  It returns the ID of the session, the bundle version which was used to create the session, and the version of the document.\
  In addition, the response contains data about the previous session: its ID and the ID of the last operation.\
  More information can be found in the REST API documentation.

<a id="bug-fixes-7">

### Bug fixes

* Fixed a support for editor bundles containing CKEditor 5 v33.0.0

  It is now possible to upload editor bundles with collaboration plugins in version 33.0.0 without any errors.

* Fixed the `Cannot find suggestion` and `track-changes-user-not-found` errors while using Track Changes feature with tables

  The errors occurred in the CKEditor while removing suggestions related to tables.

<a id="other-changes-36">

### Other changes

* Improved socket ping mechanism

  The ping mechanism has been improved, it provides better stability of a connection and improves compatibility with different browsers.

* Updated dependencies

  Updated selected dependencies to the latest versions, improving performance and security.

* Improved error messages

  Some of the errors contain more detailed messages. Updated errors include explanations and possible actions to solve the problem.

<a id="440-2022-02-08">

## 4.4.0 (2022-02-08)

<a id="features-30">

### Features

* Added support for IPv6

  Connection over IPv6 is now supported for Redis databases.\
  Given an IP address, the server will detect if IPv6 or IPv4 has been used.\
  However, when a domain is provided, IPv6 must be forced by\
  setting the `REDIS_IP_FAMILY=6` environment variable when running the server.\
  More information can be found in our on-line documentation.

<a id="bug-fixes-8">

### Bug fixes

* Reduced the number of emitted `storage.document.saved.failed` events

  The event was emitted multiple times when an editor bundle was missing.

* Fixed removing comments and suggestions from the database when the PostgresSQL is used

  Comments and suggestions were not removed after accepting or rejecting suggestions.\
  As a result, accepted suggestions and related comments were returned by the REST API.\
  Now, after accepting or rejecting a suggestion, the data is removed from the database.\
  The webhook events related to removing and restoring comments or suggestions are also correctly emitted.

<a id="other-changes-37">

### Other changes

* Updated dependencies

  Updated selected dependencies to the latest versions, improving performance and security.

<a id="430-2022-01-18">

## 4.3.0 (2022-01-18)

<a id="features-31">

### Features

* Added a new webhook event `collaboration.document.updated`

  The new event is emitted:

  * every 5000 versions of the document, or
  * every 10 minutes while the document is being edited, or
  * when the last user disconnects from the collaboration session.

* Added the `wait` parameter to `[DELETE] v4/collaborations/:document_id`

  The parameter allows to flush a document synchronously.\
  By default the document is flushed asynchronously.\
  The synchronous request can be useful for cases when documents needs to be saved or when preparing a collaboration session.

* Renamed webhooks

  Currently the names of events indicate whether the event is a real-time collaboration event or a document storage event.\
  Backward compatibility has been kept.

  * `document.user.connected` -> `collaboration.user.connected`
  * `document.user.disconnected` -> `collaboration.user.disconnected`
  * `document.removed` -> `collaboration.document.removed`

<a id="bug-fixes-9">

### Bug fixes

* Fixed the webhook retry mechanism

  The webhook retry mechanism was not working, so failed webhook requests were not sent again.\
  Now it has been fixed and works as expected.\
  Webhook requests that return statuses other than 2xx are resent as configured in the management panel.

* Improved the reconnection mechanism

  The changes introduce an improved reconnection mechanism, included in CKEditor 5 version `31.1.0`, which now handles more reconnection cases.

* Added a `Content-Length` header to webhooks requests

  The header fixes the errors during receiving webhooks request on the Microsoft Azure Cloud Platform.

* Fixed an issue with using both the document storage and the import-export features at the same time

* Fixed the problem with using a database as a storage

<a id="other-changes-38">

### Other changes

* Changed the default collaboration session duration to 24 hours

  It helps to prevent problems during longer disconnections.

  The time can be changed manually by setting the amount of milliseconds in the environment variables:

  * `COLLABORATION_EXPIRATION_TIME_STORAGE` - for environments with the document storage feature enabled
  * `COLLABORATION_EXPIRATION_TIME` - for environments without the document storage feature

* Updated Node.js to version 16

* Updated dependencies

  Updated selected dependencies to the latest versions, improving performance and security.

<a id="420-2021-11-16">

## 4.2.0 (2021-11-16)

<a id="features-32">

### Features

* Added a new method for the Webhooks in Cloud Services Management REST API

  Added a new method `/webhooks/{webhooks_id}/requests/metadata`.\
  The new method fetches webhook’s requests list without requests body.

* Optimized a way of fetching a webhook’s requests in the CKEditor Management Panel

  The webhook’s requests are now fetched using a new, more lightweight method.

<a id="bug-fixes-10">

### Bug fixes

* Fixed race condition in suggestions and comments

  While quick removing and restoring suggestions and comments, a race condition occasionally occurred.

* Fixed memory leak in the Easy Image

  Downloading images from Easy Image could lead to memory leaks.

* Fixed decryption in webhooks requests

  Huge webhook’s request’s payloads stored in a database couldn’t be decrypted.

<a id="other-changes-39">

### Other changes

* Updated dependencies

  Updated selected dependencies to the latest versions - improved the performance and security.\
  From this version on, the Docker Engine 20.10 or higher is recommended.

* Updated base docker image (Alpine Linux) from version 3.12 to 3.14

<a id="410-2021-10-05">

## 4.1.0 (2021-10-05)

<a id="features-33">

### Features

* Add POST method to Suggestions REST API

The method allows to add a suggestion data using REST API.

* Add PUT method to Suggestions REST API

The method allows to update a suggestion data using REST API.

<a id="bug-fixes-11">

### Bug fixes

* Fixed removing collaboration session after expiration time for imported documents without connected users

  The documents which were imported using REST API will now start a collaboration session.\
  Thanks to this, imported documents will be processed even if no user connects to them.

* Fixed a problem with washout colours in PNG files processed using the Easy Image

  The quality for PNG files has been increased; thanks to that the colours in PNG images will stay the same as in the original file.

<a id="other-changes-40">

### Other changes

* Updated dependencies

  Updated selected dependencies to the latest versions - improved the performance and security.

<a id="400-2021-08-24">

## 4.0.0 (2021-08-24)

The internal process of testing new releases has been improved.\
Starting from version 4.0.0, the new testing process will be applied. This allows us to improve the quality and reliability of the following releases.\
This change does not affect the CKEditor OnPremises Collaboration Server behaviour.

<a id="features-34">

### Features

* Increased the maximum length of comments’ content

  The limit of comments contents’ length has been increased to 65000 chars.

<a id="bug-fixes-12">

### Bug fixes

* Fixed a bug related to restoring formatting suggestions

  User will be able to restore formatting suggestions.

* Fixed a bug that causes occasional deadlocks while inserting into the SQL database

  In case of deadlock the insert operation will be retried.

* Fixed a bug related to pending operations

  During document load, the document is saved. It fixes documents after a previous interrupted save.

* Fixed the GET `/organization-statistics` method

  This method returns correct number of users connected to the Collaboration Server.

<a id="other-changes-41">

### Other changes

* Updated dependencies

  Updated selected dependencies to the latest versions - improved the performance and security.

* Added more readable information about API secret to the management panel

  Updated information describing the API secret

<a id="3130-2021-07-05">

## 3.13.0 (2021-07-05)

<a id="features-35">

### Features

* Added metrics logs

  The new logs allow to monitor the performance and stability of the Collaboration Server On-Premises.\
  More information can be found in the online documentation.

* Added a mechanism to prevent accidental disabling of the document storage feature in the Management Panel

  Before disabling the document storage feature in the Management Panel, the user will be asked for confirmation.

* Added the current license information to the Management Panel

  The possibility of checking the current users’ limit and expiration time has been added to the Management Panel.

* Added support for Redis TLS

  Support for TLS connection with Redis databases has been added. More information can be found in our online documentation.

<a id="bug-fixes-13">

### Bug fixes

* Added the `attributes` field to the comment’s webhooks

  The field was missing in the payloads of webhooks related to the `comment.added` and `comment.updated` events.

<a id="other-changes-42">

### Other changes

* Updated dependencies

  Updated a part of the dependencies to the latest versions - improved the performance and security.

<a id="3120-2021-05-31">

## 3.12.0 (2021-05-31)

<a id="features-36">

### Features

* Added support for a TLS connection to PostgreSQL

  Added new configuration to enable connecting to a PostgreSQL database using a TLS connection without passing additional CA. Added an option to establish the connection to the server with an unverified certificate as well.

<a id="bug-fixes-14">

### Bug fixes

* Added protection against loading incomplete document

  Document loading now waits for the completion of processing the most recent save operation. It fixes a problem with loading documents containing incomplete data.

* Removed false-positive log entries about connection timeout

  A closed browser tab or an exceeded user limit no longer result in a `Disconnect a socket. A connection hasn't been authenticated in a period of time` log entry.

* Fixed setting the `created_at` property in comments REST API

  Setting the `created_at` property while creating comments through REST API is no longer ignored.

<a id="other-changes-43">

### Other changes

* Introduced new E2E tests

  New E2E tests have better stability and performance than the previous ones.

<a id="3110-2021-04-28">

## 3.11.0 (2021-04-28)

<a id="features-37">

### Features

* Added a new implementation of Easy Image

  The new implementation of Easy Image focuses on performance improvements.

<a id="bug-fixes-15">

### Bug fixes

* Added a few fixes related to the document storage feature

  Improved stability and reliability of the feature and fixed issue with saving comment markers after compressing already compressed document.

<a id="other-changes-44">

### Other changes

* Increased document data expiration time for documents with enabled document storage feature

  Thanks to this, collaboration sessions for documents that use the Document Storage feature are not removed after 1h and are loaded faster. Additionally, it resolves problems with connecting to non-existing documents - documents removed because of some time of the inactivity - for example, night break.

* Updated dependencies

  Updated a part of the dependencies to the latest versions - improved the performance and security.

<a id="3100-2021-03-31">

## 3.10.0 (2021-03-31)

<a id="features-38">

### Features

* Added REST API endpoint `/v4/environment-statistics` which can be used to check environments statistics

  Currently this endpoint returns number of connected users to the particular environment with division into anonymous and non-anonymous.

* Added sorting option for Webhooks and Webhooks requests view in the Management Panel

  A list of Webhooks and Webhooks requests can be sorted by creation/sent data.

<a id="bug-fixes-16">

### Bug fixes

* Stabilized the collaboration features

  Stabilized the connection optimization and document storage features. Resolved the issue with missing content during document compression.

<a id="other-changes-45">

### Other changes

* Reduced the number of logs

  Stopped logging 4xx status code responses and error stack-traces.

<a id="391-2021-02-22">

## 3.9.1 (2021-02-22)

<a id="bug-fixes-17">

### Bug fixes

* Displayed the proper REST API version in the Management Panel

  The REST API link in the API Configuration section points to the latest version.

* Stabilized the collaboration features

  Stabilized the connection optimization and document storage features. Resolved the issue with missing content during document compression.

* Reduced the number of logs

  Remove non-meaningful logs such as:

  * “Type comments-v2 doesn’t match to the service”
  * “Skip sending changes to documents service”

<a id="390-2021-01-28">

## 3.9.0 (2021-01-28)

<a id="features-39">

### Features

* Added REST endpoint for checking if editor bundle exists

  Added a new REST API endpoint `/v4/editors/{ bundleVersion }/exists` which can be used to check if the editor bundle with the specific `bundleVersion` has been uploaded.

<a id="bug-fixes-18">

### Bug fixes

* Stabilization of collaboration features

  Stabilized document storage and connection optimization features for editors with EasyImage and PasteFromOffice plugins.

<a id="380-2020-12-15">

## 3.8.0 (2020-12-15)

<a id="features-40">

### Features

* Introduced webhooks retries

  The retries system allows receiving webhooks that were unsuccessfully sent.\
  Such a case can occur when the customer application is not able to receive webhooks sent by On-Premises server properly.\
  Webhooks retries configuration has been added to the Management Panel.

* Added document restore feature

  Added new REST API endpoint `/v4/collaborations/{document_id}/restore` which can be used when access to the document has been blocked due to the inability to save new operations in the document.\
  Such situation can only occur when the documents storage is turned on and unexpected error occur caused by custom plugins added with the uploaded editor.

* Added immediate document save in the storage after disconnecting all users

  Previously, to get the final version of the document saved in storage, the collaboration session had to expire (1 hour) or be manually removed (by REST API).\
  Now, when all users disconnect from the document, it is immediately saved in the storage.

<a id="bug-fixes-19">

### Bug fixes

* Fixed errors related to collaboration features

  Errors:

  * `track-changes-adapter-missing-getsuggestion: Adapter not set or is missing 'getSuggestion()' method.`,
  * `invalid-license-key: Invalid license key.`

  that occurred during saving a document in the storage or compressing operations have been fixed.

* Allowed to upload and use editor bundle with EasyImage plugin by collaboration features

  Previously, it was not possible to upload and use the editor that contained `EasyImage` plugin.

<a id="other-changes-46">

### Other changes

* Improved the mechanism of saving document changes in the document storage

  The improvements made allow to save all operations in the document until the operation causing the save error occurs.\
  These changes reduce data loss to a minimum in case of document saving error.

* Improved race-condition mechanism for operations applied to the documents in the collaborative session

* Improved the performance for checking the existence of the editor bundle

* Remove characters limit for attributes in Track Changes feature

  The size limit of objects that can be stored in suggestion attributes (1024 characters) has been removed.

<a id="371-2020-11-02">

## 3.7.1 (2020-11-02)

<a id="bug-fixes-20">

### Bug fixes

* Fixed errors related to collaboration features

  Errors:

  * `split-operation-graveyard-position-invalid: Graveyard position invalid.`,
  * `move-operation-nodes-do-not-exist: The nodes which should be moved do not exist`,
  * `Cannot read property 'is' of undefined`

  that occurred during saving a document in the storage or compressing operations have been fixed.

<a id="other-changes-47">

### Other changes

* Added detailed error about requests restrictions for editor bundle

* Improved stability of collaboration worker by preventing unnecessary retries during failed processing and by skipping requests with empty data.

<a id="370-2020-10-06">

## 3.7.0 (2020-10-06)

<a id="features-41">

### Features

* Added support for CKEditor 5 in version 23.0.0

* Added collaboration documents REST endpoint

  Added new REST endpoint ( GET `/collaborations` ) for getting list of documents ids for the specified environment that are being edited.

* Added flush all documents data REST endpoint

  Added a new REST API method ( DELETE `/collaborations` ) for flushing all documents for the environment (by default, the flush will succeed if there are no connected users to document).

* Added possibility to test editor bundle using document content sent by customer

* Added mechanism to block the collaboration writing when a document can’t be saved in the storage

  Collaboration can be blocked when the document storage is turned on and document save in the storage fails. It prevents from adding new operations by users because there is no sense to store new operations which can’t be applied to the document. When the document is marked as stored not properly, connection to them is blocked too.

<a id="bug-fixes-21">

### Bug fixes

* Improved performance for bigger documents

  Working with large documents could have a negative impact on working with other smaller documents. Now, this problem should not generate an impact on other documents.

* Fixed REST API versioning

  Improved error handling when the endpoint does not exist and improved documentation for endpoints with multiple versions.

* Improved editor bundle validation

  Returned an original error from the browser during editor bundle validation.

<a id="other-changes-48">

### Other changes

* Reduce the number of tests

  The execution of all tests took about 13 minutes but they checked various extreme edge cases, which are tested many times by us. For this reason, we have reduced the number of tests.

  The main components/features of the application are tested by the current set of tests to confirm that the application is working properly.

<a id="362-2020-09-02">

## 3.6.2 (2020-09-02)

<a id="bug-fixes-22">

### Bug fixes

* Added support for using other editors than `ClassicEditor` by collaboration features like: document storage, import/export, and connection optimization.

  Previously, collaboration features could only be used when the uploaded editor bundle based on `ClassicEditor`.\
  Currently, it is possible to use editors like: `InlineEditor`, `BalloonEditor`, `BalloonBlockEditor`, and `DecoupledDocumentEditor` as the basis for the uploaded editor bundle.

* Added support for collaboration plugins.

  Currently, it is possible to upload editor bundle which contains plugins such as: `RealTimeCollaborativeEditing`, `RealTimeCollaborativeComments`, `RealTimeCollaborativeTrackChanges`, `PresenceList` or `Autosave`.

* Allowed to pass SSL certificates to database driver used by collaboration features.

  When the `database` was used as `COLLABORATION_STORAGE_DRIVER`, there was a problem to run the On-Premises server properly.

* Fixed tooltips display in Management Panel.

<a id="other-changes-49">

### Other changes

* Allowed to pass database SSL certificate using `base64` encoded string.

  For some cloud hosting providers like `Azure` or `AWS`, there was a problem with passing database SSL certificate as a one-liner where new lines was represented by a newline character `\n`.\
  Therefore, support for SSL certificates provided in `base64` format has been added.

  Encode certificate to `base64` string using `Node.js` example:

  ```js
  const fs = require( 'fs' );

    const certificate = fs.readFileSync( 'path/to/certificate.pem' );

    console.log( 'base64 encoded certificate:', certificate.toString( 'base64' ) );
  ```

  You can also encode certificate to `base64` format using online tools.

* Improved token validation error messages.

<a id="361-2020-08-19">

## 3.6.1 (2020-08-19)

<a id="bug-fixes-23">

### Bug fixes

* Set `DATABASE_DRIVER` configuration variable as optional with `mysql` as default value.

<a id="360-2020-08-13">

## 3.6.0 (2020-08-13)

Due to the change in the structure of the application file tree, for customers who run applications using Node.js instead of Docker images,\
we highly recommend using the “Very safe” method of upgrading to a new version of On-Premises server.\
See [Upgrading to a new version - very safe](https://ckeditor.com/docs/cs/latest/onpremises/cs-onpremises/installation/nodejs.html#very-safe) for more details.

For customers who run applications using Node.js instead of Docker images, please make sure you installed dependencies for Chrome.\
See [Software prerequisites](https://ckeditor.com/docs/cs/latest/onpremises/cs-onpremises/installation/nodejs.html#software-prerequisites) for more details.

<a id="features-42">

### Features

* Added import and export feature as an alternative to the autosave plugin.

  This feature allows saving and loading the current collaboration data using server to server communication.

* Added documents storage feature as the next alternative to the autosave plugin.

  This feature allows permanently save the collaboration data in the On-Premises server.

* Added operation history compression as optimization for connection to collaboration.

  This feature can be enabled or disabled for the selected environment using Management Panel.

* Added REST API for Track Changes feature.

* Added queues system based on Redis.

  In queues built on Redis approach, events are emitted to the Redis so other On-Premises server instances can receive events.\
  This feature has been added to ensure correct queuing of demanding operations such as document storage or import and export features.

* Improved performance of token validation.

* Improved the performance of user session refreshing.

* Allowed updating names of environments and access keys using Management REST API.

<a id="bug-fixes-24">

### Bug fixes

* Fixed communication protocol used in Management Panel.

  If `APPLICATION_EXTERNAL_ENDPOINT` has been specified then is used for base API address in Management Panel, otherwise, protocol from `x-forwarded-proto` header is used.\
  It fixes `Could not establish connection.` error which occurs when connection to Management Panel has been established using HTTPS protocol.

* Increased time for authentication.

  Fixed `Connection hasn't been authenticated in a period of time` error.\
  Due to different CKEditor usage on client-side sometimes there was a situation where the client-side was not able to send authentication request in a specific period of time because of a lack of resources like CPU.\
  There may also be delays in communicating with the database on server-side.\
  To avoid failing to authenticate, this time has been increased.

* Added token refreshing on reconnecting to collaboration.

  Fixed `Connection hasn't been authenticated in a period of time.` error which happens after the browser has been idle for some time.\
  This fix is available in the new version of the client API library.

* Shortened connect time for documents with huge `initOperations` data.

  This fix is available in the new version of the client API library.

* Fixed `Cannot access '_0x104788' before initialization` error which was thrown when a problem with the connection to the database occurs.

* Introduced comments deletion which were added to the removed suggestion.

* Fixed performance problem with logging large data/buffers.

* Allowed for graceful Redis failover.

* Added reconnect on MySQL failover.

  This is useful especially when the MySQL failover (e.g. Amazon RDS) is based on DNS and the Writer address needs to be resolved again.

* Added error handling for errors that can occur during GIFs upload.

<a id="other-changes-50">

### Other changes

* Added minor UI improvements and fixes for Management Panel.

* Added to Management Panel new view which allows users to manage such features as document storage and history compression.

<a id="350-2020-04-01">

## 3.5.0 (2020-04-01)

<a id="features-43">

### Features

* Added UI improvements to the management panel.

  Changed the misleading green color of buttons to red while prompting for removing. Added spinners to indicate long API requests.

* Added checking of database privileges.

  At start-up, the application checks if it has all the database permissions to eliminate all situations when some scripts cannot be executed due to the lack of permissions which may cause a problem with data inconsistencies and errors.

* Added a database reporter.

  Added the ability to generate reports with the database status. Reports are useful for diagnosing database-related problems. MySQL reports include states of migrations, database schema (tables, columns, and indexes), privileges of the current user and system variables. PostgreSQL reports include only migration states.

  The command to generate the report:

  ```
  docker run \
    --network=docker_default \
    -e DATABASE_DRIVER=mysql \
    -e DATABASE_HOST=mysql-database \
    -e DATABASE_USER=root \
    -e DATABASE_PASSWORD=password \
    docker.cke-cs.com/cs:3.5.0 \
    node ./dist/index.js --database-report > report.md
  ```

<a id="bug-fixes-25">

### Bug fixes

* Disabled rate limiter.

  Disabled rate limiter which in some cases generated the “Too many requests” error.\
  For on-premises installations, rate limiter is not very useful because the number of users is usually known.\
  By default, rate limiter is disabled but it can be set up using these configuration variables:

  * `RATE_LIMITER_LIMIT` - The number of tokens at the beginning and the maximum number of tokens which can be collected.

  * `RATE_LIMITER_RENEW_AMOUNT` - The number of tokens that will be added to the pool every `RATE_LIMITER_RENEW_TIME`.

  * `RATE_LIMITER_RENEW_TIME` - The time of renewing tokens.

  Rate limiter is based on the leaky bucket algorithm and is separate for each user and connection.

* Fixed a problem with connecting anonymous users.

  It is possible for users to connect to the system without a given ID. In this case, every user is treated as anonymous.

* Improved token validation user experience.

  In the event of problems with the token validation, more accurate error information is returned.

* Fixed an internal problem with serializing messages.

  In quite rare situations, there were internal errors related to message serialization.

<a id="other-changes-51">

### Other changes

* Removed unused triggers and columns from the comments table.

<a id="341-2020-02-17">

## 3.4.1 (2020-02-17)

<a id="bug-fixes-26">

### Bug fixes

* Fixed performance.

  Fixed the significant performance decrease from version 3.4.0.

* Improved backward compatibility for JWT tokens that match RFC 7519.

<a id="340-2020-02-13">

## 3.4.0 (2020-02-13)

<a id="features-44">

### Features

* Added support for SSL SQL connections.

  CKEditor Cloud Services now supports secure connections to SQL databases. It is possible to connect to databases using an SSL connection with custom SSL certificates.

* Added support for JWT tokens that match RFC 7519.

  The JWT standard specifies some predefined claims like `aud` (audience), `exp` (expiration time), `sub` (subject) or `iat` (issued at). CKEditor Cloud Services uses `aud` for identifying environments, `iat` for checking if the token has not expired and `sub` for identifying users.

* Simplified REST API for comments (v3).

  Endpoints for REST API are unified. You can now filter comments to get or delete by filters in request query parameters like `document_id` or `thread_id`.

* Changed the URL endpoint in REST API for sessions (v3).

  Changed `/documents/{document_id}/users` to `/collaborations/{document_id}/users`.

* Added improvements to the management panel login view.

<a id="bug-fixes-27">

### Bug fixes

* Fixed a problem with numeric user ID.

  Previously, the user ID had to be specified in the token as a string. This problem was resolved and the user ID can also be a number.

* Improved the mechanism for hiding the access key in the management panel.

* Fixed a bug with sending the restore event on a comment or suggestion creation.

* Updated the UI of the REST API documentation.

<a id="other-changes-52">

### Other changes

* Added support for Python 3.

  Python 2.7 is no longer maintained. Added support for Python 3. This change applies only to applications launched with Node.js, not Docker.

<a id="330-2020-01-15">

## 3.3.0 (2020-01-15)

<a id="features-45">

### Features

* Added support for Node 12.

  CKEditor Cloud Services now works with Node 12, which significantly improved the application performance and security. Image Docker uses Node 12.

* Added support for PostgreSQL database.

  CKEditor Cloud Services On-Premises can work with a MySQL or PostgreSQL database.

* Added support for a few new drivers to store images in different locations.

  Added support for a few drivers to store images in different locations (AWS S3, Azure Blob Storage, file system, MySQL) for Easy Image.

* Introduced REST API v2.

  Changed the endpoint addresses and introduced the new REST API documentation. Merged separated documentation into one OpenAPI definition and into one UI. Replaced Swagger UI with Redoc. Introduced versioning to the REST API documentation.

* Introduced a mechanism to remove data related to a removed environment.

  When the environment is removed, all data related to it is removed from databases.

* Improvements in the dashboard.

  Added a message about generating the API Secret. Added a redirect on a wrong or missing signature. A spinner is now shown in the management panel when resending a webhook request lasts long. Added support for webhook responses without a status.

* Added support for new features from the new version of the JavaScript API.

  Added a mechanism for getting information about users connected to the comments service. Added support for removing a comment thread via the client JavaScript API.

* Encrypted webhook requests history.

  All data related to sent webhook requests is stored in an encrypted form in the database.

<a id="bug-fixes-28">

### Bug fixes

* Improved the performance and stability of the REST API.

* Added cluster connection timeout.

* Mitigated the problem with an anonymous session.

  Improved the mechanism for storing information about users connected to the document.

<a id="other-changes-53">

### Other changes

* Removed the `environments-management` console application.

  All management should be done via the web panel or REST API.

* Stored comment content, email and user data in a binary form.

  The data is stored in a binary form, which has improved performance.

* Changed the pagination mechanism for comments and webhooks REST APIs.

  Introduced the pagination method with a cursor.

<a id="320-2019-10-29">

## 3.2.0 (2019-10-29)

<a id="features-46">

### Features

* Added the `Management Panel` as a replacement for the `Environments Management` console application.

  See [CKEditor Cloud Services Management Panel](https://ckeditor.com/docs/cs/latest/onpremises/management.html).

  The `Environments Management` console application is deprecated and will be removed in the next version.

* Added the Webhooks feature.

  Webhooks resemble a notification mechanism that can be used to build integrations with CKEditor Cloud Services.

  See [CKEditor Cloud Services Webhooks feature](https://ckeditor.com/docs/cs/latest/onpremises/features/webhooks.html).

* Added REST APIs.

  CKEditor Cloud Services provides full-featured Restful APIs that you can use to create a server-to-server integration.

  See [CKEditor Cloud Services Restful APIs feature](https://ckeditor.com/docs/cs/latest/onpremises/features/apis.html).

* Added an API for CKEditor Cloud Services management (Environments and Webhooks).

  See [Cloud Services Management REST API](https://ckeditor.com/docs/cs/latest/onpremises/management.html).

* The Comments and Suggestions data is now removed permanently when a collaboration session expired.

* The Users and Comments data is now removed permanently during the Environment deletion.

<a id="bug-fixes-29">

### Bug fixes

* Fixed the number validation message for the received data.

<a id="other-changes-54">

### Other changes

* Reduced the number of libraries installed required to run CKEditor Cloud Services.

* Improved the data security by adding an initial vector to encrypted data.

* Unified the API request signature.

  See [Creating an environment in Node.js](../../examples/on-premises/creating-environment-nodejs.md#example).

* Removed the README.md file from the package.

  From now, the documentation will be available on [CKEditor Ecosystem Documentation - On-Premises](../index.md).

<a id="312-2019-09-02">

## 3.1.2 (2019-09-02)

<a id="features-47">

### Features

* Added features which are available in the new version of the client API library.

  Every operation has a metadata object that contains additional information about an operation like information about its author or type.

* Add JWT Token validation.

  Added the token size and token user validation. A more detailed error about token validation failure is now returned. Max token payload size is 2048 bytes. User payload validation rules:

  ```
  id    - required (minLength:1, maxLength: 96),
  name  - optional (minLength:1, maxLength: 100),
  email - optional (minLength:3, maxLength: 480),
  ```

<a id="bug-fixes-30">

### Bug fixes

* Fixed the security E2E tests run from a remote machine.

* Fixed the duplicated entry error in track changes.

* Fixed an error with re-adding a comment with the same ID.

<a id="other-changes-55">

### Other changes

* Reduced the number of libraries installed required to run CKEditor Cloud Services.

* Add documentation about Docker hardware requirements to README.md.

* Added the expiration time to encryption keys cache.

<a id="311-2019-08-01">

## 3.1.1 (2019-08-01)

<a id="bug-fixes-31">

### Bug fixes

* Set the UTC timezone in the database driver configuration.

<a id="other-changes-56">

### Other changes

* Added the `COLLABORATION_EXPIRATION_TIME` variable to the application configuration to allow changing the time after which the document will be deleted when the last user disconnects.

<a id="310-2019-07-30">

## 3.1.0 (2019-07-30)

<a id="features-48">

### Features

* Reduced the number of active SQL connections used by the CKEditor Cloud Services application to a single pool of connections.

* Optimized database indices.

  Improved the performance of queries to the SQL database by optimizing table indices after queries execution plan analysis.

* Add the `/health` endpoint to the CKEditor Cloud Services application.

  The `/health` endpoint can be used by a load balancer to discover the availability of your application instances.

* Add input parameters validation.

  Input parameters in a request such as `environmentId`, `userId`, `userEmail`, `sessionId`, `socketId`, `apiVersion`, `documentId` etc. are now validated.

* Added the `application/json` content type as the default header of the HTTP responses.

* Improved the security of the document comments management.

* Added features which will be available with a new version of the client API library.

  The new features will include the possibility to initialize a document as a reader or a commentator as well as will let you assign `authorId` to every document operation made in CKEditor Cloud Services.

<a id="bug-fixes-32">

### Bug fixes

* Fixed errors that occured if a user was disconnected when a document operation was being processed.

* Improved the stability of the event emitting system.

<a id="other-changes-57">

### Other changes

* Increased the possible length of `userId` to 96.

* Deleted files that allow for building the Docker image manually.

  Since our Docker images distribution system is ready, we do not recommend to build Docker images manually.

<a id="300-2019-06-28">

## 3.0.0 (2019-06-28)

<a id="features-49">

### Features

* Added support for Redis Cluster.

  Increased the ability to scale the application. Added the `REDIS_CLUSTER_NODES` variable to configure the application to use Redis Cluster. See the application configuration or [Docker container environment variables](https://ckeditor.com/docs/cs/latest/onpremises/cs-onpremises/installation/docker.html#docker-container-environment-variables).

  An example of the `REDIS_CLUSTER_NODES` variable:

  ```
  [
    {
      "host": "127.0.0.1",
      "port": 7000,
      "password": "" // optional
    }
  ]
  ```

* Added the `MYSQL_PORT` variable to change the default port for MySQL.

* Introduced a new logging system to improve the readability and utility of logs.

  Unified the logs format and introduced a `traceId` to add the possibility to aggregate logs for a specific situation. Improved the performance of the logging system.

<a id="bug-fixes-33">

### Bug fixes

* Fixed token validation.

  Added a clock tolerance (60 seconds) when checking the creation date of the token. This problem occured when a token was created on a server with an unsynchronized server date.

* Allowed the resizing of images above their original dimensions in Easy Image.

* The EXIF metadata rotation is no longer ignored by Easy Image.

<a id="other-changes-58">

### Other changes

* Added the possibility to change the protocol to HTTPS in links returned for an uploaded file.

  If the HTTPS protocol is used for uploading and if there is no possibility to configure a load balancer to forward the `X-Forwarded-Proto` and `Host` headers, the application returns URLs with an incorrect protocol.

  Add `APPLICATION_EXTERNAL_ENDPOINT` to the application configuration to force using the HTTPS protocol in links returned for an uploaded file. See [SSL communication](../ckbox-onpremises/ssl.md).

* Improved error handling.

  Unified the structure of errors. At this moment, every error has the following fields: `statusCode`, `message`, `data` and `traceId`.

* Optimized the data management algorithm in Redis by replacing `Redis Keyspace Notifications` to a custom implementation.

  The `Redis Keyspace Notifications` feature uses some CPU power which has a huge impact on the application when the number of connected users increases. Also, this solution is not reliable, because it is vulnerable on server restarts.

  At this moment a new, more reliable solution based on a custom implementation of Redis queues was introduced to the application. This solution does not require the `Redis Keyspace Notifications` mechanism.

* Added a cache for Redis scripts.

  Used loaded scripts instead of sending Redis scripts for every operation.

<a id="breaking-changes">

### BREAKING CHANGES

* Added the possibility to manage the application from a remote host.

  Added `APPLICATION_ENDPOINT`, removed `CS_CONFIG_PATH` and removed `APPLICATION_HTTP_PORT `variables in `Environments Management`. See [Environments Management](https://ckeditor.com/docs/cs/latest/guides/environments-management.html).

  The current command to run the `Environments Management`:

  ```bash
  APPLICATION_ENDPOINT=[your_app_endpoint] ENVIRONMENTS_MANAGEMENT_SECRET_KEY=[your_env_management_secret_key] node app.js
  ```

* Added the possibility to launch tests for the application from a remote host.

  Added `APPLICATION_ENDPOINT `and removed `APPLICATION_HTTP_PORT` variables. See [Testing the application](testing/overview.md).

  The current command to run tests:

  ```bash
  APPLICATION_ENDPOINT=[your_app_endpoint] ENVIRONMENTS_MANAGEMENT_SECRET_KEY=[your_env_management_secret_key] CS_ENV_ID=[environmentId] CS_SECRET_KEY=[secretKey] npm run test
  ```

* Removed support for `@ckeditor/ckeditor5-collaboration` version `12.0.1` or older.

---

Full index of the Cloud Services documentation: [llms.txt](../../../llms.txt)
