guideCKEditor Collaboration Server On-Premises

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