From 72052a8c0c6372026be94d88475e02792458cea3 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Fri, 5 Jun 2026 10:31:54 +1000 Subject: [PATCH 01/53] DOC-3526: TinyMCE 8.7.0 Release Documentation and Community Changelog. --- modules/ROOT/nav.adoc | 5 -- modules/ROOT/pages/8.7.0-release-notes.adoc | 92 +++------------------ 2 files changed, 13 insertions(+), 84 deletions(-) diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index d6003af08e..b7620cc90c 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -422,12 +422,7 @@ ** xref:release-notes.adoc[Release notes for {productname}] *** {productname} 8.7.0 **** xref:8.7.0-release-notes.adoc#overview[Overview] -**** xref:8.7.0-release-notes.adoc#new-premium-plugin[New Premium Plugin] -**** xref:8.7.0-release-notes.adoc#new-open-source-plugin[New Open Source Plugin] **** xref:8.7.0-release-notes.adoc#accompanying-premium-plugin-changes[Accompanying Premium Plugin changes] -**** xref:8.7.0-release-notes.adoc#accompanying-premium-plugin-end-of-life-announcement[Accompanying Premium Plugin end-of-life announcement] -**** xref:8.7.0-release-notes.adoc#accompanying-open-source-plugin-end-of-life-announcement[Accompanying Open Source Plugin end-of-life announcement] -**** xref:8.7.0-release-notes.adoc#accompanying-enhanced-skins-and-icon-packs-changes[Accompanying Enhanced Skins & Icon Packs changes] **** xref:8.7.0-release-notes.adoc#improvements[Improvements] **** xref:8.7.0-release-notes.adoc#additions[Additions] **** xref:8.7.0-release-notes.adoc#changes[Changes] diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index faedcb308c..60a84540ef 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -13,14 +13,7 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] {productname} {release-version} was released for {enterpriseversion} and {cloudname} on Tuesday, June 30^th^, 2026. These release notes provide an overview of the changes for {productname} {release-version}, including: -// Remove sections and section boilerplates as necessary. -// Pluralise as necessary or remove the placeholder plural marker. -* xref:new-premium-plugin[New Premium plugin] -* xref:new-open-source-plugin[New Open Source plugin] * xref:accompanying-premium-plugin-changes[Accompanying Premium plugin changes] -* xref:accompanying-premium-plugin-end-of-life-announcement[Accompanying Premium plugin end-of-life announcement] -* xref:accompanying-open-source-plugin-end-of-life-announcement[Accompanying open source plugin end-of-life-announcement] -* xref:accompanying-enhanced-skins-and-icon-packs-changes[Accompanying Enhanced Skins & Icon Packs changes] * xref:improvements[Improvements] * xref:additions[Additions] * xref:changes[Changes] @@ -30,80 +23,21 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] * xref:known-issues[Known issues] -[[new-premium-plugin]] -== New Premium plugin - -The following new Premium plugin was released alongside {productname} {release-version}. - -=== - -The new Premium plugin, **** // description here. - -For information on the **** plugin, see xref:.adoc[]. - - -[[new-open-source-plugin]] -== New Open Source plugin - -The following new Open Source plugin was released alongside {productname} {release-version}. - -=== - -The new open source plugin, **** // description here. - -For information on the **** plugin, see xref:.adoc[]. - - [[accompanying-premium-plugin-changes]] == Accompanying Premium plugin changes The following premium plugin updates were released alongside {productname} {release-version}. -=== +// === -The {productname} {release-version} release includes an accompanying release of the **** premium plugin. +// The {productname} {release-version} release includes an accompanying release of the **** premium plugin. -**** includes the following . - -==== +// **** includes the following . +// ==== // CCFR here. -For information on the **** plugin, see: xref:.adoc[]. - - -[[accompanying-premium-plugin-end-of-life-announcement]] -== Accompanying Premium plugin end-of-life announcement - -The following Premium plugin has been announced as reaching its end-of-life: - -=== - -{productname}’s xref:.adoc[] plugin will be deactivated on
, , and is no longer available for purchase. - - -[[accompanying-open-source-plugin-end-of-life-announcement]] -== Accompanying open source plugin end-of-life announcement - -The following open source plugin has been announced as reaching its end-of-life: - -=== - -{productname}’s xref:.adoc[] plugin will be deactivated on
, , and is no longer available for purchase. - - -[[accompanying-enhanced-skins-and-icon-packs-changes]] -== Accompanying Enhanced Skins & Icon Packs changes - -The {productname} {release-version} release includes an accompanying release of the **Enhanced Skins & Icon Packs**. - -=== Enhanced Skins & Icon Packs - -The **Enhanced Skins & Icon Packs** release includes the following updates: - -The **Enhanced Skins & Icon Packs** were rebuilt to pull in the changes also incorporated into the default {productname} {release-version} skin, Oxide. - -For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-and-icon-packs.adoc[Enhanced Skins & Icon Packs]. +// For information on the **** plugin, see: xref:.adoc[]. [[improvements]] @@ -111,7 +45,7 @@ For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-a {productname} {release-version} also includes the following improvement: -=== +// === // #TINY-vwxyz1 // CCFR here. @@ -122,7 +56,7 @@ For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-a {productname} {release-version} also includes the following addition: -=== +// === // #TINY-vwxyz1 // CCFR here. @@ -133,7 +67,7 @@ For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-a {productname} {release-version} also includes the following change: -=== +// === // #TINY-vwxyz1 // CCFR here. @@ -144,7 +78,7 @@ For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-a {productname} {release-version} also includes the following removal: -=== +// === // #TINY-vwxyz1 // CCFR here. @@ -155,7 +89,7 @@ For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-a {productname} {release-version} also includes the following bug fix: -=== +// === // #TINY-vwxyz1 // CCFR here. @@ -166,7 +100,7 @@ For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-a {productname} {release-version} includes : -=== +// === // #TINY-vwxyz1 // CCFR here. @@ -177,7 +111,7 @@ For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-a {productname} {release-version} includes the following deprecation: -=== The `` configuration property, ``, has been deprecated +// === The `` configuration property, ``, has been deprecated // placeholder here. @@ -189,7 +123,7 @@ This section describes issues that users of {productname} {release-version} may There known issue in {productname} {release-version}. -=== +// === // #TINY-vwxyz1 // CCFR here. From c4f1d870b75d0d7fa771f45e152cbccdd5cf2334 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Tue, 23 Jun 2026 15:15:47 +1000 Subject: [PATCH 02/53] Docs: DOC-3526 - Pressing Tab or Shift+Tab on an open menu now closes it and moves focus to the next or previous focusable element (#4168) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 60a84540ef..519fa44747 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -50,6 +50,13 @@ The following premium plugin updates were released alongside {productname} {rele // CCFR here. +=== Pressing Tab or Shift+Tab on an open menu now closes it and moves focus to the next or previous focusable element +// #TINY-13341 + +Previously, pressing Tab or Shift+Tab inside an open dropdown menu cycled focus through the menu items instead of closing the menu. This behavior did not align with accessibility guidelines, which recommend that the Tab key close the menu and move focus to the next or previous element in the tab order. As a result, keyboard navigation through menus was less predictable for users who rely on the keyboard or assistive technologies. + +In {productname} {release-version}, pressing Tab or Shift+Tab on an open menu now closes the menu and moves focus to the next or previous focusable element in the tab order. This makes keyboard navigation more predictable and aligns dropdown menu behavior with accessibility guidelines. + [[additions]] == Additions From 6a02984ec55c18d50f7fff5778f1393db230bc32 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Tue, 23 Jun 2026 15:15:56 +1000 Subject: [PATCH 03/53] Docs: DOC-3526 - Worked around a Chromium bug where clicking on the right of an `li` could fail (#4169) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 519fa44747..55faa1cab7 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -101,6 +101,13 @@ In {productname} {release-version}, pressing Tab or Shift+Tab on an open menu no // CCFR here. +=== Worked around a Chromium bug where clicking on the right of an `li` could fail +// #TINY-13886 + +Previously, clicking to the right of the content in a list item could place the cursor at the start of the item instead of at the location that was clicked. This was caused by a Chromium browser bug that moved the caret to an incorrect position. + +In {productname} {release-version}, a targeted workaround detects this case and corrects the caret position. Clicking to the right of a list item now places the cursor where expected. + [[security-fixes]] == Security fixes From fb6e57bbfba90db338302d7bc6e53b6b703b51cc Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Tue, 23 Jun 2026 15:27:35 +1000 Subject: [PATCH 04/53] Docs: DOC-3526 - Some annotated text was hidden when printed even though it should have been visible (#4171) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 55faa1cab7..6ec84ead24 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -101,6 +101,13 @@ In {productname} {release-version}, pressing Tab or Shift+Tab on an open menu no // CCFR here. +=== Some annotated text was hidden when printed even though it should have been visible +// #TINY-14296 + +Previously, text marked by annotation features, such as spelling indicators, could be hidden when a page was printed. The annotations were wrapped in internal placeholder elements that were hidden during printing, which also hid the text inside them. + +In {productname} {release-version}, placeholder elements that act only as wrappers now hide their styling rather than their contents when printing. Annotation highlights remain hidden in the printed output, while the underlying text is printed as expected. + === Worked around a Chromium bug where clicking on the right of an `li` could fail // #TINY-13886 From d43cf6f541b0da3a5dde3c901400e658f6fa3344 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Tue, 23 Jun 2026 15:27:55 +1000 Subject: [PATCH 05/53] DOC-3526: AI Chat state was lost if the sidebar was closed before the model started responding (#4172) * Docs: DOC-3526 - AI state was lost if the AI chat was closed before the AI started responding to a prompt * Docs: DOC-3526 - Refine TINY-14222 wording (use 'the model'; name the Chat sidebar) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 6ec84ead24..21fc80640e 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -39,6 +39,21 @@ The following premium plugin updates were released alongside {productname} {rele // For information on the **** plugin, see: xref:.adoc[]. +=== TinyMCE AI + +The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. + +**TinyMCE AI** includes the following fix. + +==== AI Chat state was lost if the sidebar was closed before the model started responding +// #TINY-14222 + +Previously, the state of an AI Chat conversation could be lost if the Chat sidebar was closed before the model began responding to a prompt. The plugin recorded which sidebar started a response only once the response began, so closing the sidebar beforehand left no record. Reopening the sidebar then reset the conversation and any pending preview. + +In {productname} {release-version}, the sidebar is recorded as soon as the prompt is sent. Closing and reopening the Chat sidebar before the response is ready no longer resets the conversation. + +For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. + [[improvements]] == Improvements From b78e36d7f358b7d3e367647efcf4d6f12e453fee Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Tue, 23 Jun 2026 15:44:30 +1000 Subject: [PATCH 06/53] Docs: DOC-3526 - AI response HTML is now filtered through the editor's content pipeline before being displayed in preview (#4173) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 21fc80640e..03ccdb0e99 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -43,7 +43,14 @@ The following premium plugin updates were released alongside {productname} {rele The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. -**TinyMCE AI** includes the following fix. +**TinyMCE AI** includes the following improvement and fix. + +==== AI response HTML is now filtered through the editor's content pipeline before being displayed in preview +// #TINY-14344 + +Previously, content shown in the AI preview was not filtered by the editor's content rules until it was applied. With a strict schema configuration, a change could appear in the preview, be accepted, and then be removed when applied to the editor, so the final result did not match the preview. + +In {productname} {release-version}, AI response HTML is filtered through the editor's content pipeline before it is shown in the preview. The preview now reflects what will be added to the editor, and if filtering removes all of the content the user is notified. ==== AI Chat state was lost if the sidebar was closed before the model started responding // #TINY-14222 From 5fa0a58b9bbfe72c6f407ad46199c7c30a64c77d Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Tue, 23 Jun 2026 16:23:31 +1000 Subject: [PATCH 07/53] Docs: DOC-3526 - An error could be reported when aborting and starting a new conversation (#4174) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 03ccdb0e99..e4cfcf99fe 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -43,7 +43,14 @@ The following premium plugin updates were released alongside {productname} {rele The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. -**TinyMCE AI** includes the following improvement and fix. +**TinyMCE AI** includes the following improvement and fixes. + +==== An error could be reported when aborting and starting a new conversation +// #TINY-14381 + +Previously, aborting a streamed AI response and starting a new conversation could report an error. Aborting the response triggered a document delete operation that sometimes failed. + +In {productname} {release-version}, the document is no longer deleted when an AI request is aborted. Aborting a response and starting a new conversation no longer reports this error. ==== AI response HTML is now filtered through the editor's content pipeline before being displayed in preview // #TINY-14344 From 041067388e688faa81270a1b37ca32c64d5aafb9 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Tue, 23 Jun 2026 16:27:38 +1000 Subject: [PATCH 08/53] Docs: DOC-3526 - The fullpage header and footer were not included when getting HTML content with inline CSS (#4175) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index e4cfcf99fe..819ba18c9a 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -39,6 +39,21 @@ The following premium plugin updates were released alongside {productname} {rele // For information on the **** plugin, see: xref:.adoc[]. +=== Inline CSS + +The {productname} {release-version} release includes an accompanying release of the **Inline CSS** premium plugin. + +**Inline CSS** includes the following fix. + +==== The fullpage header and footer were not included when getting HTML content with inline CSS +// #TINY-14410 + +Previously, the **Inline CSS** plugin's `getContent` API did not return a complete HTML document when the **Full Page HTML** plugin was enabled. The surrounding document header and footer were omitted, which made the output unsuitable for use cases such as generating email-ready documents. + +In {productname} {release-version}, the **Inline CSS** plugin detects when the **Full Page HTML** plugin is enabled and includes the document header and footer in its output. The `getContent` API now returns a full HTML document as expected. + +For information on the **Inline CSS** plugin, see: xref:inline-css.adoc[Inline CSS]. + === TinyMCE AI The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. From aceadccce052457a3439c1ebee560710f85387ec Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:22:34 +1000 Subject: [PATCH 09/53] Docs: DOC-3526 - Two tooltips were shown at the same time when hovering over context sources or conversation titles that were shortened with an ellipsis in Safari (#4176) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 819ba18c9a..74121648c2 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -58,7 +58,14 @@ For information on the **Inline CSS** plugin, see: xref:inline-css.adoc[Inline C The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. -**TinyMCE AI** includes the following improvement and fixes. +**TinyMCE AI** includes the following improvements and fixes. + +==== Two tooltips were shown at the same time when hovering over context sources or conversation titles that were shortened with an ellipsis in Safari +// #TINY-14032 + +Previously, in Safari, hovering over text that was shortened with an ellipsis, such as AI Chat conversation titles or context sources, could display two tooltips at once: the browser's native tooltip and the plugin's custom tooltip. + +In {productname} {release-version}, only the native tooltip is shown for these elements in Safari. A single tooltip now appears on hover as expected. ==== An error could be reported when aborting and starting a new conversation // #TINY-14381 From efae60bc8cedd6750cdceac2e4dfa2684e0be81b Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:27:08 +1000 Subject: [PATCH 10/53] Docs: DOC-3526 - A confirmation dialog now appears before navigating away from unresolved suggestions (#4177) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 74121648c2..45879f49d3 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -58,7 +58,14 @@ For information on the **Inline CSS** plugin, see: xref:inline-css.adoc[Inline C The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. -**TinyMCE AI** includes the following improvements and fixes. +**TinyMCE AI** includes the following improvements and fixes and additions. + +==== A confirmation dialog now appears before navigating away from unresolved suggestions, such as when switching to another sidebar or opening a sidebar during quick actions +// #TINY-14236 + +Previously, switching between the AI Chat and Review sidebars, or opening a sidebar during quick actions, while AI suggestions were still unresolved discarded those suggestions and any applied changes permanently. A single accidental click could cause lost progress. + +In {productname} {release-version}, a confirmation dialog appears before navigating away from unresolved suggestions. The action proceeds only after it is confirmed, which prevents the accidental loss of in-progress changes. ==== Two tooltips were shown at the same time when hovering over context sources or conversation titles that were shortened with an ellipsis in Safari // #TINY-14032 From 2d7378fd3cf9deab5eac0297f7f731421bbab7df Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:31:20 +1000 Subject: [PATCH 11/53] DOC-3526: The editor resize handle now uses browser pointer events for more reliable behavior across different integration environments (#4178) * Docs: DOC-3526 - The editor resize handle now uses browser pointer events for more reliable behavior across different integration environments * Docs: DOC-3526 - Address review feedback on TINY-14241 resize handle entry --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 45879f49d3..79496d631b 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -115,6 +115,13 @@ Previously, pressing Tab or Shift+Tab inside an open dropdown menu cycled focus In {productname} {release-version}, pressing Tab or Shift+Tab on an open menu now closes the menu and moves focus to the next or previous focusable element in the tab order. This makes keyboard navigation more predictable and aligns dropdown menu behavior with accessibility guidelines. +=== The editor resize handle now uses browser pointer events for more reliable behavior across different integration environments +// #TINY-14241 + +Previously, the editor resize handle relied on an overlay element to capture pointer movement, which required raising the editor's stacking order. This caused the editor to appear on top of the floating sidebar used by the TinyMCE AI plugin while the editor was being resized. + +In {productname} {release-version}, the resize handle uses modern browser pointer events instead. This removes the need for the overlay element and the raised stacking order, providing more reliable resizing across different integration environments and resolving the overlap with the floating sidebar. + [[additions]] == Additions From ca223545cbcd69d21038cfd0fbfa3eacba143149 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:32:25 +1000 Subject: [PATCH 12/53] DOC-3526: TinyMCE AI image edits now target the correct image (#4196) * DOC-3526: Add TinyMCE AI bug fix release note for image data-id targeting (TINY-14454) * Update modules/ROOT/pages/8.7.0-release-notes.adoc Co-authored-by: spocke --------- Co-authored-by: spocke --- modules/ROOT/pages/8.7.0-release-notes.adoc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 79496d631b..6470818e1c 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -28,6 +28,19 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] The following premium plugin updates were released alongside {productname} {release-version}. +=== TinyMCE AI + +The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. + +**TinyMCE AI** includes the following fix. + +==== Image edits now target the correct image in content with multiple images +// #TINY-14454 + +Previously, images sent to the model were not uniquely identified, so a prompt referencing a specific image could mistake one image for another and apply changes, such as alt text updates, to the wrong image. **TinyMCE AI** now uniquely tags each `+img+` elements so they are less likely to be mistaken. Image edits now apply to the intended image, even when the content contains multiple images. + +For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. + // === // The {productname} {release-version} release includes an accompanying release of the **** premium plugin. From a3aab3daea9b37c3e44c6dd581997ddc32d881fa Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:32:36 +1000 Subject: [PATCH 13/53] DOC-3526: Indentation is now applied to all selected table cells (#4195) * DOC-3526: Add bug fix release note for table cell indentation (TINY-14370) * Docs: DOC-3526 - Improve TINY-14370 release note body structure --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 6470818e1c..d2595a0d91 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -174,6 +174,13 @@ In {productname} {release-version}, the resize handle uses modern browser pointe {productname} {release-version} also includes the following bug fix: +=== Indentation is now applied to all selected table cells +// #TINY-14370 + +Previously, applying indentation with multiple table cells selected affected only the cell where the pointer was released. The action used the browser's native selection rather than the editor's cell selection, so the remaining selected cells were left unchanged. + +In {productname} {release-version}, indentation is applied to every cell in the selection. + // === // #TINY-vwxyz1 From 040cc90ea4dd869f9755844a4a4f425be41e6f5e Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:34:41 +1000 Subject: [PATCH 14/53] Docs: DOC-3526 - Using the undo keyboard shortcut did not restore editor selection correctly (#4170) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index d2595a0d91..b9f0523456 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -200,6 +200,13 @@ Previously, clicking to the right of the content in a list item could place the In {productname} {release-version}, a targeted workaround detects this case and corrects the caret position. Clicking to the right of a list item now places the cursor where expected. +=== Using the undo keyboard shortcut did not restore editor selection correctly +// #TINY-14255 + +Previously, pressing the undo keyboard shortcut (Ctrl+Z, or Cmd+Z on macOS) after deleting a selection could leave the cursor in the wrong position. An earlier change registered an extra undo step whenever Ctrl or Cmd was pressed, so the step was recorded before the deleted content was restored. + +In {productname} {release-version}, {productname} registers that undo step only when Ctrl or Cmd is pressed together with Backspace or Delete, rather than on every Ctrl or Cmd key press. Undoing the deletion of a selection now restores both the content and the original selection correctly. + [[security-fixes]] == Security fixes From f1ec5fe516472925ec2297e9a21c2b9c84dd94a1 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:39:57 +1000 Subject: [PATCH 15/53] Docs: DOC-3526 - Keyboard navigation in the preview footer now focuses the currently active view mode instead of always the first one (#4179) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index b9f0523456..855d510d1c 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Keyboard navigation in the preview footer now focuses the currently active view mode instead of always the first one +// #TINY-14272 + +Previously, moving keyboard focus to the preview footer in the AI Chat always landed on the first view mode option rather than the one that was currently active. This made keyboard navigation between the Diff mode and Preview tabs less predictable. + +In {productname} {release-version}, focus moves to the currently active view mode in the preview footer. Keyboard navigation now reflects the active selection. + ==== A confirmation dialog now appears before navigating away from unresolved suggestions, such as when switching to another sidebar or opening a sidebar during quick actions // #TINY-14236 From d866477f7f4543286ea7dd164df6996dbcb2b015 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:49:12 +1000 Subject: [PATCH 16/53] Docs: DOC-3526 - Context toolbar with position 'line' was not repositioning to the opposite side when overflowing the viewport (#4180) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 855d510d1c..a141d68731 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -193,6 +193,13 @@ In {productname} {release-version}, indentation is applied to every cell in the // CCFR here. +=== Context toolbar with position 'line' was not repositioning to the opposite side when overflowing the viewport +// #TINY-14376 + +Previously, a context toolbar configured with `position: 'line'`, such as a quickbar, was not repositioned when it overflowed the edge of the viewport. Under these conditions the toolbar could be cut off, which prevented users from clicking its buttons. + +In {productname} {release-version}, a context toolbar that uses `position: 'line'` now flips to the opposite side when there is not enough space. The toolbar remains fully visible and usable in constrained layouts. + === Some annotated text was hidden when printed even though it should have been visible // #TINY-14296 From 3e89199779e1efe0f7dfeba936e67345de437390 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 09:59:04 +1000 Subject: [PATCH 17/53] Docs: DOC-3526 - Editor content was visible through the AI suggestions preview when using the premium snow skin (#4181) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index a141d68731..0b11a6876a 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Editor content was visible through the AI suggestions preview when using the premium snow skin +// #TINY-14189 + +Previously, when using the premium Snow skin, the AI suggestions preview overlay had a transparent background. The underlying editor content showed through the preview, which made it difficult to read and evaluate AI-generated suggestions. + +In {productname} {release-version}, the AI suggestions preview uses a solid white background in the Snow skin. Suggestions now appear on a clean, unobstructed background. + ==== Keyboard navigation in the preview footer now focuses the currently active view mode instead of always the first one // #TINY-14272 From b47bc18b691ec14d781f1460e924324da13679e7 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 10:02:59 +1000 Subject: [PATCH 18/53] Docs: DOC-3526 - Focused links in dark mode had the same text color as the background (#4182) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 0b11a6876a..1aba80e040 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -200,6 +200,13 @@ In {productname} {release-version}, indentation is applied to every cell in the // CCFR here. +=== Focused links in dark mode had the same text color as the background +// #TINY-14264 + +Previously, in dark mode, a focused or selected link was displayed with the same text color as the background. This made the link text impossible to read while it was selected. + +In {productname} {release-version}, selected link text in dark mode is displayed in white. Links remain readable when focused, which improves accessibility in dark mode. + === Context toolbar with position 'line' was not repositioning to the opposite side when overflowing the viewport // #TINY-14376 @@ -228,7 +235,6 @@ Previously, pressing the undo keyboard shortcut (Ctrl+Z, or Cmd+Z on macOS) afte In {productname} {release-version}, {productname} registers that undo step only when Ctrl or Cmd is pressed together with Backspace or Delete, rather than on every Ctrl or Cmd key press. Undoing the deletion of a selection now restores both the content and the original selection correctly. - [[security-fixes]] == Security fixes From 7985293b48c3b3370c228c9f1732fd8bdadf253d Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 10:11:03 +1000 Subject: [PATCH 19/53] Docs: DOC-3526 - Reduced the spacing in the AI review suggestion cards (#4183) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 1aba80e040..7b4b408643 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Reduced the spacing in the AI review suggestion cards +// #TINY-14279 + +Previously, the review suggestion cards in the AI Review sidebar used more padding than intended, which made the card layout look inconsistent with the design. + +In {productname} {release-version}, the spacing between the card header and body has been reduced to match the design. The review suggestion cards now have a more compact and consistent appearance. + ==== Editor content was visible through the AI suggestions preview when using the premium snow skin // #TINY-14189 From 8bdf05997e5567c956b8436d3e038d7c411d620b Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 10:35:53 +1000 Subject: [PATCH 20/53] Docs: DOC-3526 - The AI suggestions diff overlay did not always maintain alignment when resizing the browser window (#4184) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 7b4b408643..c843ccab2d 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== The AI suggestions diff overlay did not always maintain alignment when resizing the browser window +// #TINY-14366 + +Previously, after the AI Chat generated new content, resizing the browser window could leave the AI suggestions diff overlay misaligned with the underlying text. On some layouts the highlights became detached from the content they marked, which made the suggestions preview look broken. + +In {productname} {release-version}, the preview overlay tracks a wider set of size changes when the window is resized. The diff overlay now stays aligned with the generated content, which keeps the AI suggestions preview accurate. + ==== Reduced the spacing in the AI review suggestion cards // #TINY-14279 From 018b7c47ecf89a84c2809686e575d27b715d9644 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 10:38:13 +1000 Subject: [PATCH 21/53] DOC-3526: Add release note for tinymce.dom.AriaAnnouncer API (TINY-12791) (#4208) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index c843ccab2d..95f8d557ed 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -169,6 +169,17 @@ In {productname} {release-version}, the resize handle uses modern browser pointe {productname} {release-version} also includes the following addition: +=== New `tinymce.dom.AriaAnnouncer` API for screen reader announcements +// #TINY-12791 + +{productname} {release-version} adds the `+tinymce.dom.AriaAnnouncer+` API for sending messages to screen readers through an `+aria-live+` region without shifting focus. The `+announce+` method accepts a message and an optional `+{ assertive }+` setting. Integrators can use it to announce formatting changes, for example by listening to the `+FormatApply+` and `+FormatRemove+` events. + +[source,js] +---- +tinymce.dom.AriaAnnouncer.announce('Bold on'); +tinymce.dom.AriaAnnouncer.announce('Error occurred', { assertive: true }); +---- + // === // #TINY-vwxyz1 From b91beeb036b36f6e838becb9f1729848a19b7adc Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 10:39:52 +1000 Subject: [PATCH 22/53] Docs: DOC-3526 - Replaced the icon-only buttons in the AI suggestion preview with labeled Apply and Skip buttons (#4185) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 95f8d557ed..2bad988f17 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Replaced the icon-only buttons in the AI suggestion preview with labeled Apply and Skip buttons +// #TINY-14369 + +Previously, the AI suggestion preview used icon-only accept and reject buttons, so the meaning of each action relied on the icon and its tooltip. This made the actions ambiguous and harder to discover. + +In {productname} {release-version}, the AI suggestion preview uses labeled buttons: a primary **Apply** button to accept a suggestion and a secondary **Skip** button to reject it. The clearer labels make each action obvious and improve accessibility. + ==== The AI suggestions diff overlay did not always maintain alignment when resizing the browser window // #TINY-14366 From 8eea6a2837a56f2771e4df2684aa0f8915cd76d8 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 10:48:22 +1000 Subject: [PATCH 23/53] DOC-3526: CSS custom property names and color values in the style attribute were lowercased when parsed (#4186) * Docs: DOC-3526 - CSS custom property names and color values in the style attribute were lowercased when parsed * Docs: DOC-3526 - Align TINY-11524 entry with updated JIRA documentation section --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 2bad988f17..0e7d8ffc8a 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -232,6 +232,13 @@ In {productname} {release-version}, indentation is applied to every cell in the // CCFR here. +=== CSS custom property names and color values in the style attribute were lowercased when parsed +// #TINY-11524 + +Previously, the {productname} style parser lowercased CSS custom property names (such as `--MyColor`) and `color` and `background-color` values when reading the `style` attribute. This altered case-sensitive values, including CSS custom properties, template placeholders such as `{{FooBar}}`, and hex colors such as `#AABBCC`, so the affected styling sometimes did not render as authored. + +In {productname} {release-version}, the style parser preserves the original case of CSS custom property names and `color` and `background-color` values. Standard property names are still lowercased, and other processing, such as RGB-to-hex conversion, shorthand merging, and security filtering, is unchanged. Case-sensitive colors and custom properties now stay exactly as authored. + === Focused links in dark mode had the same text color as the background // #TINY-14264 From 9c399571421fab76a8b60300ab710b799bdb9b81 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 11:22:28 +1000 Subject: [PATCH 24/53] Docs: DOC-3526 - White space in user prompts was not rendered correctly in the AI Chat history (#4187) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 0e7d8ffc8a..0a4e8fdf2b 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== White space in user prompts was not rendered correctly in the AI Chat history +// #TINY-14448 + +Previously, user prompts shown in the AI Chat history collapsed consecutive spaces and line breaks. A multi-line prompt was displayed as a single run-on line, so the message in the chat thread did not match what was typed. + +In {productname} {release-version}, user prompts in the AI Chat history preserve their original line breaks and spacing, while long lines still wrap within the message. Prompts now display as they were typed. + ==== Replaced the icon-only buttons in the AI suggestion preview with labeled Apply and Skip buttons // #TINY-14369 From aa348b8f094ff76076a9ed983093459a3bd438f7 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 11:58:59 +1000 Subject: [PATCH 25/53] Docs: DOC-3526 - Some tooltips now appear only when the content is too long to display (#4188) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 0a4e8fdf2b..848838f1a3 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Some tooltips now appear only when the content is too long to display +// #TINY-14072 + +Previously, some tooltips in the TinyMCE AI interface were shown whenever their trigger condition was met, even when the content was already fully visible. This added unnecessary visual clutter. + +In {productname} {release-version}, these tooltips appear only when the content is truncated because it is too long to display in full. This reduces unnecessary tooltips and keeps the interface less cluttered. + ==== White space in user prompts was not rendered correctly in the AI Chat history // #TINY-14448 From 12f2e1e724c1481721c6c9eb7b444c49e37a25e5 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 13:55:07 +1000 Subject: [PATCH 26/53] Docs: DOC-3526 - Bulk action buttons when reviewing AI suggestions now reflect the current progress (#4189) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 848838f1a3..3c70e0b946 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Bulk action buttons when reviewing AI suggestions now reflect the current progress +// #TINY-14228 + +Previously, when reviewing AI suggestions, the bulk action buttons always showed **Skip remaining** and **Apply remaining**, even before any suggestion had been applied or skipped. This was confusing because no decisions had been made yet. + +In {productname} {release-version}, the bulk action buttons reflect the current progress. They show **Skip all** and **Apply all** before the first decision, then switch to **Skip remaining** and **Apply remaining** after at least one suggestion has been applied or skipped. This behavior is consistent across the Chat and Quick Actions flows. + ==== Some tooltips now appear only when the content is too long to display // #TINY-14072 From 521a7dfa4bc42ed645ddfc8ffad679abb80d3095 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 14:00:01 +1000 Subject: [PATCH 27/53] Docs: DOC-3526 - The AI preview did not match the editor content structure, causing style rendering differences (#4190) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 3c70e0b946..75d8e6d851 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== The AI preview did not match the editor content structure, causing style rendering differences +// #TINY-14328 + +Previously, the AI suggestions preview rendered content inside a wrapper element within the preview iframe body, rather than directly into the iframe body as the editor does. Because the preview and editor had different structures, injected styles could render differently. Absolutely positioned elements and body-level CSS rules did not always apply the same way, which could cause glitches such as misaligned table headers and footers. + +In {productname} {release-version}, the preview inserts content directly into the iframe body so that its structure mirrors the editor. Injected styles now produce the same visual result in both, and the preview renders consistently with the editor. + ==== Bulk action buttons when reviewing AI suggestions now reflect the current progress // #TINY-14228 From 991984d2091ecefbb9c27acc581035ad4ec93113 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 14:09:38 +1000 Subject: [PATCH 28/53] Docs: DOC-3526 - Removed the 300-item limit on the emoticons dialog All tab (#4191) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 75d8e6d851..0637b05feb 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -184,6 +184,13 @@ For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE A // CCFR here. +=== Removed the 300-item limit on the emoticons dialog All tab +// #TINY-7552 + +Previously, the emoticons dialog limited the **All** tab to 300 items. This limit was a workaround, because rendering all of the available emoticons (over 1,200) caused performance issues and a laggy experience. + +In {productname} {release-version}, the render performance of the emoticons dialog has been optimized and the 300-item limit on the **All** tab has been removed. All available emoticons are now displayed. + === Pressing Tab or Shift+Tab on an open menu now closes it and moves focus to the next or previous focusable element // #TINY-13341 From 095f5b10e10a886297920e5a1bc76b14ee1b7f13 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 14:25:14 +1000 Subject: [PATCH 29/53] Docs: DOC-3526 - The AI suggestions preview no longer shows deleted text when content has been replaced (#4192) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 0637b05feb..d9acd762f2 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== The AI suggestions preview no longer shows deleted text when content has been replaced +// #TINY-14364 + +Previously, when reviewing AI suggestions, the preview displayed both the deleted text and the inserted text side by side for replacements. This made the preview cluttered and harder to read, because the original and new content had to be parsed at the same time, especially when a document contained multiple replacements. + +In {productname} {release-version}, the preview hides the deleted text for replacements and shows only the new content. When a replacement is selected, the inserted content is shown and highlighted while the removed text stays hidden. Standalone deletions continue to show the removed text when selected, so pure deletions remain fully visible. This makes the preview cleaner and easier to read when reviewing AI-generated changes. + ==== The AI preview did not match the editor content structure, causing style rendering differences // #TINY-14328 From e67410599e6a467edf8efc39fba93f820efd4898 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 14:30:01 +1000 Subject: [PATCH 30/53] DOC-3526: Document integrator-defined AI reviews and refresh supported models table (#4194) Add a TINY-14200 release note and expand the tinymceai_reviews option documentation with the integrator-defined review schema, types, and examples. Refresh the AI supported models table with the latest models returned by the models API. --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 ++ modules/ROOT/pages/tinymceai-models.adoc | 30 ++++++ .../configuration/tinymceai_options.adoc | 98 ++++++++++++++++++- 3 files changed, 133 insertions(+), 2 deletions(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index d9acd762f2..a93b67a51b 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -73,6 +73,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Integrators can now add custom AI reviews using the `+tinymceai_reviews+` option +// #TINY-14200 + +Previously, the Review sidebar supported only a fixed set of built-in reviews, selected by ID through the `+tinymceai_reviews+` option. There was no supported way for integrators to add named reviews, parameterized prompts, or menus that mixed built-in and custom reviews. Integrators had to rely on generic flows, such as Custom review, instead of dedicated review actions in the Review sidebar. + +In {productname} {release-version}, the `+tinymceai_reviews+` option also accepts integrator-defined review objects alongside the existing built-in string IDs. Integrators can define `+simple+`, `+list+`, and `+input+` review types, each with a custom name, description, and prompt. For the full schema and examples, see the xref:tinymceai.adoc#tinymceai_reviews[`+tinymceai_reviews+`] option. + ==== The AI suggestions preview no longer shows deleted text when content has been replaced // #TINY-14364 diff --git a/modules/ROOT/pages/tinymceai-models.adoc b/modules/ROOT/pages/tinymceai-models.adoc index 6cb99845ab..01a4d3d8fa 100644 --- a/modules/ROOT/pages/tinymceai-models.adoc +++ b/modules/ROOT/pages/tinymceai-models.adoc @@ -34,6 +34,12 @@ The following is a detailed list of available models with their capabilities: |Yes |`'auto'` (also `'agent-1'`, learn more about xref:tinymceai-models.adoc#model-compatibility-versions[compatibility versions]) +|**GPT-5.5** +|OpenAI's flagship model for advanced reasoning, creativity, and complex tasks +|Yes +|Yes +|`'gpt-5.5'` + |**GPT-5.4** |OpenAI's flagship model for advanced reasoning, creativity, and complex tasks |Yes @@ -70,12 +76,30 @@ The following is a detailed list of available models with their capabilities: |Yes |`'gpt-5-mini'` +|**GPT-5.4 Mini** +|A lighter variant of GPT-5.4 that balances speed and cost while maintaining solid accuracy +|Yes +|Yes +|`'gpt-5.4-mini'` + |**GPT-4.1 Mini** |A lighter variant of GPT-4.1 that balances speed and cost while maintaining solid accuracy |Yes |No |`'gpt-4.1-mini'` +|**Claude Opus 4.8** +|Anthropic's most capable model for extended reasoning and complex tasks +|Yes +|Yes +|`'claude-opus-4-8'` + +|**Claude Opus 4.7** +|Anthropic's most capable model for extended reasoning and complex tasks +|Yes +|Yes +|`'claude-opus-4-7'` + |**Claude 4.6 Sonnet** |Advanced model with improved creativity, reliability, and reasoning |Yes @@ -111,6 +135,12 @@ The following is a detailed list of available models with their capabilities: |Yes |Yes |`'gemini-3-flash'` + +|**Gemini 3.5 Flash** +|Lightweight Gemini model for fast, cost-efficient interactions +|Yes +|Yes +|`'gemini-3-5-flash'` |=== [[limitations]] diff --git a/modules/ROOT/partials/configuration/tinymceai_options.adoc b/modules/ROOT/partials/configuration/tinymceai_options.adoc index fb0b72ba71..ff5e633291 100644 --- a/modules/ROOT/partials/configuration/tinymceai_options.adoc +++ b/modules/ROOT/partials/configuration/tinymceai_options.adoc @@ -516,9 +516,9 @@ These options configure the AI Review sidebar, which provides content quality an [[tinymceai_reviews]] === `+tinymceai_reviews+` -Array of review command IDs that define which review types appear in the Review sidebar and their order. Only the listed reviews are available to users. +Array that defines which reviews appear in the Review sidebar and their order. Only the listed reviews are available to users. Each item is either a built-in review command ID (a string) or an xref:#integrator-defined-reviews[integrator-defined review] (an object). -*Type:* `+Array+` of `+String+` +*Type:* `+Array+` of `+String+` or `+Object+` *Valid values:* @@ -563,3 +563,97 @@ tinymce.init({ }); ---- +[[integrator-defined-reviews]] +==== Integrator-defined reviews + +In addition to the built-in review command IDs, the `+tinymceai_reviews+` option accepts integrator-defined review objects. These objects can be interleaved with the built-in string IDs, allowing integrators to add named reviews to the Review sidebar. + +Each integrator-defined review object has a `+type+` of `+'simple'+`, `+'list'+`, or `+'input'+`, and shares the following properties: + +* `+type+`: The review type. One of `+'simple'+`, `+'list'+`, or `+'input'+`. +* `+id+`: A unique identifier for the review. It must not reuse a built-in review command ID. +* `+name+`: The review name shown in the Review sidebar. +* `+description+`: A short description shown beneath the name. +* `+prompt+`: The prompt sent to the model when the review runs. +* `+model+` (optional): The model used for the review. The value must be a model ID that the configured AI service exposes (see xref:tinymceai-models.adoc[AI Models]). When omitted, the editor default model set by xref:tinymceai.adoc#tinymceai_default_model[`+tinymceai_default_model+`] is used. + +A `+list+` review adds an `+options+` array, and an `+input+` review adds an optional `+inputPlaceholder+`: + +* `+options+` (`+list+` only): An array of `+{ label, value }+` objects. The selected `+value+` is substituted into the prompt wherever `+{value}+` appears. +* `+inputPlaceholder+` (`+input+`, optional): Placeholder text for the input field. {productname} substitutes the text entered by the end user into the prompt wherever `+{input}+` appears. + +If an integrator-defined review is invalid, for example, if it reuses a built-in review command ID or does not match the expected schema, {productname} falls back to the default reviews list in the Review sidebar. + +NOTE: The `+model+` ID used in the following examples (`+agent-1+`) selects the recommended automatic model. The available model IDs depend on the configured AI service. See xref:tinymceai-models.adoc[AI Models] for the supported models and how to confirm which are available in an environment. + +.Simple integrator-defined review +[source,js] +---- +tinymceai_reviews: [ + { + type: 'simple', + id: 'integrator-simple-review', + name: 'Simple Integrator Review', + description: 'This is a simple integrator review', + prompt: 'Review this document', + model: 'agent-1' + } +] +---- + +.List integrator-defined review +[source,js] +---- +tinymceai_reviews: [ + { + type: 'list', + id: 'integrator-list-review', + name: 'Translate Document', + description: 'Translate the document to a selected language.', + prompt: 'Translate this document to {value}', + model: 'agent-1', + options: [ + { label: 'English', value: 'english' }, + { label: 'Swedish', value: 'swedish' } + ] + } +] +---- + +.Input integrator-defined review +[source,js] +---- +tinymceai_reviews: [ + { + type: 'input', + id: 'integrator-input-review', + name: 'Custom Instruction', + description: 'Apply a custom instruction.', + prompt: 'Apply the following instruction {input}', + model: 'agent-1', + inputPlaceholder: 'Enter an instruction here...' + } +] +---- + +.Built-in and integrator-defined reviews combined +[source,js] +---- +tinymceai_reviews: [ + // Built-in reviews + 'ai-reviews-proofread', + 'ai-reviews-improve-clarity', + 'ai-reviews-change-tone', + 'ai-reviews-custom', + // Integrator-defined review + { + type: 'simple', + id: 'integrator-simple-review', + name: 'Simple Integrator Review', + description: 'This is a simple integrator review', + prompt: 'Review this document', + model: 'agent-1' + } +] +---- + From 651d8d4cec987eaf2f651161c6d988c1bb97f5a3 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 14:35:55 +1000 Subject: [PATCH 31/53] DOC-3526: Add TinyMCE AI bug fix release note for conversation loading (TINY-14487) (#4197) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 23 +++++++++------------ 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index a93b67a51b..b9c40b04b2 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -28,19 +28,6 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] The following premium plugin updates were released alongside {productname} {release-version}. -=== TinyMCE AI - -The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. - -**TinyMCE AI** includes the following fix. - -==== Image edits now target the correct image in content with multiple images -// #TINY-14454 - -Previously, images sent to the model were not uniquely identified, so a prompt referencing a specific image could mistake one image for another and apply changes, such as alt text updates, to the wrong image. **TinyMCE AI** now uniquely tags each `+img+` elements so they are less likely to be mistaken. Image edits now apply to the intended image, even when the content contains multiple images. - -For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. - // === // The {productname} {release-version} release includes an accompanying release of the **** premium plugin. @@ -73,6 +60,16 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Switching back to an earlier conversation now continues that conversation +// #TINY-14487 + +Previously, a regression prevented earlier conversations from loading correctly in the Chat sidebar. After starting a new chat, returning to an earlier conversation and sending a prompt began a disconnected exchange instead of continuing the original thread. Switching to an existing conversation now restores its conversation ID, so later prompts continue the selected conversation. + +==== Image edits now target the correct image in content with multiple images +// #TINY-14454 + +Previously, images sent to the model were not uniquely identified, so a prompt referencing a specific image could mistake one image for another and apply changes, such as alt text updates, to the wrong image. **TinyMCE AI** now uniquely tags each `+img+` elements so they are less likely to be mistaken. Image edits now apply to the intended image, even when the content contains multiple images. + ==== Integrators can now add custom AI reviews using the `+tinymceai_reviews+` option // #TINY-14200 From cd155e46b0796740de02070d4b54a0a7708e14ae Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 14:38:05 +1000 Subject: [PATCH 32/53] DOC-3526: Add TinyMCE AI bug fix release note for unwrapping nested list items (TINY-14488) (#4198) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index b9c40b04b2..c3322a4b74 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -28,6 +28,19 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] The following premium plugin updates were released alongside {productname} {release-version}. +=== TinyMCE AI + +The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. + +**TinyMCE AI** includes the following fix. + +==== Prompts that unwrap nested list items now preserve content +// #TINY-14488 + +Previously, when the model unwrapped nested blocks into top-level blocks, such as converting `+
  • +` items into `+

    +` paragraphs, it reused the original element IDs. The diffing logic treated the reused IDs as updates to the nested elements, so some prompts intermittently removed the content instead of unwrapping it. A reused ID is now treated as an existing block only when it points to a top-level element; otherwise it is processed as a new element. Edits that unwrap nested elements now apply reliably and preserve content. + +For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. + // === // The {productname} {release-version} release includes an accompanying release of the **** premium plugin. From 626825a1f4326718e0f1eed9f5a583b1cbdc9066 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 14:49:17 +1000 Subject: [PATCH 33/53] DOC-3526: Block formats can now be applied when a non-editable inline element is selected (#4209) * DOC-3526: Add bug fix release note for block formats on non-editable inline elements (TINY-13333) * Docs: DOC-3526 - Improve TINY-13333 release note body structure --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index c3322a4b74..d14d3b266a 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -279,6 +279,13 @@ tinymce.dom.AriaAnnouncer.announce('Error occurred', { assertive: true }); {productname} {release-version} also includes the following bug fix: +=== Block formats can now be applied when a non-editable inline element is selected +// #TINY-13333 + +Previously, selecting an inline `+contenteditable="false"+` element, such as an iframe wrapped by the Media plugin, and applying a block-level format, such as a custom class or heading style, failed silently and had no effect. + +In {productname} {release-version}, block formats are applied to the nearest editable parent block in this case, including adding classes and styles and changing block tags. + === Indentation is now applied to all selected table cells // #TINY-14370 From edb3dd7b821736922c6597fbf0e86e6275bd8c76 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 14:53:52 +1000 Subject: [PATCH 34/53] DOC-3526: Review sidebar no longer shows No improvements found after a review is applied (#4210) * DOC-3526: Add TinyMCE AI bug fix release note for review state reset (TINY-14198) * Docs: DOC-3526 - Improve TINY-14198 release note body structure Split the body into the required two-paragraph structure (problem/impact then solution/result with the {productname} {release-version} construction) to match the version-release-notes skill guidelines. --- modules/ROOT/pages/8.7.0-release-notes.adoc | 25 ++++++++++----------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index d14d3b266a..24bd6f724e 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -28,19 +28,6 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] The following premium plugin updates were released alongside {productname} {release-version}. -=== TinyMCE AI - -The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. - -**TinyMCE AI** includes the following fix. - -==== Prompts that unwrap nested list items now preserve content -// #TINY-14488 - -Previously, when the model unwrapped nested blocks into top-level blocks, such as converting `+

  • +` items into `+

    +` paragraphs, it reused the original element IDs. The diffing logic treated the reused IDs as updates to the nested elements, so some prompts intermittently removed the content instead of unwrapping it. A reused ID is now treated as an existing block only when it points to a top-level element; otherwise it is processed as a new element. Edits that unwrap nested elements now apply reliably and preserve content. - -For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. - // === // The {productname} {release-version} release includes an accompanying release of the **** premium plugin. @@ -73,6 +60,18 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== The Review sidebar no longer shows "No improvements found" after a review is applied +// #TINY-14198 + +Previously, if the Review sidebar was hidden while the model was still responding and the resulting suggestions were then applied or skipped from the Preview footer, the review state was not reset. Reopening the Review sidebar showed "Review complete — no improvements found" instead of the review list, even though the review had finished. The only way to recover the review options was to reload the editor. + +In {productname} {release-version}, the review state now resets correctly after suggestions are applied or skipped from the Preview footer while the sidebar is hidden. Reopening the Review sidebar shows the review list again, so further reviews can be run without reloading the editor. + +==== Prompts that unwrap nested list items now preserve content +// #TINY-14488 + +Previously, when the model unwrapped nested blocks into top-level blocks, such as converting `+

  • +` items into `+

    +` paragraphs, it reused the original element IDs. The diffing logic treated the reused IDs as updates to the nested elements, so some prompts intermittently removed the content instead of unwrapping it. A reused ID is now treated as an existing block only when it points to a top-level element; otherwise it is processed as a new element. Edits that unwrap nested elements now apply reliably and preserve content. + ==== Switching back to an earlier conversation now continues that conversation // #TINY-14487 From c310f403c13f3a751f0d028d7e8097467bd1dae3 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:04:05 +1000 Subject: [PATCH 35/53] DOC-3526: New tinymceai_reviews_change_tone_menu option to control the Change Tone review menu (#4211) * DOC-3526: Add TinyMCE AI addition release note for tinymceai_reviews_change_tone_menu (TINY-14274) * Docs: DOC-3526 - Document tinymceai_reviews_change_tone_menu option (TINY-14274) Add the tinymceai_reviews_change_tone_menu configuration option to the TinyMCE AI options reference and link to it from the 8.7.0 release note. Correct the release note: an empty array is accepted with a warning and does not hide the Change Tone review. * Docs: DOC-3526 - Refine TINY-14274 wording per style review --- modules/ROOT/pages/8.7.0-release-notes.adoc | 13 +++++ .../configuration/tinymceai_options.adoc | 48 +++++++++++++++++++ 2 files changed, 61 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 24bd6f724e..2a476dcaf3 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -28,6 +28,19 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] The following premium plugin updates were released alongside {productname} {release-version}. +=== TinyMCE AI + +The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. + +**TinyMCE AI** includes the following addition. + +==== New `tinymceai_reviews_change_tone_menu` option to control the Change Tone review menu +// #TINY-14274 + +{productname} {release-version} adds the `+tinymceai_reviews_change_tone_menu+` option for **TinyMCE AI**. This option controls which tone options appear in the Change Tone review and their order. Only preset tone IDs are supported. Duplicate IDs are removed, and the menu displays tones in the configured order. If the option includes an invalid tone ID, the configuration is rejected and the default tones are used. For valid tone IDs and option details, see xref:tinymceai.adoc#tinymceai_reviews_change_tone_menu[`+tinymceai_reviews_change_tone_menu+`]. + +For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. + // === // The {productname} {release-version} release includes an accompanying release of the **** premium plugin. diff --git a/modules/ROOT/partials/configuration/tinymceai_options.adoc b/modules/ROOT/partials/configuration/tinymceai_options.adoc index ff5e633291..380d002084 100644 --- a/modules/ROOT/partials/configuration/tinymceai_options.adoc +++ b/modules/ROOT/partials/configuration/tinymceai_options.adoc @@ -563,6 +563,54 @@ tinymce.init({ }); ---- +[[tinymceai_reviews_change_tone_menu]] +=== `+tinymceai_reviews_change_tone_menu+` + +Array of tone IDs that define which tone options appear in the Change Tone review and their order. Only the listed tones appear in the menu. + +This option applies only when `+'ai-reviews-change-tone'+` is included in the xref:tinymceai.adoc#tinymceai_reviews[`+tinymceai_reviews+`] option. + +*Type:* `+Array+` of `+String+` + +*Valid values:* + +* `+'ai-reviews-tone-casual'+`: Casual tone +* `+'ai-reviews-tone-direct'+`: Direct tone +* `+'ai-reviews-tone-friendly'+`: Friendly tone +* `+'ai-reviews-tone-confident'+`: Confident tone +* `+'ai-reviews-tone-professional'+`: Professional tone + +Duplicate IDs are removed, and the menu displays tones in the configured order. If the option includes an invalid tone ID, the configuration is rejected and the default tones are used. An empty array (`+[]+`) is accepted, but {productname} logs a console warning. To remove the Change Tone review entirely, omit `+'ai-reviews-change-tone'+` from the xref:tinymceai.adoc#tinymceai_reviews[`+tinymceai_reviews+`] option. + +*Default value:* +[source,js] +---- +[ + 'ai-reviews-tone-casual', + 'ai-reviews-tone-direct', + 'ai-reviews-tone-friendly', + 'ai-reviews-tone-confident', + 'ai-reviews-tone-professional' +] +---- + +.Example +[source,js] +---- +tinymce.init({ + selector: 'textarea', + plugins: 'tinymceai', + toolbar: 'tinymceai-chat tinymceai-quickactions tinymceai-review', + tinymceai_reviews_change_tone_menu: [ + 'ai-reviews-tone-professional', + 'ai-reviews-tone-friendly' + ], + // Required for authentication + tinymceai_token_provider: () => { + return fetch('/api/token').then(r => r.json()); + } +}); + [[integrator-defined-reviews]] ==== Integrator-defined reviews From 8bd3b9cc64a0484b27daa6edc02ba419ec5977e3 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:12:10 +1000 Subject: [PATCH 36/53] DOC-3526: Review mode keyboard navigation now matches the Chat sidebar (#4212) * DOC-3526: Add TinyMCE AI improvement release note for review mode keyboard navigation (TINY-14275) * Docs: DOC-3526 - Improve TINY-14275 release note structure and wording --- modules/ROOT/pages/8.7.0-release-notes.adoc | 25 ++++++++++----------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 2a476dcaf3..12dd93f26a 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -28,19 +28,6 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] The following premium plugin updates were released alongside {productname} {release-version}. -=== TinyMCE AI - -The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. - -**TinyMCE AI** includes the following addition. - -==== New `tinymceai_reviews_change_tone_menu` option to control the Change Tone review menu -// #TINY-14274 - -{productname} {release-version} adds the `+tinymceai_reviews_change_tone_menu+` option for **TinyMCE AI**. This option controls which tone options appear in the Change Tone review and their order. Only preset tone IDs are supported. Duplicate IDs are removed, and the menu displays tones in the configured order. If the option includes an invalid tone ID, the configuration is rejected and the default tones are used. For valid tone IDs and option details, see xref:tinymceai.adoc#tinymceai_reviews_change_tone_menu[`+tinymceai_reviews_change_tone_menu+`]. - -For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. - // === // The {productname} {release-version} release includes an accompanying release of the **** premium plugin. @@ -73,6 +60,18 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Review mode keyboard navigation now matches the Chat sidebar +// #TINY-14275 + +Previously, keyboard navigation in the Review sidebar did not match the Chat sidebar, so keyboard-only workflows behaved inconsistently when switching between the two sidebars. Pressing `+Esc+` could also reject all pending suggestions instead of moving focus, which meant keyboard users could discard suggestions unintentionally. + +In {productname} {release-version}, keyboard navigation in the Review sidebar matches the Chat sidebar. The `+Ctrl+Alt+S+` shortcut opens and focuses the Review sidebar. `+Tab+` and `+Shift+Tab+` move through the suggestion cards and the buttons on each card. `+Esc+` now moves focus instead of rejecting pending suggestions. Keyboard-only users can navigate and apply suggestions without a mouse. + +==== New `tinymceai_reviews_change_tone_menu` option to control the Change Tone review menu +// #TINY-14274 + +{productname} {release-version} adds the `+tinymceai_reviews_change_tone_menu+` option for **TinyMCE AI**. This option controls which tone options appear in the Change Tone review and their order. Only preset tone IDs are supported. Duplicate IDs are removed, and the menu displays tones in the configured order. If the option includes an invalid tone ID, the configuration is rejected and the default tones are used. For valid tone IDs and option details, see xref:tinymceai.adoc#tinymceai_reviews_change_tone_menu[`+tinymceai_reviews_change_tone_menu+`]. + ==== The Review sidebar no longer shows "No improvements found" after a review is applied // #TINY-14198 From 34ec37837187dae6592ae2ae25928524dbade1aa Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:17:56 +1000 Subject: [PATCH 37/53] DOC-3526: Block formatting now targets the correct element across a table cell selection (#4213) * DOC-3526: Add bug fix release note for block formatting across table cell selection (TINY-14385) * Docs: DOC-3526 - Improve TINY-14385 release note body structure --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 12dd93f26a..9cd7819b75 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -290,6 +290,13 @@ tinymce.dom.AriaAnnouncer.announce('Error occurred', { assertive: true }); {productname} {release-version} also includes the following bug fix: +=== Block formatting now targets the correct element across a table cell selection +// #TINY-14385 + +Previously, when multiple table cells were selected, the check for whether a block could be renamed did not inspect nested elements. For example, with a blockquote containing a heading, applying a new heading format changed the blockquote instead of the heading. + +In {productname} {release-version}, the check inspects nested elements, so block formatting is applied to the correct element. + === Block formats can now be applied when a non-editable inline element is selected // #TINY-13333 From 805c22c4c38b7a97820e5eb95fa08e29fc27a989 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:18:27 +1000 Subject: [PATCH 38/53] DOC-3526: Chat can now update an empty document (#4214) * DOC-3526: Add TinyMCE AI bug fix release note for chat updating empty documents (TINY-14393) * Docs: DOC-3526 - Improve TINY-14393 release note body structure * Docs: DOC-3526 - Refine TINY-14393 release note wording per style review * Update modules/ROOT/pages/8.7.0-release-notes.adoc Co-authored-by: Kim <45845989+kimwoodfield@users.noreply.github.com> --------- Co-authored-by: Kim <45845989+kimwoodfield@users.noreply.github.com> --- modules/ROOT/pages/8.7.0-release-notes.adoc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 9cd7819b75..ba49095539 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -28,6 +28,21 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] The following premium plugin updates were released alongside {productname} {release-version}. +=== TinyMCE AI + +The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. + +**TinyMCE AI** includes the following fix. + +==== Chat can now update an empty document +// #TINY-14393 + +Previously, Chat did not update an empty document when generating content. Chat displayed the generated content only in the Chat sidebar, because the AI service could not apply edits when the document had no content. + +In {productname} {release-version}, AI Chat can now handle updating an empty document. When the editor is empty, the generated content is now directly inserted into the document rather than only being displayed in the sidebar. + +For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. + // === // The {productname} {release-version} release includes an accompanying release of the **** premium plugin. From ffd7ffd017a5859d9929c969df5c17a0efa7149f Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:24:53 +1000 Subject: [PATCH 39/53] Docs: DOC-3526 - The TinyMCE AI plugin now adds an `ai` property to the `SetContent` and `BeforeSetContent` event payloads (#4215) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 29 ++++++++++----------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index ba49095539..e6468db894 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -28,21 +28,6 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[] The following premium plugin updates were released alongside {productname} {release-version}. -=== TinyMCE AI - -The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin. - -**TinyMCE AI** includes the following fix. - -==== Chat can now update an empty document -// #TINY-14393 - -Previously, Chat did not update an empty document when generating content. Chat displayed the generated content only in the Chat sidebar, because the AI service could not apply edits when the document had no content. - -In {productname} {release-version}, AI Chat can now handle updating an empty document. When the editor is empty, the generated content is now directly inserted into the document rather than only being displayed in the sidebar. - -For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. - // === // The {productname} {release-version} release includes an accompanying release of the **** premium plugin. @@ -75,6 +60,20 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== The TinyMCE AI plugin now adds an `ai` property to the `SetContent` and `BeforeSetContent` event payloads +// #TINYMCE-14302 + +Previously, the **TinyMCE AI** plugin set content into the editor without marking it as AI-generated. Integrations that listen to the `+BeforeSetContent+` and `+SetContent+` events had no reliable way to distinguish this content from content set by other sources, and could not apply origin-specific processing, tracking, or analytics. + +In {productname} {release-version}, the **TinyMCE AI** plugin adds an `+ai+` property to the `+BeforeSetContent+` and `+SetContent+` event payloads when it sets content. Event handlers can check this property to detect **TinyMCE AI**-generated content and respond based on its origin. + +==== Chat can now update an empty document +// #TINY-14393 + +Previously, Chat did not update an empty document when generating content. Chat displayed the generated content only in the Chat sidebar, because the AI service could not apply edits when the document had no content. + +In {productname} {release-version}, AI Chat can now handle updating an empty document. When the editor is empty, the generated content is now directly inserted into the document rather than only being displayed in the sidebar. + ==== Review mode keyboard navigation now matches the Chat sidebar // #TINY-14275 From 46973eed5bd1dd5f0b2c79a174a98694a825dd65 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:30:38 +1000 Subject: [PATCH 40/53] Docs: DOC-3526 - Context sources can now be removed while they are still loading (#4219) Add TINYMCE-13876 release note entry under Accompanying Premium plugin changes for the TinyMCE AI plugin in 8.7.0. --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index e6468db894..733f8193b0 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -67,6 +67,13 @@ Previously, the **TinyMCE AI** plugin set content into the editor without markin In {productname} {release-version}, the **TinyMCE AI** plugin adds an `+ai+` property to the `+BeforeSetContent+` and `+SetContent+` event payloads when it sets content. Event handlers can check this property to detect **TinyMCE AI**-generated content and respond based on its origin. +==== Context sources can now be removed while they are still loading +// #TINYMCE-13876 + +Previously, a user could not remove a context source from a TinyMCE AI conversation while the file was still uploading. A user who added a large file, such as an image or PDF, had to wait for the upload to the AI service to finish before removing it. The plugin provided no way to cancel a request that was already in progress. + +In {productname} {release-version}, the remove button on a context source now cancels an in-progress upload immediately. A user can remove a context source while it is still loading, without waiting for the request to complete. + ==== Chat can now update an empty document // #TINY-14393 From 69bf8f6c65955e348d20103537d746216da3efd9 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:37:26 +1000 Subject: [PATCH 41/53] Docs: TINYDOC-3526 - Deleting a newline within a list item would delete the list item. (#4221) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 733f8193b0..82ee23f78e 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -337,6 +337,13 @@ In {productname} {release-version}, indentation is applied to every cell in the // CCFR here. +=== Deleting a newline within a list item would delete the list item. +// #TINYMCE-13292 + +Previously, pressing `Backspace` to delete a newline (`
    `) inside an otherwise empty list item removed the entire list item instead of only the newline. The issue affected lists created with `Shift + Enter`, including nested lists, and deleted content without warning. + +In {productname} {release-version}, `Backspace` removes only the newline and leaves the empty list item in place. + === CSS custom property names and color values in the style attribute were lowercased when parsed // #TINY-11524 From c96458062947993639fbd739f92b2fcde8129dd6 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:41:10 +1000 Subject: [PATCH 42/53] Docs: TINYDOC-3526 - Highlighted suggestions in Chat and Actions preview mode no longer appear selected when clicked, since no follow up action is available on them. (#4222) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 82ee23f78e..0ba05bc3b3 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -60,6 +60,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== Highlighted suggestions in Chat and Actions preview mode no longer appear selected when clicked, since no follow up action is available on them. +// #TINYMCE-14310 + +Previously, clicking a highlighted suggestion in preview mode in TinyMCE AI Chat and TinyMCE AI Quick Actions showed a selected state, even though preview mode offers no action for highlighted suggestions. The selected state made the suggestions appear interactive and led users to expect a follow-up action that preview mode does not provide. + +In {productname} {release-version}, highlighted suggestions in preview mode in TinyMCE AI Chat and TinyMCE AI Quick Actions do not respond to clicks and no longer show a selected state. The highlights remain visible for reference, so preview mode presents a read-only view of the final text. + ==== The TinyMCE AI plugin now adds an `ai` property to the `SetContent` and `BeforeSetContent` event payloads // #TINYMCE-14302 From dee6b9308ff2ebbfe128dca00aa5c8b63e265740 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:43:43 +1000 Subject: [PATCH 43/53] TINYDOC-3526: Iframes inserted with the pageembed plugin could not be aligned using the align left, center, and right toolbar buttons. (#4223) * Docs: TINYDOC-3526 - Iframes inserted with the pageembed plugin could not be aligned using the align left, center, and right toolbar buttons. * Docs: TINYDOC-3526 - Generalize Page Embed alignment release note --- modules/ROOT/pages/8.7.0-release-notes.adoc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 0ba05bc3b3..c71b8392d2 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -39,6 +39,21 @@ The following premium plugin updates were released alongside {productname} {rele // For information on the **** plugin, see: xref:.adoc[]. +=== Page Embed + +The {productname} {release-version} release includes an accompanying release of the **Page Embed** premium plugin. + +**Page Embed** includes the following fix. + +==== Iframes inserted with the pageembed plugin could not be aligned using the align left, center, and right toolbar buttons. +// #TINYMCE-14458 + +Previously, the align left, center, and right toolbar buttons had no effect on an iframe inserted with the Page Embed plugin. Selecting the embedded iframe and choosing an alignment did not change its position. + +In {productname} {release-version}, the align left, center, and right toolbar buttons align an iframe inserted with the Page Embed plugin. + +For information on the **Page Embed** plugin, see: xref:pageembed.adoc[Page Embed]. + === Inline CSS The {productname} {release-version} release includes an accompanying release of the **Inline CSS** premium plugin. From 598163673c34711aeadfc1a3658a1a53a3199fb4 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 15:46:56 +1000 Subject: [PATCH 44/53] TINYDOC-3526: It is now possible to have the kind of `export` in getContent's events and nodeFilter. (#4224) * Docs: TINYDOC-3526 - It is now possible to have the kind of `export` in getContent's events and nodeFilter. * Docs: TINYDOC-3526 - Extract export-specific content filtering into shared partial --- modules/ROOT/pages/8.7.0-release-notes.adoc | 28 +++++++++++++++++++ modules/ROOT/pages/exportpdf.adoc | 3 ++ modules/ROOT/pages/exportword.adoc | 3 ++ .../export-specific-content-filtering.adoc | 26 +++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 modules/ROOT/partials/misc/export-specific-content-filtering.adoc diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index c71b8392d2..3a5e0fc455 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -39,6 +39,34 @@ The following premium plugin updates were released alongside {productname} {rele // For information on the **** plugin, see: xref:.adoc[]. +=== Export to PDF + +The {productname} {release-version} release includes an accompanying release of the **Export to PDF** premium plugin. + +**Export to PDF** includes the following addition. + +[[exportpdf-getcontent-export-property]] +==== It is now possible to have the kind of `export` in getContent's events and nodeFilter. +// #TINYMCE-14323 + +The **Export to PDF** plugin now calls `tinymce.editor.getContent()` with an `export` property set to `pdf`. {productname} passes this property to the `GetContent` event and to serializer node filters, so an integrator can apply content filtering that targets a PDF export without affecting regular content retrieval. + +For information on filtering content during an export, see: xref:exportpdf.adoc#export-specific-content-filtering[Export-specific content filtering]. For information on the **Export to PDF** plugin, see: xref:exportpdf.adoc[Export to PDF]. + +=== Export to Word + +The {productname} {release-version} release includes an accompanying release of the **Export to Word** premium plugin. + +**Export to Word** includes the following addition. + +[[exportword-getcontent-export-property]] +==== It is now possible to have the kind of `export` in getContent's events and nodeFilter. +// #TINYMCE-14323 + +The **Export to Word** plugin now calls `tinymce.editor.getContent()` with an `export` property set to `word`. {productname} passes this property to the `GetContent` event and to serializer node filters, so an integrator can apply content filtering that targets a Word export without affecting regular content retrieval. + +For information on filtering content during an export, see: xref:exportword.adoc#export-specific-content-filtering[Export-specific content filtering]. For information on the **Export to Word** plugin, see: xref:exportword.adoc[Export to Word]. + === Page Embed The {productname} {release-version} release includes an accompanying release of the **Page Embed** premium plugin. diff --git a/modules/ROOT/pages/exportpdf.adoc b/modules/ROOT/pages/exportpdf.adoc index 0455a28ab7..6f2772734f 100644 --- a/modules/ROOT/pages/exportpdf.adoc +++ b/modules/ROOT/pages/exportpdf.adoc @@ -1,6 +1,7 @@ = {pluginname} plugin :plugincode: exportpdf :pluginname: Export to PDF +:export-type: pdf :page-aliases: export.adoc :pluginfilename: export-to-pdf :navtitle: Export to PDF @@ -81,6 +82,8 @@ The `exportpdf_service_url` option automatically appends `/v2/convert/html-pdf` include::partial$misc/pagebreak-export-note.adoc[] +include::partial$misc/export-specific-content-filtering.adoc[] + == Options The following configuration options affect the behavior of the {pluginname} plugin. diff --git a/modules/ROOT/pages/exportword.adoc b/modules/ROOT/pages/exportword.adoc index f4444b888a..bcceb97682 100644 --- a/modules/ROOT/pages/exportword.adoc +++ b/modules/ROOT/pages/exportword.adoc @@ -1,6 +1,7 @@ = {pluginname} plugin :plugincode: exportword :pluginname: Export to Word +:export-type: word :pluginfilename: export-to-word :navtitle: {pluginname} :description: The {pluginname} feature lets you generate a .docx (Microsoft Word document) file directly from the editor. @@ -80,6 +81,8 @@ The `exportword_service_url` option automatically appends `/v2/convert/html-docx include::partial$misc/pagebreak-export-note.adoc[] +include::partial$misc/export-specific-content-filtering.adoc[] + == Options The following configuration options affect the behavior of the {pluginname} plugin. diff --git a/modules/ROOT/partials/misc/export-specific-content-filtering.adoc b/modules/ROOT/partials/misc/export-specific-content-filtering.adoc new file mode 100644 index 0000000000..32ed0acf7c --- /dev/null +++ b/modules/ROOT/partials/misc/export-specific-content-filtering.adoc @@ -0,0 +1,26 @@ +[[export-specific-content-filtering]] +== Export-specific content filtering + +To generate content for export, the {pluginname} plugin calls the `tinymce.editor.getContent()` method with an `export` property set to `{export-type}`. {productname} adds this `export` property to the data for the xref:events.adoc#editor-core-events[`+GetContent+` event] and for serializer node filters. A serializer node filter or a `GetContent` event handler can read the `export` property to filter content during a {pluginname} export only, without changing the result of a standard `tinymce.editor.getContent()` call. + +The following serializer node filter removes `footer` elements during a {pluginname} export: + +[source,js,subs="+attributes"] +---- +editor.serializer.addNodeFilter('footer', (nodes, name, args) => { + if (args.export === '{export-type}') { + nodes.forEach((node) => node.remove()); + } +}); +---- + +A `GetContent` event handler can read the same `export` property: + +[source,js,subs="+attributes"] +---- +editor.on('GetContent', (e) => { + if (e.export === '{export-type}') { + e.content = removeFooterFromHtml(e.content); + } +}); +---- From 9b097e166a7200d6b208ccec33462f052f76f952 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 16:00:53 +1000 Subject: [PATCH 45/53] TINYDOC-3526: Suggested Edits API should not be tied to the existence of the suggested edits toolbar button (#4225) * Docs: TINYDOC-3526 - Suggested Edits API should not be tied to the existence of the suggested edits toolbar button * Update modules/ROOT/pages/8.7.0-release-notes.adoc Co-authored-by: Mitchell Crompton * Update modules/ROOT/pages/8.7.0-release-notes.adoc Co-authored-by: Mitchell Crompton --------- Co-authored-by: Mitchell Crompton --- modules/ROOT/pages/8.7.0-release-notes.adoc | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 3a5e0fc455..3334ae30cf 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -39,6 +39,21 @@ The following premium plugin updates were released alongside {productname} {rele // For information on the **** plugin, see: xref:.adoc[]. +=== Suggested Edits + +The {productname} {release-version} release includes an accompanying release of the **Suggested Edits** premium plugin. + +**Suggested Edits** includes the following fix. + +==== Suggested Edits API should not be tied to the existence of the suggested edits toolbar button +// #TINYMCE-13256 + +Previously, the `SuggestedEditsHasChangesUpdate` event only fired alongside other editor events, such as typing, selecting, or focusing. Completing a review did not fire the event on its own, so the value returned by the `hasChanges` API could become outdated. As a result, any integration that relied upon the API would not receive an update when a review finished. + +In {productname} {release-version}, the `SuggestedEditsHasChangesUpdate` event fires whenever the value within the `hasChanges` API changes, including when a review completes. + +For information on the **Suggested Edits** plugin, see: xref:suggestededits.adoc[Suggested Edits]. + === Export to PDF The {productname} {release-version} release includes an accompanying release of the **Export to PDF** premium plugin. From f49391608595574227f5aeb18b8f8ae85f68823b Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 16:04:01 +1000 Subject: [PATCH 46/53] Docs: TINYDOC-3526 - Tooltips were clipped when the editor was hosted in a shadow DOM and its parent element had `overflow:scroll`. (#4226) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 3334ae30cf..0f13be94f9 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -402,6 +402,13 @@ In {productname} {release-version}, indentation is applied to every cell in the // CCFR here. +=== Tooltips were clipped when the editor was hosted in a shadow DOM and its parent element had `overflow:scroll`. +// #TINYMCE-14384 + +Previously, when {productname} ran in a shadow DOM, such as a web component, and a parent element of the host used `overflow: scroll`, that element clipped a tooltip that extended past the host element boundary. The clipped tooltip could become unreadable. + +{productname} {release-version} restricts tooltip positioning to the bounds of the host element. A tooltip now repositions to stay within the host element and remains visible when {productname} runs in a shadow DOM. + === Deleting a newline within a list item would delete the list item. // #TINYMCE-13292 From e0fd4b5a45ee01f4a03170396f564ad011f6ccef Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 16:12:54 +1000 Subject: [PATCH 47/53] Docs: TINYDOC-3526 - Dragging and dropping or copying and pasting an image didn't add `width` and `height` to the tag. (#4227) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 0f13be94f9..b4a877dde5 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -402,6 +402,13 @@ In {productname} {release-version}, indentation is applied to every cell in the // CCFR here. +=== Dragging and dropping or copying and pasting an image didn't add `width` and `height` to the tag. +// #TINYMCE-14411 + +Previously, {productname} inserted an `img` tag without `width` and `height` attributes when a user dragged and dropped or copied and pasted an image into the editor. The inserted `img` tag lacked the dimension attributes that the image dialog adds. + +In {productname} {release-version}, the editor reads the dimensions of a dropped or pasted image and adds the `width` and `height` attributes to the `img` tag. A dropped or pasted image now includes the same `width` and `height` attributes that the image dialog adds. + === Tooltips were clipped when the editor was hosted in a shadow DOM and its parent element had `overflow:scroll`. // #TINYMCE-14384 From 550657f96ca6ec8fe76ace5b4781600f60355602 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 16:18:46 +1000 Subject: [PATCH 48/53] TINYDOC-3526: The plugin no longer shows a console warning when `tinymceai_default_model` is not provided. (#4231) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index b4a877dde5..7e8530f683 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -118,6 +118,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== The plugin no longer shows a console warning when `tinymceai_default_model` is not provided. +// #TINYMCE-14223 + +Previously, the **TinyMCE AI** plugin logged a console warning when the xref:tinymceai.adoc#tinymceai_default_model[`+tinymceai_default_model+`] option was not set, even though omitting the option is valid. The warning suggested a misconfiguration and caused confusion. + +In {productname} {release-version}, the **TinyMCE AI** plugin no longer logs a console warning when the `tinymceai_default_model` option is not provided. + ==== Highlighted suggestions in Chat and Actions preview mode no longer appear selected when clicked, since no follow up action is available on them. // #TINYMCE-14310 From d40c56da8a72593871403909aa78c11dec665031 Mon Sep 17 00:00:00 2001 From: Karl Kemister-Sheppard Date: Wed, 24 Jun 2026 16:26:38 +1000 Subject: [PATCH 49/53] TINYDOC-3526: The custom review textarea showed a scrollbar when it was empty. (#4232) --- modules/ROOT/pages/8.7.0-release-notes.adoc | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/modules/ROOT/pages/8.7.0-release-notes.adoc b/modules/ROOT/pages/8.7.0-release-notes.adoc index 7e8530f683..1ac2c2d1cd 100644 --- a/modules/ROOT/pages/8.7.0-release-notes.adoc +++ b/modules/ROOT/pages/8.7.0-release-notes.adoc @@ -118,6 +118,13 @@ The {productname} {release-version} release includes an accompanying release of **TinyMCE AI** includes the following improvements and fixes and additions. +==== The custom review textarea showed a scrollbar when it was empty. +// #TINYMCE-14409 + +Previously, the text area in the Custom review section of the **TinyMCE AI** Review sidebar showed a scrollbar even when it was empty. The placeholder text could scroll and the corners of the text area appeared cut off, which made the control look broken. + +In {productname} {release-version}, the Custom review text area uses a larger default height, so the placeholder fits without a scrollbar and the text area renders correctly when empty. + ==== The plugin no longer shows a console warning when `tinymceai_default_model` is not provided. // #TINYMCE-14223 From 1f76d0bc7b68fdf78f96cd5043303d0432127f43 Mon Sep 17 00:00:00 2001 From: Sorita Heng <69398037+soritaheng@users.noreply.github.com> Date: Wed, 24 Jun 2026 16:59:52 +1000 Subject: [PATCH 50/53] TINYDOC-3538: Document AI attribution for the Suggested Edits plugin (#4230) * TINYDOC-3538: Document AI attribution for the Suggested Edits plugin * TINYDOC-3538: Add release note and update product minor version * TINYDOC-3538: Revert product minor version update --------- Co-authored-by: Karl Kemister-Sheppard --- .../live-demos/suggestededits/index.html | 2 +- .../live-demos/suggestededits/index.js | 1 + modules/ROOT/pages/8.7.0-release-notes.adoc | 11 +++++++++- modules/ROOT/pages/suggestededits.adoc | 6 ++++- .../suggestededits_ai_attribution.adoc | 22 +++++++++++++++++++ 5 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 modules/ROOT/partials/configuration/suggestededits_ai_attribution.adoc diff --git a/modules/ROOT/examples/live-demos/suggestededits/index.html b/modules/ROOT/examples/live-demos/suggestededits/index.html index b51366d9d3..a194e279d6 100644 --- a/modules/ROOT/examples/live-demos/suggestededits/index.html +++ b/modules/ROOT/examples/live-demos/suggestededits/index.html @@ -1,4 +1,4 @@ -