Release highlights
We are happy to announce the release of CKEditor 5 v33.0.0.
This release introduces the following new features:
- A new, completely redesigned reconversion system
- Support for handling the
<style>
element in the General HTML Support feature - DLL-compatible package builds for collaboration features
- A solution for how to downcast a table to
table>caption
- Real-time collaboration support in revision history
There were also a few bug fixes:
- Removing complex emojis now work as expected
- Preparing DLL package builds in the development mode (the
--dev
flag) no longer ends with an error - Clicking content that has a comment does not cause content data change (resulting with extra autosave)
- The
<CKEditorContext>
React component now destroys properly
Read more in: https://ckeditor.com/blog/ckeditor-5-v33.0.0-with-improved-conversion-system-and-dll-builds-for-collaboration-features/
MAJOR BREAKING CHANGES ℹ️
- engine: Removed the
Differ#refreshItem()
method from the public API. Replaced byEditingController#reconvertItem()
(see #10659). - engine: The
DowncastDispatcher
will throw an error if any of the model items were not consumed while converting. Read theconversion-model-consumable-not-consumed
error documentation for more information. - engine: The
DowncastDispatcher#conversionApi
property is no longer available. The instances ofDowncastConversionApi
are created at the start of conversion. - engine: Support for the
triggerBy
option for downcast helpers was removed and replaced with the newelementToStructure()
options. - list: The
ListEditing
,ListUI
,ListStyleEditing
,ListStyleUI
,TodoListEditing
,TodoListUI
plugins were moved to their dedicated subdirectories (list
,liststyle
,todolist
).
MINOR BREAKING CHANGES ℹ️
- image: Image caption utilities were converted to the
ImageCaptionUtils
plugin. - table: The downcast converters of the table feature were rewritten with the use of
elementToStructure()
and the re-conversion mechanism. See #10502. - table: The table selection utilities were to the
TableUtils
plugin. config.initialData
will now always be set, even if it is not passed in the editor config.
Features
- engine: The
DowncastWriter#createContainerElement()
should accept a list of children so that bigger view structures can be created in one call. Closes #10714. (commit) - engine: The
elementToElement()
downcast helper will log a console warning if multiple elements have been created. Closes #10610. (commit) - engine: The
DowncastDispatcher
will throw an error if any of the model items were not consumed while converting. Closes #10377. (commit) - engine: Introducing
convertItem()
,convertChildren()
andconvertAttributes()
in the downcast conversion API interface. (commit) - engine: Added support for reconversion in the
DowncastHelpers#elementToElement()
downcast helper. Closes #10359. (commit) - engine: Added the
DowncastHelpers#elementToStructure()
downcast helper with reconversion support. Closes #10358. (commit) - engine: It is now possible to trigger a nested conversion while downcasting an element. (commit)
- engine: The
DeleteCommand
changed to delete the whole multi-character emoji at once. Closes #6504. (commit) - engine: Introduced
Marker#getData()
. (commit) - html-support: Added the
<style>
element support in General HTML Support feature. Closes #11104. (commit) - table: Introduced the
PlainTableOutput
plugin to override the defaultfigure>caption
markup in the data pipeline (it outputs the table astable>caption
). Closes: #10892. (commit)
Bug fixes
- engine: Setting a marker to the same range it was will no longer trigger the
change:data
event. This will prevent unnecessary autosave callbacks. Closes #9901. (commit) - html-support: Prevent the removal of the
<script>
and<style>
elements when they are the only content in the editor. Closes #11247. (commit) - image: Always create new instances of the default options for the
ImageStyle
plugin. Closes #11328. (commit) - table: Prevent the plain table output converter from interfering with other features' caption converters. Closes #11394. (commit)
- Fixed the "Unknown option --dev" error when building DLL files in the development mode enabled. Closes #11170. (commit)
Other changes
- engine: Implemented the
EditingController#reconvertMarker()
method to be used instead ofWriter#updateMarker()
for marker reconversion purposes. Implemented theEditingController#reconvertItem()
method to replaceDiffer#refreshItem()
. Closes #10659. (commit) - engine: The attribute and child nodes conversion events are fired by the lowest priority handler for the insert event instead of the
DowncastDispatcher
itself. Closes #10376. (commit) - engine: Events are fired by the
DowncastDispatcher
even if they were previously consumed. It is the conversion handler's responsibility to check if it can be consumed or if it was already consumed by other converters. (commit) - engine: The
DowncastDispatcher#convert()
method was introduced as a replacement to the previously usedconvertInsert()
. The new method not only handles the nodes conversion but also the markers. (commit) - engine: The
<style>
element will not interfere with the editing experience. See #11104. (commit) - font: Moved the utils functions to plugins to make them available in DLLs. (commit)
- list: The
ckeditor5-list
package was restructured into subdirectories. Closes #10811. (commit) - list: The downcast conversion should consume the downcasted attributes. (commit)
- table: Table downcast conversion was migrated to the
elementToStructure()
downcast helper. Closes #10502. (commit) - Updated translations. (commit)
Editor.create()
will now setconfig.initialData
value based on the first parameter, ifinitialData
has not been set in the editor config. As a result, plugins can now easily read and modify the editor initial data. (commit)
Released packages
Check out the Versioning policy guide for more information.
Major releases (contain major breaking changes):
Minor releases (contain minor breaking changes):
Releases containing new features:
Other releases:
Released packages (summary)