Skip to content

v34.0.0

Compare
Choose a tag to compare
@pomek pomek released this 12 Apr 08:45
· 13267 commits to master since this release

Release highlights

We are happy to announce the release of CKEditor 5 v34.0.0.

This release introduces the following new features:

There were also a few bug fixes:

Read more in: https://ckeditor.com/blog/ckeditor-5-v34.0.0-with-redesigned-lists-new-styles-implementation-and-extended-dll-builds/

Please refer to the Migration to v34.x guide to learn more about these changes.

MAJOR BREAKING CHANGES ℹ️

  • The Editor#isReadOnly property is now not editable directly. Starting this release, the property is controlled by Editor#enableReadOnlyMode( lockId ) and Editor#disableReadOnlyMode( lockId ), which allow changing the Editor#isReadOnly state by more than one feature without collisions. See the migration guide to learn more.

MINOR BREAKING CHANGES ℹ️

  • engine: The isAllowedInsideAttributeElement option has been removed, so the AttributeElement elements can wrap any view element (according to positions). Make sure that you are not wrapping any of the ContainerElement elements by accident by not checking the target in the converter. These would previously get wrapped by the AttributeElement element which would immediately be removed by the ContainerElement element within it so there would be no visible effect.
  • engine: The handling of Tab and Shift+Tab keystrokes have been switched to the 'tab' view document event across the project. If your integration uses KeystrokeHandler for Tab key handling, we recommend you migrate to the 'tab' event to avoid unpredicted errors.
  • engine: If your integration uses the Model#insertContent() and findOptimalInsertionRange() methods to insert widgets into the content, we recommend you migrate your code to the Model#insertObject() method for best results. This is particularly relevant for compatibility with the document lists feature (see #11198).
  • html-support: The $htmlSection, $htmlObjectBlock, and $htmlObjectInline element types are no longer available for custom elements registered via theregisterBlockElement() method to inherit from. Please use $container, $blockObject, and $inlineObject instead (see #11197).

Features

  • core: Introduced the lock mechanism for the Editor#isReadOnly property. The read-only mode can now be separately enabled and disabled by multiple features, which allow for proper control without conflicts between features. Closes #10496. (commit)
  • core: MultiCommand now allows setting the priority (the order) of registered subcommands. Closes #11083. (commit)
  • engine: Added the new Model#insertObject() method for inserting elements defined as objects by model schema (see #11198). (commit)
  • engine: Introduced the inheritable $container, $blockObject, and $inlineObject element types in the model Schema (see #11197). (commit)
  • engine: Introduced the TabObserver observer that allows listening to pressing down the Tab key in the specified context. (commit)
  • engine: Added the new Schema#getAttributesWithProperty() method that retrieves attributes from a node which has a given property (see #11198). (commit)
  • engine: Added the new Schema#setAllowedAttributes() method that validates whether attributes are allowed on a given element before setting them (see #11198). (commit)
  • html-support: Changes to GHS model attributes will be reflected in the editing view (see #5700). (commit)
  • html-support: Added support for document list in the GeneralHtmlSupport feature. Closes #11454, #11359, #11358. (commit)
  • list: Introducing the document list feature (multiple blocks per list item). Closes #2973, #10812. (commit)
  • list: Introducing the document list properties feature (list styles, start index, reversed list). Closes #11065. (commit)
  • paragraph: Added an optional options.attributes parameter to the InsertParagraph command that allows setting attributes on a created paragraph (see #11198). (commit)
  • style: Implemented the configurable style feature with the style UI dropdown. Closes #5700. (commit)
  • theme-lark: Implemented a .ck-reset_all-excluded CSS class that excludes certain elements from CSS reset. Closes #11451. (commit)

Bug fixes

  • engine: Marker changes sometimes did not trigger change:data event which resulted in errors in features using markers (for example, annotations not showing up in the sidebar). (commit)
  • html-support: GHS should not convert already consumed inline elements (e.g. handled by other editor features). Closes #11447. (commit)
  • html-support: Prevent the TypeError error in the mergeViewElementAttributes() function. Closes #10657, #11450, #11477. (commit)
  • html-support: Skip inline image upcast conversion inside not supported element. Closes #10703. (commit)
  • image: The image upcast converter should consume the [src] attribute. Closes #11530. (commit)
  • link: The link decorators should be converted on block images only once (should not wrap block image with an additional link). (commit)
  • list: Soft enter (Shift+Enter) is no longer captured by the document list enter key listener, allowing to insert soft breaks in empty list items. Closes #11539. (commit)
  • list: The view list split converter should not fire if the change was already consumed. Closes #11490. (commit)
  • list: List properties should remain the same after a paragraph following a list is toggled into a list item. Closes #11408. (commit)
  • pagination: Fixed updating pagination lines after resizing the editing root ancestor.
  • revision-history: Editor will not get stuck if the revision diff data could not be loaded due to an error when opening or using the revision viewer.

Other changes

  • code-block: The handling of Tab and Shift+Tab keystrokes switched to the 'tab' view document event and now respects the event context. (commit)
  • core: The Editor#isReadOnly property is now marked as read-only. (commit)
  • engine: The Differ change entries for insert and remove types are extended with a map of attributes that were set while inserting an element or that belonged to an element that got removed. (commit)
  • engine: The DowncastHelpers are passing an additional parameter to the creator functions (the data that provides more context to the element creator callback). (commit)
  • engine: The isAllowedInsideAttributeElement option was removed, from now on AttributeElements are allowed to wrap any view element. (commit)
  • engine: The ConversionApi provided by the UpcastDispatcher was extended by an additional keepEmptyElement() method that marks an element that was created during splitting a model element that should not get removed on conversion even if it is empty. (commit)
  • engine: Improved model.TreeWalker#next() efficiency. See ckeditor/ckeditor5#11463. (commit)
  • html-support: Updated default schema definitions for various elements taking advantage of the $container, $blockObject, and $inlineObject elements in model schema (see #11197). (commit)
  • media-embed: Added the optional findOptimalPosition parameter to the insertMedia() helper that allows for inserting media model element without breaking the content (see #11198). (commit)
  • revision-history: Improved revision history performance for large documents in the following areas: editor initialization time, revision saving time and revision comparison time.
  • revision-history: The @ckeditor/ckeditor5-revision-history package exposes the DLL build.
  • table: Exports PlainTableOutput plugin from the table package. Closes #11516. (commit)
  • watchdog: Improved performance of the getSubNodes() utility of Watchdog. (commit)
  • Updated translations. (commit, commit)
  • CKEditor 5 uses PostCSS@8 now. Closes #11460. (commit)

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: