Security Updates:

  • Fixed XSS vulnerability in the HTML data processor reported by Michał Bentkowski of Securitum.

    Issue summary: It was possible to execute XSS inside CKEditor after persuading the victim to: (i) switch CKEditor to source mode, then (ii) paste a specially crafted HTML code, prepared by the attacker, into the opened CKEditor source area, and (iii) switch back to WYSIWYG mode or (i) copy the specially crafted HTML code, prepared by the attacker and (ii) paste it into CKEditor in WYSIWYG mode.

  • Fixed XSS vulnerability in the WebSpellChecker plugin reported by Pham Van Khanh from Viettel Cyber Security.

    Issue summary: It was possible to execute XSS using CKEditor after persuading the victim to: (i) switch CKEditor to source mode, then (ii) paste a specially crafted HTML code, prepared by the attacker, into the opened CKEditor source area, then (iii) switch back to WYSIWYG mode, and (iv) preview CKEditor content outside CKEditor editable area.

An upgrade is highly recommended!

New features:

Fixed Issues:

  • #3587: [Edge, IE] Fixed: Widget with form input elements loses focus during typing.
  • #3705: [Safari] Fixed: Safari incorrectly removes blocks with the editor.extractSelectedHtml() method after selecting all content.
  • #1306: Fixed: The Font plugin creates nested HTML <span> tags when reapplying the same font multiple times.
  • #3498: Fixed: The editor throws an error during the copy operation when a widget is partially selected.
  • #2517: [Chrome, Firefox, Safari] Fixed: Inserting a new image when the selection partially covers an existing enhanced image widget throws an error.
  • #3007: [Chrome, Firefox, Safari] Fixed: Cannot modify the editor content once the selection is released over a widget.
  • #3698: Fixed: Cutting the selected text when a widget is partially selected merges paragraphs.

API Changes:

Fixed Issues:

  • #875: Fixed: Pasting inside the editor that contains a table with the Table Selection plugin after selecting all content replaces only the table element instead of the entire content.
  • #3415: [Firefox] Fixed: Pasting individual list elements fails. Thanks to Jack Wickham!
  • #3413: Fixed: Menu items with labels containing double quotes are rendered incorrectly.
  • #3475: [Firefox] Fixed: Pasting plain text over existing content fails and throws an error.
  • #2027: Fixed: Incorrect email display text after reopening the Link dialog for display names starting with @.
  • #3544: Fixed: The Special Characters dialog read incorrectly by screen readers due to empty table cells at the end.
  • #1653: Fixed: Balloon Toolbar is not repositioned when the editor is scrolled with the Div Editing Area feature enabled.
  • #3559: Fixed: Color Dialog is incorrectly positioned when used with another dialog.
  • #3593: Fixed: Cannot access a text or comment node when replacing an element node with them via CKEDITOR.htmlParser.filter.
  • #3524: Fixed: The Easy Image plugin throws an error when any image with an unsupported data type is pasted into the editor.
  • #3552: Fixed: Incorrect value of CKEDITOR.plugins.widget.repository#selected after selecting the whole editor content.
  • #3586: Fixed: Content pasted from Microsoft Excel is not correctly recognised by the Paste from Word plugin.
  • #3585: [Firefox] Fixed: Microsoft Excel content is pasted as an image.
  • #3625: [Firefox] Fixed: Microsoft PowerPoint content is pasted as an image.
  • #3474: Fixed: Incorrect focus order after any tab in a dialog was clicked.
  • #3689: Fixed: Cannot change dialog tabs with keyboard arrow keys after focusing any tab with a mouse click.

API Changes:

New Features:

  • #835: Extended support for pasting from external applications:
  • #3315: Added support for strikethrough in the BBCode plugin. Thanks to Alexander Kahl!
  • #3175: Introduced selection optimization mechanism for handling incorrect selection behaviors in various browsers:
    • #3256: Triple-clicking in the last table cell and deleting content no longer pulls the content below into the table.
    • #3118: Selecting a paragraph with a triple-click and applying a heading applies the heading only to the selected paragraph.
    • #3161: Double-clicking a <span> element containing just one word creates a correct selection including the clicked <span> only.
  • #3359: Improved dialog positioning and behavior when the dialog is resized or moved, or the browser window is resized.
  • #2227: Added the config.linkDefaultProtocol configuration option that allows setting the default URL protocol for the Link plugin dialog.
  • #3240: Extended the CKEDITOR.plugins.widget#mask property to allow masking only the specified part of a widget.
  • #3138: Added the possibility to use the widgetDefinition.getClipboardHtml() method to customize the widget HTML during copy, cut and drag operations.

Fixed Issues:

  • #808: Fixed: Widgets and other content disappear on drag and drop in read-only mode.
  • #3260: Fixed: Widget drag handler is visible in read-only mode.
  • #3261: Fixed: A widget initialized using the dialog has an incorrect owner document.
  • #3198: Fixed: Blurring and focusing the editor when a widget is focused creates an additional undo step.
  • #2859: [IE, Edge] Fixed: Various editor UI elements react to right mouse button click:
  • #3158: [Chrome, Safari] Fixed: Undo plugin breaks with the filling character.
  • #504: [Edge] Fixed: The editor's selection is collapsed to the beginning of the content when focusing the editor for the first time.
  • #3101: Fixed: CKEDITOR.dom.range#_getTableElement() returns null instead of a table element for edge cases.
  • #3287: Fixed: CKEDITOR.tools.promise initializes incorrectly if an AMD loader is present.
  • #3379: Fixed: Incorrect CKEDITOR.editor#getData() call when inserting content into the editor.
  • #941: Fixed: An error is thrown after styling a table cell text selected using the native selection when the Table Selection plugin is enabled.
  • #3136: [Firefox] Fixed: Clicking Balloon Toolbar items removes the native table selection.
  • #3381: [IE8] Fixed: The CKEDITOR.tools.object.keys() method does not accept non-objects.
  • #2395: [Android] Fixed: Focused input in a dialog is scrolled out of the viewport when the soft keyboard appears.
  • #453: Fixed: Link dialog has an invalid width when the editor is maximized and the browser window is resized.
  • #2138: Fixed: An email address containing a question mark is mishandled by the Link plugin.
  • #14613: Fixed: Race condition when loading plugins for an already destroyed editor instance throws an error.
  • #2257: Fixed: The editor throws an exception when destroyed shortly after it was created.
  • #3115: Fixed: Destroying the editor during the initialization throws an error.
  • #3354: [iOS] Fixed: Pasting no longer works on iOS version 13.
  • #3423 Fixed: Bookmarks can be created inside temporary elements.

API Changes:

Fixed Issues:

New Features:

Fixed Issues:

API Changes:

Other Changes:

Fixed Issues:

Other Changes:

  • Updated WebSpellChecker (WSC) and SpellCheckAsYouType (SCAYT) plugins:
    • Language dictionary update: German language was extended with over 600k new words.
    • Language dictionary update: Swedish language was extended with over 300k new words.
    • Grammar support added for Australian and New Zealand English, Polish, Slovak, Slovenian and Austrian languages.
    • Changed wavy red and green lines that underline spelling and grammar errors to straight ones.
    • #55: Fixed: WSC does not use CKEDITOR.getUrl() when referencing style sheets.
    • #166: Fixed: SCAYT does not use CKEDITOR.getUrl() when referencing style sheets.
    • #56: [Chrome] Fixed: SCAYT/WSC throws errors when running inside a Chrome extension.
    • Fixed: After removing a dictionary, the words are not underlined and considered as incorrect.
    • Fixed: The Slovenian (sl_SL) language does not work.
    • Fixed: Quotes with code U+2019 (Right single quotation mark) are considered separators.
    • Fixed: Wrong error message formatting when the service ID is invalid.
    • Fixed: Absent languages in the Languages tab when using SCAYT with the Shared Spaces plugin.

Fixed Issues:

  • #2721#487: Fixed: The order of sublist items is reversed when a higher level list item is removed.
  • #2527: Fixed: Emoji autocomplete order does not prioritize emojis with the name starting from the used string.
  • #2572: Fixed: Icons in the Emoji dropdown navigation groups are not centered.
  • #1191: Fixed: Items in the elements path are draggable.
  • #2292: Fixed: Dropping a list with a link on the editor's margin causes a console error and removes the dragged text from editor.
  • #2756: Fixed: The Auto Link plugin causes an error when typing in the source editing mode.
  • #1986: Fixed: The Cell Properties dialog from the Table Tools plugin shows styles that are not allowed through config.allowedContent.
  • #2565: [IE, Edge] Fixed: Buttons in the editor toolbar are activated by clicking them with the right mouse button.
  • #2792: Fixed: A bug in the Copy Formatting plugin that caused the following issues:
    • #2780: Fixed: Undo steps disappear after multiple changes of selection.
    • #2470: [Firefox] Fixed: Widget's nested editable gets blurred upon focus.
    • #2655: [Chrome, Safari] Fixed: Widget's nested editable cannot be focused under certain circumstances.

Fixed Issues:

  • #2403: Fixed: Styling inline editor initialized inside a table with the Table Selection plugin is causing style leaks.
  • #2514: Fixed: Pasting table data into inline editor initialized inside a table with the Table Selection plugin inserts pasted content into the wrapping table.
  • #2451: Fixed: The Remove Format plugin changes selection.
  • #2546: Fixed: The separator in the toolbar moves when buttons are focused.
  • #2506: Fixed: Enhanced Image throws a type error when an empty <figure> tag with an image class is upcasted.
  • #2650: Fixed: Table dialog validator fails when the getValue()function is defined in the global scope.
  • #2690: Fixed: Decimal characters are removed from the inside of numbered lists when pasting content using the Paste from Word plugin.
  • #2205: Fixed: It is not possible to add new list items under an item containing a block element.
  • #2411#2438 Fixed: Apply numbered list option throws a console error for a specific markup.
  • #2430 Fixed: Color Button and List Block items are draggable.

Other Changes:

  • Updated the WebSpellChecker (WSC) plugin:
    • #52 Fixed: Clicking "Finish Checking" without a prior action would hang the Spell Checking dialog.
  • #2603: Corrected the GPL license entry in the package.json file.

Fixed Issues:

  • #2571: Fixed: Clicking the categories in the Emoji dropdown panel scrolls the entire page.

Security Updates:

  • Fixed XSS vulnerability in the HTML parser reported by maxarr.

    Issue summary: It was possible to execute XSS inside CKEditor after persuading the victim to: (i) switch CKEditor to source mode, then (ii) paste a specially crafted HTML code, prepared by the attacker, into the opened CKEditor source area, and (iii) switch back to WYSIWYG mode.

An upgrade is highly recommended!

New Features:

  • #2062: Added the emoji dropdown that allows the user to choose the emoji from the toolbar and search for them using keywords.
  • #2154: The Link plugin now supports phone number links.
  • #1815: The Auto Link plugin supports typing link completion.
  • #2478Link can be inserted using the Ctrl/Cmd + K keystroke.
  • #651: Text pasted using the Paste from Word plugin preserves indentation in paragraphs.
  • #2248: Added support for justification in the BBCode plugin. Thanks to Matěj Kmínek!
  • #706: Added a different cursor style when selecting cells for the Table Selection plugin.
  • #2072: The UI Button plugin supports custom aria-haspopup property values. The Menu Button aria-haspopupvalue is now menu, the Panel Button and Rich Combo aria-haspopup value is now listbox.
  • #1176: The Balloon Panel can now be attached to a selection instead of an element.
  • #2202: Added the contextmenu_contentsCss configuration option to allow adding custom CSS to the Context Menu.

Fixed Issues:

  • #1477: Fixed: On destroy, Balloon Toolbar does not destroy its content.
  • #2394: Fixed: Emoji dropdown does not show up with repeated symbols in a single line.
  • #1181: [Chrome] Fixed: Opening the context menu in a read-only editor results in an error.
  • #2276: [iOS] Fixed: Button state does not refresh properly.
  • #1489: Fixed: Table contents can be removed in read-only mode when the Table Selection plugin is used.
  • #1264 Fixed: Right-click does not clear the selection created with the Table Selection plugin.
  • #586 Fixed: The required attribute is not correctly recognized by the Form Elements plugin dialog. Thanks to Roli Züger!
  • #2380 Fixed: Styling HTML comments in a top-level element results in extra paragraphs.
  • #2294 Fixed: Pasting content from Microsoft Outlook and then bolding it results in an error.
  • #2035 [Edge] Fixed: Permission denied is thrown when opening a Panel instance.
  • #965 Fixed: The config.forceSimpleAmpersand option does not work. Thanks to Alex Maris!
  • #2448: Fixed: The [Escape HTML Entities] plugin with custom additional entities configuration breaks HTML escaping.
  • #898: Fixed: Enhanced Image long alternative text protrudes into the editor when the image is selected.
  • #1113: [Firefox] Fixed: Nested contenteditable elements path is not updated on focus with the Div Editing Area plugin.
  • #1682 Fixed: Hovering the Balloon Toolbar panel changes its size, causing flickering.
  • #421 Fixed: Expandable Button puts the (Selected) text at the end of the label when clicked.
  • #1454: Fixed: The onAbort method of the Upload Widget is not called when the loader is aborted.
  • #1451: Fixed: The context menu is incorrectly positioned when opened with Shift+F10.
  • #1722CKEDITOR.filter.instances is causing memory leaks.
  • #2491: Fixed: The Mentions plugin is not matching diacritic characters.
  • #2519: Fixed: The Accessibility Help dialog should display all available keystrokes for a single command.

API Changes:

Other Changes:

  • #1713: Removed the redundant lang.title entry from the Clipboard plugin.
Twitter Facebook Facebook Instagram Medium Linkedin GitHub Arrow down Phone Menu Close icon Check