guideCKEditor Collaboration Server On-Premises

# 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.

# 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.

# 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.

# 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.

# 4.15.1 (2023-08-22)

# 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.

# 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.

# 4.15.0 (2023-07-11)

# 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.

# 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.

# 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.

# 4.14.0 (2023-05-30)

# 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.

# 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.

# Other changes

  • Updated dependencies

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

# 4.13.0 (2023-04-18)

# 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.

# 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.

# Other changes

  • Updated dependencies

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

# 4.12.1 (2023-02-28)

# Fixes

  • Fixed minor UI bugs in the Management Panel

# Other changes

  • Updated dependencies

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

# 4.12.0 (2023-01-24)

# 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.

# 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

# 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.

# 4.11.0 (2022-11-29)

# 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

# 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.

# Other changes

  • Updated dependencies

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

# 4.10.1 (2022-11-07)

# Other changes

  • Updated dependencies

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

# 4.10.0 (2022-10-18)

# 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.

# 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.

# 4.9.0 (2022-09-06)

# 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.

# 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.

# 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.

# 4.8.0 (2022-07-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.

# 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.

# 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.

# 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.

# 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.

# 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

# 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

# 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.

# 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.

# 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.

# 4.5.0 (2022-03-22)

# 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.

# 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.

# 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.

# 4.4.0 (2022-02-08)

# 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.

# 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.

# Other changes

  • Updated dependencies

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

# 4.3.0 (2022-01-18)

# 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

# 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

# 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.

# 4.2.0 (2021-11-16)

# 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.

# 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.

# 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

# 4.1.0 (2021-10-05)

# 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.

# 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.

# Other changes

  • Updated dependencies

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

# 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.

# Features

  • Increased the maximum length of comments’ content

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

# 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.

# 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

# 3.13.0 (2021-07-05)

# 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.

# 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.

# Other changes

  • Updated dependencies

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

# 3.12.0 (2021-05-31)

# 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.

# 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.

# Other changes

  • Introduced new E2E tests

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

# 3.11.0 (2021-04-28)

# Features

  • Added a new implementation of Easy Image

    The new implementation of Easy Image focuses on performance improvements.

# 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.

# 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.

# 3.10.0 (2021-03-31)

# 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.

# Bug fixes

  • Stabilized the collaboration features

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

# Other changes

  • Reduced the number of logs

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

# 3.9.1 (2021-02-22)

# 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”

# 3.9.0 (2021-01-28)

# 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.

# Bug fixes

  • Stabilization of collaboration features

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

# 3.8.0 (2020-12-15)

# 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.

# 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.

# 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.

# 3.7.1 (2020-11-02)

# 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.

# 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.

# 3.7.0 (2020-10-06)

# 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.

# 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.

# 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.

# 3.6.2 (2020-09-02)

# 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.

# 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:

      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.

# 3.6.1 (2020-08-19)

# Bug fixes

  • Set DATABASE_DRIVER configuration variable as optional with mysql as default value.

# 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 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 for more details.

# 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.

# 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.

# 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.

# 3.5.0 (2020-04-01)

# 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
    

# 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.

# Other changes

  • Removed unused triggers and columns from the comments table.

# 3.4.1 (2020-02-17)

# Bug fixes

  • Fixed performance.

    Fixed the significant performance decrease from version 3.4.0.

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

# 3.4.0 (2020-02-13)

# 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.

# 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.

# 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.

# 3.3.0 (2020-01-15)

# 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.

# 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.

# 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.

# 3.2.0 (2019-10-29)

# Features

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

    See CKEditor Cloud Services Management Panel.

    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.

  • 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.

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

    See Cloud Services Management REST API.

  • 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.

# Bug fixes

  • Fixed the number validation message for the received data.

# Other changes

# 3.1.2 (2019-09-02)

# 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),
    

# 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.

# 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.

# 3.1.1 (2019-08-01)

# Bug fixes

  • Set the UTC timezone in the database driver configuration.

# 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.

# 3.1.0 (2019-07-30)

# 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.

# 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.

# 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.

# 3.0.0 (2019-06-28)

# 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.

    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.

# 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.

# 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.

  • 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.

# 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.

    The current command to run the Environments Management:

    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.

    The current command to run tests:

     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.