Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .api-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
8.7.0
8.8.0
8 changes: 8 additions & 0 deletions modules/ROOT/examples/live-demos/tinymceai/example.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,14 @@ tinymce.init({
plugins: ['tinymceai', 'advlist', 'lists', 'link', 'autolink', 'table', 'wordcount'],
toolbar: 'undo redo | tinymceai-chat ai-quickactions-translate tinymceai-review | styles | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link',
sidebar_show: 'tinymceai-chat',
tinymceai_chat_welcome_message: '<p>Welcome to TinyMCE AI. Pick an action below or type your own prompt.</p>',
tinymceai_chat_welcome_actions: [
{ text: 'Here are some actions to get started:' },
{ title: 'Summarize the document', command: 'TinyMCEAIQuickActionsSummarize' },
{ title: 'Continue writing', command: 'TinyMCEAIQuickActionContinueWriting' },
{ title: 'Translate to Spanish', command: 'TinyMCEAIQuickActionTranslate', value: 'spanish' },
{ title: 'Review my document', command: 'ToggleSidebar', value: 'tinymceai-review' }
],
tinymceai_token_provider: async () => {
return fetch('/api/tinymceai-token', { credentials: 'include' })
.then(resp => resp.text())
Expand Down
8 changes: 8 additions & 0 deletions modules/ROOT/examples/live-demos/tinymceai/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@ tinymce.init({
toolbar: 'undo redo | tinymceai-chat tinymceai-review ai-quickactions-translate spellchecker | styles | bold italic underline forecolor backcolor casechange | link uploadcare table addcomment | align bullist numlist checklist removeformat | code fullscreen help',
quickbars_selection_toolbar: 'tinymceai-quickactions addcomment',
sidebar_show: 'tinymceai-chat',
tinymceai_chat_welcome_message: '<p>Welcome to TinyMCE AI. Pick an action below or type your own prompt.</p>',
tinymceai_chat_welcome_actions: [
{ text: 'Here are some actions to get started:' },
{ title: 'Summarize the document', command: 'TinyMCEAIQuickActionsSummarize' },
{ title: 'Continue writing', command: 'TinyMCEAIQuickActionContinueWriting' },
{ title: 'Translate to Spanish', command: 'TinyMCEAIQuickActionTranslate', value: 'spanish' },
{ title: 'Review my document', command: 'ToggleSidebar', value: 'tinymceai-review' }
],
toolbar_mode: 'sliding',
visual: false,
images_file_types: 'jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp,svg',
Expand Down
5 changes: 5 additions & 0 deletions modules/ROOT/nav.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -420,6 +420,11 @@
** xref:tinymce-and-cors.adoc[Cross-Origin Resource Sharing (CORS)]
* Release information
** xref:release-notes.adoc[Release notes for {productname}]
*** {productname} 8.8.0
**** xref:8.8.0-release-notes.adoc#overview[Overview]
**** xref:8.8.0-release-notes.adoc#accompanying-premium-plugin-changes[Accompanying Premium Plugin changes]
**** xref:8.8.0-release-notes.adoc#improvements[Improvements]
**** xref:8.8.0-release-notes.adoc#bug-fixes[Bug fixes]
*** {productname} 8.7.0
**** xref:8.7.0-release-notes.adoc#overview[Overview]
**** xref:8.7.0-release-notes.adoc#accompanying-premium-plugin-changes[Accompanying Premium Plugin changes]
Expand Down
138 changes: 138 additions & 0 deletions modules/ROOT/pages/8.8.0-release-notes.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
= {productname} {release-version}
:release-version: 8.8.0
:navtitle: {productname} {release-version}
:description: Release notes for {productname} {release-version}
:keywords: releasenotes, new, changes, bugfixes
:page-toclevels: 1

include::partial$misc/admon-releasenotes-for-stable.adoc[]


[[overview]]
== Overview

{productname} {release-version} was released for {enterpriseversion} and {cloudname} on Wednesday, July 15^th^, 2026. These release notes provide an overview of the changes for {productname} {release-version}, including:

* xref:accompanying-premium-plugin-changes[Accompanying Premium plugin changes]
* xref:improvements[Improvements]
* xref:bug-fixes[Bug fixes]


[[accompanying-premium-plugin-changes]]
== Accompanying Premium plugin changes

The following premium plugin updates were released alongside {productname} {release-version}.

=== Spell Checker

The {productname} {release-version} release includes an accompanying release of the **Spell Checker** premium plugin.

**Spell Checker** includes the following fix.

==== The misspelled word highlight disappeared when pressing Enter to create a new line
// #TINYMCE-12934

Previously, deleting the last letter of a misspelled word with the *Backspace* key and then pressing *Enter* to start a new line removed the red highlight from the word, even though the word remained misspelled. The Spell Checker plugin did not re-check the affected line after the new block was created, so the word appeared as though it were spelled correctly.

In {productname} {release-version}, the Spell Checker plugin re-checks both the new line and the previous line after a new block is created. Words that remain misspelled keep their highlighting.

For information on the **Spell Checker** plugin, see: xref:introduction-to-tiny-spellchecker.adoc[Spell Checker].

=== Comments

The {productname} {release-version} release includes an accompanying release of the **Comments** premium plugin.

**Comments** includes the following fix.

==== Clicking the reply button triggered an editor blur event
// #TINYMCE-12236

Previously, selecting the reply button on a comment thread, such as *1 reply*, could cause the editor to fire a `+blur+` event, even though the user was still working within the editor. Expanding the replies re-rendered the comment, and because the focused element was removed during the re-render, focus fell back to the document body instead of remaining within the editor. The editor interpreted this loss of focus as the user leaving the editor entirely. Applications that rely on the `+blur+` event to detect when editing has finished could behave incorrectly.

In {productname} {release-version}, the Comments plugin preserves editor focus when expanding replies. The editor no longer fires an unexpected `+blur+` event when the reply button is selected.

For information on the **Comments** plugin, see: xref:introduction-to-tiny-comments.adoc[Comments].

=== TinyMCE AI

The {productname} {release-version} release includes an accompanying release of the **TinyMCE AI** premium plugin.

**TinyMCE AI** includes the following addition and fixes.

=== Added configurable welcome actions to the TinyMCE AI Chat empty state
// #TINYMCE-14508

In {productname} {release-version}, the TinyMCE AI Chat sidebar can display a configurable set of welcome actions in its empty state, giving users suggested starting points instead of a blank prompt. Each item can show descriptive text or a button that runs a Quick Action, sends a chat prompt, or runs another editor command. Welcome actions appear before the first request is sent and are hidden once a conversation begins.

Welcome actions are configured with the new xref:tinymceai.adoc#tinymceai_chat_welcome_actions[`+tinymceai_chat_welcome_actions+`] option and are disabled by default.

==== Double tooltips appeared on tags in the prompt context in Safari
// #TINYMCE-14485

Previously, in Safari, hovering over the context source tags in the AI Chat prompt could display duplicated tooltips, and a tooltip could appear even when the tag text was not truncated. The tags were missing the attribute that prevents tooltip duplication in Safari.

In {productname} {release-version}, the context source tags include the attribute that resolves Safari tooltip duplication. Each tag now shows a single tooltip, and only when its text is truncated.

==== The {productname} AI plugin now ignores non-string values returned by `tinymceai_tool_data_callback`
// #TINYMCE-14525

Previously, the xref:tinymceai.adoc#tinymceai_tool_data_callback[`+tinymceai_tool_data_callback+`] callback could return a value that was not a string, such as a number. The **TinyMCE AI** plugin then displayed that value directly in the Chat sidebar status message, even though the option documents a return type of `+string | undefined+`. As a result, the status message shown while a Model Context Protocol (MCP) tool ran did not make sense.

In {productname} {release-version}, the **TinyMCE AI** plugin validates the value returned by the callback. When the callback returns a value that is not a string, the plugin ignores that value, treats the result as `+undefined+`, and shows the default status message instead.

=== The {productname} AI chat sidebar now shows only one tooltip at a time
// #TINYMCE-14507

Previously, each button in the {productname} AI chat sidebar managed its tooltip independently, with no coordination between them. Opening one tooltip did not close a tooltip that was already visible, so more than one tooltip could remain on screen at the same time.

In {productname} {release-version}, opening a tooltip in the {productname} AI chat sidebar closes any other open tooltip, so the chat sidebar shows only one tooltip at a time. This keeps the interface clear and consistent.

For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI].


[[improvements]]
== Improvements

{productname} {release-version} also includes the following improvements:

=== Updated the bundled DOMPurify dependency to the latest version
// #TINYMCE-14556

Previously, {productname} bundled an older version of the DOMPurify sanitization library. Although {productname} was not affected by the published DOMPurify advisories, because they relate to DOMPurify options that {productname} does not use, the outdated version could be flagged by automated security scanners.

In {productname} {release-version}, DOMPurify has been updated to the latest version. This resolves the scanner warnings without changing {productname}'s sanitization behavior.

=== Added the `+aria-valuenow+`, `+aria-valuemin+`, and `+aria-valuemax+` attributes to the editor resize handle when resizing vertically
// #TINYMCE-14493

Previously, the editor resize handle did not expose the Accessible Rich Internet Applications (ARIA) value attributes recommended for the link:https://www.w3.org/TR/wai-aria/#separator[`+separator+` role]. Automated accessibility scanners reported this as a specification violation on the resize handle.

In {productname} {release-version}, the resize handle exposes the `+aria-valuenow+`, `+aria-valuemin+`, and `+aria-valuemax+` attributes when the editor is configured for vertical resizing, which is the default `+resize: true+` behavior. `+aria-valuenow+` reports the current editor height, `+aria-valuemin+` reflects the `+min_height+` option, and `+aria-valuemax+` reflects the `+max_height+` option, or the current height plus the 20px keyboard resize step when `+max_height+` is not set. Editors configured for two-dimensional resizing with `+resize: 'both'+` are unchanged, because no recommended accessible pattern currently exists for two-dimensional resize handles.


[[bug-fixes]]
== Bug fixes

{productname} {release-version} also includes the following bug fixes:

=== Opening table properties on a nested table could edit the wrong table
// #TINYMCE-13767

Previously, when a table was nested inside another table, opening the table properties dialog for the outer table could display and edit the properties of the inner table instead. In Chrome and Edge, right-clicking near the left edge of a cell and selecting *Table properties* resolved to the nested table, so the settings shown did not match the selected table. This made nested tables confusing and error prone to edit.

In {productname} {release-version}, the table properties dialog determines the target table by starting from the selected cell and finding the table that directly contains it. The dialog now reliably targets the table currently being edited, and property changes apply to the intended table.

=== Clicking anchor links with special characters could throw a `+querySelectorAll+` error
// #TINYMCE-8784

Previously, clicking an anchor link whose href contained special characters, such as the semicolons common in Google Web Toolkit (GWT) place tokens like `+#!placetoken;param1=value1;param2=value2+`, threw a `+querySelectorAll+` syntax error: `+Uncaught SyntaxError: Failed to execute 'querySelectorAll' on 'Document': '...' is not a valid selector+`. This occurred both in read-only mode and when using the Link plugin *Open link* feature through the toolbar button, the context menu, and the Alt+Enter keyboard shortcut. The error appeared in the console and prevented navigation to the target bookmark.

In {productname} {release-version}, anchor href values are escaped with `+CSS.escape+` before they are used as `+querySelectorAll+` selectors, so all ASCII special characters in an href are handled. Clicking anchor links with special characters no longer throws an error, and the editor scrolls to the target bookmark across different URL fragment formats.

=== The cursor could be placed at the start of a list item instead of the clicked position
// #TINYMCE-14490

Previously, in Chromium-based browsers such as Chrome and Edge, clicking within a list item after the end of its text — for example, in the empty space to the right of the line — could place the cursor at the start of the item instead of at the end of the line. Clicking directly within a list item's text was not affected. This behavior originates from a known link:https://issues.chromium.org/issues/40767343[Chromium browser issue].

In {productname} {release-version}, {productname} detects this browser behavior and corrects the cursor position. Clicking within these list items now places the cursor at the expected position.

14 changes: 14 additions & 0 deletions modules/ROOT/pages/changelog.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,20 @@

NOTE: This is the {productname} Community version changelog. For information about the latest {cloudname} or {enterpriseversion} Release, see: xref:release-notes.adoc[{productname} Release Notes].

== xref:8.8.0-release-notes.adoc[8.8.0 - 2026-07-15]

### Improved
* Added the `aria-valuenow`, `aria-valuemin`, and `aria-valuemax` attributes to the editor resize handle when resizing vertically.
// #TINYMCE-14493

### Fixed
* Opening table properties on a nested table could edit the wrong table.
// #TINYMCE-13767
* Clicking anchor links with special characters like semicolons in readonly mode or using the link plugin was throwing a querySelectorAll syntax error.
// #TINYMCE-8784
* Worked around an edge case of a Chromium bug where clicking on the right of an `li` could fail.
// #TINYMCE-14490

== xref:8.7.0-release-notes.adoc[8.7.0 - 2026-06-30]

### Added
Expand Down
8 changes: 7 additions & 1 deletion modules/ROOT/pages/release-notes.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,12 @@ This section lists the releases for {productname} {productmajorversion} and the

[cols="1,1"]
|===
a|
[.lead]
xref:8.8.0-release-notes.adoc#overview[{productname} 8.8.0]

Release notes for {productname} 8.8.0

a|
[.lead]
xref:8.7.0-release-notes.adoc#overview[{productname} 8.7.0]
Expand Down Expand Up @@ -110,5 +116,5 @@ xref:8.0-release-notes.adoc#overview[{productname} 8.0.0]
Release notes for {productname} 8.0.0

// Uncomment the dummy cell when the number of cells in the table is odd to ensure the table renders correctly.
a|
// a|
|===
48 changes: 48 additions & 0 deletions modules/ROOT/partials/configuration/tinymceai_options.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -276,6 +276,54 @@ tinymce.init({
});
----

[[tinymceai_chat_welcome_actions]]
=== `+tinymceai_chat_welcome_actions+`

Adds a set of suggested welcome actions to the Chat sidebar empty state, shown below the xref:tinymceai.adoc#tinymceai_chat_welcome_message[`+tinymceai_chat_welcome_message+`] when a conversation is empty. Welcome actions give users a set of starting points instead of a blank prompt. The actions are shown only before the first request is sent. They are hidden after the first request and shown again when a new conversation is started.

*Type:* `+Array+`

*Default value:* `+[]+` (no welcome actions)

Each item in the array is one of the following:

* A `+String+`, or an object with a `+text+` property (`+{ text: 'string' }+`), shown as descriptive text.
* An action object, shown as a clickable button, with the following properties:
** `+title+` (`+String+`): The label shown on the button.
** `+command+` (`+String+`): The editor command run when the button is selected, using `+editor.execCommand(command, false, value)+`. This can be a Quick Action or Chat command, the core `+ToggleSidebar+` command, or any other registered editor command, such as `+Bold+`. For the AI command names, see xref:editor-command-identifiers.adoc#tinymceai[TinyMCE AI].
** `+value+` (optional): The argument passed to the command. The accepted value matches the command, for example a language label for `+TinyMCEAIQuickActionTranslate+`, a `+{ prompt, displayedPrompt }+` object for `+TinyMCEAIChatPrompt+`, or a sidebar name such as `+'tinymceai-review'+` for `+ToggleSidebar+`.
** `+icon+` (optional `+String+`): The name of the icon shown on the button, using any editor icon identifier. When omitted, an icon is selected automatically based on the command.

Text items and action buttons can be interleaved to group related actions under short headings.

.Example
[source,js]
----
tinymce.init({
selector: 'textarea',
plugins: 'tinymceai',
toolbar: 'tinymceai-chat tinymceai-quickactions tinymceai-review',
tinymceai_chat_welcome_actions: [
{ text: 'Here are some actions to get started:' },
{ title: 'Summarize the document', command: 'TinyMCEAIQuickActionsSummarize' },
{ title: 'Continue writing', command: 'TinyMCEAIQuickActionContinueWriting' },
{ title: 'Translate to Spanish', command: 'TinyMCEAIQuickActionTranslate', value: 'spanish' },
{
title: 'Draft a reply',
command: 'TinyMCEAIChatPrompt',
value: { prompt: 'Draft a reply to this message in a professional tone.', displayedPrompt: 'Draft a reply' }
},
{ title: 'Review my document', command: 'ToggleSidebar', value: 'tinymceai-review' },
{ text: 'Other editor commands are also supported:' },
{ title: 'Bold', command: 'Bold', icon: 'bold' }
],
// Required for authentication
tinymceai_token_provider: () => {
return fetch('/api/token').then(r => r.json());
}
});
----

[[tinymceai_tool_data_callback]]
=== `+tinymceai_tool_data_callback+`

Expand Down
1 change: 1 addition & 0 deletions modules/ROOT/partials/misc/supported-versions.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Supported versions of {productname}:
[cols="^,^,^",options="header"]
|===
|Version |Release Date |End of Premium Support
|8.8 |2026-07-15 |2028-01-15
|8.7 |2026-06-30 |2027-12-30
|8.6 |2026-06-03 |2027-12-03
|8.5 |2026-04-29 |2027-10-29
Expand Down
Loading