diff --git a/.api-version b/.api-version index 9fdf3baef9..84c5308f03 100644 --- a/.api-version +++ b/.api-version @@ -1 +1 @@ -7.8.0 \ No newline at end of file +7.9.0 \ No newline at end of file diff --git a/antora.yml b/antora.yml index 74ed1f2175..c97ffd94dd 100644 --- a/antora.yml +++ b/antora.yml @@ -26,7 +26,7 @@ asciidoc: # product variables productname: TinyMCE productmajorversion: 7 - productminorversion: '7.8' + productminorversion: '7.9' ##### product name in codeblock prodnamecode: tinymce #### more names diff --git a/modules/ROOT/images/icons/list-bull-circle.svg b/modules/ROOT/images/icons/list-bull-circle.svg index 9ac00e4dcd..229e75ced8 100644 --- a/modules/ROOT/images/icons/list-bull-circle.svg +++ b/modules/ROOT/images/icons/list-bull-circle.svg @@ -1,15 +1 @@ - - - - icon-list-bull-circle - Created with Sketch. - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/modules/ROOT/images/icons/list-bull-default.svg b/modules/ROOT/images/icons/list-bull-default.svg index 9a850206ce..317ac0bc4d 100644 --- a/modules/ROOT/images/icons/list-bull-default.svg +++ b/modules/ROOT/images/icons/list-bull-default.svg @@ -1,15 +1 @@ - - - - icon-list-bull-default - Created with Sketch. - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/modules/ROOT/images/icons/list-bull-disc.svg b/modules/ROOT/images/icons/list-bull-disc.svg new file mode 100644 index 0000000000..ec374a8c38 --- /dev/null +++ b/modules/ROOT/images/icons/list-bull-disc.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/modules/ROOT/images/icons/list-bull-square.svg b/modules/ROOT/images/icons/list-bull-square.svg index 7411fca154..17f4469d0d 100644 --- a/modules/ROOT/images/icons/list-bull-square.svg +++ b/modules/ROOT/images/icons/list-bull-square.svg @@ -1,15 +1 @@ - - - - icon-list-bull-square - Created with Sketch. - - - - - - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/modules/ROOT/images/onboarding/onboarding-finish-setting-up-dialog.png b/modules/ROOT/images/onboarding/onboarding-finish-setting-up-dialog.png new file mode 100644 index 0000000000..60dc60e7a8 Binary files /dev/null and b/modules/ROOT/images/onboarding/onboarding-finish-setting-up-dialog.png differ diff --git a/modules/ROOT/images/onboarding/onboarding-no-api-key-notification.png b/modules/ROOT/images/onboarding/onboarding-no-api-key-notification.png new file mode 100644 index 0000000000..5d07a4dbce Binary files /dev/null and b/modules/ROOT/images/onboarding/onboarding-no-api-key-notification.png differ diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 06ebe6242f..fefef12dc1 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -414,6 +414,14 @@ ** xref:tinymce-and-cors.adoc[Cross-Origin Resource Sharing (CORS)] * Release information ** xref:release-notes.adoc[Release notes for {productname}] +*** {productname} 7.9.0 +**** xref:7.9.0-release-notes.adoc#overview[Overview] +**** xref:7.9.0-release-notes.adoc#accompanying-premium-self-hosted-server-side-component-changes[Accompanying Premium self-hosted server-side component changes] +**** xref:7.9.0-release-notes.adoc#accompanying-premium-plugin-changes[Accompanying Premium plugin changes] +**** xref:7.9.0-release-notes.adoc#improvements[Improvements] +**** xref:7.9.0-release-notes.adoc#additions[Additions] +**** xref:7.9.0-release-notes.adoc#changes[Changes] +**** xref:7.9.0-release-notes.adoc#bug-fixes[Bug fixes] *** {productname} 7.8.0 **** xref:7.8.0-release-notes.adoc#overview[Overview] **** xref:7.8.0-release-notes.adoc#accompanying-premium-plugin-changes[Accompanying Premium Plugin changes] diff --git a/modules/ROOT/pages/7.8.0-release-notes.adoc b/modules/ROOT/pages/7.8.0-release-notes.adoc index 6b4b2d0bbc..a9bf1c1478 100644 --- a/modules/ROOT/pages/7.8.0-release-notes.adoc +++ b/modules/ROOT/pages/7.8.0-release-notes.adoc @@ -257,14 +257,6 @@ tinymce.init({

---- -// === New `onboarding` option -// // #TINY-11931 - -// {productname} {release-version} introduces a new `+onboarding+` option to enhance the developer experience during the 14-day trial period. This option controls the display of a cloud promotion banner highlighting paid features available during the trial. The banner is automatically hidden when the trial ends or when the editor is correctly configured, ensuring a smoother and less intrusive setup experience. - -// For more information, see xref:promotions.adoc#onboarding[onboarding]. - - [[bug-fixes]] == Bug fixes diff --git a/modules/ROOT/pages/7.9.0-release-notes.adoc b/modules/ROOT/pages/7.9.0-release-notes.adoc new file mode 100644 index 0000000000..f3de961c4b --- /dev/null +++ b/modules/ROOT/pages/7.9.0-release-notes.adoc @@ -0,0 +1,313 @@ += {productname} {release-version} +:release-version: 7.9.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, May 14^th^, 2025. These release notes provide an overview of the changes for {productname} {release-version}, including: + +* xref:accompanying-premium-self-hosted-server-side-component-changes[Accompanying Premium self-hosted server-side component changes] +* xref:accompanying-premium-plugin-changes[Accompanying Premium plugin changes] +* xref:improvements[Improvements] +* xref:additions[Additions] +* xref:changes[Changes] +* xref:bug-fixes[Bug fixes] + + +[[accompanying-premium-self-hosted-server-side-component-changes]] +== Accompanying Premium self-hosted server-side component changes + +The {productname} {release-version} release includes accompanying changes affecting the {productname} **self-hosted** services for the following plugin: + +* **Spell Checker** plugin `tinymcespellchecker`. + +For information on: + +* The **Spell Checker** plugin, see: xref:introduction-to-tiny-spellchecker.adoc[Spell Checker plugin]. +* Deploying the **server-side** components, see: xref:introduction-to-premium-selfhosted-services.adoc[Server-side component installation]. + +The Java server-side component has been updated to the following version: + +* `ephox-spelling.war`: 2.130.1 + +=== Updating the self-hosted server-side components + +The new versions of the server-side services provide updates for the Java-based server-side components. To deploy the updated version of the server-side components: + +include::partial$misc/admon-docker-starter-kit-eos-message.adoc[] + +. Update your Java Application Server to the minimum required version: + +include::partial$misc/supported-application-servers.adoc[] + +. Replace the existing server-side `.war` files with the `.war` files bundled with {productname} {release-version} or later. + +For information on: + +* Deploying the server-side components, see: xref:introduction-to-premium-selfhosted-services.adoc[Server-side component installation]. +* Deploying the server-side components using Docker, see: xref:bundle-intro-setup.adoc[Containerized service deployments]. + +include::partial$misc/admon-no-functionality-changes-in-updated-server-side-components.adoc[] + + +[[accompanying-premium-plugin-changes]] +== Accompanying Premium plugin changes + +The following premium plugin updates were released alongside {productname} {release-version}. + +=== Accessibility Checker + +The {productname} {release-version} release includes an accompanying release of the **Accessibility Checker** premium plugin. + +**Accessibility Checker** includes the following fix. + +==== Adjusted spacing in accessibility checker component for better visual alignment +// #TINY-11757 +Previously in {productname}, the error card for the Accessibility Checker had slightly more space between content than necessary, making the dialog appear less compact. + +With the release {productname} {release-version}, the design has been updated to reduce the padding within the error card, ensuring a more compact and cohesive design. + +For information on the **Accessibility Checker** plugin, see: xref:a11ychecker.adoc[Accessibility Checker]. + +=== Spell Checker + +The {productname} {release-version} includes an accompanying release of the **Spell Checker** premium plugin. + +**Spell Checker** includes the following improvement. + +==== Spellchecking with a language that does not match the content no longer overloads the spelling server. +// #TINY-12061 + +Previously, using the spellchecker with a language that did not match the document content could cause server overload due to the large volume of unrecognized words. This issue led to excessive CPU usage on the spelling server. In {release-version}, {productname} now processes words in manageable chunks, reducing the load on the server and preventing performance degradation during spellchecking operations with mismatched language settings. + +For information on the **Spell Checker** premium plugin, see: xref:introduction-to-tiny-spellchecker.adoc[Spell Checker plugin]. + +=== Image Optimizer + +The {productname} {release-version} release includes an accompanying release of the **Image Optimizer** premium plugin. + +**Image Optimizer** includes the following fix. + +==== Aspect ratio was not properly calculated when uploading images wider than the editor. +// #TINY-11963 + +Previous version of the **Image Optimizer** plugin, an issue would occur where images wider than the editor were distorted when uploaded to the CDN. + +This occurred when the image being uploaded replaced a resized version rendered from a `srcset` alternative, and the aspect ratio was incorrectly calculated using the `naturalWidth` of the original image and the `naturalHeight` of the new image. This mismatch led to a distorted aspect ratio post-upload. + +{productname} {release-version} addresses this issue. Now, the aspect ratio is now correctly calculated using both the `naturalWidth` and `naturalHeight` of the original image, ensuring consistent and undistorted rendering after upload. + +For information on the **Image Optimizer** plugin, see: xref:uploadcare.adoc[Image Optimizer]. + +=== **Spelling Autocorrect** + +The {productname} {release-version} release includes an accompanying release of the **Spelling Autocorrect** premium plugin. + +**Spelling Autocorrect** includes the following improvement. + +==== Spelling Autocorrect no longer requires the spelling service. +// #TINY-12041 + +Previously, the {productname} autocorrect plugin depended on a server-side spelling service to retrieve its list of autocorrect entries. This setup increased server load and introduced latency due to REST API calls. As of {release-version}, the autocorrect list has been relocated to the client side, eliminating the need for a spellchecker server. This change improves performance by enabling caching and bundling of the autocorrect functionality with other client-side assets, resulting in faster load times and reduced backend dependencies. + +For information on the **Spelling Autocorrect** plugin, see: xref:autocorrect.adoc[Spelling Autocorrect plugin]. + +[[improvements]] +== Improvements + +{productname} {release-version} also includes the following improvements: + +=== Bullet list icons were changed to better represent default styles. +// TINY-12015 + +{productname} {release-version} has updated the icons used for bullet lists to better represent the default styles. The new icons are more visually distinct and align with the overall design language of {productname}. + +=== Resize cursor is now the correct direction for each resize mode. +// #TINY-12036 || #GH-10189 + +Previously, when the {productname} editor was configured with `resize: true`, which restricts resizing to the vertical axis, the editor incorrectly displayed a diagonal resize cursor. This was misleading, as the visual cue did not match the actual resizing behavior. In {release-version}, the cursor style now accurately reflects the resizing direction: a vertical resize cursor is shown when `resize: true` is used, and a diagonal cursor remains for `resize: 'both'`, which allows resizing in both horizontal and vertical directions. + +NOTE: {companyname} Technologies would like to thank link:https://github.com/daniloff200[daniloff200] for contributing to this improvement. + + +[[additions]] +== Additions + +{productname} {release-version} also includes the following addition: + +=== Added new `disc` style option for unordered lists. +// TINY-12015 + +Previously, {productname} did not offer a separate `disc` styling option for unordered (bullet) lists, causing confusion as users expected the default list style to behave like a true disc style, especially for nested lists. This release introduces a distinct `disc` style option, allowing users to explicitly apply disc-styled bullets to their lists. + +.Example of disc style option: +[source,html] +---- + +---- + +=== New `onboarding` option +// #TINY-11931 + +{productname} {release-version} introduces a new `+onboarding+` option to enhance the developer experience during the 14-day trial period. This option controls the display of a cloud promotion banner highlighting paid features available during the trial. The banner is automatically hidden when the trial ends or when the editor is correctly configured, ensuring a smoother and less intrusive setup experience. + +For more information, see xref:promotions.adoc#onboarding[onboarding]. + +[[changes]] +== Changes + +{productname} {release-version} also includes the following change: + +=== `ContextFormSizeInput` lock button has been repositioned between the "width" and "height" inputs. +// TINY-11916 + +In previous versions of {productname}, the "lock aspect ratio" button in the `ContextFormSizeInput` component was positioned at the end of the "width" and "height" input fields. This placement made it difficult to understand the relationship between the inputs and the lock functionality. + +{productname} {release-version} addresses this issue. Now, the lock button has been repositioned between the "width" and "height" inputs. + +[[bug-fixes]] +== Bug fixes + +{productname} {release-version} also includes the following bug fixes: + +=== The `mceInsertContent` command could delete the parent block element when an anchor was selected. +// #TINY-11953 + +The {productname} `mceInsertContent` command could inadvertently remove the parent block element when an anchor (``) tag was selected. + +In scenarios where an anchor element was fully selected, the surrounding block-level parent tag, such as `

` or `

`, could be incorrectly removed, leading to unexpected changes in the content structure. This issue primarily affected Chrome users and did not reproduce consistently in Safari or Firefox. + +This issue has been resolved in {release-version}. The `mceInsertContent` command now properly retains the parent block elements when inserting content into a selected anchor element. + +=== Japanese keyboard could insert content while the editor was in `readonly` mode +// #TINY-11363 + +In previous versions of {productname}, an issue was identified where the editor permitted content insertion via IME (Input Method Editor) input, such as using a Japanese keyboard even when the editor was configured with `readonly: true`. + +With the release of {productname} {release-version}, this issue has been addressed by implementing event handlers that intercept and block IME-related input events and their default behaviors while in read-only mode. This enhancement ensures that the readonly setting is strictly enforced, preventing content modifications from all input sources, including IME. + +=== Autolink behavior was updated to preserve existing links. +// TINY-11836 + +Previously, the Autolink plugin could incorrectly re-link content that was already part of a hyperlink when the user pressed Enter at the end of a line. This occurred when the cursor was placed immediately after a link element rather than inside it and the visible text resembled a URL. As a result, Autolink could unintentionally overwrite link attributes, modify the destination URL, or alter otherwise valid markup. + +{productname} {release-version} resolves this issue by treating any text inside or directly following a hyperlink as the end of its search scope. This prevents Autolink from creating a new link if the content is already hyperlinked. The behavior now consistently mirrors the existing handling for cases when the cursor is inside a link. + +.Example of incorrect behavior +[source,html] +---- +

www.google.com

+

www.google.com

+---- + +This update improves reliability when working with links, ensuring that attributes and destinations remain unchanged unless explicitly edited. + +=== Editor did not scroll into viewport on receiving focus on Chrome and Safari. +// #TINY-12017 + +Previously the editor did not scroll into the viewport when focused via the keyboard `Tab` key, causing a poor user experience as users had to manually scroll to find the editor. + +{productname} {release-version} introduces a workaround to resolve this issue. In addition and a bug report has been submitted to both Chrome (link:https://issues.chromium.org/issues/414129878[414129878]) and Safari (link:https://bugs.webkit.org/show_bug.cgi?id=292062[292062]) teams for further investigation. + +=== The toolbar did not always account for the full available space during horizontal scrolling. +// #TINY-11549 + +In previous versions of {productname}, the toolbar did not accurately account for the actual available space. As a result, the layout area allocated for the toolbar was smaller than the effective free space, leading to inconsistent resizing and positioning during horizontal scrolling. + +This issue has been addressed in {release-version}. The toolbar now correctly utilizes the available area, ensuring stable and consistent rendering within the intended layout. + +=== Improved handling of overlapping matches in abbreviation detection. +// #TINY-11560 + +Previously in {productname}, an issue occurred during pattern matching where overlapping regular expression matches caused duplicated content when processing abbreviations. For example, in the string `D. dd.D.`, multiple overlapping patterns such as `D.`, `dd.D`, and a final `D.` could be incorrectly matched and processed more than once. This resulted in unexpected duplication in the editor, such as `D. dd.DDD.`. + +This behavior was caused by insufficient overlap detection when identifying match regions, leading to multiple reinsertions of already matched substrings. The issue has now been resolved in {productname} {release-version} by refining the pattern-matching logic to accurately detect and avoid overlapping matches. The updated implementation ensures that each abbreviation is matched and processed only once, eliminating duplicated insertions and preserving the original content structure. + +.Example before the fix: +[source,html] +---- + +

D. dd.D.

+ + +

D. dd.DDD.

+---- + +.Example after the fix: +[source,html] +---- + +

D. dd.D.

+ + +

D. dd.D.

+---- + +=== Inline dialog dropdowns reposition when the dialog is dragged or the window is scrolled. +// TINY-11368 sub TINY-11823, TINY-11832 + +Prior to {productname} {release-version}, opening the preferences menu from within the **Search and Replace** dialog in inline mode caused the dropdown to remain fixed in its original position, even when the dialog was moved or the window was scrolled. This resulted in the dropdown becoming visually detached from its associated button and dialog, leading to a disjointed and confusing user experience. + +In {productname} {release-version}, this issue has been resolved. The dropdown menu now remains visually and functionally anchored to the dialog when it is dragged or when the window is scrolled. This ensures consistent and intuitive behavior, aligned with the handling of other dropdowns across the application. + +=== Tabbing inside a `figcaption` element no longer shows two text insertion carets. +// #TINY-11997 + +Previously, when tabbing within a `figcaption` element, the fake text caret was not properly hidden, resulting in both the browser’s native caret and the fake caret being rendered simultaneously. This visual duplication caused confusion for users during text navigation and editing. The issue occurred because the focus event inside editable captions did not trigger logic to hide the fake caret. + +This has been resolved by updating the focus handling behavior to detect whether the focused element is within an editable context and hide the fake caret accordingly. + +As a result, only a single, correct text caret is displayed when tabbing inside `figcaption` elements, improving editing clarity and user experience. + +=== Pressing `enter` before a floating image sometimes duplicated the image. +// #TINY-1676 + +Previously, when pressing `Enter` before a floating image, the image could be duplicated instead of a new line being correctly inserted. This issue was due to limitations in the native content-editable behavior of **Firefox**, which {productname} previously relied on for handling new lines. In particular, Firefox did not clear line content correctly when it included floated elements, resulting in duplicated images. + +With the release of {productname} {release-version}, an internal new line mechanism has been introduced to replace the unreliable browser behavior. This ensures consistent and correct handling of new lines around floating content. Pressing `Enter` before a floating image now behaves as expected, and duplicate images no longer appear. + +=== Removed deprecated CSS media selector `-ms-high-contrast`. +// TINY-11876 + +The `-ms-high-contrast` media feature was previously used to apply a darker border color for improved accessibility in Internet Explorer 11. However, this feature is no longer supported and has been link:https://blogs.windows.com/msedgedev/2024/04/29/deprecating-ms-high-contrast/[officially deprecated] by Microsoft Edge. Its continued use triggered warnings in browser developer consoles, potentially affecting user experience during development. To enhance cross-browser compatibility and eliminate these warnings, the deprecated selector has been removed from {productname} in {release-version}. + +=== Table resizers are now visible when inline editor has a `z-index` property. +// #TINY-11981 + +Previously, table resizers were rendered outside the editor's stacking context, causing them to appear beneath the editor when a `z-index` property was applied, making them unusable. + +{productname} {release-version} addresses this issue, by moving the resizers inside the editor content area, which unifies the resizer behavior across all editor modes. + +Key Improvements/Benefits: + +* Integrators can now add a `z-index` such as `+
+` to the inline editor without affecting the visibility of the resizers. +* UI elements are consistently placed within the controlled stacking context, improving layout reliability. + +=== If `style_formats` is empty the button is now disabled. +// #TINY-12005 + +Previously, when the xref:user-formatting-options.adoc#style_formats[style_formats] configuration was explicitly set to an empty list, the **Formats** toolbar button remained enabled, displaying an empty and non-functional dropdown menu. This led to confusion, as the button appeared interactive and suggested available formatting options, despite none being configured. + +In {release-version}, the {productname} editor now disables the **Formats** button entirely when no style formats are defined. This change improves usability by clearly signaling that there are no available style options, preventing unnecessary interaction and enhancing clarity for end users. + +=== Select UI elements were not properly styled on Chrome version 136. +// #TINY-12131 + +Previously, the `Select` UI elements were not properly styled in Chrome version 136, resulting in no visual indication of the currently selected option, which lead to usability issues. + +{productname} {release-version} addresses this issue. Now, the styling for `Select` UI elements had been updated to ensure the selected option is clearly displayed, restoring proper visual feedback. This improvement ensures consistent and intuitive styling for Chrome 136 and earlier versions. \ No newline at end of file diff --git a/modules/ROOT/pages/apis/tinymce.editor.adoc b/modules/ROOT/pages/apis/tinymce.editor.adoc index d67d64611b..0aa6ddec6f 100644 --- a/modules/ROOT/pages/apis/tinymce.editor.adoc +++ b/modules/ROOT/pages/apis/tinymce.editor.adoc @@ -90,7 +90,7 @@ the tinymce command identifiers documentation.|`xref:apis/tinymce.editor.adoc[Ed link:https://www.tiny.cloud/docs/tinymce/7/events/[event reference] for more details on each event. -__Deprecated in TinyMCE 6.0 and has been marked for removal in TinyMCE 7.0. Use `dispatch` instead.__|`xref:apis/tinymce.util.observable.adoc[Observable]` +__Deprecated in TinyMCE 6.0 and has been marked for removal in TinyMCE 9.0. Use `dispatch` instead.__|`xref:apis/tinymce.util.observable.adoc[Observable]` |xref:#focus[focus()]|Focuses/activates the editor. This will set this editor as the activeEditor in the tinymce collection it will also place DOM focus inside the editor.|`xref:apis/tinymce.editor.adoc[Editor]` |xref:#getBody[getBody()]|Returns the root element of the editable area. @@ -394,7 +394,7 @@ Fires the specified event by name. Consult the link:https://www.tiny.cloud/docs/tinymce/7/events/[event reference] for more details on each event. -__Deprecated in TinyMCE 6.0 and has been marked for removal in TinyMCE 7.0. Use `dispatch` instead.__ +__Deprecated in TinyMCE 6.0 and has been marked for removal in TinyMCE 9.0. Use `dispatch` instead.__ ==== Examples [source, javascript] diff --git a/modules/ROOT/pages/apis/tinymce.util.observable.adoc b/modules/ROOT/pages/apis/tinymce.util.observable.adoc index ccdad4b6b2..ae3f5ac05b 100644 --- a/modules/ROOT/pages/apis/tinymce.util.observable.adoc +++ b/modules/ROOT/pages/apis/tinymce.util.observable.adoc @@ -20,7 +20,7 @@ link:https://www.tiny.cloud/docs/tinymce/7/events/[event reference] for more det link:https://www.tiny.cloud/docs/tinymce/7/events/[event reference] for more details on each event. -__Deprecated in TinyMCE 6.0 and has been marked for removal in TinyMCE 7.0. Use `dispatch` instead.__|`xref:apis/tinymce.util.observable.adoc[Observable]` +__Deprecated in TinyMCE 6.0 and has been marked for removal in TinyMCE 9.0. Use `dispatch` instead.__|`xref:apis/tinymce.util.observable.adoc[Observable]` |xref:#hasEventListeners[hasEventListeners()]|Returns true/false if the object has a event of the specified name.|`xref:apis/tinymce.util.observable.adoc[Observable]` |xref:#off[off()]|Unbinds an event listener to a specific event by name. Consult the link:https://www.tiny.cloud/docs/tinymce/7/events/[event reference] for more details on each event.|`xref:apis/tinymce.util.observable.adoc[Observable]` @@ -70,7 +70,7 @@ Fires the specified event by name. Consult the link:https://www.tiny.cloud/docs/tinymce/7/events/[event reference] for more details on each event. -__Deprecated in TinyMCE 6.0 and has been marked for removal in TinyMCE 7.0. Use `dispatch` instead.__ +__Deprecated in TinyMCE 6.0 and has been marked for removal in TinyMCE 9.0. Use `dispatch` instead.__ ==== Examples [source, javascript] diff --git a/modules/ROOT/pages/apis/tinymce.util.tools.adoc b/modules/ROOT/pages/apis/tinymce.util.tools.adoc index f17c88f813..f2bdc1e1c8 100644 --- a/modules/ROOT/pages/apis/tinymce.util.tools.adoc +++ b/modules/ROOT/pages/apis/tinymce.util.tools.adoc @@ -1,10 +1,10 @@ = tinymce.util.Tools :navtitle: tinymce.util.Tools -:description: This class contains various utlity functions. These are also exposed directly on the tinymce namespace. +:description: This class contains various utility functions. These are also exposed directly on the tinymce namespace. :keywords: each, explode, grep, hasOwnProperty, inArray, is, isArray, makeMap, map, resolve, toArray, trim, walk :moxie-type: api -This class contains various utlity functions. These are also exposed directly on the tinymce namespace. +This class contains various utility functions. These are also exposed directly on the tinymce namespace. [[summary]] == Summary diff --git a/modules/ROOT/pages/changelog.adoc b/modules/ROOT/pages/changelog.adoc index 79485e0878..ad69bddb90 100644 --- a/modules/ROOT/pages/changelog.adoc +++ b/modules/ROOT/pages/changelog.adoc @@ -4,6 +4,48 @@ 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:7.9.0-release-notes.adoc[7.9.0 - 2025-05-14] + +=== Added +* Added new `disc` style option for unordered lists. +// #TINY-12015 +* New `onboarding` option. +// #TINY-11931 + +=== Improved +* The resize cursor now points in the correct direction for each resize mode. Patch contributed by link:https://github.com/daniloff200[daniloff200]. +// ##GH-10189 +* If `style_formats` is empty, the button is now disabled. +// #TINY-12005 +* Inline dialog dropdowns reposition when the dialog is dragged or the window is scrolled. +// #TINY-11368 +* Bullet list icons were have been updated to better represent the default styles. +// #TINY-12014 + +=== Changed +* The ContextFormSizeInput lock button is now centered instead of aligned to the end. +// #TINY-11916 +* Changed the default value of `advlist_bullet_styles` option to `default,disc,circle,square`. +// #TINY-12083 + +=== Fixed +* Autolink no longer overrides already existing links when autolinking. +// #TINY-11836 +* Removed the deprecated CSS media selector `-ms-high-contrast`. +// #TINY-11876 +* The `mceInsertContent` command no longer deletes the parent block element when an anchor is selected. +// #TINY-11953 +* Table resizers are now visible when inline editor has a z-index property. +// #TINY-11981 +* Tabbing inside a `figcaption` element no longer displays two text insertion carets. +// #TINY-11997 +* Pressing Enter before a floating image no longer duplicates the image. +// #TINY-11676 +* Editor did not scroll into viewport on receiving focus on Chrome and Safari. +// #TINY-12017 +* Select UI elements were not properly styled on Chrome version 136. +// #TINY-12131 + == xref:7.8.0-release-notes.adoc[7.8.0 - 2025-04-9] === Added @@ -11,8 +53,6 @@ NOTE: This is the {productname} Community version changelog. For information abo // #TINY-11748 * New `extended_mathml_attributes` and `extended_mathml_elements` options. // #TINY-11756 -* New `onboarding` option. -// #TINY-11931 === Improved * Focus outline was misaligned with comment card border on saving an edit. diff --git a/modules/ROOT/pages/cloud-troubleshooting.adoc b/modules/ROOT/pages/cloud-troubleshooting.adoc index 5c60dcf7d7..14a059d2f1 100644 --- a/modules/ROOT/pages/cloud-troubleshooting.adoc +++ b/modules/ROOT/pages/cloud-troubleshooting.adoc @@ -8,63 +8,86 @@ When {cloudname} detects a problem, it will show an editor notification containi NOTE: The wording of the notifications shown here may differ from the actual notifications from {cloudname}. ''' - [[invalid-api-key-cloud-troubleshooting]] == Invalid API Key [[A-valid-API-key-is-required-to-continue-using-TinyMCE.-Please-alert-the-admin-to-check-the-current-API-key]] === "A valid API key is required to continue using {productname}. **Please alert the admin** to check the current API key. xref:invalid-api-key.adoc[Click here to learn more.]" -==== Cause "No API Key" +==== Cause + +This notification is shown when either: + +* An `+apiKey+` is not provided in the script tag, +* An empty or missing `+apiKey+` is provided, or +* The `+apiKey+` provided cannot be found on the {cloudname} server. -This notification is *only shown* when either: +The `+apiKey+` must be: -* An `+apiKey+` is not provided in the script tag. -* `+no-api-key+` is provided as the API key. +* An exact length, +* comprised of certain characters, and +* created with a {cloudname} account on the link:{accountsignup}/[{accountpage} page]. For example: [source,html,subs="attributes+"] ---- - + ---- +In this case, the editor will be in a **read-only** state, and a notification appears stating: **"A valid API key is required to continue using TinyMCE. Please alert the admin to check the current API key. Click here to learn more."** + ==== Solution -Update the `+src+` URL to include your (website or application developer's) {cloudname} API Key. Your API key should replace the string `+no-api-key+`. +To resolve this issue: +. Update the `+src+` URL to include your (website or application developer's) {cloudname} API Key, by replacing the placeholder `+no-api-key+` with your actual API key. ++ For example: if your API is `+abcd1234+`: - ++ [source,html,subs="attributes+"] ---- ---- ++ +. Check the `+apiKey+` provided in the script tag: +* Remove any leading or trailing spaces. +* Remove any other characters that are not in your `apiKey`. If you are using variable substitution, ensure that the variable is substituting properly. +* Ensure the `apiKey+` matches the API key shown at {accountpageurl}. ++ +. If you do not have an API key, or need to retrieve your existing key, visit: link:{accountsignup}/[{cloudname}]. -To retrieve your API key, or to sign up for an API key, visit: link:{accountsignup}/[{cloudname}]. +[NOTE] +Visit our xref:invalid-api-key.adoc[Invalid API key] page for more information on how to fix an `invalid API key` issue with {productname}. -NOTE: Visit our xref:invalid-api-key.adoc[Invalid API key] page for more information on how to fix a `invalid API key` with {productname}. +''' -==== Cause "Invalid API Key" +[[no-api-key-cloud-troubleshooting]] +== No API Key -This notification is shown when the API key provided cannot be found on the {cloudname} server. +[[A-valid-API-key-is-required-to-continue-using-TinyMCE.]] +=== "A valid API key is required to continue using {productname}." (Console message) -The `+apiKey+` must be: +==== Cause -* An exact length, -* comprised of certain characters, and -* created with a {cloudname} account on the link:{accountsignup}/[{accountpage} page]. +When `+no-api-key+` is set as the `+apiKey+` the editor will be in a **read-only** state, and the user will see a **"Finish setting up"** dialog prompting them to add a valid API key, configure their domain, and explore premium features. + +image:onboarding/onboarding-finish-setting-up-dialog.png[onboarding finish setting up dialog, width=500, height=auto] ==== Solution -Check the `apiKey` provided in the script tag: +. Update the `+src+` URL to include your (website or application developer's) {cloudname} API Key, by replacing the placeholder `+no-api-key+` with your actual API key. -* Remove any leading or trailing spaces -* Remove any other characters that are not in your `apiKey`. If you are using variable substitution, ensure that the variable is substituting properly -* Ensure the `apiKey` matches the API key shown at {accountpageurl}. +For example: if your API is `+abcd1234+`: -NOTE: Visit our xref:invalid-api-key.adoc[Invalid API key] page for more information on how to fix a `invalid API key` with {productname}. +[source,html,subs="attributes+"] +---- + +---- -''' +To retrieve your API key, or to sign up for an API key, visit: link:{accountsignup}/[{cloudname}]. + +'''' [[domain-not-registered]] == Domain Not Registered diff --git a/modules/ROOT/pages/export-to-pdf-with-jwt-authentication-nodejs.adoc b/modules/ROOT/pages/export-to-pdf-with-jwt-authentication-nodejs.adoc index cc93a3a11d..5bfcedbf24 100644 --- a/modules/ROOT/pages/export-to-pdf-with-jwt-authentication-nodejs.adoc +++ b/modules/ROOT/pages/export-to-pdf-with-jwt-authentication-nodejs.adoc @@ -29,7 +29,7 @@ Inside the `public` folder where you created the `index.html` file add the HTML TinyMCE with Export to PDF + ---- + -Replace `+your-api-key+` with your link:{accountpageurl}/[{cloudname} API key]. +Replace `+no-api-key+` with your link:{accountpageurl}/[{cloudname} API key]. * For Self-hosted {productname} deployments: + [source,html] diff --git a/modules/ROOT/pages/release-notes.adoc b/modules/ROOT/pages/release-notes.adoc index 5ec17eeee4..62222dbc6a 100644 --- a/modules/ROOT/pages/release-notes.adoc +++ b/modules/ROOT/pages/release-notes.adoc @@ -9,6 +9,12 @@ This section lists the releases for {productname} 7 and the changes made in each [cols="1,1"] |=== +a| +[.lead] +xref:7.9.0-release-notes.adoc#overview[{productname} 7.9.0] + +Release notes for {productname} 7.9.0 + a| [.lead] xref:7.8.0-release-notes.adoc#overview[{productname} 7.8.0] diff --git a/modules/ROOT/partials/auth/document-converters/nodejs/configuration-steps.adoc b/modules/ROOT/partials/auth/document-converters/nodejs/configuration-steps.adoc index 27873853c9..a5bbf5671e 100644 --- a/modules/ROOT/partials/auth/document-converters/nodejs/configuration-steps.adoc +++ b/modules/ROOT/partials/auth/document-converters/nodejs/configuration-steps.adoc @@ -2,7 +2,7 @@ === Add Your API Key -* Replace `YOUR-API-KEY` in both files with your actual {productname} API key +* Replace `no-api-key` in both files with your actual {productname} API key * The API key should be the same in both the HTML script source and the JWT payload === Add Your Private Key diff --git a/modules/ROOT/partials/auth/document-converters/nodejs/server-setup-jwt.adoc b/modules/ROOT/partials/auth/document-converters/nodejs/server-setup-jwt.adoc index 016553e5f9..b451fcdb97 100644 --- a/modules/ROOT/partials/auth/document-converters/nodejs/server-setup-jwt.adoc +++ b/modules/ROOT/partials/auth/document-converters/nodejs/server-setup-jwt.adoc @@ -24,7 +24,7 @@ app.use(express.static(path.join(__dirname, 'public'))); // JWT token generation endpoint app.post('/jwt', (req, res) => { const payload = { - aud: 'YOUR-API-KEY', // Replace with your actual API key + aud: 'no-api-key', // Replace with your actual API key iat: Math.floor(Date.now() / 1000), // Issue timestamp exp: Math.floor(Date.now() / 1000) + (60 * 10) // Expiration time (10 minutes) }; diff --git a/modules/ROOT/partials/auth/document-converters/php/configuration-steps.adoc b/modules/ROOT/partials/auth/document-converters/php/configuration-steps.adoc index 80142bc569..83acec7629 100644 --- a/modules/ROOT/partials/auth/document-converters/php/configuration-steps.adoc +++ b/modules/ROOT/partials/auth/document-converters/php/configuration-steps.adoc @@ -2,7 +2,7 @@ === Add Your API Key -* Replace `YOUR-API-KEY` in both files with your actual {productname} API key +* Replace `no-api-key` in both files with your actual {productname} API key * The API key should be the same in both the HTML script source and the JWT payload === Add Your Private Key diff --git a/modules/ROOT/partials/auth/document-converters/php/server-setup-php.adoc b/modules/ROOT/partials/auth/document-converters/php/server-setup-php.adoc index c19845721e..62a0469961 100644 --- a/modules/ROOT/partials/auth/document-converters/php/server-setup-php.adoc +++ b/modules/ROOT/partials/auth/document-converters/php/server-setup-php.adoc @@ -25,7 +25,7 @@ header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Ac // JWT payload $payload = array( - "aud" => "YOUR-API-KEY", + "aud" => "no-api-key", "iat" => time(), // Issue timestamp "exp" => time() + 60 * 10 // Expiration time (10 minutes) ); diff --git a/modules/ROOT/partials/configuration/icon_list.adoc b/modules/ROOT/partials/configuration/icon_list.adoc index f1588936fe..c8a777f63d 100644 --- a/modules/ROOT/partials/configuration/icon_list.adoc +++ b/modules/ROOT/partials/configuration/icon_list.adoc @@ -107,9 +107,10 @@ | `+line-height+` | image:icons/line-height.svg[line-height.svg] | `+line-height.svg+` | `+line+` | image:icons/line.svg[line.svg] | `+line.svg+` | `+link+` | image:icons/link.svg[link.svg] | `+link.svg+` -| `+list-bull-circle+` | image:icons/list-bull-circle.svg[list-bull-circle.svg] | `+list-bull-circle.svg+` | `+list-bull-default+` | image:icons/list-bull-default.svg[list-bull-default.svg] | `+list-bull-default.svg+` +| `+list-bull-circle+` | image:icons/list-bull-circle.svg[list-bull-circle.svg] | `+list-bull-circle.svg+` | `+list-bull-square+` | image:icons/list-bull-square.svg[list-bull-square.svg] | `+list-bull-square.svg+` +| `+list-bull-disc+` | image:icons/list-bull-disc.svg[list-bull-disc.svg] | `+list-bull-disc.svg+` | `+list-num-default-rtl+` | image:icons/list-num-default-rtl.svg[list-num-default-rtl.svg] | `+list-num-default-rtl.svg+` | `+list-num-default+` | image:icons/list-num-default.svg[list-num-default.svg] | `+list-num-default.svg+` | `+list-num-lower-alpha-rtl+` | image:icons/list-num-lower-alpha-rtl.svg[list-num-lower-alpha-rtl.svg] | `+list-num-lower-alpha-rtl.svg+` diff --git a/modules/ROOT/partials/integrations/swing-quick-start.adoc b/modules/ROOT/partials/integrations/swing-quick-start.adoc index c8d8eb895a..3766f21954 100644 --- a/modules/ROOT/partials/integrations/swing-quick-start.adoc +++ b/modules/ROOT/partials/integrations/swing-quick-start.adoc @@ -26,11 +26,11 @@ The Swing integration allows the user to select the origin of the {productname} ---- final Config myTinyConfiguration = Config.embedded(); ---- -* Cloud deployments pull {productname} from the {cloudname}. Use this option by passing your API key and xref:editor-plugin-version.adoc#specifying-the-tinymce-editor-version-deployed-from-cloud[specifying the {cloudname} version]. +* Cloud deployments pull {productname} from the {cloudname}. Use this option by passing your API key and xref:editor-plugin-version.adoc#specifying-the-tinymce-editor-version-deployed-from-cloud[specifying the {cloudname} version]. Ensure you replace `` with your API key. + [source,java,subs="attributes+"] ---- -final Config myTinyConfiguration = Config.cloud("", "{productmajorversion}-stable"); +final Config myTinyConfiguration = Config.cloud("", "{productmajorversion}-stable"); ---- * External deployments allow to use a local version of {productname} by giving the address of the location where {productname} is being served. + diff --git a/modules/ROOT/partials/misc/premium-upgrade-promotion-option.adoc b/modules/ROOT/partials/misc/premium-upgrade-promotion-option.adoc index dadafbeaa5..f056248aaf 100644 --- a/modules/ROOT/partials/misc/premium-upgrade-promotion-option.adoc +++ b/modules/ROOT/partials/misc/premium-upgrade-promotion-option.adoc @@ -2,6 +2,6 @@ include::partial$configuration/promotion.adoc[leveloffset=+1] -// == Cloud promotion +== Cloud promotion -// include::partial$configuration/onboarding.adoc[leveloffset=+1] \ No newline at end of file +include::partial$configuration/onboarding.adoc[leveloffset=+1] \ No newline at end of file diff --git a/modules/ROOT/partials/misc/supported-versions.adoc b/modules/ROOT/partials/misc/supported-versions.adoc index e318d88f51..c0f2178bea 100644 --- a/modules/ROOT/partials/misc/supported-versions.adoc +++ b/modules/ROOT/partials/misc/supported-versions.adoc @@ -6,6 +6,8 @@ Supported versions of {productname}: [cols="^,^,^",options="header"] |=== |Version |Release Date |End of Premium Support +|7.9 |2025-05-14 |2026-11-14 +|7.8 |2025-04-09 |2026-10-09 |7.7 |2025-02-20 |2026-08-20 |7.6 |2024-12-11 |2026-06-11 |7.5 |2024-11-06 |2026-05-06