Skip to content

Commit 63d35d3

Browse files
authored
Merge branch 'feature/8.1.0/DOC-3209' into feature/8.1.0/DOC-3209_TINY-12514
2 parents 192fa32 + 59626d4 commit 63d35d3

File tree

2 files changed

+228
-0
lines changed

2 files changed

+228
-0
lines changed

modules/ROOT/pages/8.1.0-release-notes.adoc

Lines changed: 220 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ The following premium plugin updates were released alongside {productname} {rele
5454

5555
// For information on the **<Premium plugin name 1>** plugin, see: xref:<plugincode>.adoc[<Premium plugin name 1>].
5656

57+
5758
=== Spell Checker
5859

5960
The {productname} {release-version} release includes an accompanying release of the **Spell Checker** premium plugin.
@@ -69,6 +70,146 @@ To resolve this, {productname} now inserts a temporary hidden element before the
6970

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

73+
=== Comments
74+
75+
The {productname} {release-version} release includes an accompanying release of the **Comments** premium plugin.
76+
77+
**Comments** Premium plugin includes the following removal.
78+
79+
==== Improved keyboard navigation in Comments dropdown when inserting `@Mention`
80+
// #TINY-12785
81+
82+
Previously, typing `@` to open the mentions dropdown list inside the Comments card did not support the **Shift+Enter** keyboard combination. For example, when typing a `@` + navigating to a user in the selected Comment card, pressing **Shift+Enter** did not insert the `@mention` to the `<textarea>` for the comment body.
83+
84+
In {productname} {release-version}, this issue has been resolved by handling **Shift+Enter** in the same way as the regular **Enter** key, ensuring consistent and predictable keyboard interaction when selecting items in the `@mentions` dropdown within comment cards.
85+
86+
For information on the **Comments** plugin, see: xref:introduction-to-tiny-comments.adoc[Introduction to Tiny Comments].
87+
88+
89+
=== Image Optimizer (Powered by Uploadcare)
90+
91+
The {productname} {release-version} release includes an accompanying release of the **Image Optimizer (Powered by Uploadcare)** premium plugin.
92+
93+
**Image Optimizer (Powered by Uploadcare)** includes the following fix.
94+
95+
==== Image previews sometimes showed the wrong image from a `srcset`.
96+
97+
In previous version of the Image Optimizer premium plugin, an issue where image effects were applied based on the main `src` instead of the active `srcset` URL, causing discrepancies when the displayed image was selected from `srcset`. This led to a mismatch in the adjustment preview (rendered from the main `src`) versus the image shown in the editor (rendered from the `srcset` URL), resulting in different visual outcomes for effects such as blur or resize.
98+
99+
{productname} {release-version} resolves this issue by using the `currentSrc` property to generate previews, ensuring the preview and the editor image reference the same resource. As a result, the preview image and the image in the editor are now consistent.
100+
101+
For information on the **Image Optimizer Powered by Uploadcare** plugin, see: xref:uploadcare.adoc[Image Optimizer (Powered by Uploadcare)].
102+
103+
=== Accessibility Checker
104+
105+
The {productname} {release-version} release includes an accompanying release of the **Accessibility Checker** premium plugin.
106+
107+
**Accessibility Checker** includes the following improvement.
108+
109+
==== `+alt+` text length error message now shows current and maximum character counts
110+
// #TINY-12569
111+
112+
Previous versions of **Accessibility Checker**, the `+alt+` text length validation error displayed only the current character count, such as "_Currently 151 characters_" without indicating the maximum allowed length. This caused unclear guidance for users and negatively affected the experience across all image rules (I1–I4) that rely on length validation, making it inconsistent with accessibility best practices.
113+
114+
In {productname} {release-version}, the error message for **Accessibility Checker** has been updated to show both the current and maximum character counts, for example: "_151 characters (maximum 150 allowed)_." This improvement provides clear, actionable error messaging that aligns with accessibility guidance and reduces user confusion across all affected rules.
115+
116+
For information on the **Accessibility Checker** plugin, see: xref:a11ychecker.adoc[Accessibility Checker].
117+
118+
=== Revision History
119+
120+
The {productname} {release-version} release includes an accompanying release of the **Revision History** premium plugin.
121+
122+
**Revision History** includes the following fix and improvement.
123+
124+
==== The same user could receive two different default avatars
125+
// #TINY-12527
126+
127+
In previous versions of Revision History, the same user could receive two different default avatars. This inconsistency could make a single user appear as two distinct contributors, creating confusion when reviewing revision logs.
128+
129+
In {productname} {release-version}, the issue has been resolved so that each user is now always assigned the same default avatar, improving accuracy and consistency in the revision history display.
130+
131+
==== Default avatars are now generated with a consistent color based on the `user_id`
132+
// #TINY-12527
133+
134+
Default avatars are now generated consistently using the `user_id`, ensuring that users are assigned a reliable and predictable color for their avatar. This improvement enhances the user experience by providing clear visual consistency when identifying contributors in revision histories.
135+
136+
For information on the **Revision History** plugin, see: xref:revisionhistory.adoc[Revision History].
137+
138+
=== Comments
139+
140+
The {productname} {release-version} release includes an accompanying release of the **Comments** premium plugin.
141+
142+
**Comments** Premium plugin includes the following fixes and improvement.
143+
144+
==== Default avatars generated inconsistently
145+
// The same user avatar was generated for all users without an avatar in the mentions dropdown.
146+
// The same user could receive two different default avatars.
147+
// Default avatars are now generated with a consistent color based on the user id.
148+
// #TINY-12526 #TINY-12532 #TINY-12633
149+
150+
Previously, {productname} generated default avatars inconsistently in the Comments plugin. Users without avatars saw the same placeholder avatar in the mentions dropdown, while the same individual could also receive different default avatars in other contexts. This inconsistency made it difficult to distinguish users and, in some cases, created confusion by making a single user appear as two different people. In {release-version}, this issue has been fixed, and default avatars are now consistently generated with a stable color based on the `+user_id+`. This ensures that the same user always has the same default avatar, improving clarity and providing a more reliable user experience.
151+
152+
For information on the **Comments** plugin, see: xref:introduction-to-tiny-comments.adoc[Introduction to Tiny Comments].
153+
154+
=== Mentions
155+
156+
The {productname} {release-version} release includes an accompanying release of the **Mentions** premium plugin.
157+
158+
**Mentions** Premium plugin includes the following improvement.
159+
160+
==== Users without avatars now display avatar placeholders in the mentions dropdown
161+
// #TINY-12473
162+
163+
Previously, the mentions dropdown did not properly handle cases where users lacked profile avatars, resulting in a visually inconsistent and unclear user interface. This impacted usability by making it harder to distinguish between users without avatars and those with incomplete or broken profile information.
164+
165+
In {productname} {release-version}, this issue has been addressed. Now, {productname} provides a default avatar placeholder for users without avatars, ensuring a consistent and polished experience when using the mentions dropdown.
166+
167+
For information on the **Mentions** plugin, see: xref:mentions.adoc[Mentions].
168+
169+
=== AI Assistant
170+
171+
The {productname} {release-version} release includes an accompanying release of the **AI Assistant** premium plugin.
172+
173+
**AI Assistant** includes the following fix.
174+
175+
==== AI Assistant plugin dialog preview now respects the `content_security_policy` editor option
176+
// TINY-12800
177+
178+
Previously, the AI Assistant plugin dialog preview did not adhere to the xref:tinymce-and-csp.adoc#content_security_policy[content_security_policy] editor option, resulting in limited control over the loading of external resources such as images.
179+
180+
In {productname} {release-version}, the dialog preview now applies the configured content security policy when provided, ensuring that external resources are restricted according to the editor's security settings. This improvement enhances consistency, strengthens security, and aligns the plugin with user-defined policies in {productname}.
181+
182+
For information on the **AI Assistant** plugin, see: xref:ai.adoc[AI Assistant], or for information on the `+content_security_policy+` option see xref:tinymce-and-csp.adoc#content_security_policy[Content Security Policy].
183+
184+
=== Suggested Edits
185+
186+
The {productname} {release-version} release includes an accompanying release of the **Suggested Edits** premium plugin.
187+
188+
**Suggested Edits** includes the following improvement.
189+
190+
==== Added keyboard navigation to the Suggested Edits plugin
191+
// #TINY-11452
192+
193+
The initial release of the Suggested Edits plugin did not support keyboard navigation, limiting accessibility for users who rely on keyboard-based interactions. This restriction made it difficult to move through and interact with the suggested edits sidebar and cards without using a mouse. To improve usability and accessibility, keyboard navigation has been implemented in the Suggested Edits plugin. Users can now efficiently navigate and interact with the plugin using the keyboard.
194+
195+
For information on the **Suggested Edits** plugin, see: xref:suggestededits.adoc[Suggested Edits].
196+
197+
198+
=== Suggested Edits
199+
200+
The {productname} {release-version} release includes an accompanying release of the **Suggested Edits** premium plugin.
201+
202+
**Suggested Edits** includes the following fix:
203+
204+
=== Empty editor operations sometimes showed as modified instead of added/removed
205+
// #TINY-12273
206+
207+
Previously empty editor operations were sometimes incorrectly displayed as modifications instead of additions or removals. This behavior caused confusion, as an editor that appeared empty could still show a “modified” state.
208+
209+
To resolve this, empty content is no longer sent. When the editor is empty or becomes empty, the entire state is now correctly represented as added or removed. This improvement ensures that change tracking is clearer and more accurate, reducing confusion when editors contain no content.
210+
211+
For information on the **Suggested Edits** plugin, see: xref:suggestededits.adoc[Suggested Edits].
212+
72213

73214
[[improvements]]
74215
== Improvements
@@ -80,6 +221,53 @@ For information on the **Spell Checker** plugin, see: xref:introduction-to-tiny-
80221

81222
// CCFR here.
82223

224+
=== `editor.getContent()` now includes `indent` and `entity_encoding` properties to control HTML formatting
225+
// #TINY-12786
226+
227+
Previously, when using the {productname} `+getContent+` API, options such as `+indent+` and `+entity_encoding+` could not be overridden during the call. The editor always applied its initial configuration, which limited flexibility when retrieving content. This meant integrators were restricted to the defaults set at initialization, with no way to adjust formatting behavior per call.
228+
229+
In {productname} {release-version}, the `+getContent+` API has been enhanced to support per-call overrides for `+indent+` and `+entity_encoding+`. These options can now be specified directly when invoking `+getContent+`, regardless of the editor’s default configuration. This improvement gives developers greater control over output formatting, allowing tailored content retrieval for different use cases.
230+
231+
.Example: how to use the `+getContent+` API to retrieve content with different formatting options.
232+
[source,js]
233+
----
234+
// Disable indentation
235+
tinymce.get(0).getContent({ indent: false });
236+
237+
// Serialize using named entities
238+
tinymce.get(0).getContent({ indent: false, entity_encoding: 'named' });
239+
240+
// Serialize using numeric entities
241+
tinymce.get(0).getContent({ indent: false, entity_encoding: 'numeric' });
242+
243+
// Serialize core entities as named, others as numeric
244+
tinymce.get(0).getContent({ indent: false, entity_encoding: 'named+numeric' });
245+
246+
// Output raw characters
247+
tinymce.get(0).getContent({ indent: false, entity_encoding: 'raw' });
248+
----
249+
250+
or
251+
252+
.Example of configuring the editor to use named entity encoding and disable indentation.
253+
[source,js]
254+
----
255+
tinymce.init({
256+
selector: "textarea",
257+
entity_encoding: 'named', // or 'numeric' or 'raw'
258+
indent: false, // or true
259+
});
260+
----
261+
262+
For more information on the `+getContent+` API, see `xref:apis/tinymce.editor.adoc#getContent[getContent()]`.
263+
264+
=== Clicking on a non selectable element when the selection is off screen no longer scrolls to the selection
265+
// #TINY-12245
266+
267+
Previously, and issue was identified where clicking the editor's horizontal scrollbar a "non-selectable" UI element implicitly focused the editor, placed the caret at the beginning of the content, and then scrolled the document vertically to that caret position, causing the page to scroll away from the user's current view.
268+
269+
{productname} {release-version} addresses this issue. Now, the editor avoids taking focus when users click elements that are not selectable (such as scrollbars), preventing unintended vertical scrolling.
270+
83271

84272
[[additions]]
85273
== Additions
@@ -102,6 +290,13 @@ For information on the **Spell Checker** plugin, see: xref:introduction-to-tiny-
102290

103291
// CCFR here.
104292

293+
=== Tooltips can now remain open when hovered
294+
// #TINY-12053
295+
296+
Previously, tooltips would disappear when the cursor moved from the toolbar button to the tooltip, preventing users from keeping the tooltip open for reference. This behavior impacted accessibility by making it difficult for users who rely on tooltips for extended reading or navigation. In {release-version}, {productname} has been updated to allow tooltips to accept mouse events. This ensures that tooltips remain visible when hovered, improving accessibility and usability by letting users keep the tooltip open until they move the cursor away.
297+
298+
This improvement addresses the link:https://www.w3.org/WAI/WCAG21/Understanding/content-on-hover-or-focus[WCAG 2.1 Success Criterion 1.4.13: Content on Hover or Focus (Level AA)], specifically the "Hoverable" requirement.
299+
105300

106301
[[removed]]
107302
== Removed
@@ -123,6 +318,31 @@ For information on the **Spell Checker** plugin, see: xref:introduction-to-tiny-
123318
// #TINY-vwxyz1
124319

125320
// CCFR here.
321+
=== NVDA would announce iframe_aria_text multiple times
322+
// #TINY-11296
323+
324+
Previously, in certain browsers, when using screen readers such as NVDA or JAWS, the `iframe_aria_text` was either not announced at all or announced twice, causing inconsistent and potentially confusing behavior for users relying on assistive technology. To resolve this, the behavior has been standardized by adjusting how the label is applied:
325+
326+
* in Firefox, the `title` attribute is now set directly on the iframe element and the `aria-label` on the body is not used.
327+
* while in other browsers the `aria-label` is applied to the body inside the iframe without setting a `title` attribute on the iframe.
328+
329+
As a result, `iframe_aria_text` is now consistently announced once across all supported browsers.
330+
331+
For more information, see: xref:accessibility.adoc#iframe_aria_text[iframe_aria_text].
332+
333+
=== Navigating between elements with `+contenteditable="true"+` was not possible on Firefox using the keyboard.
334+
// #TINY-12459
335+
336+
In {productname} {release-version}, a Firefox-specific limitation prevented caret movement between editable elements when navigating with the keyboard. The caret became trapped inside a +figcaption+, blocking vertical navigation using the Arrow Down key and preventing users from moving to the next element.
337+
338+
This issue disrupted accessibility and editing flow for Firefox users relying on keyboard interactions. To resolve this, a new caret navigation module was introduced and integrated into the Firefox-specific arrow key handling logic. The solution works around a long-standing Firefox bug by programmatically advancing the caret out of blocked states, ensuring smoother and more consistent keyboard navigation across editable elements.
339+
340+
=== Cursor movement did not operate correctly after a `figure` was selected
341+
// #TINY-12458
342+
343+
In previous versions of {productname}, using the TAB key to move focus into a `figcaption` element after selecting a `figure` caused the editor to enter a broken state where the caret was displayed inside the figcaption but typing did not produce any visible content. This issue prevented users from editing figcaptions using only the keyboard, forcing them to rely on a mouse or other pointing device to make changes.
344+
345+
In {productname} {release-version}, this bug has been fixed, ensuring that figcaptions can now be edited seamlessly with keyboard navigation alone, improving accessibility and overall editing efficiency.
126346

127347

128348
[[security-fixes]]

modules/ROOT/partials/configuration/iframe_aria_text.adoc

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,3 +23,11 @@ tinymce.init({
2323
iframe_aria_text: 'Text Editor'
2424
});
2525
----
26+
27+
[NOTE]
28+
====
29+
The `+iframe_aria_text+` option is applied differently depending on the browser to ensure consistent screen reader announcements:
30+
31+
* **Firefox**: The `+title+` attribute is set on the iframe element. The `+aria-label+` on the body is not set.
32+
* **Other browsers**: The `+aria-label+` is set on the body inside the iframe. The `+title+` is not set on the iframe.
33+
====

0 commit comments

Comments
 (0)