---
title: "Changelog"
description: "The history of TinyMCE releases."
canonical_url: "https://www.tiny.cloud/docs/tinymce/latest/changelog/"
md_url: "https://www.tiny.cloud/docs/tinymce/6/changelog/index.md"
version: "6"
last_updated: "2025-05-29T03:24:31Z"
tokens: 13610
---
Important This page documents TinyMCE 6. For new projects, Tiny recommends using the latest, most up-to-date version. [See TinyMCE 8 documentation](../../latest/changelog/).
# Changelog

> **Note:** This is the TinyMCE Community version changelog. For information about the latest Tiny Cloud or TinyMCE Enterprise Release, see: [TinyMCE Release Notes](../release-notes/).

## 6.8.6 - 2025-05-29

### Improved

- Update `Notices` file and minified notices.

## 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.
