Ckeditor5 Versions Save

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

v41.4.0-alpha.0

1 month ago

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

This release is intended to add a UMD build to 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.

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.3.1

1 month ago

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

The release addresses a vulnerability identified in the protobuf.js package (CVE-2023-36665), used within our @ckeditor/ckeditor5-operations-compressor package for real-time collaboration.

Our analysis confirms that this vulnerability does not affect CKEditor 5. None of the vulnerable code in the protobuf.js package is utilized in CKEditor 5, as we use protobuf’s minimal build type.

This release primarily aims to ensure that our customers using real-time collaboration features do not encounter unnecessary security alerts from their scanning tools. We are committed to maintaining the highest security standards, and this update reflects our ongoing efforts to safeguard user environments proactively.

Bug fixes

  • template: Fixed the TemplateDefinition#data type in the @ckeditor/ckeditor5-template config. Now, it should be possible to define a string or a function returning a string instead of just a function returning a string.

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

v41.3.0

1 month 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.

Updated keyboard navigation

This release brings in a fix for keyboard navigation with the Tab key. Before, it followed the default browser behavior, which could produce somewhat random effects. For example, when the cursor was positioned at the end of the end of the editable, the Tab keystroke could navigate you to the image caption on the top.

We changed it to an approach in which the Tab (and Shift+Tab), navigate to the next focusable field or an element outside the editor, so that the users can quickly navigate fields or links on the page. The navigation in the editor itself should be done by arrows, rather.

There is one exception to the Tab behavior. When a widget is selected, the Tab key will move the selection to the first nested editable, such as a caption of an image. Pressing the Esc key, while inside a nested editable, will move the selection to the closest ancestor widget, for example: moving from an image caption to selecting the whole image widget.

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

1 month 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

1 month 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

1 month 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

2 months 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

2 months 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

2 months 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

2 months 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: