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.2 - 2023-12-11
Fixed
-
Bespoke select toolbar buttons including
fontfamily
,fontsize
,blocks
, andstyles
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
, andstyles
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
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 asandbox=""
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
, andstyles
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
andbackcolor
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 alist
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 sourceli
. -
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
, andresetContent
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
andsetContent
APIs with theformat: 'raw'
option, which also affected theresetContent
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
andsetContent
APIs with theformat: 'raw'
option, which also affected theresetContent
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
fromenum
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 customcolor_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.1 - 2023-08-02
Added
-
Restored filtering option,
pad_empty_with_br
. Set totrue
to pad empty block elements with<br>
tags instead of the
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.
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 customcolor_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
andsend
icons. -
Added a new property —
streamContent
— for theiframe
dialog component. This causessetData()
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 theiframe
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.
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
andonToggleExpand
options to thetree
component config. -
New optional
defaultSelectedId
option to thetree
component config. -
New
accordion
plugin with theInsertAccordion
command. -
New
accordion
andaccordion-toggle
icons. -
New
details_initial_state
anddetails_serialized_state
options. -
New
init_content_sync
option that initializes the editor iframe usingdocument.write
instead ofsrcdoc
. -
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 tofalse
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 returnstrue
orfalse
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
, andstrong
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 footertogglebutton
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 thetemplate
plugin dialog to use thelistbox
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 acontenteditable="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
anddt
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 ofid
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 acontenteditable="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 acontenteditable="false"
attribute set when these elements were within a root with acontenteditable="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 returningfalse
when the selection was in acontenteditable="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 tofalse
. -
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
andinput
events. -
In some cases, exiting a
blockquote
element could fail when the insertion point was positioned at the end of theblockquote
. -
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
andtox-button-secondary
buttons now support thehover
,active
,focus
, anddisabled
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 theTheme
type can now return aPromise<RenderResult>
instead ofRenderResult
. -
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
andsetIcon
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 infontsizeinput
and have them parsed with the default unit, if it is not defined the default ispt
. -
New
group
andtogglebutton
in view. -
New
togglebutton
in dialog footer buttons. -
Added
toggleFullscreen
to dialog API. -
New
text-size-increase
andtext-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 rolepresentation
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 toeditor.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 acontenteditable="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 acontenteditable="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 acontenteditable="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
andDelete
editor commands were deleting content within elements with acontenteditable="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 acontenteditable="false"
attribute. -
Formatting could be applied or removed to list items with a
contenteditable="false"
attribute that were inside an element with acontenteditable="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
orabsolute
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 theforecolor
orbackcolor
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 hadtoolbar_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 whencontent_css
was set todocument
.
6.3.0 - 2022-11-23
Added
-
New
expand
function added totinymce.selection
which expands the selection around the nearest word. -
New
expand
function added totinymce.dom.RangeUtils
to return a new range expanded around the nearest word. -
New
color_map_background
andcolor_map_foreground
options which set the base colors used in thebackcolor
andforecolor
toolbar buttons and menu items. -
Added optional
storageKey
property tocolorinput
component andcolorswatch
fancy menu item. -
New
addView
function added toeditor.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
andcolor_default_background
options to set the initial default color for theforecolor
andbackcolor
toolbar buttons and menu items. -
New
getTransparentElements
function added totinymce.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' })
oreditor.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 thecontent_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 thecontenteditable="false"
elements that can be wrapped in a format. -
Added
allow
as a valid attribute for theiframe
element in the editor schema. -
New
search
field in theMenuButton
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 theformat_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
andadvlist_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; andcontenteditable="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 theno_events
argument.
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 anExecCommand
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 wasnoneditable
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 themceInsertNewLine
command is used. -
New
iframe_template_callback
option in the Media plugin. Patch provided by Namstel. -
New
transparent
property foriframe
dialog component. -
New
removeAttributeFilter
andremoveNodeFilter
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 includerel="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
ormceInsertNewLine
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 tofalse
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 usingtoolbar_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 oldeditor.settings
andeditor.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 thetinymce
global. -
New
dispatch()
function to replace the now deprecatedfire()
function in various APIs. -
New
AutocompleterStart
,AutocompleterUpdate
andAutocompleterEnd
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, supportingtoolbar
style in addition toprimary
andsecondary
. -
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
andtinymce-5-dark
. -
The default height of editor has been increased from
200px
to400px
to improve the usability of the editor. -
The upload results returned from the
editor.uploadImages()
API now includes aremoved
flag, reflecting if the image was removed after a failed upload. -
The
ScriptLoader
,StyleSheetLoader
,AddOnManager
,PluginManager
andThemeManager
APIs will now return aPromise
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 anAstNode
to theeditor.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 accurateEmojis
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 nowPartial<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 totrue
. -
Moved the
noneditable
plugin to TinyMCE core. -
Renamed the
noneditable_noneditable_class
option tononeditable_class
. -
Renamed the
noneditable_editable_class
option toeditable_class
. -
Moved the
textpattern
plugin to TinyMCE core. -
Renamed the
textpattern_patterns
option totext_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 nativeDOMParser
API. -
The
editor.getContent()
API can provide custom content by preventing and overridingcontent
in theBeforeGetContent
event. This makes it consistent with theeditor.selection.getContent()
API. -
The
editor.setContent()
API can now be prevented using theBeforeSetContent
event. This makes it consistent with theeditor.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
andmceToggleEditor
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 themceInsertTableDialog
command instead. -
The
plugins
option now returns astring
array instead of a space separated string. -
The
media
plugin no longer treatsiframe
,video
,audio
orobject
elements as "special" and will validate the contents against the schema. -
The
images_upload_handler
option is no longer passed asuccess
orfailure
callback and instead requires aPromise
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 astring
for thecontent
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 thes
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 schemavalid_elements
andextended_valid_elements
options. -
The
primary
property on dialog buttons has been deprecated. Use the newbuttonType
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 anisEnabled()
function for various APIs. -
Replaced the
enable()
anddisable()
functions with asetEnabled(state)
function in various APIs. -
Replaced the
disabled
property with anenabled
property in various APIs. -
Replaced the
disable(name)
andenable(name)
functions with asetEnabled(name, state)
function in the Dialog APIs. -
Renamed the
tinymce.Env.os.isOSX
API totinymce.Env.os.isMacOS
. -
Renamed the
tinymce.Env.browser.isChrome
API totinymce.Env.browser.isChromium
to better reflect its functionality. -
Renamed the
getShortEndedElements
Schema API togetVoidElements
. -
Renamed the
font_formats
option tofont_family_formats
. -
Renamed the
fontselect
toolbar button andfontformats
menu item tofontfamily
. -
Renamed the
fontsize_formats
option tofont_size_formats
. -
Renamed the
fontsizeselect
toolbar button andfontsizes
menu item tofontsize
. -
Renamed the
formatselect
toolbar button andblockformats
menu item toblocks
. -
Renamed the
styleselect
toolbar button andformats
menu item tostyles
. -
Renamed the
lineheight_formats
option toline_height_formats
. -
Renamed the
getWhiteSpaceElements()
function togetWhitespaceElements()
in theSchema
API. -
Renamed the
mceInsertClipboardContent
commandcontent
property tohtml
to better reflect what data is passed. -
Renamed the
default_link_target
option tolink_default_target
for bothlink
andautolink
plugins. -
Renamed the
rel_list
option tolink_rel_list
for thelink
plugin. -
Renamed the
target_list
option tolink_target_list
for thelink
plugin. -
The default value for the
link_default_protocol
option has been changed tohttps
instead ofhttp
. -
The default value for the
element_format
option has been changed tohtml
. -
The default value for the
schema
option has been changed tohtml5
. -
The default value for the
table_style_by_css
option has been changed totrue
. -
The default value for the
table_use_colgroups
option has been changed totrue
.
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 theno_events
argument. -
The
editor.annotator.remove
API did not keep selection when removing the annotation. -
The
GetContent
event was not fired when gettingtree
ortext
formats using theeditor.selection.getContent()
API. -
The
beforeinput
andinput
events would sometimes not fire as expected when deleting content. -
The
table
plugin would sometimes not correctly handle headers in thetfoot
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 serializepre
ortextarea
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 newbuttonType
property instead. -
The
fire()
function oftinymce.Editor
,tinymce.dom.EventUtils
,tinymce.dom.DOMUtils
,tinymce.util.Observable
andtinymce.util.EventDispatcher
has been deprecated and will be removed in the next major release. Use thedispatch()
function instead. -
The
content
property on theSetContent
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 theforced_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 theDomParser
API. -
Removed the
SaxParser
API. -
Removed the
tinymce.utils.Promise
API. -
Removed the
toHex
function for theDOMUtils
andStyles
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
andfixed
properties ontinymce.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
andSizzle
APIs. -
Removed the deprecated
Color
,JSON
,JSONP
andJSONRequest
. -
Removed the deprecated
XHR
API. -
Removed the deprecated
setIconStroke
Split Toolbar Button API. -
Removed the deprecated
editors
property fromEditorManager
. -
Removed the deprecated
execCallback
andsetMode
APIs fromEditor
. -
Removed the deprecated
addComponents
anddependencies
APIs fromAddOnManager
. -
Removed the deprecated
clearInterval
,clearTimeout
,debounce
,requestAnimationFrame
,setInterval
,setTimeout
andthrottle
APIs fromDelay
. -
Removed the deprecated
Schema
options. -
Removed the deprecated
file_browser_callback_types
,force_hex_style_colors
andimages_dataimg_filter
options. -
Removed the deprecated
filepicker_validator_handler
,force_p_newlines
,gecko_spellcheck
,tab_focus
,table_responsive_width
andtoolbar_drawer
options. -
Removed the deprecated
media_scripts
option in themedia
plugin. -
Removed the deprecated
editor_deselector
,editor_selector
,elements
,mode
andtypes
legacy TinyMCE init options. -
Removed the deprecated
content_editable_state
andpadd_empty_with_br
options. -
Removed the deprecated
autoresize_on_init
option from theautoresize
plugin. -
Removed the deprecated
fullpage
,spellchecker
,bbcode
,legacyoutput
,colorpicker
,contextmenu
andtextcolor
plugins. -
Removed the undocumented
editor.editorCommands.hasCustomCommand
API. -
Removed the undocumented
mceResetDesignMode
,mceRepaint
andmceBeginUndoLevel
commands.