npm ckeditor5 37.0.0

latest releases: 0.0.0-nightly-20241114.0, 0.0.0-nightly-20241113.0, 0.0.0-nightly-20241112.0...
19 months ago

Release highlights

We are excited to announce that CKEditor 5 has been completely migrated to TypeScript, making v37.0.0 the first major release with full TypeScript support. This migration has brought numerous improvements, including better code organization and enhanced stability:

  • Full TypeScript support: CKEditor now supports TypeScript in all its packages, making it easier for developers to write type-safe code and provide better code completion and error checking in IDEs.
  • Improved code quality: The migration to TypeScript has allowed us to improve the overall code quality of CKEditor, resulting in better stability and performance.
  • Better documentation: With TypeScript, we have been able to provide comprehensive and accurate type definitions for all the components in CKEditor, making it easier for developers to understand and use the API.
  • Enhanced developer experience: TypeScript provides better tooling support, including code completion and error checking, which improves the overall developer experience.

Feel free to check our documentation to find out more about the Using CKEditor 5 with a TypeScript setup and read the migration guide.

We believe this release will be a significant milestone for CKEditor 5 and will provide a better development experience for our users. Please try it out and let us know your feedback by leaving a comment in this issue.

Comments archive

We are excited to introduce the Comments Archive feature. It provides a way to archive comments that are no longer relevant, reducing clutter and making it easier to focus on the most important feedback. Users can access the archive from the toolbar and use the comments archive dropdown to view and restore archived comments if necessary. This new feature will help simplify the feedback management process for our users.

Multi-root editor

In this release, we added official support for multi-root editor type and a new multi-root editor build. Additionally, we bring some fundamental improvements that make the multi-root editor more flexible and useful!

  • Add and detach document roots. The multi-root editor will allow you to add or remove editing fields in your application in a dynamic fashion (i.e. after the editor was initialised), without the need to create additional editor instances.
  • The multi-root editor will allow you to use root attributes to store additional metadata related to roots (editable fields). You can change these attributes and obtain them when you save the document data. Finally, you can react to these changes to alter how your application looks or behaves. Root attributes are a tool that will help you customize the editing experience further according to your needs. To take advantage of root attributes, you will need to provide a custom feature. As of now, there are no official plugins that would require saving and using the attributes of the root.

The multi-root editor is still a project in progress!

While the new predefined build is readily available, several features are not yet supported in the multi-root editor as of this release. These include: revision history, pagination, PDF/Word export, table resize, word count, HTML comments, full-page editing, title, mini-map, and the Cloud Services editor bundle. We will work on bringing support for these features in upcoming releases.

Other than that we look forward to sharing with you guides that will better explain how you can use these new improvements!

Tables

We expanded the General HTM Support feature with support for the <colgroup>’s and <col>’s attributes. We significantly refactored how these HTML elements are handled by the editor. They are now legit elements in the model instead of being kept as a <table> attribute.

MAJOR BREAKING CHANGES ℹ️

  • Upgraded the minimal versions of Node.js to 16.0.0 due to the end of LTS.

MINOR BREAKING CHANGES ℹ️

  • table: The table columns' widths are stored as model elements instead of a model element attribute. See #11479.
  • The @ckeditor/ckeditor5-watchdog package is no longer available as a standalone DLL build. It is now included in the main ckeditor5-dll.js build. See #13707.

Features

  • build-multi-root: Introduced a new editor build featuring the multi-root editor. (commit)
  • comments: Introduced comments archive. It is now possible to resolve a comment thread instead of removing it. Resolved comment threads can be reviewed in the comments archive and can be re-opened if the commented content is still available in the editor.
  • comments: Introduced comment:modify_all permission that will allow the user to edit or remove all comments.
  • engine: Introduced model.Writer#addRoot() and model.Writer#detachRoot(). Model roots can now be dynamically added to or detached from the document. All content gets removed from a detached root and new content cannot be inserted as long as the root is detached. Closes #13388. (commit)
  • engine: Introduced Differ.getChangedRoots() which returns the roots added or detached since last the differ reset. Differ#isEmpty and Differ#hasDataChanges() will return true if a root was added or detached. (commit)
  • mention: Limiting the dropdown on the singular feed level should now be possible. Closes #13504. (commit)
  • multi-root-editor: Introduced the multi-root editor type that allows defining multiple editable areas handled by a single editor instance. Closes #11493. (commit)
  • real-time-collaboration: Added support for custom path prefixes in WebSocket URLs. Any path proceeding the required /ws part in the WebSocket URL is now preserved.

Bug fixes

  • build-*: Typings from the CKEditor 5 builds contain types of loaded plugins. Closes #13676. (commit)
  • clipboard: Dragging images in the editor should not lag in Firefox. Closes #13366. (commit)
  • engine: Dragging images in the editor should not lag in Firefox. Closes #13366. (commit)
  • engine: The Renderer should try to update existing DOM text nodes (instead of replacing them completely) so that external tools should not get lost if the watched DOM text node is removed and replaced with another one. Closes #13051. (commit)
  • engine: The elementToStructure() downcast helper should not skip attribute changes that happened with the modification of the children list. (commit)
  • html-support: Attributes on the <colgroup>, and <col> elements should be preserved in the data. Closes #11479. (commit)
  • html-support: Fixed description lists with name-value groups wrapped in div elements when upcasting using the General HTML Support feature. Closes #12240. (commit)
  • image: Fixed the image resize handle displaying NaN in some scenarios. Closes #10776. (commit)
  • link: The link text should update along with the URL if they were the same in the first place. Closes #12588. (commit)
  • mention: Mentions reexport the MentionFeed and ItemRenderer types. Closes #13705. (commit)
  • mention: Make a text property optional in the MentionFeedObjectItem type. Closes #13550. (commit)
  • mention: Mentions panel should be positioned left to the caret in editors with a right–to–left UI language. Closes #13459. (commit)
  • paste-from-office: Fixed handling of bold text in RTL lists pasted from MS Word. Closes #13711. (commit)
  • table: Changed detection on heading rows and columns on table upcast. Closes #3172. (commit)
  • track-changes: Suggestion annotation discard button state is now bound with the DiscardSuggestionCommand state, instead of AcceptSuggestionCommand.
  • track-changes: Fixed error thrown when a list item was created using autoformatting in the track changes mode.
  • track-changes: List style and document list style iss now applied directly to a non-list element when used in the track changes mode.

Other changes

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

Don't miss a new ckeditor5 release

NewReleases is sending notifications on new releases.