Skip to content
This repository has been archived by the owner on Sep 6, 2021. It is now read-only.

Latest commit

 

History

History
2478 lines (1952 loc) · 330 KB

CHANGELOG.md

File metadata and controls

2478 lines (1952 loc) · 330 KB

Changelog

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 following the 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):