We are happy to announce the release of CKEditor 5 v29.0.0.
This release introduces several new features:
- Inline images - support multiple images in a single block
- The Find and replace feature
- The Source editing feature for classic editor
- Remembering the language when creating a new code block
- The General HTML Support feature
There were also a few bug fixes:
- The remove format feature will not reset the image size anymore
- Nested marker highlight will not break the mouse text selection
MAJOR BREAKING CHANGES
- build-decoupled-document: The official preconfigured decoupled document build now ships with the
ImageResizeplugin enabled by default. Learn more about it in the Migration to v.28.x guide.
- image: The
Imageplugin works as a glue for both the
ImageInlinefeatures now (previously it only supported block images). If you do not want inline images to be allowed, consider replacing the
ImageBlockin your editor configuration. Otherwise, all images without the
<figure>wrapper will be loaded into the editor content as inline images, which in some cases may affect content semantics and styling. Check the udpated image installation guide for more details about this change.
- image: The
ImageEditingplugin is no longer standalone, as the majority of its logic was extracted to the
ImageInlineEditingplugins. The logic remaining in the
ImageEditingis common for both
- image: The image caption is no longer displayed automatically when the user selects a block image. Instead, its presence is controlled using the
'toggleImageCaption'toolbar button and a
ToggleImageCaptionCommandfor better integration with the revamped image styles system.
- image: The API of the image features has changed, please make sure to update your integrations.
- image: The linked image indicator (icon) rendered as a
.ck-link-image_iconCSS class has been removed. To alter the look of the indicator (including the icon), please use the
figure.image > a::after(for linked block images) and
a span.image-inline::after(for linked inline images) CSS selectors instead.
- image: The
modelToViewAttributeConverter()conversion helpers now require the
- table: The in-cell pseudo-paragraph used for data tables is no longer styled using the inline
styleattribute but a
.ck-table-bogus-paragraphCSS class instead.
- Several plugins are not loaded automatically as dependencies of other plugins anymore. From now on, they need to be provided by the editor creator manually (via the
config.pluginsconfiguration option). Learn more about it in the Migration to v.29.0.0 guide. This list includes:
- Several functions are no longer a part of the public API. This list includes:
- Several functions or constants have been renamed. The list of changes includes:
getCaptionFromImage()helper is now available as
matchImageCaption()helper is now available as
defaultIconsare now available as
defaultStylesare now available as
findOptimalInsertionPosition()helper is now
findOptimalInsertionRange()and returns a model range. Also, instead of searching for a position next to the currently selected block, it will now attempt to replace that block (see #9102)
isImageAllowed()helper is now available as
- Some helpers from the image utils module (
@ckeditor/ckeditor5-image/src/image/utils.js) have been moved to the
ImageUtilsplugin. The helpers are still accessible via the
editor.plugins.get( 'ImageUtils' )namespace, for instance,
editor.plugins.get( 'ImageUtils' ).insertImage( ... )
- The API of several functions or modules has been changed. Refer to the documentation to learn more. This list of changes includes:
- The default user permissions have been changed. Now, by default, it is possible to remove other users' comment threads. This applies to non-real-time editing integrations and to real-time editing integrations using the writer role. This behavior can be changed using the
Permissionsplugin API (for non-real-time editing integrations) or by setting permissions for a given user in the user token (for integrations using Cloud Services).
- code-block: When inserting a new code block, instead of applying the default language (the first in the dropdown view), the feature now re-uses the language of the last inserted code block. Closes #8722. (commit)
- collaboration-core: Introduced the
Permissionsplugin. Now it is possible to manage the editor's level of access using permissions. See the user roles and permissions guide.
- comments: Introduced the
- comments: Introduced the
CommentThread#isRemovableproperty which is related to current permissions. By default, comment threads can now be removed by any user.
- engine: Improved engine view matcher with new pattern syntax allowing to match attribute keys using regular expressions. Unified the pattern syntax between attributes, styles, and classes. Closes #9872. (commit)
- engine: Added the special
expandoption to the
Element.getStyleNames()methods allowing to expand shorthand style properties. (commit)
- engine: Introduced the
editor.data.set()which can be used to preserve the undo/redo steps and to add an additional item to the undo stack. Note that it will still replace the whole content and should not be used with real-time collaboration. (commit)
- html-support: Introduced the General HTML Support feature. Closes #9970. (commit)
- image: Introduced support for inline images in editor content. Available out–of–the–box in all ready–to–use editor builds, inline images can be uploaded, styled, resized, and linked and complement the already supported block images. See the image feature overview guide to see inline images in action. For more information about breaking changes, migration path, and tips, check out the migration to v29.0.0 guide. (commit)
- image: It should now be possible to define the dropdown menu as an object in the
config.image.toolbarconfiguration. Closes #9340. (commit)
- link: The feature functonality now covers both block and inline images. Closes #8871, #9017, #9167. (commit)
- revision-history: Enabled the Revision History feature in multi-root editors.
- source-editing: Introduced the Source editing feature for the predefined classic editor build. Closes #9647. (commit)
- clipboard: All toolbars shall be hidden when the widget is dragged and show back when the drag ends. Closes #9566. (commit)
- code-block: The code block feature should not allow for inserting inline widgets as its content. Closes #9567. (commit)
- engine: Fixed the downcast conversion of collapsed markers at the conversion range boundary. Closes #8485. (commit)
- engine: Added missing HTML block element names to the
DomConverter.blockElementsarray. Closes #9801, #7863. (commit)
- engine: Markers should not be split in view on the caret position. Closes #9513. (commit)
FocusObservershould not force the view to render in random moments. See #9513. (commit)
- engine: Disallowed inline images in the
captionelements. Closes #9794. (commit)
- image: The image should not resize to 100% if the resize command was overridden (canceled). (commit)
- image: The side-aligned images should always have some
max-widthproperty to not take up the whole editor width. Closes #9342. (commit)
- image: The floating block images, except for the
sideimages, should be displayed side by side by default. Closes #9183. (commit)
- image: An image should never overflow the widget boundaries while changing its size. Closes #9166. (commit)
- image: The size label should be displayed above the image if it does not fit inside. See #9166. (commit)
- image: An image caption placeholder text should not wrap or overflow. Closes #9162. (commit)
- link: The link UI should be shown when clicking a linked inline widget. Closes #9607. (commit)
- restricted-editing: The editor will not crash when a restricted area marker is removed. Closes #9650. (commit)
- revision-history: The highlights for suggestions created in earlier revisions are now properly shown.
- revision-history: A revision history will no longer crash if table plugin has not been added to the editor.
- widget: Selected inline widgets wrapped in an attribute in the view should create a fake selection. Closes #9524, #9521. (commit)
- build-decoupled-document: The editor document build now includes the
ImageResizeplugin. Closes #9507. (commit)
- comments: The
Comment#isRemovableproperty is now bound to
Comment#isRemovableis set to
trueif the local user is the author, or if the comment thread is removable and the comment is the first comment in the thread.
- core: Added several new icons for new image styles (see #8909). (commit)
- easy-image: Removed the
Imageplugin dependency from the
EasyImageplugin. Closes #9399. (commit)
- engine: Fixed parsing leading HTML comments by
HtmlDataProcessor.toView(). Closes #9861. (commit)
- horizontal-line: New widgets will replace the selected block instead of being added next to it on insertion (see #9102). (commit)
- image: The default image style is now called
block, instead of
full. Its label reads now "Centered image" and it is represented by the appropriate icon in the image toolbar. See #9545. (commit)
- image: Turned the image utils module into an editor plugin to allow sharing utils outside the package. See #8871. (commit)
- image: The image toolbar should be visible if the selection is placed inside an image caption. Closes #9136. (commit)
- image: The image caption should be controlled using the toolbar button and a command for a better integration with image styles. Closes #8907. (commit)
- real-time-collaboration: Made collaboration features compatible with inline images.
- table: Added the
.ck-table-bogus-paragraphCSS class to the in-cell pseudo-paragraph used for data tables for easier and safer styling. (commit)
- ui: Added the
classproperty to the
SplitButtonViewUI component. Closes #8909. (commit)
- widget: Safeguarded the way the
Widgetplugin sets the fake selection. Closes #9580. (commit)
- widget: Replaced the
findOptimalInsertionRange()that will now attempt to replace selected blocks when inserting new widgets. Closes #9102. (commit)
- Optimized icons. (commit)
- Updated translations. (commit, commit)
Check out the Versioning policy guide for more information.
Released packages (summary)
- @ckeditor/ckeditor5-source-editing: v29.0.0
Major releases (contain major breaking changes):