CKEditor 5 changelog
This is the CKEditor 5 changelog guide. Here you will find information about the most important changes introduced in the release, new features and bugfixes. Information about both major and minor breaking changes is available, too, if such were introduced. You can read more about breaking changes in CKEditor 5 in the Versioning policy guide.
You can find additional information about each release in the blog posts linked at the start of each entry.
This guide only provides the changelog information for the latest 3 releases of CKEditor 5. For older releases, refer to the release notes on GitHub.
# CKEditor 5 40.1.0 release
We are happy to announce the release of CKEditor 5 v40.1.0.
# Release highlights
# Styling suggestions reflected in the content
This release introduces an important user experience improvement for the track changes feature. From now on, styling changes made in the track changes mode will be also reflected in the editor content, instead of just being marked with a blue suggestion highlight.
Below is a summary of the important changes related to this improvement:
- A new suggestion type
'attribute'
was introduced. All integrated features will now create'attribute'
suggestions. - Formatting suggestions in existing documents are still supported, and will work as they used to.
- With the new suggestions, multiple changes are put into a single suggestion if possible, to avoid bloating sidebar with too many annotations.
- For asynchronous collaboration integrations, make sure that you save and provide the
SuggestionData#attributes
property, as it is used by the new suggestions.
We will continue further work on this improvement, including integrating the new solution with the list feature.
# Azure OpenAI service support
We have introduced necessary changes to make sure that the AI Assistant can be used with the Azure OpenAI service. Please refer to the AI Assistant documentation for details.
# Other notable improvements
- Fixed triple click before widgets: the beloved triple click to select content works correctly before tables, images, and other widgets.
- Several CKBox integration improvements include a significantly enhanced image insertion mechanism from CKBox, offering a less jumpy experience. The release also addresses key issues, such as including the proper replacement of images when URLs are edited, better focus management post-image insertion, and a fixed
tokenUrl
configuration for more seamless integration. - Paste from Office enhanced: our advanced format preserver for Office kept too many unnecessary attributes, styles, etc., in combination with General HTML support plugin. Now we fully clean up the markup before pasting.
- Accessibility Enhancements for markers: users aided by assistive technologies will now be notified when the selection enters or leaves a comment or a suggestion in the editor content.
- AI Assistant: the predefined commands can now be used when no content is selected (previously it was disabled). When used like this, the whole focused block (paragraph, list item, etc.) is passed as the context for the command.
- AI Assistant: the response streaming is now configurable and can be turned off.
# MINOR BREAKING CHANGES
- ai: The
config.aiAssistant.uiCssClass
configuration has been replaced byconfig.aiAssistant.useTheme
and changed its function. A new complementary.ck-ai-assistant-ui_theme
CSS class has also been introduced to the AI Assistant’s UI elements. Please refer to the API documentation and the UI customization guide to learn more. - editor-multi-root: If you have a custom plugin that uses roots attributes, it is highly recommended to use the newly added
MultiRootEditor#registerRootAttribute()
method to register a custom root attribute. - image: By default, images are inserted as block images (not inline). To switch to the previous behavior (determining image type by insertion context), set the editor configuration
image.insert.type
to'auto'
. - import-word: Introduced the new
config.importWord.formatting
configuration property which is an object accepting the following properties:resets
,defaults
,styles
, andcomments
. The old properties:config.importWord.defaultStyles
andconfig.importWord.commentsStyles
were removed. Useformatting.defaults
andformatting.comments
instead.
Please refer to the update guide to learn more about these changes.
# Features
- ai: Enabled AI Assistant integration with the Azure OpenAI service.
- ai: Allowed executing pre-defined AI commands on a collapsed selection.
- ai: Allowed for ordering groups and commands in the AI Assistant’s dropdown configuration through the
order
property. See theAIAssistantConfig
API documentation for details. - ai: Introduced
config.aiAssistant.requestParameters.stream
to configure whether the AI Assistant should use streaming or not. - ckbox: Images inserted by CKBox should set the provided dimensions and use the blurhash to indicate image loading. Closes #15090. (commit)
- editor-multi-root: Added
MultiRootEditor#registerRootAttribute()
. All roots attributes used by features should now be registered. Roots attributes passed in editor configuration are now automatically registered. Closes #15246. (commit) - image: Images inserted by CKBox should set the provided dimensions and use the blurhash to indicate image loading. Closes #15090. (commit)
- import-word: Introduced a new
config.importWord.formatting
configuration property in place ofconfig.importWord.defaultStyles
andconfig.importWord.commentsStyles
. - track-changes: Styling changes made while in track changes mode will now be immediately reflected in the editor content in addition to creating a suggestion. This applies only to newly created suggestions.
- track-changes: Introduced new suggestion type
'attribute'
which indicates that an attribute on a model node has changed and allows to show the change immediately in the content. - ui: Introduced the
AriaLiveAnnouncer
class that allows for using aria-live regions to inform screen readers about changes in editor state.AriaLiveAnnouncer
instance is available underEditorUI#ariaLiveAnnouncer
. (commit)
# Bug fixes
- ai: The pre-defined command label should be displayed in the AI Assistant’s prompt field.
- ai: The AI content area should stop auto-scrolling once the user interacts with it.
- ai: The AI Assistant balloon should be closed when user presses the
Esc
key. - ai: The AI pre-defined commands dropdown should reset its scroll when reopened.
- ai: The AI Assistant should not log unnecessary warnings when detached from the DOM.
- ai: The AI Assistant’s balloon anchor point should stay at a correct position when the balloon grows.
- ai: The AI Assistant’s copy to clipboard button did not work correctly on Firefox when general HTML support plugin was loaded.
- clipboard: Pasting a link address should not convert its parts that look like HTML entities. Closes #15036. (commit)
- clipboard: Improved drop marker visibility to only display in permissible drop locations. Closes #14709. (commit)
- comments: Prevented a crash happening when importing Word file when comments plugin is loaded.
- core: Fixed typings in
ToolbarConfig
by adding an optionalicon
parameter. Closes #15151. (commit) - html-support: Additional attributes for the link element (e.g., CSS class) should not be applied after pressing Enter. Closes #14683. (commit)
- image: The aspect ratio should be updated on the image replace. Closes #15179. (commit)
- image: Remove outdated image attributes when an image is replaced by a URL. Closes #15093. (commit)
- list: Pasting plain text content should not break the lists. Closes #13826. (commit)
- list: Pasting one list into another should preserve the target list type. See #13826. (commit)
- paste-from-office: Tables pasted from Word should not lose styles when GHS is enabled. (commit)
- table: Table properties should be enabled if a table is selected from the outside. Closes #15040, #15041, #10983. (commit)
- track-changes: Editor commands will now return a proper value when executed in track changes mode.
- ui: The
AutocompleteView
should not capture theEsc
key press event if its result pane is hidden. (commit) - ui:
TextareaView
will no longer update its height (and log warnings) when the element is detached from DOM. (commit) - ui: Fixed the usage of
aria-checked
attribute in dropdowns. Closes #14823. (commit) - utils: The
Config#get()
method should be able to return a function. Closes #14804, #12835. (commit) - widget: Triple-click in a paragraph should select the whole paragraph even if a block widget follows (table, block image). Closes #11130. (commit)
- Plugins specified in
config.removePlugins
should be now properly filtered out when revision history and track changes data plugins are used.
# Other changes
- ai: Simplified CSS customization in the AI Assistant’s UI.
- ai: Pre-defined commands dropdown search filter will now also include group names.
- ai: The AI Assistant’s
Replace
button should be labeledInsert
if the selection is collapsed. - ai: Improved the layout of the AI Assistant in the editor using a right-to-left UI language.
- ckbox: Should focus the editor after choosing an asset or closing CKBox. Closes #15091. (commit)
- ckbox: When multiple files are selected, adds each one of them in a separate paragraph. Closes #15094. (commit)
- ckbox: Sets the default CKBox theme to
lark
. Closes #15096. (commit) - comments: Users using assistive technologies will be now notified when their selection enters or leaves a comment or a suggestion in the editor content.
- core: Made the
PluginInterface.destroy()
method optional. (commit) - format-painter: Users using assistive technologies will be now notified when the formatting is being copied or pasted.
- image: Changed the icon of the alternative text to be more accurate and describe its purposes. Closes #12410. (commit)
- image: Changed the default
image.insert.type
configuration to"block"
and added the"auto"
option. Closes #15158. (commit) - theme-lark: Created a custom property for a shared light red color. Closes #15217. (commit)
- theme-lark: Improved RTL layout support in some of the UI components (
FormHeaderView
,ButtonView
, andListItemView
). (commit) - track-changes: Migrated features integrations to use the
'attribute'
suggestions: alignment, basic styles, font, format painter, heading, highlight, html embed, image (except for image styles), indent block, link, remove format, styles, table headings. - track-changes: Due to substantial changes in how new styling suggestions are presented in the editor content, numerous interactions and labels displayed in the suggestions annotations has been changed compared to the old suggestions.
- track-changes: Users using assistive technologies will be now notified when their selection enters or leaves a comment or suggestion in the editor content.
- ui: The
ListItemGroupView
should allow using a custom label. (commit) - ui: Improved RTL layout support in some of the UI components (
FormHeaderView
,ButtonView
, andListItemView
). (commit) - Updated translations. (commit)
# CKEditor 5 40.0.0 release
We are happy to announce the release of CKEditor 5 v40.0.0.
# Release highlights
# Release of the AI Assistant feature
We are tremendously excited to share our AI Assistant plugin with you!
With the AI Assistant, you can boost your editing effectiveness and creativity in a completely new way. This feature gives the writers and editors the power to seamlessly interact with artificial intelligence. Users can generate, expand, rewrite, improve, translate, and process the content in many different ways.
The AI Assistant can be used in two ways. You can quickly re-work selected content by choosing one of the predefined AI commands. Or, you can write your own query to generate or process the content in any way you like!
Make sure to visit the documentation and try the demo!
# Introduction of the image height and width support
No more layout shifts! We have introduced setting of the image width
and height
attributes automatically during the upload/paste process to ensure the highest-quality content with no text jumping all around. While existing images won’t be automatically retroactively altered, any changes to images in the editor (like resizing) will automatically set these attributes.
We’ve also ensured backward compatibility with CKEditor 4, particularly while maintaining user-changed aspect ratios. More details on the changes can be found in the update guide.
# Drag and drop of blocks
Just drag it!™ We have introduced a more intuitive drag-and-drop functionality for blocks and widgets. This makes content rearrangement and editing faster and easier, offering users better control over their content. Dragging by the balloon block toolbar handle is also possible, and we’ve updated its default icon to reflect this new drag-and-drop capability better (but it’s still changeable).
# Document lists feature parity
Document lists — our second-generation list plugin that supports multiple content blocks in list items — have finally landed the support for to-do lists! We also added the configuration that enforces the document list to have only a single block inside the list item (we call it “simple lists”). All this is to start deprecating the Lists v1 implementation and use the document lists as default. Coming soon!
# Contextual balloon fixes
Last but not least, we prepared significant fixes to the way the contextual balloons work. They had the tendency to overflow on other elements, especially in the fixed height editors. We polished their internals, and problems should exist no more!
Please refer to the update guide to learn more about these changes.
# MAJOR BREAKING CHANGES
- image: The model attribute name of the resized image has been changed to
resizedWidth
. Thewidth
andheight
attributes are now used to preserve the image’s natural width and height. - image: The
srcset
model attribute has been simplified. It is no longer an object{ data: "...", width: "..." }
, but a value previously stored in thedata
part.
# MINOR BREAKING CHANGES
- comments: The comment thread’s “resolved” state has been separated from the “unlinked” state (a state, when the related editor content was removed from the document). A thread can have any combination of these states. If a comment thread is either “resolved” or “unlinked”, it is moved to the comments archive. This new approach is reflected in the comments archive UI. Notably, an “unlinked” comment thread can become resolved and reopened while still being in the comments archive. Additionally, the “unlinked” comment threads have a gray header color to differentiate them from the “resolved” comment threads.
- comments: The
Comment#archivedAt
is now the property to check when deciding whether the comment thread is inside the comments archive or not (that property was#resolvedAt
before). - comments:
CommentsArchive#resolvedThreads
has been renamed to#archivedThreads
. If your custom code used that property, make sure to apply this change. - comments: The
deletedAt
property is no longer passed inAddCommentThreadEvent
as it is not needed anymore. Instead, deleted comment threads should never be handled inaddCommentThread
as they should never be added to the repository. If your custom code used that property, make sure to apply this change. - comments: In a real-time collaboration environment, removed comment threads will no longer be added to
CommentsRepository
after re-initializing the editor. Before, the comment thread was removed fromCommentsRepository
but was added back when the editor re-connected to Cloud Services. If your custom code expected the old (incorrect) behavior, it might need a change. This change was reflected in the comments outside editor documentation page.
# Features
- ai: Introduced the AI assistant feature.
- clipboard: Enabled the block drag and drop by default. Closes #14734. (commit)
- clipboard: Extended the drag and drop selection to parent elements when all their children are selected. Closes #14640. (commit)
- image: The image
width
andheight
attributes are now preserved while loading editor content. Closes #14146. (commit) - image: Images without a specified size will automatically gain natural image width and height dimensions on any interaction with the image. See #14146. (commit)
- list: Allow restricting list item content to a single text block by disabling the
list.multiBlock
configuration option. Closes #14634. (commit) - list: Introducing the to-do lists compatible with the document list feature. Closes #14663. (commit)
- ui: Implemented new UI components:
ListItemGroupView
,TextareaView
,SpinnerView
,SearchView
andAutocompleteView
. (commit) - ui: Introduced the
HighlightedTextView
component for better search results presentation. (commit)
# Bug fixes
- clipboard: Improved displaying preview of the drag and drop content. Closes #14968. (commit)
- comments: Comment threads that were permanently deleted will be removed from
CommentsRepository
and, in case of real-time collaboration, they will not be added back after re-connecting to the document. - engine: The editor wil no longer throw an error when clicking on a balloon with input on Firefox. Closes #9635. (commit)
- image: Image should not be replaced when dropped below a widget. Closes #14710, #14740. (commit)
- list: A dragged whole list item should still be a list item when dropped. Closes #14969. (commit)
- mention: Fixed typing of the
Mention#toMentionAttribute()
method. Closes #14923. (commit) - utils: Balloon panels should not stick out of the visible part of the editor while scrolling. (commit)
- utils: Fixed wrong tooltip when hovering over the toolbar buttons in Chrome on iOS. Closes #13812. (commit)
- utils: The coordinates of an element are now correctly calculated relative to the positioned ancestor element. Closes #14992. (commit)
# Other changes
- comments: Introduced the
Comment#unlinkedAt
andComment#archivedAt
properties and theComment#setUnlinkedAt()
method. - comments: The
deletedAt
property is no longer passed inAddCommentThreadEvent
as it is not needed anymore. - comments: Renamed
CommentsArchive#resolvedThreads
to#archivedThreads
. - comments: Comment threads are no longer treated as “resolved” when their related content is removed from the document. These threads are now in the “unlinked” state.
- theme-lark: Improved the drag and drop target line. Closes #14645. (commit)
- ui: Made the
ButtonView
label logic open for extension. (commit) - ui: Changed the default icon for the
BallonEditor
toolbar handle and added the ability to customize it. Closes #14646. (commit) - Optimized icons. (commit)
- Updated translations. (commit, commit, commit)
- Added support to execute the
yarn run clean-up-svg-icons
script without arguments to optimize all icons in the entire project. Closes #14912. (commit)
# CKEditor 5 39.0.2 release
We are happy to announce the release of CKEditor 5 v39.0.2.
# Release highlights
This is a patch release that resolves over 10 important issues. Check out the list below for more information.
# Bug fixes
- ckbox: The CKBox dialog should be focused after being opened. Closes #14312. (commit)
- document-outline: The document outline feature no longer throws an error while scrolling when the editor is not fully initialized.
- export-word: Added the missing
type
keyword to the interface re-export (ExportWordConfig
). - find-and-replace: Undo should restore every text occurrence replaced by the replace all feature in the document at once. Closes #13892. (commit)
- indent: Block elements should not be indented in document lists. Closes #14155. (commit)
- indent: Nested lists pasted from Word should now be displayed properly in document lists. Closes #12466. (commit)
- paste-from-office: Tables pasted from MS Excel should now have proper column widths. Closes #14521, #14516. (commit)
- table: The editor no longer crashes when handling tables with over 2500 rows. Closes #14785. (commit)
- table: Fixed a scrolling issue when headings are inside a table. (commit)
- table: Tables pasted from MS Excel will now have proper column widths. Closes #14521, #14516. (commit)
- track-changes: Two existing suggestions will not be joined if they have different attributes. In real-time collaboration, suggestions are not joined until the attributes data is loaded.
- track-changes: A new suggestion will not be joined with an existing suggestion if any of its attributes value is different than the existing suggestion’s attribute.
- track-changes: The editor no longer crashes when a suggestion was clicked after it was brought back using undo.
- CKEditor 5 does not rely on the
global
object only available in Node.js. Fixes ckeditor/vite-plugin-ckeditor5#17 and #14801. (commit)
# Other changes
- table: Improved performance when handling large tables. See #14785. (commit)
- Updated translations. (commit)
Every day, we work hard to keep our documentation complete. Have you spotted outdated information? Is something missing? Please report it via our issue tracker.