Changelog

This is the TinyMCE Community version changelog. For information about the latest Tiny Cloud or TinyMCE Enterprise Release, see: TinyMCE Release Notes.

6.8.5 - 2024-10-10

Fixed

  • Invalid HTML elements within SVG elements were not removed.

6.8.4 - 2024-06-19

Fixed

  • HTML entities that were double decoded in noscript elements caused an XSS vulnerability.

  • It was possible to inject XSS HTML that was not matching the regexp when using the noneditable_regexp option.

6.8.3 - 2024-02-08

Changed

  • Update outbound TinyMCE website links.

Fixed

  • ShadowDOM skin was not loaded properly when used with JS bundling feature.

  • The floating toolbar would not be fully visible when the editor was placed inside a scrollable container.

6.8.2 - 2023-12-11

Fixed

  • Bespoke select toolbar buttons including fontfamily, fontsize, blocks, and styles incorrectly used plural words in their accessible names.

  • The align bespoke select toolbar button had an accessible name that was misleading and grammatically incorrect in certain cases.

  • Accessible names of bespoke select toolbar buttons including align,fontfamily, fontsize, blocks, and styles were incorrectly translated.

  • Clicking inside table cells with heavily nested content could cause the browser to hang.

  • Toggling a list that contains an LI element having another list as its first child would remove the remaining content within that LI element.

6.8.1 - 2023-11-29

Improved

  • Colorpicker now includes the Brightness/Saturation selector and hue slider in the keyboard navigable items.

Fixed

  • The functions schema.isWrapper and schema.isInline did not exclude node names that started with # which should not be considered as elements.

  • Translation syntax for announcement text in the table grid was incorrectly formatted.

6.8.0 - 2023-11-22

Added

  • CSS files are now also generated as separate JS files to improve bundling of all resources.

  • Added new StylesheetLoader.loadRawCss API that can be used to load CSS into a style element.

  • Added new StylesheetLoader.unloadRawCss API that can be used to unload CSS that was loaded into a style element.

  • Added force_hex_color editor option. Option 'always' converts all RGB & RGBA colors to hex, 'rgb_only' will only convert RGB and not RGBA colors to hex, 'off' won’t convert any colors to hex.

  • Added default_font_stack editor option that makes it possible to define what is considered a system font stack.

  • New sandbox_iframes option that controls whether iframe elements will be added a sandbox="" attribute to mitigate malicious intent.

  • New convert_unsafe_embeds option that controls whether <object> and <embed> elements will be converted to more restrictive alternatives, namely <img> for image MIME types, <video> for video MIME types, <audio> audio MIME types, or <iframe> for other or unspecified MIME types.

Improved

  • Improved the tooltips of picker buttons for the urlinput components in the "Insert/Edit Image" and "Insert/Edit Link" dialogs.

  • Inline dialog will now respect size: 'large' argument in the dialog spec.

  • Bespoke dropdown toolbar buttons including align, fontfamily, fontsize, blocks, and styles did not include their visible text labels in their accessible names.

Fixed

  • Editor would convert urls that are not http/s or relative resulting in broken links.

  • Calling the setProgressState API would cause the window to be scrolled when the editor wasn’t fully visible.

  • Applying heading formatting to the content of the summary element extended its application to the content of the parent details element.

  • Setting the content with an attribute that contains a self-closing HTML tag did not preserve the tag.

  • Screen readers now announce the selected color of forecolor and backcolor buttons.

  • Resize handles would not appear on editable images in a non-editable context.

  • Corrections and copy-edits to the addIcon API documentation.

  • The dialog size was not updated when the size argument was changed when redialing a dialog.

  • Toggling a list that contains an LI element having another list as its first child would remove the remaining content within that LI element.

  • Custom block element wasn’t considered block element in some cases.

  • The editor no longer forcefully takes focus when a notification closes while the focus is outside of the editor.

  • An empty element with a contenteditable="true" attribute within a table cell would not be treated as content and get removed if backspace or delete was being pressed.

  • Removing an LI element containing a details element would incorrectly merge its content.

  • The function getModifierState did not work on events passed through the editor as expected.

  • Search and replace plugin would incorrectly find matching text inside non-editable root elements.

  • Removed use of async for editor rendering which caused visual blinking when reloading the editor in-place.

  • Toggling off one format on the caret when multiple formats was toggled on would toggle all of them off.

  • Merging an external p inside a list via delete or backspace would incorrectly try to move a parent element inside a child element.

  • Directionality would not be consistently applied to the entire accordion block.

  • The fontsizeinput toolbar item was causing console warnings when toolbar items were clicked.

  • Menubar buttons with more than one word would sometimes wrap into two lines.

  • Creating a new li via enter inside a nested list would not inherit styles from the source li.

  • Screen readers now announce the active autocompleter item.

  • Dialog collection items would not display any icons chosen from icon pack.

6.7.3 - 2023-11-15

Changed

  • Zero width no-break space (U+FEFF) characters are removed from content passed to setContent, insertContent, and resetContent APIs.

  • Zero width no-break space (U+FEFF) characters in initial content are not loaded into the editor upon initialization.

Fixed

  • Specific HTML content containing unescaped text nodes caused mXSS when using undo/redo.

  • Specific HTML content containing unescaped text nodes caused mXSS when using the getContent and setContent APIs with the format: 'raw' option, which also affected the resetContent API and the draft restoration feature of the Autosave plugin.

6.7.2 - 2023-10-25

Fixed

  • The function getModifierState did not work on events passed through the editor as expected.

  • Indenting or outdenting a list item that contained non list item siblings after it would result in those siblings being removed.

  • Removed use of async for editor rendering which caused visual blinking when reloading the editor in-place.

  • Toggling a list that contained a list item element — <li> — which, in turn, contained another list item element as its first child, removed other content within the first list item element.

6.7.1 - 2023-10-19

Fixed

  • Specific HTML content caused mXSS when using undo/redo.

  • Specific HTML content caused mXSS when using the getContent and setContent APIs with the format: 'raw' option, which also affected the resetContent API and the draft restoration feature of the Autosave plugin.

  • Notification messages containing HTML were not properly XSS sanitized before being displayed.

6.7.0 - 2023-08-30

Added

  • New help_accessibility option displays the keyboard shortcut to open the in-application help in the status bar.

  • Added a new InsertNewBlockBefore command which inserts an empty block before the block containing the current selection.

  • Added a new InsertNewBlockAfter command which inserts an empty block after the block containing the current selection.

Improved

  • Adding a newline after a table would, in some specific cases, not work.

  • Menus now have a slight margin at the top and bottom to more clearly separate them from the frame edge.

  • Updated More toolbar button tooltip text from More…​ to Reveal or hide additional toolbar items.

  • Where multiple case sensitive variants of a translation key are provided, they will now all be preserved in the translation object instead of just the lowercase variant.

  • Improved screen reader announcements of the column and row selection in the grid presented by the Table menu and toolbar item.

  • Improved the keyboard focus visibility for links inside dialogs.

Changed

  • Change UndoLevelType from enum to union type so that it is easier to use.

  • The pattern replacement removed spaces if they were contained within a tag that only contained a space and the text to replace.

  • If loading content CSS takes more than 500ms, the editor will be set to an in progress state until the CSS is ready.

Fixed

  • Applying an ordered or unordered list to a selected checklist incorrectly turned the list into paragraphs.

  • Returning an empty string in a custom context menu update function resulted in a small white line appearing on right-click and the browser-native context menu would not present.

  • For sufficiently long URLs and sufficiently wide windows, URL autocompletion hid middle portions of the URL from view.

  • Numeric input in toolbar items did not disable when a switching from edit to read-only mode.

  • The Quick Toolbars plugin showed text alignment buttons on pagebreaks.

  • Creating lists in empty blocks sometimes, and incorrectly, converted adjacent block elements into list items.

  • Creating a list from multiple <div> elements only created a partial list.

  • Tab navigation incorrectly stopped around iframe dialog components.

  • It was possible to delete the sole empty block immediately before a <details> element if it was nested within another <details> element.

  • Deleting <li> elements that only contained <br> tags sometimes caused a crash.

  • It was possible to remove the <summary> element from a <details> element by dragging and dropping.

  • It was possible to break <summary> elements if content containing block elements was dragged-and-dropped inside them.

  • Contents were not removed from the drag start source if dragging and dropping internally into a transparent block element.

  • Using the Media plugin unexpectedly changed <script> tags in the editor body to <image> tags.

  • In some circumstances, pressing the Enter key scrolled the entire page.

  • The border styles of a table were incorrectly split into a longhand form after table dialog updates.

  • Links in Help → Help → Plugins and Help → Help → Version were not navigable by keyboard.

  • Fixed the inability to insert content next to the <details> element when it is the first or last content element. Pressing the Up or Down arrow key now inserts a block element before or after the <details> element.

  • An empty element with a contenteditable="true" attribute within a noneditable root was deleted when the Backspace key was pressed.

  • The color_cols option was not respected when set to the value 5 with a custom color_map specified.

  • In Safari on macOS, deleting backwards within a <summary> element removed the entire <details> element if it had no other content.

6.6.2 - 2023-08-09

Fixed

  • An "Uncaught TypeError: Cannot read properties of null" error would sometimes be thrown when updating the content of a streamContent: true iframe dialog component.

6.6.1 - 2023-08-02

Added

  • Restored filtering option, pad_empty_with_br. Set to true to pad empty block elements with <br> tags instead of the &nbsp; character entity.

Improved

  • When Safari is the host browser, content updates for iframe dialog components with streamContent: true set are now throttled to 500ms intervals.

Changed

  • API comments/documentation: a markup typo and run-on sentences both corrected.

Fixed

  • On Safari and Firefox, scroll positions were not always maintained when updating the content of a streamContent: true iframe dialog component.

  • On Safari, iframe dialog components did not consistently autoscroll to the end of the scrollable area when streamContent: true was set.

  • Scrolling behavior was inconsistent when updating a streamContent: true iframe dialog component with content lacking an HTML document type declaration.

  • A warning message was sometimes printed to the browser console when closing a dialog that contained an iframe component.

  • Lists could not be created within editable areas nested inside non-editable areas.

  • On Safari and Firefox, the border around iframe dialog components did not highlight when focused.

  • Right-clicking on an image in a non-editable context opened the Image context menu.

  • The color_cols option was not respected when a custom color_map was defined.

  • The color_cols options were were not rounded to the nearest number when set to a decimal number.

6.6.0 - 2023-07-12

Added

  • Added a new property value — bottom — for inline dialog configurations that anchors the dialog to the bottom of the editor.

  • Added a new property — persistent — for inline dialog configurations that will stop the dialog closing when clicking away from it.

  • New ai, ai-prompt and send icons.

  • Added a new property — streamContent — for the iframe dialog component. This causes setData() to update content without reloading the frame, and end scroll positions will be maintained as new content streams in.

  • AI Assistant plugin toolbar items added to the default toolbar and AI Assistant plugin menu items added to the default menu bar.

  • Added a new property — border — for the iframe dialog component that allows a border to be added.

  • Added a new property — align — for the label dialog component that controls text alignment.

Improved

  • When defining a modal or inline dialog, if the buttons property is an empty array, or is not defined at all, the footer will now no longer be rendered.

  • The iframe dialog component now has a minimum height of 200px.

  • Improved detection of scrollable containers when the ui_mode: 'split' option is set.

Changed

  • The icon in an alertbanner dialog component is no longer clickable if the URL field is not specified.

Fixed

  • Fixed an issue that caused the inline dialog size setting to have no effect.

  • Fixed an issue that prevented the close button from being clicked when the dialog was blocked.

6.5.1 - 2023-06-19

Fixed

  • Fixed a regression where pasting an image url would result in the url being inserted as plain text instead of the image being inserted.

  • It was not possible to press space to insert a space character inside a summary element on Firefox.

6.5.0 - 2023-06-13

Added

  • Support for the h hash parameter in Vimeo video URLs in the Media plugin.

  • New table_merge_content_on_paste option which disables the merging behaviour when pasting a table inside an existing table.

  • New optional defaultExpandedIds and onToggleExpand options to the tree component config.

  • New optional defaultSelectedId option to the tree component config.

  • New accordion plugin with the InsertAccordion command.

  • New accordion and accordion-toggle icons.

  • New details_initial_state and details_serialized_state options.

  • New init_content_sync option that initializes the editor iframe using document.write instead of srcdoc.

  • New newdocument_content option that sets the content presented in the editor on choosing File → New document or pressing the New document toolbar button.

  • New editable_root option that can be set to false to prevent editing of the editor’s root element.

  • New editor.setEditableRoot API that sets the editable state of the editor root element.

  • New editor.hasEditableRoot API that returns true or false depending on the editable state of the editor root element.

  • New EditableRootStateChange event that gets dispatched when the state of the editable root is changed.

  • Added Oxide styles for dl, dt, dd, ol, and strong elements in dialog body content.

Improved

  • Screen readers can now announce highlighted items listed in the Link dialog’s link combobox.

  • The icon field for a dialog’s footer togglebutton is no longer mandatory.

  • Toolbar buttons and menu items now present as disabled when they cannot be used because a selected element has a contenteditable="false" attribute.

  • Help text displayed at Help → Help → Keyboard Navigation re-written.

  • Translations added for Help text displayed at Help > Help > Keyboard Navigation.

  • For word count purposes these characters are now considered punctuation marks: $, ~, +, |, , and `. They no longer increase a document’s word count.

  • Updated the codesample plugin dialog and the template plugin dialog to use the listbox component to match other dialogs.

  • If the selection contains more than one table cell, Quickbar toolbars are now positioned in the middle of the selection horizontally.

  • Exposed dataTransfer property of drag and drop events for elements with a contenteditable="false" attribute.

  • Screen readers now announce instructions for resizing the editor using arrow keys, when the resize handle is focused.

  • Dialog tabpanel tab labels are now allowed to word wrap for better readability with long labels.

  • Added newlines before and after details elements in the output HTML.

  • Added padding for empty summary elements so they can be properly edited.

Changed

  • The caption, address and dt elements no longer incorrectly allow non-inline child elements when the editor schema is set to HTML 4.

  • SVG icons for back and foreground colors now use class instead of id to identify SVG elements that should change color.

  • Anchor tag elements — <a> — no longer incorrectly allow non-inline child elements when the editor schema is set to HTML 4.

  • Help dialog was restored to medium width for better readability.

Fixed

  • Right-clicking on a merge tag instance presented different highlighting depending on the host browser.

  • When macOS was the host operating system, pressing Command+backspace did not add an undo level.

  • Ctrl+backspace and Ctrl+delete did not restore the correct insertion point position after a redo operation.

  • In the tree component, a selected item in a directory would not stay selected after collapsing the directory.

  • Enabling or Disabling checkboxes would not set the correct classes and attributes.

  • Entering a newline would, in some setups, place the insertion point in the wrong paragraph.

  • Redial would, in some situations, cause select elements not to have an initial value selected when they should have.

  • The Table toolbar was visible even if the table was within a host element with a contenteditable="false" attribute set.

  • Quickbar toolbars were incorrectly shown for elements with a contenteditable="false" attribute set in a root with a contenteditable="false" attribute set.

  • When Chrome was the host browser, adding a newline when the insertion point was placed after a table could, in some specific situations, not generate the expected newline.

  • Show the calculated height and width of Media Embed elements in the media plugin dialog.

  • Removing an image that failed to upload from an empty paragraph left the paragraph without a padding <br> tag.

  • Allow a Media Embed element to be correctly resized when using the media plugin dialog by converting the Media Embed element to a standalone iframe.

  • In some circumstances, an inline alert in the Search and Replace dialog persisted when it was not necessary.

  • Context toolbars displayed the incorrect status for the advlist plugin buttons.

  • In Safari running on iOS, Korean characters merged onto the previous line upon typing after inserting a newline by pressing Enter.

  • Initiating the editor with a table as the first element resulted in resize handles being displayed around the table even when the editor did not have focus.

  • If the insertion point was between two images, pressing the Backspace key would, in some situations, delete the image after the insertion point instead of the image before the insertion point.

  • Directionality commands could set the dir attribute on elements with a contenteditable="false" attribute set when these elements were within a root with a contenteditable="false" attribute set.

  • The content of the dialog body could not be scrolled.

  • Some toolbar items, when in a not-enabled state, did not render the not-allowed mouse pointer.

  • Formats were incorrectly applied to the closest editable element if the selection was in a contenteditable="false" context.

  • Formats were incorrectly removed from the closest editable element if the selection was in a contenteditable="false" context.

  • Formatter API, canApply, was not returning false when the selection was in a contenteditable="false" context.

  • When dragging image elements and dropping the image in the editor the dragend event would sometimes not fire when Firefox was the host browser.

  • It was possible to remove links in noneditable contents with the unlink editor command.

  • Direction was not visually changing when using the Directionality plugin on an element which had the direction CSS property set.

  • Whitespace between transparent elements was incorrectly converted into empty paragraphs.

  • Popups were not constrained within the scrollable container when in a shadow root.

  • Pressing arrow keys inside RTL elements would move the insertion point in an incorrect direction when moving over elements with the contenteditable attribute set to false.

  • Inserting two tables consecutively without focus in the editor resulted in the second table being inserted at the wrong position.

  • Pasting content into the editor did not fire beforeinput and input events.

  • In some cases, exiting a blockquote element could fail when the insertion point was positioned at the end of the blockquote.

  • Templates containing an <html> tag were not parsed before being rendered for preview.

  • Typing after deleting formatted content could remove a space at the start of the typing.

  • Invalid markup in Notification and Dialog close buttons.

  • In dialogs, an incorrect aria-describedby attribute caused the dialog body to be announced when using a screen reader.

  • The sticky toolbar did not render correctly when transitioning from the custom editor view to the main view.

  • Saving the Table Properties dialog after changing properties unrelated to cells would overwrite cell properties set by the Cell Properties dialog.

  • Fixed the constrained bounds calculation for dismissal of the toolbar when using toolbar_location: 'bottom'.

  • Pressing the Backspace or Delete key when the insertion point was within a details element resulted in broken markup.

  • Making the selection into a list did not work if the selection included a block element with a contenteditable="false" attribute.

  • Inserting elements in the middle of the summary caused two summaries to appear within details elements.

6.4.2 - 2023-04-26

Fixed

  • The editor displayed a notification error when it failed to retrieve a blob image uri.

  • Tab navigation no longer incorrectly stops at menu buttons within toolbar groups.

  • The urlinput dialog component would not open the type-ahead dropdown when the input value was reset to an empty string.

  • Redial would, in some circumstances, cause elements to not have an initial value selected when they should have.

  • When hovering over tree dialog components the mouse pointer rendered incorrectly.

  • The tox-button and tox-button-secondary buttons now support the hover, active, focus, and disabled states.

  • Setting an invalid unit in the fontsizeinput changed it to the default value instead of reverting it to the previous, and valid, value.

  • Selection was not correctly scrolled horizontally into view when using the selection.scrollIntoView API.

  • The contextual toolbar displayed the status of Advanced List Premium plugin icons incorrectly.

  • The quickimage toolbar button failed to insert images selected from the local computer when running on Google Chrome for macOS.

6.4.1 - 2023-03-29

Fixed

  • The fontsizeinput increase and decrease size buttons now work on TinyMCE mobile.

  • The TinyMCE editor toolbar is now accessible for all screen widths; it no longer collapses into an inaccessible vertical line when the screen is scrolled horizontally.

  • Reverted the changes made, in TinyMCE 6.4.0, to UI button colors in focus, active, and enabled states.

6.4.0 - 2023-03-16

Added

  • New tree component that can be used in dialog body panel.

  • renderUI property in the Theme type can now return a Promise<RenderResult> instead of RenderResult.

  • New editor.selection.isEditable API method that returns whether the current selection is editable.

  • New editor.dom.isEditable API method that returns whether the specified node is editable.

  • New setText and setIcon methods added to menu button and toolbar button APIs.

  • New highlight_on_focus option which enables highlighting the content area on focus.

  • New fontsizeinput toolbar item which allows the user to set the size via input and also increase and decrease it with + and - buttons.

  • Added skip_focus check to the ToggleToolbarDrawer command.

  • New font_size_input_default_unit option allows to use of numbers without a unit in fontsizeinput and have them parsed with the default unit, if it is not defined the default is pt.

  • New group and togglebutton in view.

  • New togglebutton in dialog footer buttons.

  • Added toggleFullscreen to dialog API.

  • New text-size-increase and text-size-decrease icons.

  • New xss_sanitization option to allow disabling of XSS sanitization.

  • Added the top right close button of modal dialogs to the tabbing order. The 'x' button in these dialogs can now be accessed using keyboard navigation.

  • New ui_mode option for editor in scrollable containers support.

  • The sidebar element now has the accessibility role region when visible and the accessibility role presentation when hidden.

  • The tox-custom-editor class now has a border highlight when it is selected.

  • An element could be dropped onto the decendants of an element with a contenteditable="false" attribute.

  • Checkmark did not show in menu color swatches.

  • Add support for navigating inside the tree component using arrow keys and shift key.

Improved

  • Direct invalid child text nodes of list elements are now wrapped in list item elements.

  • Templates are now be parsed before preview and insertion to make preview consistent with inserted template content and prevent XSS.

  • Pressing backspace on an empty line now preserves formatting on the previous empty line.

  • Pressing enter inside the fontsizeinput input would not move the focus back into the editor content.

  • Drag and drop events for elements with a contenteditable="false" attribute now includes target element details.

  • Updated focus, active, and enabled colors of UI buttons for improved contrast against the UI color.

Changed

  • The Link plugin’s context menu items will no longer appear for contenteditable="false" links.

  • The formatting of elements with a contenteditable="false" attribute are no longer cloned to new cells when new table rows are created.

  • Changed the color of @dialog-table-border-color, and added right padding to the first cell of dialog table.

Fixed

  • Sometimes the editor would finish initializing before the theme would have finished loading.

  • The searchreplace modal closed incorrectly when clicking outside of the alert that pops up when no match is found.

  • The text color or background color picker toolbar buttons did not update when the text color or background color was changed using the equivalent commands in the Format menu.

  • The onSetup api function would not run when defining custom group toolbar button.

  • The foreground and background menu icons would not properly update to display the last used color.

  • Added new setIconFill function to editor.ui.addNestedMenuItem.

  • Pasting links to text would sometimes not generate the correct undo stack on Safari.

  • Toolbar split buttons in Advanced List plugin to show the correct state when the cursor is in a checklist.

  • Dragging transparent elements into transparent block elements could produce invalid nesting of transparents.

  • The editor.insertContent API would insert contents inside elements with a contenteditable="false" attribute if the selection was inside the element.

  • Closing a dialog would scroll down the document in Safari.

  • Inline headers would not work in some situations when the editor was moved too far right horizontally.

  • Quick toolbars were incorrectly rendered during the dragging of elements with a contenteditable="false" attribute.

  • Selection of images, horizontal rules, tables or elements with a contenteditable="false" attribute was possible if they were within an element with a contenteditable="false" attribute.

  • Ranged deletion of formatted text using selection or keyboard shortcut would sometimes cause Blink and Webkit browsers to recreate tags upon typing, which may result in inconsistent tags.

  • Visual characters were rendered inside elements with a contenteditable="false" attribute.

  • Lists with an element with a contenteditable="false" attribute as their root were incorrectly editable using list API commands, toolbar buttons and menu items.

  • Color picker dialog would not update the preview color if the hex input value was prefixed with the # character.

  • Table cell selection was possible even if the element being selected was within an element with a contenteditable="false" attribute.

  • Table commands were modifying tables that were within an element with a contenteditable="false" attribute.

  • Fake carets were rendered for elements with a contenteditable="false" attribute and for tables within an element with a contenteditable="false" attribute.

  • Textareas with scrollbars in dialogs would not render rounded corners correctly on some browsers.

  • It was possible to open links inside the editor if the editor root was an element with a contenteditable="false" attribute.

  • Inline boundary was rendered for boundary elements that had a contenteditable="false" attribute.

  • Clicking on a disabled split button would call the onAction callback.

  • The Edit Link dialog incorrectly retrieved the URL value when opened immediately after the link insertion.

  • The ForwardDelete and Delete editor commands were deleting content within elements with a contenteditable="false" attribute.

  • The Backspace and Forward Delete keys were deleting content within elements with a contenteditable="false" attribute.

  • Inserting newlines inside an editable element that was inside an element with a contenteditable="false" attribute root would sometimes try to split the editable element.

  • Creating a list in a table cell when the caret is in front of an anchor element would not properly include the anchor in the list.

  • Dragging and dropping elements with a contenteditable="false" attribute on table borders would remove the element on drop.

  • Elements with a contenteditable="false" attribute would be removed when dragged and dropped within a root element with a contenteditable="false" attribute.

  • Formatting could be applied or removed to list items with a contenteditable="false" attribute that were inside an element with a contenteditable="false" attribute.

  • Annotation were not removed if the annotation was deleted immediately after being created.

  • Inserting a link for a selection from quickbars did not preserve formatting.

  • Inline dialog position was not correct when the editor was not inline and was contained in a fixed or absolute positioned element.

  • Sticky toolbars did not fade transition when undocking in classic iframe mode.

  • Inserting elements that were not valid within the closest editing host would incorrectly split the editing host.

  • The color_cols option was not respected in the forecolor or backcolor color swatches.

  • Drag and dropping the last element with a contenteditable="false" attribute out of its parent block would not properly pad the parent block element.

  • Applying heading formats from text_patterns produced an invisible space before a word.

  • Opening color swatches caused the browser tab to crash when color_cols or other column option was set to 0.

  • Opening a menu button in the footer of a dialog after a redial threw an error.

  • After closing a view, the more…​ toolbar button disappeared if the editor had toolbar_mode: 'sliding' and the toolbar was opened.

  • Inline dialogs would open partially off screen when the toolbar had a small width.

  • The autoresize plugin would cause infinite resizing when content_css was set to document.

6.3.2 - 2023-02-22

Fixed

  • Removed a workaround for ensuring stylesheets are loaded in an outdated version of WebKit.

6.3.1 - 2022-12-06

Fixed

  • A cross-site scripting (XSS) vulnerability in TinyMCE alerts which allowed arbitrary JavaScript execution was found and fixed.

6.3.0 - 2022-11-23

Added

  • New expand function added to tinymce.selection which expands the selection around the nearest word.

  • New expand function added to tinymce.dom.RangeUtils to return a new range expanded around the nearest word.

  • New color_map_background and color_map_foreground options which set the base colors used in the backcolor and forecolor toolbar buttons and menu items.

  • Added optional storageKey property to colorinput component and colorswatch fancy menu item.

  • New addView function added to editor.ui.registry which makes it possible to register custom editor views.

  • New ToggleView command which makes it possible to hide or show registered custom views.

  • New color_default_foreground and color_default_background options to set the initial default color for the forecolor and backcolor toolbar buttons and menu items.

  • New getTransparentElements function added to tinymce.html.Schema to return a map object of transparent HTML elements.

  • Added ToggleToolbarDrawer event to subscribe to toolbar’s opening and closing.

Improved

  • Transparent elements, like anchors, can now contain block elements.

  • Colorswatch now displays a checkmark for selected color.

  • Color picker dialog now starts on the appropriate color for the cursor position.

Changed

  • Transparent elements, like anchors, are now allowed in the root of the editor body if they contain blocks.

  • Colorswatch keyboard navigation now starts on currently selected color if present in the colorswatch.

  • setContent is now allowed to accept any custom keys and values as a second options argument.

Fixed

  • Parsing media content would cause a memory leak, which for example occurred when using the getContent API.

  • Dragging a noneditable element toward the bottom edge would cause the page to scroll up.

  • Range expanding capabilities would behave inconsistently depending on where the cursor was placed.

  • Compilation errors were thrown when using TypeScript 4.8.

  • Line separator scrolling in floating toolbars.

  • A double bottom border appeared on inline mode editor for the tinymce-5 skin.

  • The editor header showed up even with no menubar and toolbar configured.

  • Inline text pattern no longer triggers if it matches only the end but not the start.

  • Matches of inline text patterns that are similar are now managed correctly.

  • Using editor.selection.getContent({ format: 'text' }) or editor.getContent({ format: 'text' }) would sometimes deselect selected radio buttons.

  • The context toolbar prevented the user from placing the cursor at the edges of the editor.

  • The Quick Insert context toolbar provided by the quickbars plugin showed when the cursor was in a fake block caret.

  • The editor.selection.getRng() API was not returning a proper range on hidden editors in Firefox.

  • The editor.selection.getBookmark() API was not returning a proper bookmark on hidden editors in Firefox.

  • Dragging a noneditable element before or after another noneditable element now works correctly.

  • The restored selection after a redo or undo action was not scrolled into view.

  • A newline could not be inserted when the selection was restored from a bookmark after an inline element with a contenteditable="false" attribute.

  • The global tinymce.dom.styleSheetLoader was not affected by the content_css_cors option.

  • The caret was moved to the previous line when a text pattern executed a mceInsertContent command on Enter key when running on Firefox.

6.2.0 - 2022-09-08

Added

  • New text_patterns_lookup option to provide additional text patterns dynamically.

  • New promotion element has been added to the default UI. It can be disabled using the new promotion option.

  • New format_noneditable_selector option to specify the contenteditable="false" elements that can be wrapped in a format.

  • Added allow as a valid attribute for the iframe element in the editor schema.

  • New search field in the MenuButton that shows a search field at the top of the menu, and refetches items when the search field updates.

Improved

  • The formatter can now apply a format to a contenteditable="false" element by wrapping it. Configurable using the format_noneditable_selector option.

  • The autocompleter now supports a multiple character trigger using the new trigger configuration.

  • The formatter now applies some inline formats, such as color and font size, to list item elements when the entire item content is selected.

  • The installed and available plugin lists in the Help dialog are now sorted alphabetically.

  • Alignment can now be applied to more types of embedded media elements.

Changed

  • The @menubar-row-separator-color oxide variable no longer affects the divider between the Menubar and Toolbar. It only controls the color of the separator lines drawn in multiline Menubars.

  • The @toolbar-separator-color oxide variable now affects the color of the separator between the Menubar and Toolbar only.

  • Available Premium plugins, which are listed by name in the Help dialog, are no longer translated.

Fixed

  • The Autolink plugin did not work when text nodes in the content were fragmented.

  • Fixed multiple incorrect types on public APIs found while enabling TypeScript strict mode.

  • The number of blank lines returned from editor.getContent({format: 'text'}) differed between browsers.

  • The editor focused via the auto_focus option was not scrolled into the viewport.

  • Adding spaces immediately after a contenteditable="false" block did not work properly in some circumstances.

  • Elements with only data-* custom attributes were sometimes removed when they should not be removed.

  • Selecting a figure with class="image" incorrectly highlighted the link toolbar button.

  • Specifying a single, non-default list style for the advlist_bullet_styles and advlist_number_styles options was not respected.

  • Fixed multiple issues that occurred when formatting contenteditable elements.

  • Spaces could be incorrectly added to urlinput dialog components (commonly but not exclusively presented in the Insert/Edit Link dialog) in certain cases.

  • The text patterns logic threw an error when there were fragmented text nodes in a paragraph.

  • Dragging a contentEditable=false element towards a document’s edge did not cause scrolling.

  • Parsing large documents no longer throws a Maximum call stack size exceeded exception.

  • DomParser filter matching was not checked between filters, which could lead to an exception in the parser.

  • contenteditable="false" lists can no longer be toggled; and contenteditable="true" list elements within these lists can no longer be indented, split into another list element, or appended to the previous list element by deletion.

  • Removed extra bottom padding in the context toolbar of the tinymce-5 skin.

  • Fixed a regression where pressing Enter added or deleted content outside the selection.

  • Fixed a bug where pressing Enter deleted selected contenteditable="false" <pre> elements.

  • The editor.insertContent() API did not respect the no_events argument.

Deprecated

  • The autocompleter configuration property, ch, has been deprecated. It will be removed in the next major release. Use the trigger property instead.

6.1.2 - 2022-07-29

Fixed

  • Reverted the undo level fix in the autolink plugin as it caused duplicated content in some edge cases.

6.1.1 - 2022-07-27

Fixed

  • Invalid special elements were not cleaned up correctly during sanitization.

  • An exception was thrown when deleting all content if the start or end of the document had a contenteditable="false" element.

  • When a sidebar was opened using the sidebar_show option, its associated toolbar button was not highlighted.

  • When converting a URL to a link, the autolink plugin did not fire an ExecCommand event, nor did it create an undo level.

  • Worked around a Firefox bug which resulted in cookies not being available inside the editor content.

  • <pre> content pasted into a <pre> block that had inline styles or was noneditable now merges correctly with the surrounding content.

  • After a codesample was pasted, the insertion point was placed incorrectly.

6.1.0 - 2022-06-29

Added

  • New sidebar_show option to show the specified sidebar on initialization.

  • New newline_behavior option controls what happens when the Return or Enter key is pressed or the mceInsertNewLine command is used.

  • New iframe_template_callback option in the Media plugin. Patch provided by Namstel.

  • New transparent property for iframe dialog component.

  • New removeAttributeFilter and removeNodeFilter functions added to the DomParser and DOM Serializer APIs.

  • New dispatchChange function added to the UndoManager API to fire the change with current editor status as level and current undoManager layer as lastLevel.

Improved

  • Clearer focus states for buttons while navigating with a keyboard.

  • Support annotating certain block elements directly when using the editor’s Annotation API.

  • The mceLink command can now take the value { dialog: true } to always open the link dialog.

  • All help dialog links to https://www.tiny.cloud now include rel="noopener" to avoid potential security issues.

Changed

  • The end_container_on_empty_block option can now take a string of blocks, allowing the exiting of a blockquote element by pressing Enter or Return twice.

  • The default value for end_container_on_empty_block option has been changed to 'blockquote'.

  • Link menu and toolbar buttons now always execute the mceLink command.

  • Toggling fullscreen mode when using the Fullscreen plugin now also fires the ResizeEditor event.

  • Getting the editor’s text content now returns newlines instead of an empty string if more than one empty paragraph exists.

  • Custom elements are now treated as non-empty elements by the schema.

  • The autocompleter’s menu HTML element is now positioned instead of the wrapper.

  • Choice menu items will now use the 'menuitemradio' aria role to better reflect that only a single item can be active.

Fixed

  • Some Template plugin option values were not escaped properly when doing replacement lookups with Regular Expressions.

  • Copy events were not dispatched in readonly mode.

  • <pre> tags were not preserved when copying and pasting.

  • The URL detection used for autolink and smart paste did not work if a path segment contained valid characters such as ! and :.

  • In some cases pressing the Backspace or Delete key would incorrectly step into tables rather than remain outside.

  • Links opened when Alt+Enter or Option+Return was typed even when preventDefault() was called on the keydown event.

  • Inconsistent visual behavior between choosing Edit → Select All and typing Ctrl+A or Cmd+A when a document contained an image.

  • Ctrl+Shift+Home/End or Cmd+Shift+Up-arrow/Down-arrow did not expand the selection to a contenteditable="false" element if the element was at the beginning or end of a document.

  • Triple-clicking did not select a paragraph in Google Chrome in some circumstances.

  • Images were not showing as selected when selected along with other content.

  • Selection direction was not stored or restored when getting or setting selection bookmarks.

  • When text within an inline boundary element was selected and the right-arrow key was pressed, the insertion point incorrectly moved to the left.

  • In some versions of Safari, the editor.selection.isForward() API could throw an exception due to an invalid selection.

  • The selection is no longer incorrectly moved inside a comment by the editor.selection.normalize() API.

  • The InsertParagraph or mceInsertNewLine commands did not delete the current selection like the native command does.

  • The InsertLineBreak command did not replace selected content.

  • If selected content straddled a parent and nested list, cutting the selection did not always set the list style to 'none' on the parent list.

  • Delete operations could behave incorrectly if the selection contains a contenteditable="false" element located at the edge of content.

  • Spaces were not added correctly on some browsers when the insertion point was immediately before or after a contenteditable="false" block element.

  • Images that used a Data URI were corrupted when the data wasn’t base64 encoded.

  • uploadImages no longer triggers two change events if there is a removal of images on upload.

  • Preview and Insert Template dialogs now display the correct content background color when using dark skins.

  • Dialogs no longer exceed window height on smaller screens.

  • UI components, such as dialogs, would in some cases cause the Esc keyup event to incorrectly trigger inside the editor.

  • Fixed incorrect word breaks in menus when the menu presented with a scrollbar.

  • Notifications did not properly reposition when toggling fullscreen mode.

  • Text alignments, such as flush left and centered, could not be applied to <pre> elements.

  • Indenting or outdenting list items inside a block element that was inside another list item did not work.

  • Changing the list type of a list within another block element altered the parent element that contained that list.

  • Pasting columns in tables could, in some circumstances, result in an invalid table.

  • Copying columns in tables could sometimes result in an invalid copy.

  • Changing table properties with the table_style_by_css option set to false would sometimes reset the table width.

  • Custom elements added to otherwise blank lines were removed during serialization.

  • The editor’s autocompleter was not triggered at the start of nested list items.

  • Some function types in the TreeWalker API missed that it could return undefined.

  • Nuget packages for .NET and .NET Core are now configured to copy TinyMCE into /wwwroot/lib/ when TinyMCE is installed into a project.

6.0.3 - 2022-05-25

Fixed

  • Could not remove values when multiple cells were selected with the cell properties dialog.

  • Could not remove values when multiple rows were selected with the row properties dialog.

  • Empty lines that were formatted in a ranged selection using the format_empty_lines option were not kept in the serialized content.

  • The s element was missing from the default schema text inline elements.

  • Some text inline elements specified via the schema were not removed when empty by default.

6.0.2 - 2022-04-27

Fixed

  • Some media elements wouldn’t update when changing the source URL.

  • Inline toolbars flickered when switching between editors.

  • Multiple inline toolbars were shown if focused too quickly.

  • Added background and additional spacing for the text labeled buttons in the toolbar to improve visual clarity.

  • Toolbar split buttons with text used an incorrect width on touch devices.

6.0.1 - 2022-03-23

Fixed

  • Fixed the dev ZIP missing the required bin scripts to build from the source.

  • Fixed a regression whereby text patterns couldn’t be updated at runtime.

  • Fixed an issue where tables with colgroups could be copied incorrectly in some cases.

  • Naked buttons better adapt to various background colors, improved text contrast in notifications.

  • The autocompleter would not fire the AutocompleterStart event nor close the menu in some cases.

  • It wasn’t possible to select text right after an inline noneditable element.

  • Fixed a double border showing for the tinymce-5 skin when using toolbar_location: 'bottom'.

  • Clipboard content was not generated correctly when cutting and copying contenteditable="false" elements.

  • Fixed the box-shadow getting clipped in autocompletor popups.

  • The buttonType property did not work for dialog footer buttons.

  • Fix contrast ratio for error messages.

6.0.0 - 2022-03-03

Added

  • New editor.options API to replace the old editor.settings and editor.getParam APIs.

  • New editor.annotator.removeAll API to remove all annotations by name.

  • New Resource.unload API to make it possible to unload resources.

  • New FakeClipboard API on the tinymce global.

  • New dispatch() function to replace the now deprecated fire() function in various APIs.

  • New AutocompleterStart, AutocompleterUpdate and AutocompleterEnd events.

  • New mceAutocompleterClose, mceAutocompleterReload commands.

  • New mceInsertTableDialog command to open the insert table dialog.

  • New slider dialog component.

  • New imagepreview dialog component, allowing preview and zoom of any image URL.

  • New buttonType property on dialog button components, supporting toolbar style in addition to primary and secondary.

  • The tabindex attribute is now copied from the target element to the iframe.

Improved

  • New default theme styling for TinyMCE 6 facelift with old skin available as tinymce-5 and tinymce-5-dark.

  • The default height of editor has been increased from 200px to 400px to improve the usability of the editor.

  • The upload results returned from the editor.uploadImages() API now includes a removed flag, reflecting if the image was removed after a failed upload.

  • The ScriptLoader, StyleSheetLoader, AddOnManager, PluginManager and ThemeManager APIs will now return a Promise when loading resources instead of using callbacks.

  • A ThemeLoadError event is now fired if the theme fails to load.

  • The BeforeSetContent event will now include the actual serialized content when passing in an AstNode to the editor.setContent API.

  • Improved support for placing the caret before or after noneditable elements within the editor.

  • Calls to editor.selection.setRng now update the caret position bookmark used when focus is returned to the editor.

  • The emoticon plugin dialog, toolbar and menu item has been updated to use the more accurate Emojis term.

  • The dialog redial API will now only rerender the changed components instead of the whole dialog.

  • The dialog API setData method now uses a deep merge algorithm to support partial nested objects.

  • The dialog spec initialData type is now Partial<T> to match the underlying implementation details.

  • Notifications no longer require a timeout to disable the close button.

  • The editor theme is now fetched in parallel with the icons, language pack and plugins.

Changed

  • TinyMCE is now MIT licensed.

  • Moved the paste plugin’s functionality to TinyMCE core.

  • The paste_data_images option now defaults to true.

  • Moved the noneditable plugin to TinyMCE core.

  • Renamed the noneditable_noneditable_class option to noneditable_class.

  • Renamed the noneditable_editable_class option to editable_class.

  • Moved the textpattern plugin to TinyMCE core.

  • Renamed the textpattern_patterns option to text_patterns.

  • Moved the hr plugin’s functionality to TinyMCE core.

  • Moved the print plugin’s functionality to TinyMCE core.

  • Moved non-UI table functionality to core.

  • The DomParser API no longer uses a custom parser internally and instead uses the native DOMParser API.

  • The editor.getContent() API can provide custom content by preventing and overriding content in the BeforeGetContent event. This makes it consistent with the editor.selection.getContent() API.

  • The editor.setContent() API can now be prevented using the BeforeSetContent event. This makes it consistent with the editor.selection.setContent() API.

  • Add-ons such as plugins and themes are no longer constructed using the new operator.

  • A number of APIs that were not proper classes, are no longer constructed using the new operator.

  • The Editor commands APIs will no longer fallback to executing the browsers native command functionality.

  • The Editor query command APIs will now return false or an empty string on removed editors.

  • The mceAddEditor and mceToggleEditor commands now take an object as their value to specify the id and editor options.

  • The mceInsertTable command can no longer open the insert table dialog. Use the mceInsertTableDialog command instead.

  • The plugins option now returns a string array instead of a space separated string.

  • The media plugin no longer treats iframe, video, audio or object elements as "special" and will validate the contents against the schema.

  • The images_upload_handler option is no longer passed a success or failure callback and instead requires a Promise to be returned with the upload result.

  • The tinymce.settings global property is no longer set upon initialization.

  • The change event is no longer fired on first modification.

  • The GetContent event will now always pass a string for the content property.

  • Changed the default tag for the strikethrough format to the s tag when using a html 5 schema.

  • The strike tag is automatically converted to the s tag when using a html 5 schema.

  • Aligning a table to the left or right will now use margin styling instead of float styling.

  • The : control character has been changed to ~ for the schema valid_elements and extended_valid_elements options.

  • The primary property on dialog buttons has been deprecated. Use the new buttonType property instead.

  • Changed the default statusbar element path delimiter from » to .

  • Replaced the Powered by Tiny branding text with the Tiny logo.

  • The default minimum height of editor has been changed to 100px to prevent the UI disappearing while resizing.

  • RGB colors are no longer converted to hex values when parsing or serializing content.

  • Replaced the isDisabled() function with an isEnabled() function for various APIs.

  • Replaced the enable() and disable() functions with a setEnabled(state) function in various APIs.

  • Replaced the disabled property with an enabled property in various APIs.

  • Replaced the disable(name) and enable(name) functions with a setEnabled(name, state) function in the Dialog APIs.

  • Renamed the tinymce.Env.os.isOSX API to tinymce.Env.os.isMacOS.

  • Renamed the tinymce.Env.browser.isChrome API to tinymce.Env.browser.isChromium to better reflect its functionality.

  • Renamed the getShortEndedElements Schema API to getVoidElements.

  • Renamed the font_formats option to font_family_formats.

  • Renamed the fontselect toolbar button and fontformats menu item to fontfamily.

  • Renamed the fontsize_formats option to font_size_formats.

  • Renamed the fontsizeselect toolbar button and fontsizes menu item to fontsize.

  • Renamed the formatselect toolbar button and blockformats menu item to blocks.

  • Renamed the styleselect toolbar button and formats menu item to styles.

  • Renamed the lineheight_formats option to line_height_formats.

  • Renamed the getWhiteSpaceElements() function to getWhitespaceElements() in the Schema API.

  • Renamed the mceInsertClipboardContent command content property to html to better reflect what data is passed.

  • Renamed the default_link_target option to link_default_target for both link and autolink plugins.

  • Renamed the rel_list option to link_rel_list for the link plugin.

  • Renamed the target_list option to link_target_list for the link plugin.

  • The default value for the link_default_protocol option has been changed to https instead of http.

  • The default value for the element_format option has been changed to html.

  • The default value for the schema option has been changed to html5.

  • The default value for the table_style_by_css option has been changed to true.

  • The default value for the table_use_colgroups option has been changed to true.

Fixed

  • The object returned from the editor.fire() API was incorrect if the editor had been removed.

  • The editor.selection.getContent() API did not respect the no_events argument.

  • The editor.annotator.remove API did not keep selection when removing the annotation.

  • The GetContent event was not fired when getting tree or text formats using the editor.selection.getContent() API.

  • The beforeinput and input events would sometimes not fire as expected when deleting content.

  • The table plugin would sometimes not correctly handle headers in the tfoot section.

  • The silver theme UI was incorrectly rendered before plugins had initialized.

  • The aria labels for the color picker dialog were not translated.

  • Fixed sub-menu items not read by screen readers. Patch contributed by westonkd.

  • Dialog labels and other text-based UI properties did not escape HTML markup.

  • Anchor elements would render incorrectly when using the allow_html_in_named_anchor option.

  • The AstNode HTML serializer did not serialize pre or textarea elements correctly when they contained newlines.

  • The Home or End keys would move out of a editable element contained within a noneditable element.

  • Dialogs could not be opened in inline mode before the editor had been rendered.

  • Clicking on menu items could cause an unexpected console warning if the onAction function caused the menu to close.

  • Fixed various color and contrast issues for the dark skins.

Deprecated

  • The dialog button component’s primary property has been deprecated and will be removed in the next major release. Use the new buttonType property instead.

  • The fire() function of tinymce.Editor, tinymce.dom.EventUtils, tinymce.dom.DOMUtils, tinymce.util.Observable and tinymce.util.EventDispatcher has been deprecated and will be removed in the next major release. Use the dispatch() function instead.

  • The content property on the SetContent event has been deprecated and will be removed in the next major release.

  • The return value of the editor.setContent API has been deprecated and will be removed in the next major release.

Removed

  • Removed support for Microsoft Internet Explorer 11.

  • Removed support for Microsoft Word from the opensource paste functionality.

  • Removed support for the plugins option allowing a mixture of a string array and of space separated strings.

  • Removed support for the deprecated false value for the forced_root_block option.

  • Removed the jQuery integration.

  • Removed the imagetools plugin, which is now classified as a Premium plugin.

  • Removed the imagetools dialog component.

  • Removed the toc plugin, which is now classified as a Premium plugin.

  • Removed the tabfocus plugin.

  • Removed the textpattern plugin’s API as part of moving it to core.

  • Removed the table plugin’s API.

  • Removed the callback for the EditorUpload API.

  • Removed the legacy browser detection properties from the Env API.

  • Removed the filterNode method from the DomParser API.

  • Removed the SaxParser API.

  • Removed the tinymce.utils.Promise API.

  • Removed the toHex function for the DOMUtils and Styles APIs.

  • Removed the execCommand handler function from the plugin and theme interfaces.

  • Removed the editor.settings property as it has been replaced by the new Options API.

  • Removed the shortEnded and fixed properties on tinymce.html.Node class.

  • Removed the mceInsertRawHTML command.

  • Removed the style field from the image plugin dialog advanced tab.

  • Removed the paste_filter_drop option as native drag and drop handling is no longer supported.

  • Removed the legacy mobile theme.

  • Removed the deprecated $, Class, DomQuery and Sizzle APIs.

  • Removed the deprecated Color, JSON, JSONP and JSONRequest.

  • Removed the deprecated XHR API.

  • Removed the deprecated setIconStroke Split Toolbar Button API.

  • Removed the deprecated editors property from EditorManager.

  • Removed the deprecated execCallback and setMode APIs from Editor.

  • Removed the deprecated addComponents and dependencies APIs from AddOnManager.

  • Removed the deprecated clearInterval, clearTimeout, debounce, requestAnimationFrame, setInterval, setTimeout and throttle APIs from Delay.

  • Removed the deprecated Schema options.

  • Removed the deprecated file_browser_callback_types, force_hex_style_colors and images_dataimg_filter options.

  • Removed the deprecated filepicker_validator_handler, force_p_newlines, gecko_spellcheck, tab_focus, table_responsive_width and toolbar_drawer options.

  • Removed the deprecated media_scripts option in the media plugin.

  • Removed the deprecated editor_deselector, editor_selector, elements, mode and types legacy TinyMCE init options.

  • Removed the deprecated content_editable_state and padd_empty_with_br options.

  • Removed the deprecated autoresize_on_init option from the autoresize plugin.

  • Removed the deprecated fullpage, spellchecker, bbcode, legacyoutput, colorpicker, contextmenu and textcolor plugins.

  • Removed the undocumented editor.editorCommands.hasCustomCommand API.

  • Removed the undocumented mceResetDesignMode, mceRepaint and mceBeginUndoLevel commands.