Release highlights
We are happy to announce the release of CKEditor 5 v26.0.0.
This release brings some new features:
- It's now possible to add plugins to CKEditor 5 builds. Read more in the DLL builds guide.
- The editor placeholder behaves like a native input placeholder now.
- It's now possible to style inline widgets (e.g. with bold).
There were also some important bug fixes:
- Autoformat will not create a code block when typing in bulleted/numbered lists.
- The font feature now supports loading legacy
<font>
elements. - Indent buttons order is misleading in all default build configurations.
- Crash when copying nested table which was pasted into the editor.
- A period does not stick to the preceding word during word-wrap.
Collaboration features
The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.
MAJOR BREAKING CHANGES ℹ️
Note: Check out the Migration to 26.0.0 guide for more detailed information on how to upgrade to this version.
-
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
config.plugins
). This list includes:- The
CloudServicesUploadAdapter
plugin no longer loadsCloudServices
. Make sure to addCloudServices
to the editor plugins when using theCloudServicesUploadAdapter
orEasyImage
features. - The
EasyImage
plugin no longer loadsImage
andImageUpload
. Make sure to addImage
andImageUpload
to the editor plugins when using theEasyImage
feature. - The
CKFinder
plugin no longer loadsCKFinderUploadAdapter
. TheCKFinderEditing
plugin no longer loadsImageEditing
andLinkEditing
features. Make sure to addCKFinderUploadAdapter
,Image
, andLink
features to the editor plugins when using theCKFinder
feature. - The
Title
plugin no longer loadsParagraph
. Make sure to addParagraph
to the editor plugins when using theTitle
feature. - The
ListEditing
plugin no longer loadsParagraph
. Make sure to addParagraph
to the editor plugins when using theList
feature. - The
LinkImageEditing
plugin no longer loadsImageEditing
. Make sure to addImage
to the editor plugins when using theLinkImage
feature. - The
LinkImageUI
plugin no longer loadsImage
. Make sure to addImage
to the editor plugins when using theLinkImage
feature. - The
ExportPdf
plugin no longer loadsCloudServices
. Make sure to addCloudServices
to the editor plugins when using theExportPdf
feature. - The
ExportWord
plugin no longer loadsCloudServices
. Make sure to addCloudServices
to the editor plugins when using theExportWord
feature.
- The
-
cloud-services-core: The package has been merged into
@ckeditor/ckeditor5-cloud-services
. All classes that were available in the@ckeditor/ckeditor-cloud-services-core
package have been moved to the@ckeditor/ckeditor5-cloud-services
package. They should now be instantiated via factory methods on theCloudServicesCore
plugin that's located in@ckeditor/ckeditor5-cloud-services
. See #8811. -
image: The following modules have been moved (before → after):
image/image/imageinsertcommand~ImageInsertCommand
→image/image/insertimagecommand~InsertImageCommand
image/imageresize/imageresizecommand~ImageResizeCommand
→image/imageresize/resizeimagecommand~ResizeImageCommand
image/imageupload/imageuploadcommand~ImageUploadCommand
→image/imageupload/uploadimagecommand~UploadImageCommand
-
list: The to-do list item toggle keystroke changed to Ctrl+Enter (Cmd+Enter on Mac).
-
list: The following module
list/todolistcheckedcommand~TodoListCheckCommand
has been moved tolist/checktodolistcommand~CheckTodoListCommand
. -
Keystrokes with the Ctrl modifier will not be handled on macOS, unless the modifier is registered as a forced one (for example:
Ctrl!+A
will not be translated toCmd+A
on macOS).
Features
- cloud-services: Created the
CloudServicesCore
plugin that provides the base API for communication with CKEditor Cloud Services. (commit) - core: The
PluginCollection
class will allow requiring a plugin by name, if it is provided inconfig.plugins
or if it was already loaded. Closes #2907. (commit) - engine:
ContainerElement
can be marked asisAllowedInsideAttributeElement
in order to allow wrapping it with attribute elements. Useful for instance for inline widgets. Other element types (UI, Raw, Empty) have this flag on by default but it can be changed viaoptions.isAllowedInsideAttributeElement
tofalse
. Read more inDowncastWriter#create*()
methods documentation. Closes #1633. (commit) - font: Added the
<font>
styling compatibility. Closes #8621. (commit) - utils: Added the forced modifier key (
Ctrl!
) for keystrokes that should not be mapped to Command on macOS. (commit)
Bug fixes
- build-*: Switched indent buttons order in the default build config to "outdent, indent". Closes #8884. (commit)
- engine:
DowncastWriter
should handleUIElements
consistently while wrapping with and inserting them into attribute elements. Closes #8959. (commit) - engine: Words should not break on link boundaries. Closes #8852. (commit)
- engine: Undoing the deletion of merged paragraphs should result in the original tree. Closes #8976. (commit)
- engine: Pasting formatted single-line text over a widget should not split it into multiple paragraphs. Closes #8953. (commit)
- engine: The editor placeholder should not disappear until typing started. Closes #8689. (commit)
- engine: Fixed content not restored on undo when multiple blocks and widgets were removed. Closes #8870. (commit)
- font: Fixed the
supportAllValues
configuration for theFontSize
andFontFamily
features to work with nested elements (tables). Closes #7965. (commit). Thanks to @dkrahn! - heading: In the
Title
plugin, the body placeholder is visible even when the body section is focused. See #8689. (commit) - image: The Image caption placeholder is now hidden when focused. See #8689. (commit)
- link: The Autolink plugin will no longer automatically match domains that only have a
www
subdomain followed with a top level domain, e.g.http://www.test
. Closes #8050. (commit) - link: IP addresses should be converted into links while typing by the Autolink feature. Closes #8881. (commit)
- media-embed: The
insertMediaEmbed
command should be disabled if any non-media object is selected (see #8798). (commit) - table: The
insertTable
command should be disabled if any object is selected. Closes #8798. (commit) - utils: The keystrokes are no longer conflicting on macOS. Closes #5705. (commit)
- The editor will show the placeholder even when focused. See #8689. (commit)
Other changes
-
Enabled creating builds that can be extended (with more plugins) without the need to recompile. This required splitting the project into the so-called DLL part and consumers of this DLL. Under the hood, the mechanism is based on webpack DLLs. This is the first part of the required changes and it contains the necessary breaking changes (see the "MAJOR BREAKING CHANGES" section above). For more information see the "DLL builds" guide. Closes [#8395](#8395). (commit)
-
cloud-services-core: All classes available in the
@ckeditor/ckeditor-cloud-services-core
package have been moved to the@ckeditor/ckeditor5-cloud-services
package. They should now be instantiated via factory methods on theCloudServicesCore
plugin. Closes #8811. (commit) -
engine: The
KeyObserver
should provide information aboutmetaKey
being pressed. (commit) -
image: Add WEBP support to the inline pasting of images from source URLs. (commit)
-
image: Introduced
Image.isImageWidget()
utility method. (commit) -
list: The to-do list item toggle keystroke changed to Ctrl+Enter (Cmd+Enter on Mac). (commit)
-
widget: The
checkSelectionOnObject
function should be exported by the@ckeditor/ckeditor5-widget
package (as@ckeditor/ckeditor5-widget/src/utils
) (see #8798). (commit) -
Updated translations. (commit)
-
Unified buttons and commands naming conventions. Old name values are available as aliases. Read more about those changes in the Code style guide. Closes #8033. (commit)
Changes in toolbar buttons (before → after):
imageUpload
→uploadImage
imageResize
→resizeImage
imageInsert
→insertImage
imageResize:*
→resizeImage:*
Changes in command names:
imageInsert
→insertImage
imageUpload
→uploadImage
imageResize
→resizeImage
forwardDelete
→deleteForward
todoListCheck
→checkTodoList
Released packages
Check out the Versioning policy guide for more information.
Major releases (contain major breaking changes):
Releases containing new features:
Other releases:
Released packages (summary)