Skip to content

Latest commit

 

History

History
3239 lines (2567 loc) · 429 KB

CHANGELOG.md

File metadata and controls

3239 lines (2567 loc) · 429 KB

Changelog

27.1.0 (2021-04-19)

Release highlights

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

This release introduces some new features:

There were also a few bug fixes:

MINOR BREAKING CHANGES ℹ️

  • engine: Added the new useFillerType() method in the DataProcessor interface. Classes based on this interface should implement useFillerType() to avoid errors.
  • upload: The asynchronous SimpleUploadAdapter#upload() method resolves to an object with normalized data including the urls object, which was only returned before. This may affect all integrations depending on the SimpleUploadAdapter uploading mechanism.

Features

  • alignment: Added support for the deprecated align attribute. Closes #9193. (commit)
  • block-quote: Added support for nested block quotes. Check the migration guide if you want to disable this behavior and disallow nesting quotes. Closes #9210. (commit)
  • engine: Introduced new "markedNbsp" block filler mode in DomConverter, in which <span data-cke-filler="true">&nbsp;</span> is inserted, to prevent leaking extra space characters into the data. (commit)
  • engine: Introduced useFillerType() in HtmlDataProcessor and XmlDataProcessor to switch between using marked and regular nbsp block fillers. Closes #9345. (commit)
  • engine: Enabled marker downcast for document fragments. Closes #9460. (commit)
  • image: Introduced the uploadComplete event in ImageUploadEditing that allows customizing the image element (e.g. setting custom attributes) based on the data retrieved from the upload adapter. Closes #5204. (commit)
  • media-embed: Introduced the config.mediaEmbed.elementName to allow setting semantic element name. Closes #9373. (commit)
  • table: Added support for nested tables. Check the migration guide if you want to disable this behavior and disallow nesting tables. Closes #3232. (commit)
  • upload: The upload adapters' asynchronous #upload() method resolves to an object with additional properties along with the urls hash. See more in #5204. (commit)

Bug fixes

  • clipboard: The selection was stuck and impossible to change in read-only mode. Closes #9372. (commit)
  • clipboard: The nested editable element should not be dragged. Closes #9370. (commit)
  • code-block: Markers created in or on code block element are now preserved after the document is loaded. Closes #9402. (commit)
  • core: The MultiCommand.execute() method prevents calling undefined commands. (commit)
  • engine: While setting attributes upon upcast conversion, do not override attributes that have already been set. The correct behavior is to keep the attributes applied by the deepest nodes in the view tree as, in most cases, the deepest node will have precedence (e.g. an inline style applied by the deepest node). Closes #8921. (commit)
  • track-changes: Accepting multiple "turn on/off list item" suggestions (created by multiple users) that should cause the same effect will have a correct result now.
  • watchdog: Removed imports from the ckeditor5 package. Closes #9315. (commit)
  • widget: Hide the selection handler in the nested widget if the outer widget is hovered or selected. Closes #9453, #8964. (commit)
  • The editor was not initialized with the empty data for config.initialData set to an empty string. Closes #8974. (commit)

Other changes

  • list: Introduced the config.forceValue option to ListCommand that forces turning list items on or off instead of toggling. (commit)
  • Updated translations. (commit)
  • real-time-collaboration: The Editor.create() method will throw an error if the initial websocket connection cannot be established.

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:

27.0.0 (2021-03-22)

Release highlights

We are happy to announce the release of CKEditor 5 v27.0.0 that contains security fixes for multiple packages: ckeditor5-engine, ckeditor5-font, ckeditor5-image, ckeditor5-list, ckeditor5-markdown-gfm, ckeditor5-media-embed, ckeditor5-paste-from-office, ckeditor5-widget. Even though this is a low impact issue and only affects the victim's browser with no risk of data leakage, an upgrade is highly recommended! You can read more details in the relevant security advisory and contact us if you have more questions.

The CKEditor 5 team would like to thank Yeting Li for recognizing and reporting these vulnerabilities.

Starting from this version, collaboration features release notes will be included in the CKEditor 5 changelog. Changes for the previous releases are available on https://ckeditor.com/collaboration/changelog/.

This release introduces some new features:

Read more in the blog post: https://ckeditor.com/blog/ckeditor-5-v27.0.0-with-drag-and-drop-text-part-language-and-bubbling-events/.

MAJOR BREAKING CHANGES ℹ️

Note: Check out the Migration to CKEditor 5 v27.0.0 guide for more detailed information on how to upgrade to this version.

  • clipboard: The inputTransformation event is no longer fired by the Clipboard plugin. Now the ClipboardPipeline plugin is responsible for firing this event (see #9128).
  • clipboard: The clipboardInput and inputTransformation events should not be fired or stopped in the feature code. The data.content property should be assigned to override the default content instead. You can stop this event only if you want to completely disable pasting or dropping of some content. Read more about the clipboard pipeline in the migration to v27.0.0 guide. See #9128.
  • Introduced bubbling of the view.Document events, similar to how bubbling works in the DOM. This allowed us to re-prioritize many listeners that previously had to rely on the priority property. However, it means that existing listeners that use priorities may now be executed at a wrong time. The listeners to such events should be reviewed in terms of when they should be executed (in what context/element/phase). Read more about event bubbling in the migration to v27.0.0 guide. See #8640.

Features

  • alignment: Introduced an option to use classes instead of inline styles. Closes #8516. (commit)
  • autoformat: Typing [x] will insert a checked to-do list item. Closes #8877. (commit)
  • clipboard: Implemented basic support for content drag and drop. Closes #9128. (commit)
  • clipboard: The contentInsertion event is fired from ClipboardPipeline to enable customization of content insertion (see #9128). (commit)
  • core: Created the universal caption icon. Closes #9196. (commit)
  • engine: Introduced bubbling of the view.Document events, similar to how bubbling works in the DOM. Bubbling allows listening on a view event on a specific kind of element, hence simplifying code that needs to handle a specific event for only that element (e.g. enter in blockquote elements only). Read more in the Event system deep-dive guide. Closes #8640. (commit)
  • engine: Introduced ArrowKeysObserver. See #8640. (commit)
  • language: Added support for setting the text part language. Closes #8989.

Bug fixes

  • engine: DataController#toView() should have a default value for the options parameter. Closes #9293. (commit)
  • highlight The remove highlight button now also gets disabled along with the main highlight command. Closes #9174. (commit)
  • utils: The EmitterMixin#listenTo() method is split into listener and emitter parts. The ObservableMixin decorated methods reverted to the original method while destroying an observable. (commit)

Other changes

  • clipboard: The paste as plain text feature was extracted to the dedicated PastePlainText plugin (see #9128). (commit)
  • engine: The mouseup event is fired by the MouseObserver (see #9128). (commit)
  • table: The mouseup event is no longer fired by the MouseEventsObserver from the @ckeditor/ckeditor5-table package (now handled by MouseObserver) (see #9128). (commit)
  • typing: The TwoStepCaretMovement feature is now using bubbling events. Closes #7437. (commit)
  • utils: Added the language.getLanguageDirection helper function allowing to determine the text direction based on the language code. (commit)
  • Optimized icons. (commit)
  • Updated English translations for the text part language feature. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

New packages:

Major releases (contain major breaking changes):

Releases containing new features:

Other releases:

26.0.0 (2021-03-01)

Release highlights

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

This release brings some new features:

There were also some important bug fixes and improvements:

Read more in the blog post: https://ckeditor.com/blog/ckeditor-5-v26.0.0-with-extensible-builds-inline-widget-styling-and-annotations-guides/.

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MAJOR BREAKING CHANGES ℹ️

Note: Check out the Migration to CKEditor 5 v26.0.0 guide for more detailed information on how to upgrade to this version.

  • Several plugins are not loaded automatically as dependencies of other plugins anymore. From now on, they need to be provided by the editor creator manually (via config.plugins). This list includes:

    • The CloudServicesUploadAdapter plugin no longer loads CloudServices. Make sure to add CloudServices to the editor plugins when using the CloudServicesUploadAdapter or EasyImage features.
    • The EasyImage plugin no longer loads Image and ImageUpload. Make sure to add Image and ImageUpload to the editor plugins when using the EasyImage feature.
    • The CKFinder plugin no longer loads CKFinderUploadAdapter. The CKFinderEditing plugin no longer loads ImageEditing and LinkEditing features. Make sure to add CKFinderUploadAdapter, Image, and Link features to the editor plugins when using the CKFinder feature.
    • The Title plugin no longer loads Paragraph. Make sure to add Paragraph to the editor plugins when using the Title feature.
    • The ListEditing plugin no longer loads Paragraph. Make sure to add Paragraph to the editor plugins when using the List feature.
    • The LinkImageEditing plugin no longer loads ImageEditing. Make sure to add Image to the editor plugins when using the LinkImage feature.
    • The LinkImageUI plugin no longer loads Image. Make sure to add Image to the editor plugins when using the LinkImage feature.
    • The ExportPdf plugin no longer loads CloudServices. Make sure to add CloudServices to the editor plugins when using the ExportPdf feature.
    • The ExportWord plugin no longer loads CloudServices. Make sure to add CloudServices to the editor plugins when using the ExportWord feature.
  • cloud-services-core: The package was merged into @ckeditor/ckeditor5-cloud-services. All classes that were available in the @ckeditor/ckeditor-cloud-services-core package were moved to the @ckeditor/ckeditor5-cloud-services package. They should now be instantiated via factory methods on the CloudServicesCore plugin that is located in @ckeditor/ckeditor5-cloud-services. See #8811.

  • image: The following modules were moved (before → after):

    • image/image/imageinsertcommand~ImageInsertCommandimage/image/insertimagecommand~InsertImageCommand
    • image/imageresize/imageresizecommand~ImageResizeCommandimage/imageresize/resizeimagecommand~ResizeImageCommand
    • image/imageupload/imageuploadcommand~ImageUploadCommandimage/imageupload/uploadimagecommand~UploadImageCommand
  • list: The to-do list item toggle keystroke changed to Ctrl+Enter (Cmd+Enter on Mac).

  • list: The list/todolistcheckedcommand~TodoListCheckCommand module was moved to list/checktodolistcommand~CheckTodoListCommand.

  • Keystrokes with the Ctrl modifier will not be handled on macOS unless the modifier is registered as a forced one (for example: Ctrl!+A will not be translated to Cmd+A on macOS).

Features

  • cloud-services: Created the CloudServicesCore plugin that provides the base API for communication with CKEditor Cloud Services. (commit)
  • core: The PluginCollection class will allow requiring a plugin by name if it is provided in config.plugins or if it was already loaded. Closes #2907. (commit)
  • engine: ContainerElement can be marked as isAllowedInsideAttributeElement in order to allow wrapping it with attribute elements. This is useful, for example, for inline widgets. Other element types (UI, Raw, Empty) have this flag on by default but it can be changed via options.isAllowedInsideAttributeElement to false. Read more in the DowncastWriter#create*() methods documentation. Closes #1633. (commit)
  • font: Added support for the <font> element. Closes #8621. (commit)
  • utils: Added the forced modifier key (Ctrl!) for keystrokes that should not be mapped to Cmd on macOS. (commit)

Bug fixes

  • build-*: Switched the order of indent buttons in the default build configuration to "outdent, indent". Closes #8884. (commit)
  • engine: DowncastWriter should handle UIElements consistently while wrapping with and inserting them into attribute elements. Closes #8959. (commit)
  • engine: Words should not break on link boundaries. Closes #8852. (commit)
  • engine: Undoing the deletion of merged paragraphs should result in the original tree. Closes #8976. (commit)
  • engine: Pasting formatted single-line text over a widget should not split it into multiple paragraphs. Closes #8953. (commit)
  • engine: The editor placeholder should not disappear until typing started. Closes #8689. (commit)
  • engine: Fixed content is not restored on undo when multiple blocks and widgets were removed. Closes #8870. (commit)
  • font: Fixed the supportAllValues configuration for the font size and font family features to work with nested elements (tables). Closes #7965. (commit). Thanks to @dkrahn!
  • heading: In the Title plugin, the body placeholder is visible even when the body section is focused. See #8689. (commit)
  • image: The image caption placeholder is now hidden when focused. See #8689. (commit)
  • link: The Autolink plugin will no longer automatically match domains that only have a www subdomain followed with a top level domain, e.g. http://www.test. Closes #8050. (commit)
  • link: IP addresses should be converted into links by the autolink feature while typing. Closes #8881. (commit)
  • media-embed: The insertMediaEmbed command should be disabled if any non-media object is selected (see #8798). (commit)
  • table: The insertTable command should be disabled if any object is selected. Closes #8798. (commit)
  • utils: The editor keystrokes are no longer conflicting on macOS. Closes #5705. (commit)
  • The editor will show the placeholder even when focused. See #8689. (commit)

Other changes

  • Enabled creating builds that can be extended (with more plugins) without the need to recompile. This required splitting the project into the so-called DLL part and consumers of this DLL. Under the hood, the mechanism is based on webpack DLLs. This is the first part of the required changes and it contains the necessary breaking changes (see the "MAJOR BREAKING CHANGES" section above). For more information, see the DLL builds guide. Closes [#8395](#8395). (commit)

  • cloud-services-core: All classes available in the @ckeditor/ckeditor-cloud-services-core package were moved to the @ckeditor/ckeditor5-cloud-services package. They should now be instantiated via factory methods on the CloudServicesCore plugin. Closes #8811. (commit)

  • engine: The KeyObserver should provide information about metaKey being pressed. (commit)

  • image: Add WebP format support to the inline pasting of images from source URLs. (commit)

  • image: Introduced the Image.isImageWidget() utility method. (commit)

  • list: The to-do list item toggle keystroke changed to Ctrl+Enter (Cmd+Enter on Mac). (commit)

  • widget: The checkSelectionOnObject function should be exported by the @ckeditor/ckeditor5-widget package (as @ckeditor/ckeditor5-widget/src/utils) (see #8798). (commit)

  • Updated translations. (commit)

  • Unified button and command naming conventions. Old names are available as aliases. Read more about these changes in the Code style guide. Closes #8033. (commit)

    Changes in toolbar buttons (before → after):

    • imageUploaduploadImage
    • imageResizeresizeImage
    • imageInsertinsertImage
    • imageResize:*resizeImage:*

    Changes in command names:

    • imageInsertinsertImage
    • imageUploaduploadImage
    • imageResizeresizeImage
    • forwardDeletedeleteForward
    • todoListCheckcheckTodoList

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Major releases (contain major breaking changes):

Releases containing new features:

Other releases:

25.0.0 (2021-01-25)

Release highlights

We are happy to announce the release of CKEditor 5 v25.0.0 that contains a security fix for the Markdown-GFM package. Even though this is a low impact issue and only affects the victim’s browser with no risk of data leakage, an upgrade is highly recommended! You can read more details in the relevant security advisory and contact us if you have more questions.

This release brings a few improvements and bug fixes:

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v25.0.0-with-flexible-annotations-improved-text-blocks-handling-and-performance-fixes/

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MINOR BREAKING CHANGES ℹ️

  • ui: Configuration passed to ToolbarView.fillFromConfig() will be stripped off of any leading, trailing, and duplicated separators ('|' and '-').

Features

  • autoformat: The horizontal line can be inserted by typing --- in an empty block. Closes #5720. (commit)
  • autoformat: Square brackets should convert the current line to a to-do list item. Closes #7518. (commit)
  • block-quote: The block quote should be split on the Backspace key press at the beginning of the block quote. Closes #7636. (commit)
  • engine: The new DataController#htmlProcessor property is initialized with the instance of the HtmlDataProcessor class and assigned to the DataController#processor property by default. (commit)
  • typing: An empty block element at the beginning of the limit element should be converted to a paragraph on the Backspace key press. Closes #8137. (commit)
  • ui: Implemented additional panel positions for the DropdownView class to address edge cases when the panel is cut due to small screen size (see #7700, #8669). (commit)
  • ui: Items baked into the editor bundles can now be removed from the toolbar by using config.toolbar.removeItems. Closes #7945. (commit)

Bug fixes

  • autoformat: Formatting will not be applied to snake_case_scenarios anymore. Closes #2388. (commit)
  • engine: The setData() helper in the dev-utils model should support the batchType option. Closes #7947. (commit)
  • export-pdf: The command should use the proper token if executed without providing a token in the command options.
  • export-word: The command should use the proper token if executed without providing a token in the command options.
  • horizontal-line: The horizontal line feature should require the Widget plugin. Closes #8825. (commit)
  • html-embed: Pasting an HTML embed widget from the clipboard will not clear its content anymore. Closes #8789. (commit)
  • html-embed: The HTML embed plugin should require the Widget plugin. Closes #8720. (commit)
  • html-embed: The save button should close the source mode even if there are no changes. Closes #8560. (commit)
  • image: The image plugins can be loaded in any order without causing an error. Closes #8270. (commit)
  • image: Allow pasting an image with a data URL scheme as the value of the src attribute if strict CSP rules are defined. Closes #7957. (commit)
  • image: Fixed the image resizer for images with links. Closes #8749. (commit)
  • image: An empty image caption should be hidden if the editor is in read-only mode. Closes #5168. (commit)
  • link: Removing a link from an image should not throw an error when link decorators are also present. Closes #8401. (commit)
  • list: The delete event handler is now listening on a higher priority to avoid being intercepted by the block quote and widget handlers. Closes #8706. (commit)
  • pagination: The pagination plugin should be disabled and a warning should be displayed if its configuration is missing.
  • page-break: Dropping an image on the page break widget should not crash the editor. Closes #8788. (commit)
  • page-break: The page break feature should require the Widget plugin. Closes #8825. (commit)
  • special-characters: The special characters dropdown should always fit into the viewport. Closes #7700, #8669. (commit)
  • table: The contents of nested tables are no longer going through upcasting. Closes #8393. (commit)
  • table: The table properties balloon should always follow the table when the alignment changes. Closes #6223. (commit)
  • theme-lark: The HTML embed text in a disabled input in Safari on iOS should have the same color as in other browsers. Closes #8320. (commit)
  • theme-lark: The dropdown button should not have an inner shadow in active state. Closes #8699. (commit)
  • ui: The "Show more items" toolbar button tooltip should not overflow the editor. Closes #8655. (commit)
  • ui: The '-' (new line) divider should not be rendered when grouping is enabled. Closes #8582. (commit)
  • word-count: The word count feature should consider a string with a special character as a single word. Closes #8078. (commit)

Other changes

  • engine: Optimized the Model#insertContent() function to use as few operations as possible to reduce the time needed to handle pasting large content into the editor. Closes #8054, #715. (commit)
  • engine: Improved performance of the Differ#getChanges() function. Closes #8188. (commit)
  • export-word: The timezone option should be passed to the Export to Word converter.
  • html-embed: A placeholder should be displayed if the HTML snippet is not previewable or empty. Closes #8435. (commit)
  • link: Improved how the fake selection marker for the link UI is created. Closes #8092. (commit)
  • mention: The conversion API reference is no longer passed down to the attribute properties. Closes #8370. (commit)
  • Updated translations. (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:

24.0.0 (2020-12-07)

Release highlights

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

This release brings some new features:

There were also some important bug fixes:

Please note that there are some major breaking changes in this release. Be sure to review them before upgrading.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v24.0.0-with-multiline-toolbar-and-accessible-input-labels/

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MAJOR BREAKING CHANGES ℹ️

  • engine: The DocumentSelection#markers collection will not include all markers by default. Use DocumentSelection#observeMarkers() to register that the given marker should be put in the #markers collection when the document selection is placed inside it.
  • theme-lark: The look and behavior of the LabeledFieldView UI component (used for displaying fields across the project) have changed. This may require changes in your integration if it customizes the .ck-labeled-field-view selector (or its internals).

MINOR BREAKING CHANGES ℹ️

  • image: The parameters of the image utility function insertImage() parameters have changed. The removed writer instance is no longer needed. Additionally, you can specify insertPosition as an optional parameter.

Features

Bug fixes

  • basic-styles: The code style should not be copied to a new line on pressing the Enter key. Closes #8144. (commit)
  • clipboard: Pasting plain text inside a link or a restricted editing editable region will no longer break them. Closes #8158. (commit)
  • engine: DomConverter will not trim whitespaces in nodes that are siblings to inline raw content elements (e.g. MathML). Closes #5870. (commit)
  • engine: The select all command should include all selectable elements in the content. Closes #7978. (commit)
  • engine: The editor should not crash when selecting an image from bottom to top. Closes #7892. (commit)
  • font: Fixed the fontSize.supportAllValues configuration for the FontSize plugin to work with nested elements. Closes #8233. (commit)
  • html-embed: Tooltips in HTML embeds should not affect the editing root size or scrollbar. Closes #8340. (commit)
  • html-embed: HTML embed editing UI should not be broken when the editor uses an RTL language. Closes #8335. (commit)
  • html-embed: The editor will not crash after inserting broken HTML. Closes #8323. (commit)
  • html-embed: Fixed saving the widget content after it lost the selection. Closes #8328. (commit)
  • html-embed: The save button will now reflect the command state. Closes #8357. (commit)
  • html-embed: The editing root should remain focused when saving changes in the HTML embed widget. Closes #8318. (commit)
  • html-embed: Floated images are now properly displayed around HTML embeds. Closes #8332. (commit)
  • image: Do not attach the image resizer to images inside the HTML embed preview. Closes #8433. (commit)
  • indent: The block indent feature will now work with custom headings. Closes #8177. (commit)
  • link: The editor should not crash when inserting a link after another link with the same URL. Closes #8210. (commit)
  • link: Fixed the unlink command for a selection spreading over 3+ blocks. Closes #8030. (commit)
  • link: Fixed a quick image flicker of the image resize frame when inserting an image. Closes #8088. (commit)
  • list: List styles will be inherited correctly when pasting a list into another list. Closes #8160. (commit)
  • paste-from-office: Improved the mechanism that detects nested lists when pasting from Word. In some scenarios, pasting nested lists could produce invalid results in the editor. Closes #7805. (commit)
  • theme-lark: The HTML embed editing UI should not be broken when the editor uses an RTL language (see #8335). (commit)
  • ui: A toolbar with grouped items should wrap to keep items visible in the viewport. Closes #5586 . (commit)
  • undo: Fixed restoring selection on undo for some scenarios when some selection ranges are in the graveyard after restoring them. (commit)
  • utils: Fixed a memory leak in EventEmitterMixin. See #8480. (commit)
  • Fixed building documentation on Windows. Closes #7212. (commit)

Other changes

  • engine: The DocumentSelection#markers collection will now be updated only for observed markers groups. See DocumentSelection#observeMarkers(). (commit)
  • widget: WidgetResize#visibleResizer and WidgetResize#getResizerByViewElement() are now public. See #8088. (commit)
  • widget: WidgetResize will now automatically set WidgetResize#visibleResizer when calling WidgetResize#attachTo() if the corresponding resizer's element is focused during the call. See #8088. (commit)
  • Optimized icons. (commit)
  • Updated translations. (commit, commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Major releases (contain major breaking changes):

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

23.1.0 (2020-10-29)

Release highlights

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

This release introduces a new HTML embed feature and adds the list style feature to the document editor build.

It also comes with new API features:

Other than that, this release brings several bug fixes, to name a few:

Please note that there are some minor breaking changes. Be sure to review them before upgrading.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v23.1.0-with-raw-HTML-embedding-and-reconversion-API/

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MINOR BREAKING CHANGES ℹ️

  • table: Removed the ensureParagraphInTableCell() converter that corrected the model state after the conversion process. Now the model will be fixed (if needed) by the post-fixer (injectTableCellParagraphPostFixer()).
  • utils: The attachLinkToDocumentation() helper was removed. To log errors with an attached documentation link to the console, use logWarning() and logError().

Features

  • build-decoupled-document: Added the list style feature to the document editor build. Closes #7941. (commit)
  • engine: Elements with the data-cke-ignore-events attribute will not propagate their events to the CKEditor 5 API. Closes #4600. (commit)
  • engine: Introduced an automatic model-to-view reconversion by defining the triggerBy option for the elementToElement() conversion helper. Closes #7956. (commit)
  • html-embed: Introduced the HTML embed feature. Closes #8204. (commit)

Bug fixes

  • engine: Model#deleteContent() should properly remove content with multiple blocks selected. Closes #8145. (commit)
  • image: Removed focus outline in the "insert image via URL" form. Closes #7973. (commit)
  • image: The insert button in the insert image dropdown is now disabled when the URL input is empty. Closes #7917. (commit)
  • image: The URL input field is now focused when the image dropdown is opened. Closes #7896. (commit)
  • link: Improved the look of link balloon button separators on mobiles. Closes #7704. (commit)
  • link: Pressing Ctrl/Cmd+K when LinkCommand is disabled no longer shows the link UI. Closes #7919. (commit)
  • link: The autolink feature now uses link.defaultProtocol if set. Closes #8079. (commit)
  • list: List conversion does not throw an error if the list element is being surrounded by raw text nodes. Closes #8262. (commit)
  • media-embed: Disabled the save button in the insert media dropdown when the input is empty. See #7917. (commit)
  • media-embed: URLs with the % character are now allowed for embedding media. Closes #7488. (commit)
  • media-embed: Enabled the media embed command when the selected media is in a table cell. Closes #7604. (commit)
  • table: Pasting nested tables with content unsupported by the editor elements no longer throws an exception. Closes #8098. (commit)

Other changes

  • table: Table cell's content refreshing for the editing view now makes fewer view updates. (commit)
  • utils: Improved the readability of custom errors in the console. Closes #8140. (commit)
  • Optimized icons. (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:

23.0.0 (2020-09-29)

Release highlights

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

This release brings the new pagination feature.

Other than that, we focused on bug fixes and stability improvements. Some highlights are listed below:

Please note that there are some major breaking changes. Be sure to review them before upgrading.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v23.0.0-with-pagination-feature-list-styles-and-improved-image-upload/

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MAJOR BREAKING CHANGES ℹ️

  • image: In order to use the "insert image via URL" feature you now need to load the ImageInsert plugin and use the imageInsert button instead of the imageUpload button that implemented this functionality previously.

MINOR BREAKING CHANGES ℹ️

  • clipboard: When pasting plain text, each double line break is now treated as a paragraph separator, while a single line break is converted into a soft break. Formerly, every single line break was treated as paragraph separation.

Features

  • clipboard: Improved line to paragraph/soft break retention when pasting as plain text. Closes #7884. (commit)
  • utils: Added a user-agent check for the Blink engine to the env module. (commit)
  • Introduced the PastePlainText feature that detects pasting with Ctrl/cmd + Shift + V keystroke. Closes #7799. (commit)

Bug fixes

  • clipboard: The editor now properly places soft breaks in the plain text clipboard data representation. Closes #8045. (commit)
  • engine: The model.History#getOperations() method was returning incorrect values if history had operations with negative version numbers or version numbers differing by more than one. Closes #8143. (commit)
  • image: Aligned and fixed the styling for the split button in the ImageInsert dropdown. Closes #7986, #7927. (commit)
  • link: Manual decorators will no longer be corrupted by the link image plugin. Closes #7975. (commit)
  • link: Prevented throwing an error when creating a link from a multi-block selection. Closes #7907. (commit)
  • link: Pressing the Enter key should not throw an error when a non-collapsed selection ends with a valid URL. Closes #7983. (commit)
  • link: The link balloon positioning should be correct when the selection is collapsed in some rare cases. Closes #7926. (commit)
  • list: The list style plugin will no longer cause the editor to crash when indenting a list item that is the last element in the editor. Closes #8072. (commit)
  • list: Undo will restore a proper value of the list-style-type attribute in the view element after undoing list merge. Closes #7930. (commit)
  • list: Fixed a bug that prevented using the same list style for nested lists. Closes #8081. (commit)
  • list: The listStyle attribute should be inherited when inserting or replacing a listItem with the same list type (the listType attribute for the inserted or modified item is equal to the next or previous sibling list). Closes #7932. (commit)
  • list: When removing the content between two lists items, these lists will be merged into a single list. The second list should adjust its listStyle attribute to the first list. Closes #7879. (commit)
  • paste-from-office: Fixed pasting a list with an empty item from Google Docs. Closes #7958. (commit)

Other changes

  • cloud-services-core: Change the token refreshing mechanism to depend on the token expiration time. (commit)
  • image: The config.image.upload.panel.items option does not need to be set anymore in order to show the "insert image via URL form". It is enough to load the new ImageInsert plugin and use the new imageInsert button. See #8034. (commit)
  • image: Introduced ImageInsert as a standalone plugin that contains the ImageUpload functionality. Closes #7890. (commit)
  • image: The ImageUploadPanelView form label should change depending on whether the image is selected or not. Closes #7878. (commit)
  • link: The link plugin now comes with the autolink feature enabled by default. Closes #7682. (commit)
  • theme-lark: Balloon panel arrows pointing down should have realistic shadows. Closes #7928. (commit)
  • Updated translations. (commit, commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Major releases (contain major breaking changes):

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

22.0.0 (2020-08-26)

Release highlights

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

This release brings a few new features:

Please note that there are some major breaking changes. Be sure to review them before upgrading.

Read more in the blog post: https://ckeditor.com/blog/ckeditor-5-v22.0.0-with-inserting-images-via-url-list-styles-and-markdown-plugin/

Collaboration features

The CKEditor 5 Collaboration Features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MAJOR BREAKING CHANGES ℹ️

  • engine: The view and model callbacks of all one-way converter helpers (such as editor.conversion.for( 'upcast' ).elementToElement(), editor.conversion.for( 'downcast' ).attributeToElement()) now take the conversionApi as their second parameter. Previously, the second parameter was the downcast or upcast writer instance. Now, the writer needs to be retrieved from conversionApi.writer.

    An example migration snippet can be found in a GitHub comment.
  • engine: The config.view parameter for upcast element-to-element conversion helper configurations is now mandatory. You can retain the previous "catch-all" behavior for the upcast converter using the config.view = /[\s\S]+/ value.

MINOR BREAKING CHANGES ℹ️

  • table: The tableCell model element brought by the TableEditing plugin is no longer an object (SchemaItemDefinition#isObject) in the Schema but a selectable (SchemaItemDefinition#isSelectable). Please update your integration code accordingly. See #6432.
  • ui: It is now possible to override existing components when adding new ones to the component factory (previously an error was thrown). See #7803.

Features

  • clipboard: Pasting a plain text will inherit selection attributes. Closes #1006. (commit)
  • engine: Options passed to Editor#getData() and DataController#get() are now available in downcast conversion under the conversionApi.options object. Closes #7628. (commit)
  • engine: Added the conversion API to upcast and downcast helpers. Closes #7334. (commit)
  • engine: Introduced the SchemaItemDefinition#isSelectable and SchemaItemDefinition#isContent properties. Closes #6432. (commit)
  • engine: Introduced new upcast ConversionApi helper methods: conversionApi.safeInsert() and conversionApi.updateConversionResult(). The new methods are intended to simplify writing event-based element-to-element converters. Closes #7336. (commit)
  • image: Introduced the insert image via URL feature. Closes #7794. (commit)
  • indent: Block indentation is now recognized as a formatting attribute. Closes #2358. (commit)
  • list: Introduced the list style feature that allows customizing the list marker. Closes #7801. (commit)
  • markdown-gfm: Introduced the Markdown plugin. Closes #6007. (commit)
  • markdown-gfm: The Markdown data processor was revamped and got the dependencies updated. Closes #5988. (commit)
  • utils: Introduced the Rect#getBoundingRect() method that returns a Rect instance containing all the rectangles passed as an argument. Closes #7858. (commit)
  • utils: Introduced the passive option support in the DomEmitterMixin#listenTo() method. Closes #7828. (commit)
  • widget: Keyboard vertical navigation in text lines next to objects should move the caret to the position closest to the object. Closes #7630. (commit)

Bug fixes

  • engine: Upcast conversion will now try to wrap text or inline elements in a paragraph in a place where they are not allowed but a paragraph is allowed. Closes #7753, #6698. (commit)
  • engine: The selection will no longer inherit attributes from an empty inline element. Closes #7459. (commit)
  • link: Fixed a case where the link balloon would point to an invalid place after the browser scroll or resize. Closes #7705. (commit)
  • ui: Dropdown panels from the editor's main toolbar should always float above the contextual balloons from the editor's content. Closes #7874. (commit)
  • ui: Balloon toolbar should reposition and ungroup items correctly when the window resizes. Closes #6444. (commit)
  • utils: The Rect utility returns wrong sizes in case of a sequenced range. Closes #7838. (commit)

Other changes

  • markdown-gfm: Upgraded to Marked v1.1.1. Closes #7850. (commit)

  • mention: The Space key will not confirm a mention selection from the list. Closes #6394. (commit)

  • remove-format: Block formatting should be removed if the selection is inside that block. (commit)

  • table: The tableCell model element brought by the TableEditing plugin is no longer an object (SchemaItemDefinition#isObject) in the Schema but a selectable (SchemaItemDefinition#isSelectable) (see #6432). (commit)

  • table: Pressing Shift+Tab in the first table cell now selects the entire table. Closes #7535. (commit)

  • ui: The clickOutsideHandler() function will take into consideration that the editor can be placed in a shadow root while detecting a click. Closes #7743. (commit)

    Thanks to @ywsang.

  • Updated translations. (commit, commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Major releases (contain major breaking changes):

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

21.0.0 (2020-07-28)

Release highlights

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

This release packs quite a few all-around improvements, including:

We have also fixed a handful of bugs, for example:

Finally, we also took care of some of the developer experience-oriented improvements:

Please note that there are some major breaking changes. Be sure to review them before upgrading.

Read more in the blog post: https://ckeditor.com/blog/ckeditor-5-v21.0.0-with-autolink-and-export-to-word-released/

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MAJOR BREAKING CHANGES ℹ️

  • The editor.setData() method now clears the undo and redo stacks.
  • engine: The Text#is() and TextProxy#is() methods (in the model and the view) now expect to be called with '$text' instead of 'text' and '$textProxy' instead of 'textProxy'.
  • engine: The is() method (e.g. Element#is(), Text#is(), AttributeElement#is() or ContainerElement#is()) in both the model and the view no longer treats the first argument as an element name. To check the element name, use the second argument instead (node.is( 'element', 'paragraph' ) instead of node.is( 'paragraph' )).
  • engine: The marker-to-data conversion was revamped. The data format changed, the new conversion helpers were introduced and a new rule was implemented that a comma (,) is not allowed in the marker name. See the GitHub issue for a walkthrough and example migration path.
  • engine: The DomConverter#getParentUIElement() method was renamed to DomConverter#getHostViewElement() because now it supports both UIElement and RawElement (see #4469).

MINOR BREAKING CHANGES ℹ️

  • engine: The bindTwoStepCaretToAttribute() utility function was removed. Use editor.plugins.get( TwoStepCaretMovement ).registerAttribute() instead.
  • table: The findAncestor() utility function was removed.
  • table: The parameters of TableUtils#createTable() have changed. Use the options object to pass the number of rows and columns.
  • table: The removeEmptyRows() and removeEmptyRowsColumns() utility functions do not require the batch parameter anymore.
  • table: The downcastTableHeadingRowsChange() downcast converter was removed. It is no longer possible to override the headingRows attribute change in a single converter. This behavior can be customized using the table downcast converter. See #7601.

Features

  • autoformat: Block autoformat can also be triggered in blocks other than a paragraph. Closes #6170. (commit)
  • autoformat: Enabled the autoformatting feature also for blocks that are not empty. (commit)
  • engine: Implemented the view RawElement. Added the DowncastWriter#createRawElement() method. Closes #4469. (commit)
  • engine: The DataController#set() method is now decorated so plugins can listen to editor.setData() calls. (commit)
  • engine: Introduced new marker conversion helpers that produce semantic HTML data output. See DowncastHelpers#markerToData() and UpcastHelpers#dataToMarker(). Closes #7556. (commit)
  • engine: Added model Position#findAncestor() and Element#findAncestor() methods. Closes #3233. (commit)
  • engine: Changed the visibility scope of Mapper#findPositionIn() from private to public. (commit)
  • engine: Added the Range#getJoined() method for joining ranges. (commit)
  • image: Introduced the UI for manual image resizing via a dropdown or standalone buttons. Closes #5201. (commit)
  • image: Introduced the UI for restoring the original image size. Closes #5197. (commit)
  • link: Added an icon in the top-right corner of an image indicating that the image is linked. Closes #7457. (commit)
  • link: Typing over the selected link will not remove the link itself. Instead, the typed text will replace the link text. Closes #4762. (commit)
  • link: Added the AutoLink feature which replaces a plain text with a URL or e-mail address if the typed or pasted content is a link. Closes #4715. (commit)
  • page-break: Added support for pasting page breaks from Microsoft Word. Closes #2508. (commit)
  • table: Added an option to set heading rows and columns for the insertTable command and TableUtils#createTable(). Closes #6768. (commit)
  • typing: Introduced the TwoStepCaretMovement plugin. See #7444. (commit)
  • utils: Introduced the Collection#addMany() method for adding multiple items in a single call. Closes #7627. (commit)
  • utils: Introduced the Collection#change event. See #7627. (commit)
  • widget: Made it possible to disable the WidgetTypeAround plugin on the fly. Closes #6774. (commit)

Bug fixes

  • engine: Fixed incorrect selection fixing in some multi-cell selection scenarios. Closes #7659. (commit)
  • link: After backspacing into a link, the caret should still stay outside the link. Closes #7521. (commit)
  • link: Manual and automatic decorators will work properly with a link on an image. Closes #7519. (commit)
  • link: Fake visual selection should not be added to the editor's data. Closes #7614. (commit)
  • list: The editor should not crash on the Enter keypress inside a to-do list item containing soft-breaks. Closes #5866, #6585. (commit)
  • list: Links inside a to-do list item should be properly converted to HTML. Closes #5779. (commit)
  • media-embed: The editor's placeholder should disappear after inserting media into an empty editor. Closes #1684. (commit)
  • table: Pasting a table into an existing table should not set the multi-cell selection if the TableSelection plugin is disabled. Closes #7486. (commit)
  • table: Pasting a table into an existing table with headings should not break the table layout. Closes #7453. (commit)
  • table: The table structure should not be changed when removing the heading row. Closes #7454, #7601. (commit)
  • table: Merging cells of multiple whole rows or columns should not crash the editor. (commit)
  • ui: Removing the first hidden (grouped) toolbar button should not throw an exception. Closes #7655. (commit)
  • undo: Undo/redo stacks should be cleared on DataController#set(). Closes #4060. (commit)
  • widget: Resizer#redraw() should not change the editing view unless a different size should be set. Closes #7633. (commit)
  • widget: Triple-clicking inside an image caption should not crash the editor in Firefox. Closes #7542. (commit)
  • widget: Triple-clicking a link inside an image caption should not crash the editor in Safari. Closes #6021. (commit)
  • widget: The resizing mechanism will not trigger other view.Document#mousedown events. Thanks to that, when resizing an image inside a cell, the mouse will not trigger the table's actions. Closes #6755. (commit)

Other changes

  • core: Added icons that represent different sizes of an object (object-size-*.svg) (see #7559). (commit)
  • core: The Editor, CommandCollection and MultiCommand's execute() method will return the result of the called command.execute(). Closes #7647. (commit)
  • engine: Changed arguments of the Element#is(), Text#is(), TextProxy#is(), AttributeElement#is(), ContainerElement#is(), EditableElement#is(), EmptyElement#is(), UIElement#is() methods and all their usages. Closes #7608. (commit)
  • engine: Added the model.Schema instance to the downcast conversion API, available under conversionApi.schema. (commit)
  • engine: UpcastHelpers#elementToMarker() is now deprecated. Use UpcastHelpers#dataToMarker() instead. DowncastHelpers#markerToElement() should only be used for editing downcast. (commit)
  • engine: Table cells should not be filled with single spaces when pasting a table with empty cells. Closes #7487. (commit)
  • engine: The bindTwoStepCaretToAttribute() engine's utility was removed. See #7444. (commit)
  • image: Allow to configure ImageResize in a more granular way. For example, by combining ImageResizeEditing with ImageResizeHandles or ImageResizeButtons to resize an image with handles or with the image toolbar UI components (dropdown or standalone buttons) respectively. Closes #7579. (commit)
  • image: Image alignment styles (alignLeft, alignCenter and alignRight) no longer set max-width: 50% of the <figure> element. If you wish them to still do so, add these styles to your content styles. (commit)
  • table: Restoring the document selection to the ranges as they were before undoing table cells merge. Closes #6639. (commit)
  • ui: Improved toolbar rendering time when multiple items are added or removed at once (e.g. during the editor initialization). Closes #6194. (commit)
  • Link's attribute element highlight is now inlineHighlight() - a public utility. (commit)

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Major releases (contain major breaking changes):

Minor releases (contain minor breaking changes):

Releases containing new features:

Other releases:

20.0.0 (2020-06-24)

Release highlights

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

This release brings some highly anticipated features:

New features were also accompanied by a set of bug fixes, to name a few:

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v20.0.0-with-linking-images-and-multi-cell-comments-released/

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MAJOR BREAKING CHANGES ℹ️

MINOR BREAKING CHANGES ℹ️

  • table: The TableNavigation plugin was renamed to TableKeyboard.
  • table: The values returned by the TableWalker iterator have changed. See #6785.
  • widget: Removed the getWidgetTypeAroundPositions() helper since the "Insert new paragraph" buttons are now visible regardless of the widget location in the document
  • The isTableWidget() and toTableWidget() utility functions were removed.
  • The functions getSelectedTableWidget() and getTableWidgetAncestor() from table/utils module were moved to the table/utils/widget module.
  • The functions getSelectedTableCells(), getTableCellsContainingSelection(), getSelectionAffectedTableCells(), getRowIndexes(), getColumnIndexes(), and isSelectionRectangular() from table/utils module were moved to table/utils/selection module.
  • The functions getVerticallyOverlappingCells(), splitHorizontally(), getHorizontallyOverlappingCells(), and splitVertically() from table/utils module were moved to table/utils/structure module.
  • The functions findAncestor(), updateNumericAttribute(), createEmptyTableCell(), and isHeadingColumnCell() from table/commands/utils module were moved to table/utils/common module.
  • The functions getSingleValue() and addDefaultUnitToNumericValue() from table/commands/utils module were moved to table/utils/table-properties module.
  • The functions cropTableToDimensions() and trimTableCellIfNeeded() from table/tableselection/croptable module were moved to table/utils/structure module.
  • The functions repositionContextualBalloon(), getBalloonTablePositionData(), and getBalloonCellPositionData() from table/ui/utils module were moved to table/utils/ui/contextualballoon module.
  • The functions getBorderStyleLabels(), getLocalizedColorErrorText(), getLocalizedLengthErrorText(), colorFieldValidator(), lengthFieldValidator(), lineWidthFieldValidator(), getBorderStyleDefinitions(), fillToolbar(), and getLabeledColorInputCreator() from table/ui/utils module were moved to table/utils/ui/table-properties module.
  • The defaultColors constant from table/ui/utils module was moved to table/utils/ui/table-properties module.

Features

  • link: Introduced the linking images feature. Closes #7330. (commit)
  • link: Introduced the LinkImageUI plugin that brings a UI to wrap images in links. Closes #7331. (commit)
  • link: A fake caret (selection) should be displayed in the content when the link input has focus and the browser does not render the native caret (selection). Closes #4721. (commit)
  • link: Introduced the config.link.defaultProtocol option for adding it automatically to the links when it's not provided by the user in the link form. Closes #4858. (commit)
  • theme-lark: Added styles for the fake link caret (selection) (see #4721). (commit)
  • theme-lark: Added styles for a "fake caret" brought by the WidgetTypeAround plugin (see #6693). (commit)
  • typing: Created a public isNonTypingKeystroke() helper (see #6693). (commit)
  • upload: Introduced the config.simpleUpload.withCredentials request configuration. Closes #7282. (commit)
  • utils: Created isArrowKeyCode(), getLocalizedArrowKeyCodeDirection(), and isForwardArrowKeyCode() helpers (see #6693). (commit)
  • widget: Implemented keyboard support for inserting paragraphs around block widgets using a "fake horizontal caret" (WidgetTypeAround). Both "Insert new paragraph" buttons are now always displayed for all block widgets regardless of their location in the document. Closes #6693, #6825, #6694. (commit)

Bug fixes

  • autoformat: Autoformatting should not occur inside an existing text with a model code attribute. Closes #1239. (commit)
  • engine: The editor should not crash when the initial data includes HTML comments. Closes #5734. (commit)
  • engine: The model selection post-fixer should not set a new selection if the ranges before and after post-fixing are the same (see #6693). (commit)
  • engine: Backspace will no longer change the type of the trailing block. Closes #6680. (commit)
  • font: The Font Family feature should apply the complete family value from the configuration when config.fontFamily.supportAllValues is true. Closes #7285. (commit)
  • image: The widget toolbar won't be shown if an empty collection of items was provided in the editor's configuration. Closes #5857. (commit)
  • image: The src and alt attributes for the image element will be always added to the editor's data. Even if they are empty. Closes #5033. (commit)
  • table: Table multi-cell selection should not be possible with the keystrokes when the TableSelection plugin is disabled. Closes #7483. (commit)
  • table: Copied and pasted table fragment should maintain the proper structure when the fragment contains merged table cells. Closes #7245. (commit)
  • table: Removing empty rows will no longer produce an invalid table model in certain scenarios. Closes #6609. (commit)
  • ui: The BalloonToolbar should not show up when multiple objects (for instance, table cells) are selected at a time. Closes #6443. (commit)

Other changes

  • engine: Added the ignoreMarkers option to the Model#hasContent() method. (commit)
  • engine: Added Writer#cloneElement(). Closes #6819. (commit)
  • horizontal-line: Improved the look of horizontal lines in the editor content. Closes #7418. (commit)
  • link: The selection after inserting a link will land after the inserted element. Thanks to that a user will be able to type directly after the link without extending the link element. Closes #1016. (commit)
  • link: After clicking at the beginning or end of the link element, the selection will land before/after the clicked element. Thanks to that a user will be able to typing before or after the link element as normal text without extending the link. See #1016. (commit)
  • paragraph: The InsertParagraphCommand should split ancestors of the Position to find a parent that allows 'paragraph' (see #6693). (commit)
  • select-all: Improved the select-all feature so that it includes more and more content if the selection was anchored in a nested editable. Closes #6621. (commit)
  • table: Removed options.asWidget from most of the table converters which are never run in data pipeline. (commit)
  • table: Marker on table cells should be downcasted to CSS classes on cells (instead of wrapping the content). Closes #7360. (commit)
  • table: Pasting a table into a table is more tolerant for whitespaces around a pasted table. Closes #7379. (commit)
  • table: Extracted TableMouse plugin from TableSelection plugin. Closes #6757. (commit)
  • table: Refactor values returned by the TableWalker iterator. Closes #6785. (commit)
  • table: Add row, startColumn, and endColumn options to TableWalker constructor. See #6785. (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:

19.1.1 (2020-05-29)

Bug fixes

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

19.1.0 (2020-05-27)

Release highlights

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

This release further refines the table feature, brings a helper for convenient typing in tight places before or after widgets (such as images or tables) and brings a major change in our code infrastructure. Most notable enhancements are:

But we did not stop there, as the release comes with several bug fixes, too:

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v19.1.1-with-table-enhancements-typing-around-widgets-and-print-to-PDF-feature/

Collaboration features

The CKEditor 5 collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

MINOR BREAKING CHANGES ℹ️

  • media-embed: The MediaEmbedUI#form property was removed from the API.
  • table: The cropTable() utility method was removed. Use the cropTableToDimensions() method instead.
  • theme-lark: A new custom --ck-color-focus-border-coordinates CSS property was added and the existing --ck-color-focus-border property now uses it internally. If your integration overrides the latter, we recommend you update the former to avoid compatibility issues with various editor UI features.

Features

Bug fixes

  • cloud-services: A Token instance will be destroyed by the CloudServices context plugin. Closes #7248. (commit)
  • code-block: Fixed conversion of some entities (like &nbsp;, &amp;) in a code block. Closes #5901. (commit)
  • media-embed: Made it possible to use the mediaEmbed button more than once (in more than one toolbar). Closes #6333. (commit)
  • media-mebed: The media widget conversion will no longer discard widget internals (drag or resize handlers, buttons to insert paragraphs, etc.) injected by other features when converting the URL (see #407). (commit)
  • table: Setting the column as a header will now properly split column-spanned cells. Closes #6658. (commit)
  • table: The table properties balloon should always be visible if a table is bigger than the visible viewport. Closes #6190. (commit)
  • table: When the state is restored or the user enters a color value manually, the color input will now properly match the color label (if any is available). Closes #6791. (commit)
  • table: The editor will not crash when removing columns next to row-spanned cells. Closes #6789. (commit)
  • table: The table properties button should not be enabled if all the property commands are disabled. Closes #6679. (commit)
  • table: Table heading rows should be properly updated after removing rows as a side effect of merging cells. Closes #6667. (commit)
  • table: Empty table rows are properly handled during the conversion and layout post-fixing. Closes #3274. (commit)
  • table: Shift+click will now use an anchor cell if there is any. Closes #6453. (commit)
  • table: Fixed insert table row/column commands when a widget is selected inside a table cell. Closes #6607. (commit)
  • table: Table keyboard navigation should not alter the native Shift+Arrow behavior inside a table cell. Closes #6641. (commit)
  • table: Merging cells no longer wraps the text in a <span> element rather than paragraph in a certain scenario. Closes #6260. (commit)
  • widget: The widget toolbar should always be visible even if the widget is bigger than the visible viewport (see #6190). (commit)

Other changes

  • mention: Renamed MentionAttribute._uid to a MentionAttribute.uid as it needs to be used by integrators when implementing custom converters. Closes #6587. (commit)
  • table: Adding a new row in the table copies the structure of the selected row. Closes #6549. (commit)
  • table: Display a human readable color value in the color input field. Closes #6241. (commit)
  • table: Changed the insert row above/below buttons order in the table dropdown. Closes #6702. (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:

19.0.0 (2020-04-29)

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

This release is focused on further improving the table selection plugin and includes the following enhancements:

We also introduced support for plural forms in our translation API, added the select all feature and created the supportAllValues option to preserve any font family or size value.

We also did several performance tweaks to improve CKEditor 5 data processing and rendering time.

A few bugs have been fixed, most notably:

Finally, this release comes with some important breaking changes. The most notable ones are:

  • Make sure the latest version of the Essentials plugin or the SelectAll plugin is installed in your integration. Either is required for proper keystroke handling in editor widgets.
  • The format of stored editor translations changed. If you use window.CKEDITOR_TRANSLATIONS, see #334.
  • The translate() function from the translation-service was marked as protected. See #334.
  • The getPositionedAncestor() helper will no longer return the passed element when it is positioned.
  • The ViewCollection no longer has the locale property.
  • The ViewCollection#constructor() no longer accepts the locale parameter.
  • The LabeledView component was renamed to LabeledFieldView. Also, its instance of a labeled component's view is available through LabeledFieldView#fieldView. It replaced LabeledView#view.
  • The DropdownView#focusTracker property was removed as it served no purpose.
  • From now on, the SpecialCharactersNavigationView is an instance of the FormHeaderView and unnecessary SpecialCharactersNavigationView#labelView was removed.
  • The env.isEdge property was removed. See ckeditor/ckeditor5#6202.

Check the list of packages below to learn more about these and other minor breaking changes.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v19.0.0-with-table-enhancements-improved-performance-and-select-all-feature/.

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

Dependencies

New packages:

Major releases (contain major breaking changes):

Major releases (contain minor breaking changes):

Major releases (dependencies of those packages have breaking changes):

18.0.0 (2020-03-19)

We are happy to announce the release of CKEditor 5 v18.0.0. This release introduces support for selecting multiple table cells, rows or columns and it improves structure retention for lists pasted from Microsoft Word.

We also modified our builds to include the text transformation plugin and enabled toolbar item grouping for the inline editor and balloon editor builds.

As usual, we also fixed a couple of bugs and improved existing features, mostly in the table plugin.

Finally, this release comes with a couple of important breaking changes. The most notable ones are:

  • Constructor for EditingController, DataController and View classes now require a StylesProcessor instance.
  • Constructor for DomConverter, HtmlDataProcessor and XmlDataProcessor classes and the createViewElementFromHighlightDescriptor() function now require an instance of view document.
  • The #document getter was removed from model nodes.
  • The GFMDataProcessor() requires the view document instance as its first parameter.
  • The BalloonToolbar plugin now groups the overflowing items by default.

Check the list of packages below to learn more about above and other minor breaking changes.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v18.0.0-with-custom-table-selection-and-pasting-nested-lists-from-Word/

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

Dependencies

Major releases (contain major breaking changes):

Major releases (contain minor breaking changes):

Major releases (dependencies of those packages have breaking changes):

17.0.0 (2020-02-19)

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

From the end user perspective, this release introduces support for styling tables and table cells as well as a new special characters picker feature. We also worked on improving the editor initialization and data processing performance.

From the developer perspective, we added support for editor contexts, adjusted the watchdog to work with editor contexts (which introduced breaking changes in that package) and introduced an extensible system for parsing and normalizing CSS properties which main goal was to make the editor better pick up certain style names in pasted/loaded content.

As usual, we also fixed a couple of bugs and improved existing features. The two features which got most improvements are image resizing and the restricted editing feature.

Finally, this release comes with a couple of important breaking changes. The most notable ones are:

Check the list of packages below to learn more about other breaking changes.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v17.0.0-with-table-styles-special-characters-and-performance-improvements/.

Collaboration features

The CKEditor 5 Collaboration features changelog can be found here: https://ckeditor.com/collaboration/changelog.

Dependencies

New packages:

Major releases (contain major breaking changes):

Major releases (contain minor breaking changes):

Releases containing new features:

Other releases:

16.0.0 (2019-12-04)

We are happy to announce the release of CKEditor 5 v16.0.0. This release introduces one of the most community-requested features: code blocks. We included a new restricted editing plugin, too.

We also did some changes in the default UI colors to improve accessibility. In addition to that, as always, the release contains many more improvements and bug fixes.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v16.0.0-with-code-blocks-and-restricted-editing/

Dependencies

New packages:

Major releases (contain major breaking changes):

Other releases:

15.0.0 (2019-10-23)

We are happy to announce the release of CKEditor 5 v15.0.0. This editor version introduces support for inserting horizontal lines, page breaks and SVG images into the WYSIWYG editor. It also allows you to define the document title section thanks to the new title plugin. The editor toolbar is now responsive which improves the UX, especially for mobile devices.

Regarding the build itself, we added the indentation button to the build's default setup. See ckeditor/ckeditor5#1844.

From other news, we changed the versioning policy. Now, all packages will have the same major version, hence, we needed to release this one as v15.0.0 (we skipped versions 13.0.0 and 14.0.0). Read more about the new versioning policy.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v15.0.0-with-horizontal-line-page-break-responsive-toolbar-and-SVG-upload-support/

Dependencies

New packages:

Major releases (contain major breaking changes):

Other releases:

12.4.0 (2019-08-26)

This release brings a huge set of new features: image resizing, to-do lists, support for RTL languages, simple upload adapter, support for pasting from Google Docs, mathematic formulas, and spelling and grammar checking. In addition to that, as always, it contains many improvements and bug fixes.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v12.4.0-with-image-resizing-to-do-lists-RTL-language-support-and-more/

Dependencies

Major releases (contain breaking changes):

Minor releases:

Patch releases (bug fixes, internal changes):

12.3.1 (2019-07-10)

We are happy to report the release of CKEditor 5 v12.3.0 (and v12.3.1 with a small fix). This release introduces several new features (word count, automatic text transformations, ability to control link attributes such as target and block indentation). It also brings improvements to existing features (e.g. the "document colors" section in the font color picker dropdowns) and many bug fixes.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v12.3.0-with-word-count-autocorrect-link-attributes-and-new-upload-adapter-released/

Dependencies

Patch releases (bug fixes, internal changes):

12.3.0 (2019-07-04)

Dependencies

New packages:

Major releases (contain breaking changes):

Minor releases:

Patch releases (bug fixes, internal changes):

12.2.0 (2019-06-05)

We are happy to report the release of CKEditor 5 v12.2.0. This is a minor release with many bug fixes and a new UI feature which allows to navigating between multiple balloons.

Note: The config.table.toolbar property that had been deprecated last year has now been completely removed. Use config.table.contentToolbar instead.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v12.2.0-with-mobile-friendly-comments-mode/

Dependencies

Major releases (contain breaking changes):

Minor releases:

Patch releases (bug fixes, internal changes):

12.1.0 (2019-04-10)

We are happy to report the release of CKEditor 5 v12.1.0. This release introduces 3 new features (mentions, font color and background color and remove format).

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v12.1.0-with-mentions-font-color-and-remove-formatting-released/

Dependencies

New packages:

Minor releases:

Patch releases (bug fixes, internal changes):

12.0.0 (2019-02-28)

We are happy to report the release of CKEditor 5 v12.0.0. This release introduces a new editor (called "Balloon block editor"), the editor content placeholder and support for inline widgets (watch this PR for updates). In addition to that we enabled media embeds and images in tables and resolved the issue where editor.getData() returned <p>&nbsp;</p> for empty content (now it returns an empty string in this case).

Besides new features, this release contains many improvements to stability, performance and API. The last group of changes contain many breaking ones. Make sure to read the notes below.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v12.0.0-with-inline-widgets-and-distraction-free-editor-released/

Important information for integration developers: The editor.getData() method will return an empty string if the editor is empty (instead of returning <p>&nbsp;</p>). Also, if you relied on editor.ui.view.editable, you will now need to use editor.ui.getEditableElement() instead. You may also want to read the below sections and the Migration guide to learn more.

Important information for plugin developers: The most important change that will affect your plugins is the removal of the upcast-converters.js and downcast-converters.js modules. You can now find those methods directly on the object returned by editor.conversion.for(). Other than that, see the changes described in the next section, the engine's changelog and read the Migration guide for the details.

Important information for custom editor developers: We cleaned up the base editor interfaces and classes (EditorWithUI, EditorUI, EditorUIView, EditableUIView) and straightened responsibilities between the UI and the engine (the engine is now the one responsible for managing editable element classes). These changes means that your custom editor implementations will need to be updated. Read more in the Migration guide.

Dependencies

New packages:

Major releases (contain breaking changes):

BREAKING CHANGES

11.2.0 (2018-12-05)

We are happy to report the release of CKEditor 5 v11.2.0. This editor version brings the long-awaited support for paste from Office (e.g. from Microsoft Word), integration with CKFinder file manager, improved image upload documentation, improved editor UI on mobile devices, as well as many smaller features and improvements.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v11.2.0-with-paste-from-Word-and-file-manager-support-released/

Important information for plugin developers: We would like to let you know about imporant breaking changes in the @ckeditor/ckeditor5-engine package. Read more about them in the @ckeditor/ckeditor5-engine@v12.0.0 release notes.

Dependencies

New packages:

Major releases (contain breaking changes):

Minor releases:

Patch releases (bug fixes, internal changes):

11.1.1 (2018-10-11)

This releases fixes the README of the below listed 4 builds on npm.

Dependencies

Patch releases (bug fixes, internal changes):

11.1.0 (2018-10-08)

We are happy to report the release of CKEditor 5 v11.1.0. This editor version brings the long-awaited media embed feature, support for block content in tables, tables available in real-time collaboration, as well as many smaller features and improvements.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v11.1.0-released/

Dependencies

New packages:

Major releases (contain breaking changes):

Minor releases:

Patch releases (bug fixes, internal changes):

11.0.1 (2018-07-18)

Internal changes only (updated dependencies, documentation, etc.).

11.0.0 (2018-07-18)

Release notes

This is a major releases that introduces two new plugins (autosave and block toolbar), many smaller features, dozens of bug fixes and a couple of infrastructure changes (an upgrade to webpack@4 and simplified structure of build repositories). Additionally, the Editor#element property was renamed to Editor#sourceElement and the Editor#updateElement() method was renamed to Editor#updateSourceElement().

If you maintain a custom build of CKEditor 5 or integrate CKEditor 5 from source, we recommend reading the migration guide.

Read more in the blog post: https://ckeditor.com/blog/CKEditor-5-v11.0.0-released/

Dependencies

New packages:

Major releases (contain breaking changes):

Minor releases:

Patch releases (bug fixes, internal changes):

Features

Besides new features introduced by the dependencies, this version also introduces the following features:

Other changes

  • Updated webpack to version 4. (7390460)

BREAKING CHANGES

If you maintain a custom build or integrate CKEditor 5 from source, we recommend reading the migration guide. Closes ckeditor/ckeditor5#1038.

  • CKEditor 5 environment was updated to use webpack@4. webpack@4 introduced major changes in its configuration and plugin system. CKEditor 5 tools and build configuration were updated to work with webpack@4 and will not work with webpack@3.
  • The structure of build repositories was changed. The build-config.js files were removed and the build configuration is now kept only in the src/ckeditor.js files.

10.1.0 (2018-06-21)

This is a minor release that introduces many bug fixes and new features. Most notable ones are the table plugin and support for inserting soft breaks with Shift+Enter.

You can read more in the blog post.

Dependencies

New packages:

Major releases (contain breaking changes):

Minor releases:

Patch releases (bug fixes, internal changes):

Features

Besides new features introduced by the dependencies, this version also introduces the following features:

  • Introduced the @ckeditor/ckeditor5-table package. (e4b9a72)

Bug fixes

Besides changes in the dependencies, this version also contains the following bug fixes:

  • The editor buttons in the document editor guide should not wrap to the next line. Closes #1077. (61c6ad6)
  • The table dropdown in the document editor snippet should not be cut off. Closes #1069. (bed8e70)

10.0.1 (2018-05-22)

Release notes

We would like to announce the release of CKEditor 5 v10.0.1 that contains a security fix for the Link package, so an upgrade is highly recommended for all CKEditor 5 installations that include it. Additionally, this release fixes an issue with the decoupled editor that blocked enabling real-time collaboration in this editor.

You can read more in the blog post.

Dependencies

Patch releases (bug fixes, internal changes):

10.0.0 (2018-04-25)

Release notes

The first stable release of CKEditor 5 🎉🎉🎉

You can read a summary blog post here: https://ckeditor.com/blog/CKEditor-5-v10.0.0-the-future-of-rich-text-editing-looks-stable/.

PS. We decided to skip version numbers lower than v5.0.0 to avoid collisions with CKEditor 3-4.

BREAKING CHANGES

  • The license under which CKEditor 5 is released has been changed from a triple GPL, LGPL and MPL license to a GPL2+ only. See ckeditor/ckeditor5#991 for more information.

Dependencies

Major releases (contain breaking changes):

1.0.0-beta.4 (2018-04-19)

Release notes

This is a minor release that mainly focuses on stabilizing the two-step caret movement around links.

A breaking change was introduced in the document editor build – refer to its changelog for more information.

Finally, two new plugins were introduced – ParagraphButtonUI and HeadingButtonsUI which make it possible to replace the headings dropdown with separate buttons for each heading level.

PS. The 1.0.0-beta.3 version number was skipped in order to align the project version number which diverged from builds version numbers

Dependencies

Major releases (contain breaking changes):

1.0.0-beta.2 (2018-04-10)

Dependencies

Major releases (contain breaking changes):

Other changes

  • @ckeditor/ckeditor5-cloudservices was renamed to @ckeditor/ckeditor5-cloud-services and @ckeditor/ckeditor-cloudservices-core to @ckeditor/ckeditor-cloud-services-core. (65380a0)

1.0.0-beta.1 (2018-03-15)

Dependencies

New packages:

Major releases (contain breaking changes):

1.0.0-alpha.2 (2017-11-14)

Dependencies

New packages:

Major releases (contain breaking changes):

Bug fixes

Besides changes in the dependencies, this version also contains the following bug fixes:

  • Brought back @ckeditor/ckeditor5-editor-classic which got mistakenly removed from the main package.json just before the release. Closes #585. (c2d246b)

1.0.0-alpha.1 (2017-10-03)

New packages:

Major releases (possible breaking changes):

BREAKING CHANGES:

Besides breaking changes introduced in the dependencies, the following breaking changes were introduced:

  • The @ckeditor/ckeditor5-build-balloon-toolbar package was renamed to @ckeditor/ckeditor5-build-balloon.
  • The @ckeditor/ckeditor5-editor-balloon-toolbar package was renamed to @ckeditor/ckeditor5-editor-balloon.
  • The @ckeditor/ckeditor5-presets package was renamed to @ckeditor/ckeditor5-essentials and the Article preset plugin was made a development util. See ckeditor/ckeditor5-essentials#1.

0.11.0 (2017-09-03)

New packages:

Minor releases (possible breaking changes):

Patch releases (bug fixes, internal changes):

0.10.0 (2017-05-07)

New packages:

Minor releases (possible breaking changes):

Patch releases (bug fixes, internal changes):

0.9.0 (2017-04-05)

New packages:

Minor releases (possible breaking changes):

Patch releases (bug fixes, internal changes):

0.8.0 (2017-03-06)

New packages:

Minor releases (possible breaking changes):

Patch releases (bug fixes, internal changes):