diff --git a/.api-version b/.api-version index 5eaed3b7ca..1acea15afd 100644 --- a/.api-version +++ b/.api-version @@ -1 +1 @@ -8.5.0 \ No newline at end of file +8.6.0 \ No newline at end of file diff --git a/modules/ROOT/nav.adoc b/modules/ROOT/nav.adoc index 09b6dbef0d..a788558bd1 100644 --- a/modules/ROOT/nav.adoc +++ b/modules/ROOT/nav.adoc @@ -19,6 +19,7 @@ ***** xref:bootstrap-cloud.adoc[Bootstrap] *** xref:installation-self-hosted.adoc[Self-hosted] **** xref:npm-projects.adoc[Quick start guide] +**** xref:self-hosted-trial.adoc[Self-hosted trial] **** Supported Integrations ***** React ****** xref:react-pm-host.adoc[Using a package manager with hosting] @@ -419,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.6.0 +**** xref:8.6.0-release-notes.adoc#overview[Overview] +**** xref:8.6.0-release-notes.adoc#accompanying-premium-plugin-changes[Accompanying Premium Plugin changes] +**** xref:8.6.0-release-notes.adoc#improvements[Improvements] +**** xref:8.6.0-release-notes.adoc#additions[Additions] *** {productname} 8.5.1 **** xref:8.5.1-release-notes.adoc#overview[Overview] **** xref:8.5.1-release-notes.adoc#security-fixes[Security fixes] diff --git a/modules/ROOT/pages/8.6.0-release-notes.adoc b/modules/ROOT/pages/8.6.0-release-notes.adoc new file mode 100644 index 0000000000..ee1192422b --- /dev/null +++ b/modules/ROOT/pages/8.6.0-release-notes.adoc @@ -0,0 +1,68 @@ += {productname} {release-version} +:release-version: 8.6.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 27^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:additions[Additions] + + +[[accompanying-premium-plugin-changes]] +== Accompanying Premium plugin changes + +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. + +==== Quick actions threw an error when the selection was within a single table cell +// #TINY-14434 + +Previously, running a TinyMCE AI quick action, such as Translate, on text selected within a single table cell threw an error in the console and prevented the action from completing. A text selection inside one cell was incorrectly treated as a multi-cell table selection, so the plugin used the table-specific code path instead of the standard selection path. + +In {productname} {release-version}, the plugin now confirms that a genuine multi-cell table selection is present before using the table code path, and otherwise falls back to the standard selection handling. Quick actions such as Translate now run as expected on content selected inside a single cell, while multi-cell table selection behavior is preserved. + +For information on the **TinyMCE AI** plugin, see: xref:tinymceai.adoc[TinyMCE AI]. + + +[[improvements]] +== Improvements + +{productname} {release-version} also includes the following improvement: + +=== Updated the bundled DOMPurify dependency to the latest version +// #TINY-14430 + +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. + + +[[additions]] +== Additions + +{productname} {release-version} includes the following addition: + +=== Self-hosted trial with cloud services + +{productname} {release-version} introduces self-hosted trials with optional access to cloud-powered premium features. Integrators can install {productname} and premium plugins via NPM, configure a trial license key, and optionally enable a connection to {cloudname} services by setting `+online_license_services_opt_in+` to `+true+`. + +When enabled, cloud-powered features such as Spell Checker Pro, Link Checker, Enhanced Media Embed, Export to PDF, Export to Word, Import from Word, Image Editing, and TinyMCE AI become available during the trial period without requiring a separate API key or cloud deployment. + +Without the `+online_license_services_opt_in+` option, the trial license key still validates and the editor is fully operational. All premium plugins that do not depend on cloud services continue to function. Cloud-dependent plugins are not auto-configured but can be configured manually. + +For setup instructions, see xref:self-hosted-trial.adoc[Self-hosted trial with cloud services]. diff --git a/modules/ROOT/pages/changelog.adoc b/modules/ROOT/pages/changelog.adoc index c7a738d33b..4d34f86a38 100644 --- a/modules/ROOT/pages/changelog.adoc +++ b/modules/ROOT/pages/changelog.adoc @@ -4,6 +4,12 @@ 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.6.0-release-notes.adoc[8.6.0 - 2026-06-03] + +### Improved +* Updated the bundled DOMPurify dependency to the latest version. +// #TINY-14430 + == xref:8.5.1-release-notes.adoc[8.5.1 - 2026-05-20] === Security diff --git a/modules/ROOT/pages/installation-self-hosted.adoc b/modules/ROOT/pages/installation-self-hosted.adoc index b4254b7777..a7f32ae1f6 100644 --- a/modules/ROOT/pages/installation-self-hosted.adoc +++ b/modules/ROOT/pages/installation-self-hosted.adoc @@ -13,7 +13,12 @@ xref:npm-projects.adoc[Quick start: NPM/Yarn] Install and configure {productname} using NPM or Yarn. + | +[.lead] +xref:self-hosted-trial.adoc[Self-hosted trial] + +Evaluate {productname} premium features and cloud services in a self-hosted environment using a trial license key. |=== == Integrations diff --git a/modules/ROOT/pages/license-key.adoc b/modules/ROOT/pages/license-key.adoc index f6489b14c3..c6efd97d6a 100644 --- a/modules/ROOT/pages/license-key.adoc +++ b/modules/ROOT/pages/license-key.adoc @@ -108,6 +108,16 @@ a| * Premium plugin access a| * Environments where regular license key rotation cannot be performed. + +| Trial Keys (ONLINE+) +a| +* Key format starts with `+ONLINE++` prefix +* Expires at the end of the trial period +* Requires a network connection to {cloudname} for validation +* Optionally connects to cloud services via `+online_license_services_opt_in: true+` +a| +* Evaluating {productname} in a self-hosted environment. +* See xref:self-hosted-trial.adoc[Self-hosted trial] for setup instructions. |=== === Deployment Types @@ -214,9 +224,11 @@ Only use both keys in properly configured hybrid deployments. Using both keys wi === Will {productname} "phone home" to check the license key? -No, {productname} does not contact any server to validate the license key for self-hosted deployments. +For standard self-hosted deployments using a Time-based or Version-locked commercial key, no: validation happens entirely offline and no network connection is made. -If using a cloud or hybrid deployment configuration, the license key may be checked by {cloudname}. +For cloud and hybrid deployments, the license key may be checked by {cloudname}. + +For self-hosted trial deployments using a Trial (ONLINE+) key, yes: the editor contacts {cloudname} to complete key validation. This is required for trial keys and cannot be disabled. The optional `+online_license_services_opt_in+` setting controls whether cloud service URLs are also configured, but the validation network call happens regardless. See xref:self-hosted-trial.adoc[Self-hosted trial] for details. === What happens if I don't provide a valid license key? @@ -348,10 +360,38 @@ a| * Verify that your API key is valid * Visit the link:https://support.tiny.cloud[Support Portal] if the issue persists | xref:resource-load-error[Resource Load Error] -| The editor is disabled because the {productname} license key could not be validated. | The editor is disabled because the {productname} license key could not be validated. The {productname} Commercial License Key Manager plugin was unable to load additional required resources. +| The editor is disabled because the {productname} license key could not be validated. a| * If bundling, verify that you are using the `licensekeymanager/index.js` file that imports other required resources. * If hosting, verify that a `js/commerciallicensekeymanager.js` file is also present in the `plugins/licensekeymanager` folder. + +| xref:online-plus-exchange-error[ONLINE+ Exchange Error] +| The editor is disabled because the license key could not be validated by the cloud server [type: +${errorType}${statusMsg}+] +| The editor is disabled because the license key could not be validated by the cloud server. +a| * Verify that your ONLINE+ license key is valid +* Ensure your deployment is self-hosted (ONLINE+ keys cannot be used with cloud or hybrid deployments) +* Check that your server has network access to the cloud validation endpoint +* Visit the link:https://support.tiny.cloud[Support Portal] if the issue persists + +| xref:online-plus-insecure-context[ONLINE+ Insecure Context] +| The editor is disabled because the ONLINE+ license key requires a secure context (HTTPS or localhost) [type: online-insecure-context] +| The editor is disabled because the ONLINE+ license key requires a secure context (HTTPS or localhost). +a| * Serve the application over HTTPS +* Use `localhost` for local development +* ONLINE+ keys cannot be used over plain HTTP on non-localhost origins + +| xref:online-plus-config-conflict[ONLINE+ Config Conflict] +| The editor is disabled because an ONLINE+ license key can only be configured for a self-hosted deployment. +| The editor is disabled because an ONLINE+ license key can only be configured for a self-hosted deployment. +a| * Trial (ONLINE+) keys are only valid for self-hosted deployments +* If loading {productname} from {cloudname} or using a hybrid deployment, switch to a standard commercial license key +* See the <> section for guidance on choosing the correct deployment type and key + +| xref:online-plus-services-not-configured[ONLINE+ Services Not Configured] +| ONLINE+ license key detected without +online_license_services_opt_in: true+. Cloud-service premium plugins (e.g. linkchecker, spellchecker) will not be auto-configured. Set +online_license_services_opt_in: true+ to use the bundled cloud services, or configure each plugin's service URL manually. +| +a| * Add `online_license_services_opt_in: true` to your {productname} init configuration to enable automatic cloud service URL configuration +* Alternatively, configure each cloud-service plugin's service URL manually |=== === Detailed Error Descriptions @@ -400,4 +440,28 @@ The API key validation failed due to an invalid key or inactive subscription. Th ==== Resource Load Error The TinyMCE Commercial License Key Manager plugin was unable to load additional required resources. This typically occurs when the `js/commerciallicensekeymanager.js` file is missing or not properly configured. For bundled applications, ensure you are using the `licensekeymanager/index.js` file that imports other required resources. For self-hosted installations, verify that a `js/commerciallicensekeymanager.js` file is present in the `plugins/licensekeymanager` folder. See the <> section for implementation details. +[[online-plus-exchange-error]] +==== ONLINE+ Exchange Error +This error applies to Trial (ONLINE+) license keys. See xref:self-hosted-trial.adoc[Self-hosted trial] for setup information. + +The trial license key could not be validated by the {cloudname} server. The editor will be disabled and will not recover until the configuration issue is resolved. Unlike the <>, which applies to standard API key validation, this error is specific to the trial key exchange. Ensure your deployment is self-hosted, as trial keys are not supported in cloud or hybrid deployments. If the key and deployment type are correct, check that your server can reach the {cloudname} validation endpoint. Visit the link:https://support.tiny.cloud[Support Portal] if the issue persists. + +[[online-plus-insecure-context]] +==== ONLINE+ Insecure Context +This error applies to Trial (ONLINE+) license keys. See xref:self-hosted-trial.adoc[Self-hosted trial] for setup information. + +The trial license key requires a secure context to validate correctly, because validation involves a network call to {cloudname}. A secure context is a page served over HTTPS or accessed via `localhost`. Pages served over plain HTTP on a non-localhost domain will cause the editor to be disabled. Serve the application over HTTPS, or use `localhost` for local development. + +[[online-plus-config-conflict]] +==== ONLINE+ Config Conflict +This error applies to Trial (ONLINE+) license keys. See xref:self-hosted-trial.adoc[Self-hosted trial] for setup information. + +A trial license key was detected in a cloud or hybrid deployment configuration. Trial keys are only valid for self-hosted deployments. If you are loading {productname} from {cloudname} or using a hybrid deployment, switch to a standard commercial license key. If you intend to use a self-hosted deployment, ensure {productname} is not being loaded from {cloudname}, as doing so activates the cloud validation flow which is incompatible with trial keys. See the <> section for guidance on choosing the correct deployment type and key. + +[[online-plus-services-not-configured]] +==== ONLINE+ Services Not Configured +This advisory applies to Trial (ONLINE+) license keys. See xref:self-hosted-trial.adoc[Self-hosted trial] for setup information. + +A trial license key was accepted but `online_license_services_opt_in: true` was not set in the init configuration. Without this option, {productname} will not automatically configure the cloud service endpoints for premium plugins such as linkchecker and spellchecker. Those plugins will load but will display their own errors about missing service URLs. To enable automatic configuration, add `online_license_services_opt_in: true` to your `tinymce.init` configuration. Alternatively, configure each plugin's service URL manually. + For additional assistance, visit our link:https://support.tiny.cloud[Support Portal] or contact your link:https://www.tiny.cloud/my-account[Tiny Cloud Account] manager. diff --git a/modules/ROOT/pages/release-notes.adoc b/modules/ROOT/pages/release-notes.adoc index 75dc5518d0..5c7734ff51 100644 --- a/modules/ROOT/pages/release-notes.adoc +++ b/modules/ROOT/pages/release-notes.adoc @@ -8,6 +8,12 @@ This section lists the releases for {productname} {productmajorversion} and the [cols="1,1"] |=== +a| +[.lead] +xref:8.6.0-release-notes.adoc#overview[{productname} 8.6.0] + +Release notes for {productname} 8.6.0 + a| [.lead] xref:8.5.1-release-notes.adoc#overview[{productname} 8.5.1] diff --git a/modules/ROOT/pages/self-hosted-trial.adoc b/modules/ROOT/pages/self-hosted-trial.adoc new file mode 100644 index 0000000000..98d00daa81 --- /dev/null +++ b/modules/ROOT/pages/self-hosted-trial.adoc @@ -0,0 +1,179 @@ += Self-hosted trial with cloud services +:navtitle: Self-hosted trial +:description: Set up a self-hosted {productname} trial with access to cloud-powered premium features using NPM. +:keywords: trial, self-hosted, npm, cloud services, premium plugins, license key, tinymce-premium + +== Overview + +A self-hosted trial provides access to {productname} premium plugins in a self-hosted environment. Integrators can optionally connect to {cloudname} services during the trial to evaluate server-side features such as Spell Checker Pro, Export to PDF, and TinyMCE AI, without requiring a separate server-side deployment or additional scripts. Connecting to cloud services is opt-in. Setting the `+online_license_services_opt_in+` option to `+true+` enables the connection. Without this option, the editor is licensed and operational but cloud-dependent premium plugins are not auto-configured. + +[NOTE] +==== +Only new customers can start a self-hosted trial. For trial duration and entitlement details, see the link:https://www.tiny.cloud/my-account[Tiny Cloud Account] portal. +==== + +== Prerequisites + +* A {productname} account with an active trial. Sign up at link:https://www.tiny.cloud/get-tiny/[Get {productname}]. +* A trial license key, issued from the 'Self-hosted' tab of the Customer Portal. +* https://nodejs.org/[Node.js (and npm)] installed. +* A project directory with a `+package.json+` file. Initialize one by running `+npm init+` if needed. +* A secure context: the page must be served over HTTPS or from `+localhost+`. Trial license keys require a secure context to complete key validation. + +== Setup + +=== Step 1: Install {productname} and premium plugins + +Install both the core editor and premium plugins package: + +[source,sh,subs="attributes+"] +---- +npm install tinymce@^{productmajorversion} tinymce-premium@^{productmajorversion} +---- + +=== Step 2: Configure the editor with the trial license key + +Add the trial license key to the {productname} configuration using the `+license_key+` option. Setting `+online_license_services_opt_in+` to `+true+` connects the editor to {cloudname} services, so that cloud-dependent premium plugins are auto-configured for the duration of the trial: + +[source,js] +---- +tinymce.init({ + selector: 'textarea', // change this value according to the HTML + license_key: 'your-trial-license-key', // trial license key from the Self-hosted tab + plugins: [ + 'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview', + 'anchor', 'searchreplace', 'visualblocks', 'code', 'fullscreen', + 'insertdatetime', 'media', 'table', 'help', 'wordcount', + 'tinymcespellchecker', 'exportpdf', 'exportword', 'importword', + 'linkchecker', 'mediaembed', 'editimage', 'autocorrect', 'tinymceai' + ], + toolbar: 'undo redo | blocks | bold italic | alignleft aligncenter alignright | bullist numlist outdent indent | help', + online_license_services_opt_in: true, + tinymceai_token_provider: async () => { // 'no-api-key' is replaced with the Cloud API key once the account is created + await fetch(`https://demo.api.tiny.cloud/1/no-api-key/auth/random`, { method: 'POST', credentials: 'include' }); + return await fetch(`https://demo.api.tiny.cloud/1/no-api-key/jwt/tinymceai`, { credentials: 'include' }) + .then(resp => resp.text()) + .then(token => ({ token })); + } +}); +---- + +Replace the `+'your-trial-license-key'+` placeholder with the trial license key issued from the *Self-hosted* tab of the Customer Portal. The token provider URL uses `+no-api-key+`, a Cloud API key visible on the *Cloud* tab of the Customer Portal. The placeholder is automatically replaced with the Cloud API key by visiting the Customer Portal. + +Without `+online_license_services_opt_in+`, the trial license key still validates and the editor remains fully functional, but cloud-dependent plugins (such as Spell Checker Pro, Link Checker, and Export to PDF) are not auto-configured and report that their service URL is not set. + +[IMPORTANT] +==== +Setting `+online_license_services_opt_in+` to `+true+` enables a network connection from the editor to {cloudname}. Remove this option or set it to `+false+` to disable the cloud connection at any time. +==== + +[NOTE] +==== +Most cloud-powered plugins work automatically once `+online_license_services_opt_in+` is set to `+true+`. Some plugins require additional configuration. For example, TinyMCE AI requires a `+tinymceai_token_provider+` function, shown above using the trial demo identity service. The token provider URL uses `+no-api-key+`, which is automatically replaced with the trial API key from the *Cloud* tab of the link:https://www.tiny.cloud/my-account[Customer Portal] once the account is created. This is a separate key from the trial license key. For details, see xref:tinymceai-jwt-authentication-intro.adoc#trial-demo-identity-service[TinyMCE AI trial demo identity service]. Check the documentation for each plugin in use for any additional setup it requires. +==== + +=== Step 3: Ensure the license key manager is available + +The `+tinymce-premium+` NPM package includes the license key manager. If bundling {productname}, ensure the license key manager is imported: + +[source,javascript] +---- +import 'tinymce-premium/plugins/licensekeymanager'; +---- + +For hosting setups, ensure the `+licensekeymanager+` folder is present in the `+plugins+` directory alongside all other plugins. For more details, see xref:license-key.adoc#_setting_up_the_commercial_license_key_manager[Setting up the Commercial License Key Manager]. + +== Cloud-powered features + +The following premium features require a connection to {cloudname} services and will only function when `+online_license_services_opt_in+` is set to `+true+`: + +[cols="1,2", options="header"] +|=== +| Feature | Description + +| xref:introduction-to-tiny-spellchecker.adoc[Spell Checker Pro] +| Real-time spellchecking powered by cloud-based language services. + +| xref:linkchecker.adoc[Link Checker] +| Validates hyperlinks within content using a cloud-based link validation service. + +| xref:introduction-to-mediaembed.adoc[Enhanced Media Embed] +| Rich media previews for URLs using a cloud-based media resolution service. + +| xref:exportpdf.adoc[Export to PDF] +| Converts editor content to PDF format using a cloud-based conversion service. + +| xref:exportword.adoc[Export to Word] +| Converts editor content to DOCX format using a cloud-based conversion service. + +| xref:importword.adoc[Import from Word] +| Imports DOCX content into the editor using a cloud-based conversion service. + +| xref:editimage.adoc[Image Editing] +| Advanced image editing with cloud-based image proxy support. + +| xref:tinymceai.adoc[TinyMCE AI] +| AI-powered content generation and editing. +|=== + +All other premium plugins included in the `+tinymce-premium+` package function during the trial without a cloud connection. + +For the full list of features included in a trial, see the link:https://www.tiny.cloud/my-account[Tiny Cloud Account] portal. + +== Network requirements + +When `+online_license_services_opt_in+` is enabled, the editor connects to {cloudname} services at `+*.api.tiny.cloud+`. Ensure that this domain pattern is allowed for outbound HTTPS access if the network uses a forward proxy or firewall. + +For detailed Content Security Policy (CSP) configuration, see xref:tinymce-and-csp.adoc[{productname} and Content Security Policy]. + +== Trial limitations + +[cols="1,2", options="header"] +|=== +| Limitation | Details + +| Duration +| The trial period begins at sign-up. For the current trial duration, see the link:https://www.tiny.cloud/my-account[Tiny Cloud Account] portal. + +| Eligibility +| New customers only. Existing customers with an active subscription are not eligible for a self-hosted trial. + +| After expiry +| The editor ceases to function when the trial license key expires. Purchase a commercial license to continue using {productname}. + +| Cloud services +| Cloud-powered features require an active internet connection and the `+online_license_services_opt_in+` option set to `+true+`. Without this option, cloud-dependent plugins are not auto-configured. +|=== + +== After the trial + +To continue using {productname} after the trial period: + +* *Purchase a commercial license:* Visit link:https://www.tiny.cloud/pricing[{productname} Pricing] to select a plan. A commercial license key is provided for ongoing self-hosted use. +* *Self-hosted premium services:* For production use of features such as Spell Checker, Export to PDF, and Import from Word, self-host the required server-side services or use a {cloudname} plan. See xref:bundle-intro-setup.adoc[Premium server-side services] for self-hosting options. +* *Cloud deployment:* Alternatively, switch to a fully cloud-hosted deployment. See xref:editor-and-features.adoc[Cloud deployment] for setup instructions. + +== FAQ + +[cols="1,2", options="header"] +|=== +| Question | Answer + +| Does the trial require an API key? +| The trial license key is all that is required for the editor and for most cloud-powered plugins. A separate Cloud API key is needed only to authenticate TinyMCE AI through the demo identity service. + +| Can the cloud connection be disabled? +| Yes. Remove the `+online_license_services_opt_in+` option or set it to `+false+`. Cloud-powered features will not be auto-configured, but the editor and all self-hosted plugins will continue to operate. + +| What happens when the trial expires? +| {productname} disables the editor and displays a notification indicating that the license key has expired. Purchase a commercial license to continue use. + +| Is a separate script tag required for cloud services? +| No. Unlike a hybrid deployment, the self-hosted trial does not require an additional script tag. The `+online_license_services_opt_in+` option and the trial license key handle all cloud service connectivity. + +| Which plugins work without cloud services? +| All premium plugins that do not depend on an external service function during the trial regardless of the `+online_license_services_opt_in+` option value. Only the features listed in <> require the cloud connection to be enabled. + +| Can the trial be extended? +| Trial extensions are not available through self-service. Contact link:https://support.tiny.cloud[{productname} Support] for assistance. +|=== diff --git a/modules/ROOT/partials/misc/supported-versions.adoc b/modules/ROOT/partials/misc/supported-versions.adoc index 8e8f1de81f..b40853b621 100644 --- a/modules/ROOT/partials/misc/supported-versions.adoc +++ b/modules/ROOT/partials/misc/supported-versions.adoc @@ -6,6 +6,7 @@ Supported versions of {productname}: [cols="^,^,^",options="header"] |=== |Version |Release Date |End of Premium Support +|8.6 |2026-06-03 |2027-12-03 |8.5 |2026-04-29 |2027-10-29 |8.4 |2026-03-31 |2027-09-30 |8.3 |2025-12-10 |2027-06-10