Ckeditor5 Versions Save

Powerful rich text editor framework with a modular architecture, modern integrations, and features like collaborative editing.

v41.3.0

2 weeks ago

We are happy to announce the release of CKEditor 5 v41.3.0.

Release highlights

Multi-level lists ⭐️

CKEditor 5's latest update brings a new premium feature: the Multi-level lists feature. It allows for easy creation and modification of numbered lists with counters (1., 1.1., 1.1.1), crucial for clear referencing and hierarchical organization in complex documents. The feature ensures compatibility with Microsoft Word. When lists with such formatting are pasted to the editor, the numbering format and counters are retained.

Paste from Office improvements for lists

No more breaking numbering of lists when they are pasted from Office. Previously whenever a list were split by paragraphs, the counter started again from 1. With our latest improvement, the counter is correctly preserved. Moreover, if you use Paste from Office Enhanced ⭐️, the paragraphs will be merged into list items, to ensure proper, semantic content.

⚠️ If you use the LegacyList plugin to prolong the migration to the new list implementation, bear in mind that from this release Paste from Office stops working for the lists' implementation you are using. Migrate to List to maintain pasting lists functionality.

The menu bar is a user interface component popular in large editing desktop and online packages. It gives you access to all features provided by the editor, organized in menus and categories and improves usability of the editor, keeping the toolbar can be simple and tidy. This is especially welcome in heavily-featured editor integrations.

The current release brings this battle-hardened solution to CKEditor 5! The menu bar can easily be enabled in selected editor types, comes with a handy features preset and is also highly configurable.

MINOR BREAKING CHANGES ℹ️

  • image: The CSS custom property --ck-color-image-caption-highligted-background has been renamed to --ck-color-image-caption-highlighted-background. Please make sure to update your custom CSS accordingly.
  • real-time-collaboration: The username displayed next to the user marker in the edited content is no longer a CSS pseudo-element. Use the .ck-user__marker-tooltip CSS class to customize usernames instead.
  • ai: When config.ai.openAI.requestParameters or config.ai.aws.requestParameters are set, the set value will fully overwrite the default value. Most importantly, if you do not specify some properties in requestParameters they will not be set to default. For example, if you set openAI.requestParameters to { max_tokens: 1000 }, the request parameters will be set exactly to that object. Make sure that you pass all necessary parameters in requestParameters. Important: this change happened in version 41.2.0 but has not been previously announced in the changelog.
  • upload: The FileDialogButtonView class has been moved from ckeditor5-upload to ckeditor5-ui. Please update your import paths accordingly (was: import { FileDialogButtonView } from 'ckeditor5/src/upload.js';, is: import { FileDialogButtonView } from 'ckeditor5/src/ui.js';).
  • theme-lark: The default vertical spacing around ButtonView in ListItemView (--ck-list-button-padding) has been reduced for better readability. This affects the presentation of various editor features that use this type of UI (headings, font size, font family, etc.). You can restore the previous value by setting --ck-list-button-padding: calc(.2 * var(--ck-line-height-base) * var(--ck-font-size-base)) calc(.4 * var(--ck-line-height-base) * var(--ck-font-size-base)); in your custom styles sheet.
  • comments: From this release on, the UI of the Comments Archive feature is displayed in a dialog instead of a dropdown.
  • revision-history: The UI for saving the new revision is displayed in a dialog instead of a dropdown.

Features

  • comments: Partially selected comment markers will no longer be copied unless fully selected, regardless of the copy mode set in the configuration.
  • list-multi-level: Introduced the multi-level list with legal style list numbering.
  • track-changes: Introduced the multi-level list with legal style list numbering.
  • ui: Added the [tabindex] DOM attribute support to the InputBase class. (commit)
  • ui: Added the [aria-label] attribute support to the InputBase class. (commit)
  • ui: Implemented the application menu bar that contains various options and commands for controlling and navigating the editor. Closes #15894. (commit)
  • utils: Added the Page Up and Page Down keys to the keyboard utilities (keyCodes, getEnvKeystrokeText()). (commit)

Bug fixes

  • ai: Increased the priority of AI selection markers to display them over the overlapping comments.
  • alignment: Tooltips for buttons inside the alignment dropdown should not obscure adjacent buttons. Closes #16109. (commit)
  • comments: Fixed issue causing the editor to throw collection-add-item-invalid-index error in some scenarios when some comment threads were resolved and some were unlinked (removed from content).
  • document-outline: Should not throw errors while pasting and cutting in document outline feature.
  • engine: Copying the content with markers will no longer trigger the change:data event. Closes #15943. (commit)
  • heading: An accessible button label should describe the state and the name of the feature for optimal UX. (commit)
  • language: An accessible button label should describe the state and the name of the feature for optimal UX. (commit)
  • minimap: The minimap should not steal DOM focus while tabbing across the document. (commit)
  • pagination: The pagination navigation buttons should both scroll the document and move the selection (accessibility). Added keyboard shortcuts for navigating through the document.
  • pagination: The pagination page number input should not participate in web page navigation on tab key press to comply with WCAG recommendations (see ckeditor/ckeditor5#16025).
  • pagination: The current page input in the toolbar should be accessible to screen readers. See ckeditor/ckeditor5#16028.
  • paste-from-office: The paste from Office feature should not break the list on the following blocks in the same list item or deduce a start attribute for a split list. Closes #11210, #15964. (commit)
  • real-time-collaboration: Users should be able to move the mouse cursor to the user name displayed next to the user marker and dismiss it using the Esc key.
  • restricted-editing: It should be possible to remove an image placed inside an editable field in restricted editing mode. Closes #15521. (commit)
  • ui: Users should be able to move the mouse cursor to a UI tooltip without closing it. (commit)
  • ui: Users should be able to close UI tooltips using the Esc key. (commit)
  • watchdog: EditorWatchdog will no longer crash when the application is refreshed before completing the editor initialization or destruction. Closes #15980. (commit)
  • widget: Native browser tab key support should be disabled for cycling nested editable elements inside the editor. Closes #15506. (commit)

Other changes

  • clipboard: By default, markers will not be copied if they are only partially selected. (commit)
  • comments: In the default copy comments mode, markers that have been copied will not be pasted if they already exist in the document.
  • core: Clarified the description of keystrokes that execute various buttons (Space, Enter) in the accessibility help dialog. (commit)
  • html-support: Introduced the multi-level list with legal style list numbering. Closes #10859. (commit)
  • image: Fixed a typo in the name of CSS custom property for the highlighted state of an image caption. (commit)
  • list: Introduced the multi-level list with legal style list numbering. Closes #10859. (commit)
  • mention: Export MentionsView, MentionListItemView, DomWrapperView classes and MentionFeedObjectItem type. Closes #16044. (commit)
  • paste-from-office: Introduced the multi-level list with legal style list numbering. Closes #10859. (commit)
  • style: Introduced the multi-level list with legal style list numbering. Closes #10859. (commit)
  • Updated translations. (commit, 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:

v41.3.0-alpha.3

3 weeks ago

We are happy to announce the release of CKEditor 5 v41.3.0-alpha.3.

This release is intended to improve the build speed in bundlers when using the ckeditor5 npm package and to improve typings for translations.

For instructions on how to use the new installation methods, see the v41.3.0-alpha.0 Release Notes.

For more general information about the new installation methods, see the announcement post.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Other releases:

v41.3.0-alpha.4

3 weeks ago

We are happy to announce the release of CKEditor 5 v41.3.0-alpha.4.

This release is intended to improve the build speed in bundlers when using the ckeditor5 npm package and to improve typings for translations.

For instructions on how to use the new installation methods, see the v41.3.0-alpha.0 Release Notes.

For more general information about the new installation methods, see the announcement post.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Other releases:

v41.3.0-alpha.2

3 weeks ago

We are happy to announce the release of CKEditor 5 v41.3.0-alpha.2.

This release is intended to improve the build speed in bundlers when using the ckeditor5 npm package and to improve typings for translations.

For instructions on how to use the new installation methods, see the v41.3.0-alpha.0 Release Notes.

For more general information about the new installation methods, see the announcement post.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Other releases:

v41.2.1

1 month ago

We are happy to announce the release of CKEditor 5 v41.2.1.

Bug fixes

  • clipboard: Fixed a recent regression where importing documents from Word with suggestions caused CKEditor 5 to crash. (commit)
  • image: Resolved a bug where loading the ImageResize plugin before ImageBlock or ImageInline caused the editor to crash. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

v41.3.0-alpha.1

1 month ago

We are happy to announce the release of CKEditor 5 v41.3.0-alpha.1.

This release is intended to address various styling issues we have found with the new installation methods.

For instructions on how to use the new installation methods, see the v41.3.0-alpha.0 Release Notes.

For more general information about the new installation methods, see the announcement post.

Bug fixes

  • theme-lark: Fix displaying icons in the editor's toolbar.
  • theme-lark: Fix styling of the dialog component.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

v41.3.0-alpha.0

1 month ago

We are happy to announce the release of CKEditor 5 v41.3.0-alpha.0.

This release is intended for testing new installation methods announced in this post.

It contains two builds that can be found in the dist folder.

The first build is a browser build that can be run directly in the browser without a build step. It contains the files index.browser.js and index.browser.css. For editor- or content-only styles, use the editor-index.browser.css or content-index.browser.css files.

Code snippet
<link rel="stylesheet" href="<PATH_TO_THE_CKEDITOR5>/dist/index.browser.css">

<script type="importmap">
{
  "imports": {
    "ckeditor5": "<PATH_TO_THE_CKEDITOR5>/dist/index.browser.js",
    "ckeditor5/": "<PATH_TO_THE_CKEDITOR5>/",
  }
}
</script>
<script type="module">
import { ClassicEditor, Essentials, Paragraph } from 'ckeditor5';
import translations from 'ckeditor5/dist/translations/pl.js';

await ClassicEditor.create( document.querySelector( '#editor' ), {
  plugins: [
    Essentials,
    Paragraph,
  ],
  toolbar: {
    items: [ 'undo', 'redo' ]
  },
  translations
} );
</script>

The second build is an NPM build. It includes the files index.js and index.bundled.css. For editor- or content-only styles, use the editor-index.bundled.css or content-index.bundled.css files.

Code snippet
import { ClassicEditor, Essentials, Paragraph } from 'ckeditor5';
import translations from 'ckeditor5/dist/translations/pl.js';

import 'ckeditor5/dist/index.bundled.css';

await ClassicEditor.create( document.querySelector( '#editor' ), {
  plugins: [
    Essentials,
    Paragraph,
  ],
  toolbar: {
    items: [ 'undo', 'redo' ]
  },
  translations
} );

Please note that this release is based on v41.2.0 and is marked as alpha, which means that it is an experimental release and some unexpected results may occur when using it.

We appreciate any feedback that will help us improve the final form of the project.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

v41.2.0

1 month ago

We are happy to announce the release of CKEditor 5 v41.2.0.

Copy-paste comments

Since the beginning, collaboration has been a focal point for CKEditor 5. This release brings another highly anticipated improvement for the popular Comments feature!

Now, when you cut-paste, copy-and-paste, or drag around a piece of content that includes comments, the comments will be retained. The improvement allows users to restructure their content without losing the information or discussion available in the comments.

By default, the comments are retained only on cut-and-paste and drag-and-drop actions. You can configure this behavior to be applied also on copy-paste or you can turn it off.

Accessibility Help Dialog

CKEditor 5 v41.2.0 introduces the Accessibility Help Dialog. With the hit of Alt/Option+0 in the editor, users can now access the full list of available keyboard shortcuts. A toolbar button is available as well. This feature further improves the editor's usability and accessibility. It allows all users to navigate and operate CKEditor 5 more efficiently, thereby promoting a more inclusive user experience.

The Accessibility Help Dialog is enabled by default in the Essentials plugin pack, making it available straight away in most integrations. If your editor build does not use the Essentials pack, make sure that you add the AccessibilityHelp plugin in your configuration.

We would also like to mention that there are further accessibility support improvements in the pipeline, so keep your eyes peeled for news in the upcoming months.

Other improvements and bug fixes

  • AI Assistant will now try to retain comments on the processed content. The comments’ markup will be included in the data passed to the AI model. The result will depend on the response generated by the AI model.
  • Added the ability to declare allowed URL protocols for links, like tel or sms , by introducing the link.allowedProtocols configuration property. After setting up your custom protocols, your users will easily navigate to specific resources from the inside of the editor.

MINOR BREAKING CHANGES ℹ️

  • comments: Comments will now be retained in the clipboard and pasted into the content when the user performs a cut-and-paste operation. To revert to previous behavior (with no retaining), set the comments.copyMarkers configuration property to an empty array.
  • ui: The contents of the BlockToolbar and BalloonToolbar toolbars are now filled on the EditorUIReadyEvent instead of Plugin#afterInit().
  • ai: When config.ai.openAI.requestParameters or config.ai.aws.requestParameters are set, the set value will fully overwrite the default value. Most importantly, if you do not specify some properties in requestParameters they will not be set to default. For example, if you set openAI.requestParameters to { max_tokens: 1000 }, the request parameters will be set exactly to that object. Make sure that you pass all necessary parameters in requestParameters.

Features

  • ai: AI Assistant will now try to retain comments on the processed content. The comments markup will be included in the data passed to the AI model. The result will depend on the response generated by the AI model.
  • ai: AI pre-defined commands that require context will now be disabled when the selection is within an empty block. The toolbar dropdown will be disabled if all pre-defined commands are disabled.
  • comments: Introduced the copy-paste and cut-and-paste functionalities for comment markers. By default, comment markers will be retained on cut-and-paste actions. See documentation for the new comments.copyMarkers configuration property to learn more.
  • core: Brought the editor.accessibility namespace to the base Editor class as a container for accessibility-related features and systems. See #1014. (commit)
  • core: Translations can now be passed as an object in the configuration. Closes #15713. (commit)
  • find-and-replace: The find and replace feature will dynamically update the search results when the document content changes. Closes #15680. (commit)
  • link: Added the ability to specify allowed URL protocols by introducing the link.allowedProtocols configuration property. Closes #14304. (commit)
  • revision-history: Added the revisionHistory.requireRevisionName configuration option which makes the revision name required.
  • revision-history: Long revision names in the sidebar will now be indicated with ellipsis and will display a tooltip when the user hovers it.
  • ui: Implemented the AccessibilityHelp plugin that brings a dialog displaying keyboard shortcuts available in the editor. Closes #1014. (commit)

Bug fixes

  • ai: Fixed a few scenarios where AI Assistant was incorrectly showing empty responses.
  • ai: Custom functions passed in the ai.openAI.requestParameters configuration will no longer be overwritten by default parameters.
  • ai: The selected widgets (for instance, images) will now be correctly highlighted while using AI Assistant.
  • ai: Incorrect Markdown syntax should be stripped from the AI responses.
  • ckbox: Plugin order should not matter when it comes to registering schema for the ckboxImageId attribute. Closes #15581. (commit)
  • core: Use translations from the defaultConfig if they were not provided in the create method. Closes #15902. (commit)
  • html-support: Background color style should be properly preserved by GHS while the FontBackgroundColor plugin is enabled. It should also be able to preserve a partly defined style. Closes #15757, #10399. (commit)
  • image: Fixes the initialization of ImageInsertViaUrlUI so it does not depend on the configured plugins order. Closes #15869. (commit)
  • image: Fixed an issue with inline images where resizing an image to reduce its dimensions resulted in the opposite effect. Closes #10267. (commit)
  • list: An error message will be displayed when numbered list start index input field has an incorrect value. Closes #14939. (commit)
  • mention: Inserting a mention should not append an extra white space if there was one already present in the content. A white space should not follow a mention inserted inside a pair of empty matching brackets. Closes #4651. (commit)
  • minimap: The Minimap feature should not throw an error if an editing view rendering is performed while the editor is getting destroyed (for example, a cleanup rendering). (commit)
  • pagination: Fixed model-position-before-root error thrown sometimes by the Pagination plugin, especially when loading big content in real-time-editing integration.
  • paste-from-office: It now should be possible to paste charts from Microsoft Word. Closes #15758. (commit)
  • source-editing: Source editing should not add whitespaces to the pre-formatted code lines. Closes #15084. (commit)
  • table: TableUtils#getColumns() should exclude elements other than tableCell (for example, marker elements) while counting. (commit)
  • ui: The BlockToolbar and BalloonToolbar plugins order should not matter when it comes to registering toolbar items. Closes #15581. (commit)
  • utils: The exported keyCodes object should contain correct codes for keys related to punctuation, brackets, braces, etc. See #1014. (commit)

Other changes

  • case-change: Registered the case change keystroke in the accessibility help dialog. See ckeditor/ckeditor5#1014.
  • core: Deprecated the DataApiMixin and moved the setData() and getData() methods directly to the Editor class. (commit)
  • essentials: Enabled the AccessibilityHelp plugin by default. See #1014. (commit)
  • heading: Adjusted the types in heading configuration options to enable passing of custom heading elements. (commit)
  • ui: Mutli-line tooltips will now have max-width set to 200px by default. (commit)
  • ui: Tooltip will now hide if data-cke-tooltip-text is removed while the tooltip is open. (commit)
  • ui: Tooltip position will be updated if data-cke-tooltip-position changes while the tooltip is open. (commit)
  • Updated translations. (commit, commit, commit, commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

v41.1.0

2 months ago

We are happy to announce the release of CKEditor 5 v41.1.0.

MINOR BREAKING CHANGES ℹ️

  • engine: We fixed how the missing value of the "class" and "style" attribute conversion is handled in the attributeToAttribute() upcast helper. Now while not providing the attribute's value to conversion the helper accepts and consumes all values. Previously those values were not consumed and left for other converters to convert. Note that you should use the classes, and the styles fields for the fine-tuned conversion of those attributes instead of a catch-all "style" and "class" specified in the key field.
  • font: The colorSelectorView property will no longer be accessible from the ColorUI plugin in the @ckeditor/ckeditor5-font/src/ui/colorui.ts.
  • source-editing: The source editing feature will now throw an error when used with real-time collaboration as these features are not fully compatible and may lead to data loss. You will have to explicitly enable source editing for real-time collaboration by setting the sourceEditing.allowCollaborationFeatures configuration flag to true. If you want to use both these features, please read a new guide discussing the risks and add the flag to your configuration.

Features

  • collaboration-core: The local user ("me" user) avatar will now have a distinct highlight (additional border) so it is easier to spot among other avatars. The related DOM element will receive the .ck-user_me CSS class to customize or remove the highlight.
  • real-time-collaboration: Introduced the presenceList.displayMe configuration flag. When set to false, the local user ("me" user) will not be displayed in the presence list. Defaults to true.

Bug fixes

  • engine: The style and class attributes conversion should work with attributeToAttribute(). Closes #4517. (commit)
  • font: The font color and font background features should work in both the main toolbar and the balloon toolbar. Closes #15580. (commit)
  • link: An image should not disappear after dragging in Windows OS in Chromium browsers. #15700. (commit)

Other changes

  • real-time-collaboration: Modified the order of users in the presence list, so that local user ("me" user) is always visible first.
  • source-editing: Source editing will now throw an error when used with real-time collaboration. Added the sourceEditing.allowCollaborationFeatures configuration flag that suppresses the error and allows to use both features together. Closes #15764. (commit)
  • Updated translations. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Minor releases (contain minor breaking changes):

Other releases:

v41.0.0

3 months ago

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

Improved list suggestions behavior

We continue to improve the way the editor displays the formatting suggestions.

This release includes integration of the list features with the new suggestions behavior. All list-related suggestions are now visible in the editor content.

The dialog system

The dialogs finally come to the CKEditor 5 UI!

Some users found using the find and replace feature through a dropdown inconvenient as it might have covered the content, including the searched text. We listened to these voices and the find and replace UI will now be using a dialog.

If you liked the earlier user interface of this feature, you can still display it inside a dropdown by setting the config.findAndReplace.uiType configuration option.

We have also introduced a dialog in the AI Assistant feature. Displaying the AI Assistant inside a balloon came with many UX hiccups, especially when you selected large content. It works great now.

The dialogs are now a part of the CKEditor 5 UI library so you can use them, too! Read the documentation to learn how to display your custom features inside dialogs and modals.

Case change

No more selecting, deleting, retyping with Caps Lock for long legal preambles. The case change plugin enables users to easily change text cases, applying UPPERCASE, lowercase, and Title Case. This feature simplifies text formatting by allowing quick alterations with a single click or a keyboard shortcut.

As a key component of CKEditor 5's Productivity Pack, this plugin complements and enhances the suite's editing capabilities, offering a practical tool for efficient text manipulation.

Improving CKEditor 5 installation methods

We start the new year with improvements in the new installation methods project. This includes an upgrade to the latest TypeScript version, ensuring enhanced type safety.

A key part of this release is the resolution of ECMAScript Module (ESM) compliance issues. We updated all packages and their definitions to be fully ESM-compliant. This ensures smoother integration and compatibility across various development environments.

We have also renamed exports of several classes, interfaces, and helpers to eliminate naming conflicts in the code for the new bundle that will appear later this year.

Take a look at the RFC to see what is coming: https://github.com/ckeditor/ckeditor5/issues/15502.

Deprecation of lists v1

This release marks a significant change in the list feature. As announced before, we are phasing out the older implementation of the List plugin, originally designed for plain lists. We are directing the development efforts towards the more advanced list v2 feature (formerly named DocumentList). This change aims to eliminate confusion for integrators and optimize the number of list functionalities.

The DocumentList plugins, which represent the advanced lists v2 feature, will now be available under the standard name List. This change enables document lists across all integrations, with the new version ensuring no loss of features from the older one.

We renamed the previous List plugins to LegacyList, providing a fallback option for integrators after the update. We will keep the LegacyList available for a couple of releases to lower the migration impact.

The existing DocumentList plugins were replaced with aliases. Integrations using the older DocumentList will continue to function without any need for configuration changes for a couple of releases. Users will be notified via console warnings to consider updating their configurations.

Additionally, we completely removed the ListStyle plugin, which has been deprecated for a while. This change aligns with our goal to simplify the list features.

Release highlights

Refer to the update guide to learn more about these changes.

MAJOR BREAKING CHANGES ℹ️

  • ai: From this release on, the UI of the AI Assistant feature is displayed in a dialog instead of a balloon. See #14973.
  • find-and-replace: From this release on, the UI of the find and replace feature is displayed by default in a dialog instead of a dropdown. To bring the previous user experience back, you can use the config.findAndReplace.uiType configuration option. See #14973.
  • list: The AdjacentListsSupport plugin is moved from the documentlist directory to the list directory. See #14942.

MINOR BREAKING CHANGES ℹ️

  • adapter-ckfinder: Rename export of the UploadAdapter class to CKFinderUploadAdapter. See #15511.
  • ai: The layout of the UI changed. Customizations based on certain CSS selectors may not work anymore because of a different DOM structure in the UI. Learn more about the scope of changes. See #14973.
  • ckfinder: Moved the browseFiles icon to the core package and added it to the icons object exported from it. See #15511.
  • ckbox: Moved the browseFiles icon to the core package and added it to the icons object exported from it. See #15511.
  • code-block: Moved the codeBlock icon to the core package and added it to the icons object exported from it. See #15511.
  • core: Bumped the TypeScript version to 5.0. See #15452.
  • engine: Renamed export of the View class to EditingView. See #15511.
  • engine: Moved the findOptimalInsertionRange function to the Schema class as a new method. See #15511.
  • find-and-replace: The layout of the UI changed. Customizations based on certain CSS selectors may not work anymore because of a different DOM structure in the UI. Learn more about the scope of changes. See #14973.
  • heading: Moved the heading1, heading2, heading3, heading4, heading5, and heading6 icons to the core package and added them to the icons object exported from it. See #15511.
  • horizontal-line: Moved the horizontalLine icon to the core package and added it to the icons object exported from it. See #15511.
  • html-embed: Moved the html icon to the core package and added it to the icons object exported from it. See #15511.
  • indent: Moved the indent and outdent icons to the core package and added them to the icons object exported from it. See #15511.
  • link: Added validation to the URL field to disallow empty URLs by default. See #12501.
  • list: All old list plugins are now prefixed with Legacy (including directory names): List -> LegacyList, ListProperties -> LegacyListProperties, TodoList -> LegacyTodoList, ListEditing -> LegacyListEditing, ListUtils -> LegacyListUtils, ListPropertiesEditing -> LegacyListPropertiesEditing, TodoListEditing -> LegacyTodoListEditing. See #14942.
  • list: The document list plugins are no longer prefixed with Document (including directory names): DocumentList -> List, DocumentListProperties -> ListProperties, TodoDocumentList -> TodoList, DocumentListEditing -> ListEditing, DocumentListUtils -> ListUtils, DocumentListPropertiesEditing -> ListPropertiesEditing, DocumentListPropertiesUtils -> ListPropertiesUtils, TodoDocumentListEditing -> TodoListEditing. See #14942.
  • list: The ListStyle plugin was removed since it had been deprecated for a while. Use the ListProperties plugin instead. See #14942.
  • list: Moved the bulletedList, numberedList, and todoList icons to the core package and added them to the icons object exported from it. See #15511.
  • table: Moved the table icon to the core package and added it to the icons object exported from it. See #15511.
  • ui: Moved the colorPalette, previousArrow, and nextArrow icons to the core package and added them to the icons object exported from it. See #15511.
  • ui: The --ck-z-modal CSS custom property was renamed to --ck-z-panel. We recommend updating custom CSS and integrations that use this custom property to avoid presentation issues. See #14973.
  • ui: The view collection (focusables) required by FocusCycler#constructor() must only contain views implementing the FocusableView interface. Failing to do so will result in a TypeScript error. If your custom code creates FocusCycler instances, make sure that all views passed in focusables implement the focus() method. See #14973.
  • ui: The font size of the FormHeaderView component was increased. This change affects the look of the find and replace and table styling features as well as custom user interfaces that use this component. See #14973.
  • ui: The type of AriaLiveAnnouncerPoliteness changed (previously enum, now a constant object). See #14973.
  • ui: The #next and #previous properties of a FocusCycler will now point to the same view if there is only one focusable view (previously null). This change may affect integrations that use this helper to manage advanced focus navigation in dynamic UIs. See #14973.
  • undo: Moved the undo and redo icons to the core package and added them to the icons object exported from it. See #15511.
  • utils: Renamed the Position interface to DomPoint. See #15511.

Features

  • ai: The UI of the feature was migrated to a dialog for a better user experience. See #14973.
  • case-change: Introduced the case change feature.
  • find-and-replace: The UI of the feature was migrated to a dialog for a better user experience. See #14973. (commit)
  • track-changes: Integrated the list feature with the new attribute suggestions. Tracked changes in lists are now immediately visible in the editor.
  • ui: Implemented the Dialog plugin that allows for displaying dialog windows in the UI of the editor. Learn more about using dialogs. Closes #14973. (commit)

Bug fixes

  • ai: AWSTextAdapter should be able to handle many data objects returned in one update (chunk).
  • ai: AWSTextAdapter should be able to handle data objects that were split between many updates (chunks).
  • ckbox: Replaced some toolbar icons with ones with improved alignment. Closes #15549. (commit)
  • ckbox: Fixed the relative URL image editing. (commit)
  • clipboard: Drag and drop into the document title element should not throw errors. Closes #15306. (commit)
  • comments: Unlinked and resolved comment threads will now be correctly handled when added during the editor initialization.
  • core: Replaced some toolbar icons with ones with improved alignment. Closes #15549. (commit)
  • html-support: The editor should not be stuck in an infinite post-fixing loop while modifying a list structure inside a GHS element. Closes #15527, #15565. (commit)
  • link: Fixed the editor crash using the LinkImage plugin loaded before Image, which ends with extending the schema definitions before they registering them. Closes #15617. (commit)
  • media-embed: Replaced some toolbar icons with ones with improved alignment. Closes #15549. (commit)
  • ui: The TextareaView component should correctly update its size if its value changes while it is invisible. See #14973. (commit)
  • Made all CKEditor 5 packages valid ES Modules. See #13673.

Other changes

  • ckbox: Image editing should work with the on-premises CKBox. Closes #5834. (commit)
  • core: Bumped the TypeScript version to 5.0. Closes #15452 . (commit)
  • engine: Made the types of the Schema.addChildCheck and Schema.addAttributeCheck callbacks more specific. See #15290. (commit)
  • list: The document list feature was promoted to the main list feature implementation. The Document prefix was removed. The old list implementation was prefixed with the Legacy keyword. Aliases were introduced (DocumentList, DocumentListProperties, TodoDocumentList) for backward compatibility but those are marked as deprecated and log a warning in the browser console. Closes #14942. (commit)
  • ui: The FocusCycler#focusables collection should only contain FocusableView instances. See #14973. (commit)
  • ui: The #next and #previous properties of a FocusCycler instance should point to the same view if there is only one focusable view registered in the focusables collection. See #14973. (commit)
  • Updated translations. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Major releases (contain major breaking changes):

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases: