Powerful rich text editor framework with a modular architecture, modern integrations, and features like collaborative editing.
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.
Check out the Versioning policy guide for more information.
Minor releases (contain minor breaking changes):
Releases containing new features:
Other releases:
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.
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.Check out the Versioning policy guide for more information.
Other releases:
We are happy to announce the release of CKEditor 5 v41.3.0.
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.
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.
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.
--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..ck-user__marker-tooltip
CSS class to customize usernames instead.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.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';
).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.[tabindex]
DOM attribute support to the InputBase
class. (commit)[aria-label]
attribute support to the InputBase
class. (commit)keyCodes
, getEnvKeystrokeText()
). (commit)collection-add-item-invalid-index
error in some scenarios when some comment threads were resolved and some were unlinked (removed from content).change:data
event. Closes #15943. (commit)EditorWatchdog
will no longer crash when the application is refreshed before completing the editor initialization or destruction. Closes #15980. (commit)tab
key support should be disabled for cycling nested editable elements inside the editor. Closes #15506. (commit)Check out the Versioning policy guide for more information.
New packages:
Minor releases (contain minor breaking changes):
Releases containing new features:
Other releases:
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.
Check out the Versioning policy guide for more information.
New packages:
Other releases:
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.
Check out the Versioning policy guide for more information.
New packages:
Other releases:
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.
Check out the Versioning policy guide for more information.
New packages:
Other releases:
We are happy to announce the release of CKEditor 5 v41.2.1.
ImageResize
plugin before ImageBlock
or ImageInline
caused the editor to crash. (commit)Check out the Versioning policy guide for more information.
Other releases:
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.
Check out the Versioning policy guide for more information.
Other releases:
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.
<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.
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.
Check out the Versioning policy guide for more information.
Other releases:
We are happy to announce the release of CKEditor 5 v41.2.0.
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.
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.
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.comments.copyMarkers
configuration property to an empty array.BlockToolbar
and BalloonToolbar
toolbars are now filled on the EditorUIReadyEvent
instead of Plugin#afterInit()
.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
.comments.copyMarkers
configuration property to learn more.editor.accessibility
namespace to the base Editor
class as a container for accessibility-related features and systems. See #1014. (commit)link.allowedProtocols
configuration property. Closes #14304. (commit)revisionHistory.requireRevisionName
configuration option which makes the revision name required.AccessibilityHelp
plugin that brings a dialog displaying keyboard shortcuts available in the editor. Closes #1014. (commit)ai.openAI.requestParameters
configuration will no longer be overwritten by default parameters.ckboxImageId
attribute. Closes #15581. (commit)translations
from the defaultConfig
if they were not provided in the create
method. Closes #15902. (commit)FontBackgroundColor
plugin is enabled. It should also be able to preserve a partly defined style. Closes #15757, #10399. (commit)ImageInsertViaUrlUI
so it does not depend on the configured plugins order. Closes #15869. (commit)model-position-before-root
error thrown sometimes by the Pagination
plugin, especially when loading big content in real-time-editing integration.TableUtils#getColumns()
should exclude elements other than tableCell
(for example, marker elements) while counting. (commit)BlockToolbar
and BalloonToolbar
plugins order should not matter when it comes to registering toolbar items. Closes #15581. (commit)keyCodes
object should contain correct codes for keys related to punctuation, brackets, braces, etc. See #1014. (commit)DataApiMixin
and moved the setData()
and getData()
methods directly to the Editor
class. (commit)AccessibilityHelp
plugin by default. See #1014. (commit)max-width
set to 200px
by default. (commit)data-cke-tooltip-text
is removed while the tooltip is open. (commit)data-cke-tooltip-position
changes while the tooltip is open. (commit)Check out the Versioning policy guide for more information.
Minor releases (contain minor breaking changes):
Releases containing new features:
Other releases: