Skip to content

Releases: ckeditor/ckeditor5

v21.0.0

29 Jul 12:28
Compare
Choose a tag to compare

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 fixed also a handful of bug fixes, for example:

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

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

Blog post link coming soon…

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 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's name use the second argument instead (node.is( 'element', 'paragraph' ) instead of node.is( 'paragraph' )).
  • engine: Marker conversion to data has been revamped. The data format changed, the new conversion helpers were introduced and a new rule has been implemented that a comma (,) is not allowed in a 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 has been removed. Use editor.plugins.get( TwoStepCaretMovement ).registerAttribute() instead.
  • table: The findAncestor() utility function was removed.
  • table: The parameters of TableUtils#createTable() has changed. Use options object to pass number of rows and columns.
  • table: The removeEmptyRows() and removeEmptyRowsColumns() utility functions does not require the batch parameter any more.
  • table: The downcastTableHeadingRowsChange() downcast converter has been removed. It is no longer possible to override headingRows attribute change in a single converter. This behavior can be customized using a table downcast converter. See #7601.

Features

  • autoformat: Block autoformat can also be triggered in blocks other than a paragraph. Closes #6170. (commit)
  • autoformat: Enabled autoformat feature also for blocks that are not empty. (commit)
  • engine: Implemented the view RawElement. Added the DowncastWriter#createRawElement() method. Closes #4469. (commit)
  • engine: The method DataController#set() is now decorated so plugins can listen to editor.setData() calls. (commit)
  • engine: Introduced a 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 Range#getJoined() method for joining ranges. (commit)
  • image: Introduced the UI for a manual image resizing via a dropdown or standalone buttons. Closes #5201. (commit)
  • image: Introduced the UI for restoring original image size. Closes #5197. (commit)
  • link: Added an icon indicating in the top-right corner of an image that informs 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 link if typed or pasted content is the link. Closes #4715. (commit)
  • page-break: Added support for pasting page breaks from MS Word. Closes #2508. (commit)
  • table: Added option to set heading rows and columns for insertTable command and TableUtils#createTable(). Closes #6768. (commit)
  • typing: Introduced the TwoStepCaretMovement plugin. See [#74...
Read more

v20.0.0

24 Jun 12:44
Compare
Choose a tag to compare

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:

TODO: Add a link to the blog post.

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 shoul...
Read more

v19.1.1

01 Jun 07:59
Compare
Choose a tag to compare

Bug fixes

Released packages

Check out the Versioning policy guide for more information.

Released packages (summary)

Other releases:

v19.1.0

27 May 09:02
Compare
Choose a tag to compare

Release highlights

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

This release further refines the table plugin, brings a helper for convenient typing in tight places before or after widgets 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() instead.
  • theme-lark: A new --ck-color-focus-border-coordinates CSS custom property has been 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

  • paragraph: Implemented the InsertParagraphCommand registered as 'insertParagraph' in the editor. Closes #6823, #7229. (commit)
  • table: Introduced support for pasting tables into a selected table fragment. Closes #6120. (commit)
  • table: Introduced table cells selection using keyboard. Closes #6115, #3203. (commit)
  • theme-lark: Brought styles for the feature allowing users to type in tight spots around block widgets (see #407). (commit)
  • widget: Brought the feature allowing users to type in tight spots around block widgets where web browsers do not allow the caret to be placed (see #407). Closes #6740, #6688, #6689, #6695. (commit)

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  , &) 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 col-spanned cells. Closes #6658. (commit)
  • table: The table properties balloon should always be visible if the table is bigger than a visible viewport. Closes #6190. (commit)
  • table: When the state is restored or the user enters color value manually, the color input will now properly match 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 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 of a table cell. Closes #6607. (commit)
  • table: Table keyboard navigation should not alter the native Shift+Arrow behavior inside of 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 a visible viewport (see #6190). (commit)

Other changes

  • mention: Renamed the MentionAttribute._uid to a MentionAttribute.uid as it needs to be used by integrators when implementing custom converters. Closes ...
Read more

v19.0.0

29 Apr 11:26
Compare
Choose a tag to compare

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.

Blog post coming soon...

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

Read more

v18.0.0

19 Mar 13:53
Compare
Choose a tag to compare

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.

Blog post coming soon...

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

Read more

v17.0.0

20 Feb 12:22
Compare
Choose a tag to compare

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:

Read more

v16.0.0

04 Dec 10:42
Compare
Choose a tag to compare

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.

The blog post is coming soon...

Dependencies

New packages:

Major releases (contain major breaking changes):

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

Read more

v15.0.0

23 Oct 09:20
Compare
Choose a tag to compare

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.

Blog post coming soon...

Dependencies

New packages:

Major releases (contain major breaking changes):

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

Read more

v12.4.0

26 Aug 09:52
Compare
Choose a tag to compare

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.

Blog post comming soon...

Dependencies

Major releases (contain breaking changes):

Minor releases:

Patch releases (bug fixes, internal changes):