Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
f000623
DOC-3226: Update licensing information and examples for TinyMCE 8, in…
kemister85 Jun 10, 2025
5f7c71c
Enhance license key documentation for TinyMCE 8, clarifying T8LK pref…
kemister85 Jun 11, 2025
2864ff0
DOC-3226: Update license key format across documentation and examples…
kemister85 Jun 11, 2025
7b54d82
Update Blazor integration example to include T8LK prefix in LicenseKe…
kemister85 Jun 11, 2025
d99a03b
Update Blazor integration example to include T8LK prefix in LicenseKe…
kemister85 Jun 11, 2025
3ab1524
DOC-3226: Technical and readabilty adjustments
ltrouton Jun 13, 2025
7e1a0ee
DOC-3226: Enhance license key documentation for TinyMCE 8, clarifying…
kemister85 Jul 9, 2025
7d83819
DOC-3226: Update license key documentation for TinyMCE 8, clarifying …
kemister85 Jul 9, 2025
adfe9a5
Update modules/ROOT/pages/8.0-release-notes.adoc
kemister85 Jul 11, 2025
d1fa09f
Update modules/ROOT/partials/integrations/webcomponent-tech-ref.adoc
kemister85 Jul 11, 2025
3ecaf67
Update modules/ROOT/partials/integrations/webcomponent-quick-start.adoc
kemister85 Jul 15, 2025
041dad5
Update modules/ROOT/partials/integrations/webcomponent-tech-ref.adoc
kemister85 Jul 15, 2025
29c1a20
Update modules/ROOT/partials/integrations/webcomponent-tech-ref.adoc
kemister85 Jul 15, 2025
ad0860d
Update modules/ROOT/partials/integrations/webcomponent-tech-ref.adoc
kemister85 Jul 15, 2025
44a2291
DOC-3226: Change readonly to disabled. Add new messages.
ltrouton Jul 16, 2025
320d8f3
Update modules/ROOT/partials/integrations/common/license-key-property…
kemister85 Jul 17, 2025
de54c18
Update modules/ROOT/partials/integrations/vue-quick-start.adoc
kemister85 Jul 17, 2025
ea38c35
Update modules/ROOT/partials/integrations/vue-quick-start.adoc
kemister85 Jul 17, 2025
bc7568e
Update modules/ROOT/partials/integrations/blazor-postinstall.adoc
kemister85 Jul 18, 2025
e20cb6c
Update modules/ROOT/partials/integrations/blazor-tech-ref.adoc
kemister85 Jul 18, 2025
1972095
Update modules/ROOT/partials/integrations/react-bundling.adoc
kemister85 Jul 18, 2025
480bd12
Update modules/ROOT/partials/integrations/svelte-quick-start.adoc
kemister85 Jul 18, 2025
fffd8fe
Update modules/ROOT/partials/module-loading/bundling-vite-es6-npm_edi…
kemister85 Jul 21, 2025
c589b35
Update modules/ROOT/partials/integrations/react-quick-start.adoc
kemister85 Jul 21, 2025
7179b2c
Apply suggestions from code review
kemister85 Jul 21, 2025
e7d5584
DOC-3147: Update key information for self-hosted for licensekeymanage…
kemister85 Jul 21, 2025
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
52 changes: 47 additions & 5 deletions modules/ROOT/pages/8.0-release-notes.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

= {productname} {release-version}
:release-version: 8.0.0
:navtitle: {productname} {release-version}
Expand Down Expand Up @@ -27,8 +26,10 @@ include::partial$misc/admon-releasenotes-for-stable.adoc[]
* xref:deprecated[Deprecated]
* xref:known-issues[Known issues]

[NOTE]
For additional details on {productname} {release-version} breaking changes when considering upgrading, see xref:migration-from-7x.adoc[Migrating from {productname} 7 to {productname} {release-version}].
[IMPORTANT]
====
This release includes breaking changes to the license key system. All commercial self-hosted deployments must update their license keys to use the new `T8LK:` prefix format. For details on this and other breaking changes when considering upgrading, see xref:migration-from-7x.adoc[Migrating from {productname} 7 to {productname} {release-version}].
====

[[new-premium-plugin<s>]]
New Premium plugin<s>
Expand Down Expand Up @@ -119,7 +120,48 @@ For information on using Enhanced Skins & Icon Packs, see: xref:enhanced-skins-a
[[changes]]
== Changes

{productname} {release-version} also includes the following change<s>:
{productname} {release-version} includes the following changes:

=== Enhanced license key system with T8LK prefix

The license key system in {productname} 8 has been enhanced to provide improved subscription access control and streamlined renewal processes. This change primarily affects self-hosted deployments, as cloud users ({cloudname}) do not require a license key.

[IMPORTANT]
====
* If you use {cloudname}, no license key is required - your cloud subscription automatically includes the commercial license.
* For self-hosted deployments, all commercial license keys must use the new `T8LK:` prefix format.
* Existing TinyMCE 7 license keys cannot be made compatible with TinyMCE 8 by adding the T8LK prefix.
====

Key changes for self-hosted deployments:

* New `T8LK:` prefix requirement for all commercial license keys.
* No server communication or "phone home" checks required
* Support for both date-based and version-locked keys
* Streamlined hybrid deployment configuration
* Improved support for air-gapped and offline environments

[IMPORTANT]
====
*Cloud Deployments:*

* When using {cloudname}, only an API key is required - no license key needed
* Your cloud subscription automatically includes the commercial license

*Self-hosted Deployments:*

* Commercial use: Contact your account manager or visit link:https://www.tiny.cloud/my-account[Tiny Cloud Account] to obtain a T8LK-prefixed license key
* GPL use: Set `license_key: 'gpl'` (case insensitive)
* Open source projects using premium features: Use the combined format `license_key: 'GPL+T8LK:...'`
====

=== Upgrading from TinyMCE 7

* *Cloud Users ({cloudname})*: No license key changes needed - simply update your {productname} version.
* *Self-hosted Users*: Contact your account manager to obtain a new T8LK-prefixed license key.

For more information on the new license key system, see: xref:license-key.adoc[License Key].


// === <TINY-vwxyz 1 changelog entry>
// #TINY-vwxyz1
Expand Down Expand Up @@ -182,4 +224,4 @@ There <is one | are <number> known issue<s> in {productname} {release-version}.
// #TINY-vwxyz1

// CCFR here.
// **Status**: This issue is currently being investigated.
// **Status**: This issue is currently being investigated.
306 changes: 293 additions & 13 deletions modules/ROOT/pages/license-key.adoc

Large diffs are not rendered by default.

12 changes: 12 additions & 0 deletions modules/ROOT/pages/vite-es6-npm.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,18 @@ This guide requires the following:

* Node.js and npm.
* Basic knowledge of how to use https://vitejs.dev[Vite].
* For self-hosted deployments: A valid license key starting with `T8LK:` from your link:{accountpageurl}/[{accountpage}]
* (Optional: For premium features) The latest premium .zip bundle of TinyMCE that includes premium plugins.

[IMPORTANT]
====
When self-hosting TinyMCE 8:
* A license key is required for commercial deployments
* Keys must start with the `T8LK:` prefix
* For hybrid deployments that need both cloud features and local fallback, you can use both `license_key` and `api_key`
====

== Procedures

:is_zip_install: vite
Expand Down Expand Up @@ -72,4 +82,6 @@ npx vite preview
----
:!is_zip_install:



include::partial$module-loading/bundling-next-steps.adoc[]
2 changes: 1 addition & 1 deletion modules/ROOT/partials/install/basic-quickstart-base.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ ifeval::["{productSource}" != "cloud"]
<script>
tinymce.init({
selector: '#mytextarea',
license_key: 'gpl|<your-license-key>'
license_key: 'gpl' // gpl for open source, T8LK:... for commercial
});
</script>
</head>
Expand Down
21 changes: 9 additions & 12 deletions modules/ROOT/partials/integrations/angular-tech-ref.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -130,21 +130,18 @@ include::partial$misc/get-an-api-key.adoc[]
[[licensekey]]
=== `+licenseKey+`

{cloudname} License key.
include::partial$integrations/common/license-key-property.adoc[]

Use this when self-hosting {productname} instead of loading from {cloudname}. For more information, see: xref:license-key.adoc[License Key].

*Type:* `+String+`

*Default value:* `+undefined+`

*Possible values:* `undefined`, `'gpl'` or a valid {productname} license key

==== Example: using `+licenseKey+`
==== Example: Commercial license
[source,html]
----
<editor licenseKey="T8LK:..." />
----

[source,jsx]
==== Example: using `+licenseKey+` with GPL
[source,html]
----
<editor licenseKey='your-license-key' />
<editor licenseKey="gpl" />
----

[[cloudchannel]]
Expand Down
25 changes: 13 additions & 12 deletions modules/ROOT/partials/integrations/blazor-postinstall.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
. Verify the installation by checking the `+ItemGroup+` references in the project file. For example, if the project is named _BlazorApp_, the relevant file would be `+BlazorApp.csproj+` with the dependency referenced as follows:
. Verify the installation by checking the `+ItemGroup+` references in the project file. For example, if the project is named _BlazorApp_, the relevant file would be `+BlazorApp.csproj+` with the dependency referenced as follows:
+
[source,xml]
----
Expand All @@ -16,9 +16,9 @@
+
[NOTE]
====
The location of the script depends on the type of Blazor app, including Blazor Server and Blazor WebAssembly (WASM) which are not covered in this guide.
The location of the script depends on the type of Blazor app, including Blazor Server and Blazor WebAssembly (WASM) which are not covered in this guide.

* If using Blazor Server, add the script in `+Pages/_Host.cshtml+`, for example:
* If using Blazor Server, add the script in `+Pages/_Host.cshtml+`, for example:
+
[source,html]
----
Expand All @@ -35,16 +35,16 @@ The location of the script depends on the type of Blazor app, including Blazor S
====
+

. Add the `+Editor+` component to a page by either:
* Using the `+using+` directive:
. Add the `+Editor+` component to a page by either:
* Using the `+using+` directive:
+
[source,cs]
----
@using TinyMCE.Blazor
<Editor />
----
+
For example:
For example:
+
_File:_ `+Pages/Index.razor+`
+
Expand All @@ -58,7 +58,7 @@ _File:_ `+Pages/Index.razor+`
<h2>Welcome to your new app.</h2>
<Editor />
----
* Using the component with its namespace:
* Using the component with its namespace:
+
[source,cs]
----
Expand All @@ -78,10 +78,10 @@ _File:_ `+Pages/Index.razor+`
<h1>Hello, world!</h1>
<h2>Welcome to your new app.</h2>
<Editor />
----
----
+
[IMPORTANT]
In a Blazor Web App, different render modes determine how components are rendered and how interactivity is handled. To enable JavaScript interactivity, ensure that `+@rendermode InteractiveServer+` is specified in a page component.
In a Blazor Web App, different render modes determine how components are rendered and how interactivity is handled. To enable JavaScript interactivity, ensure that `+@rendermode InteractiveServer+` is specified in a page component.
+

ifeval::["{productSource}" == "cloud"]
Expand All @@ -91,7 +91,7 @@ ifeval::["{productSource}" == "cloud"]
[source,cs]
----
<Editor ApiKey="no-api-key" />
----
----
+
endif::[]

Expand All @@ -101,8 +101,9 @@ ifeval::["{productSource}" != "cloud"]
+
[source,cs]
----
<Editor LicenseKey="your-license-key" />
----
// gpl for open source, T8LK:... for commercial
<Editor LicenseKey="gpl" />
----
+

. To load {productname} from the self-hosted package instead of the {cloudname}, configure the `+ScriptSrc+` property:
Expand Down
20 changes: 15 additions & 5 deletions modules/ROOT/partials/integrations/blazor-tech-ref.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ The `+TinyMCE.Blazor+` `+Editor+` component accepts the following properties:
JsConfSrc="path_to_jsObj"
Conf="@yourConf"
ApiKey="no-api-key"
LicenseKey="your-license-key"
LicenseKey="gpl" // gpl for open source, T8LK:... for commercial
ScriptSrc="/path/to/tinymce.min.js"
ClassName="tinymce-wrapper"
/>
Expand Down Expand Up @@ -188,19 +188,29 @@ In your component:

=== `LicenseKey`

Specifies the {productname} license key. Required for self-hosted deployments of {productname}. This property is not required for deployments using the {cloudname}. For more information on licensing, see: xref:license-key.adoc[License key].

*Type:* `+String+`
include::partial$integrations/common/license-key-property.adoc[]

==== Example: Commercial license (TinyMCE 8+)
[source,cs]
----
<Editor
LicenseKey="T8LK:..."
/>
----

==== Example using LicenseKey
Use this example when you have a commercial license for TinyMCE 8 or newer. The T8LK prefix is required.

==== Example: Open source GPL license
[source,cs]
----
<Editor
LicenseKey="your-license-key"
LicenseKey="gpl"
/>
----

Use this example when you're using TinyMCE under the open source GPL license in a self-hosted environment.

=== `ScriptSrc`

Use the `+ScriptSrc+` property to specify the location of {productname} to lazy load when the application is not using {cloudname}. This setting is required if the application uses a self-hosted version of {productname}, such as the https://www.nuget.org/packages/TinyMCE/[{productname} NuGet package] or a .zip package of {productname}.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
Specifies the {productname} license key. Required for self-hosted deployments of {productname}. This property is **not required** for cloud-only deployments using the {cloudname} as your cloud subscription automatically includes the commercial license. For more information, see: xref:license-key.adoc[License Key].

*Type:* `+String+`

*Default value:* `+undefined+`

*Possible values:*
* `undefined` - Use this when loading from {cloudname} with an API key
* `'gpl'` - For open source projects using GPL license
* `'T8LK:...'` - For commercial {productname} installations (must use this prefix for version 8+)

[NOTE]
====
In hybrid deployments (using both cloud and self-hosted features):

* You can provide both an API key and a license key
* The editor will use cloud services when available
* It will automatically fall back to the local license key if cloud services are not contactable
====
6 changes: 3 additions & 3 deletions modules/ROOT/partials/integrations/jquery-quick-start.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ ifeval::["{productSource}" == "package-manager"]
<script>
$('textarea#tiny').tinymce({
height: 500,
license_key: '<your license key>',
license_key: 'gpl' // gpl for open source, T8LK:... for commercial
/* other settings... */,
});
</script>
Expand Down Expand Up @@ -149,7 +149,7 @@ ifeval::["{productSource}" == "package-manager"]
<script>
$('textarea#tiny').tinymce({
height: 500,
license_key: '<your-license-key>',
license_key: 'gpl' // gpl for open source, T8LK:... for commercial
menubar: false,
plugins: [
'advlist', 'autolink', 'lists', 'link', 'image', 'charmap', 'preview',
Expand Down Expand Up @@ -219,4 +219,4 @@ $(document).on('focusin', function(e) {
});
----

This code is required because jQuery blocks all `focusin` calls from elements outside the dialog. For a working example, http://fiddle.tiny.cloud/ZZhaab/4[try this {productname} fiddle].
This code is required because jQuery blocks all `focusin` calls from elements outside the dialog. For a working example, http://fiddle.tiny.cloud/ZZhaab/4[try this {productname} fiddle].
4 changes: 2 additions & 2 deletions modules/ROOT/partials/integrations/react-bundling.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,9 @@ import 'tinymce/skins/ui/oxide/content.js';
export default function TinyEditorComponent(props) {
return (
<Editor
licenseKey='your-license-key'
licenseKey='gpl' // gpl for open source, T8LK:... for commercial
{...props}
/>
);
}
----
----
8 changes: 4 additions & 4 deletions modules/ROOT/partials/integrations/react-quick-start.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ export default function App() {
<>
<Editor
tinymceScriptSrc='/tinymce/tinymce.min.js'
licenseKey='your-license-key'
licenseKey='gpl' // gpl for open source, T8LK:... for commercial
onInit={(_evt, editor) => editorRef.current = editor}
initialValue='<p>This is the initial content of the editor.</p>'
init={{
Expand Down Expand Up @@ -243,7 +243,7 @@ import 'tinymce/skins/ui/oxide/content';
export default function BundledEditor(props) {
return (
<Editor
licenseKey='your-license-key'
licenseKey='gpl' // gpl for open source, T8LK:... for commercial
{...props}
/>
);
Expand Down Expand Up @@ -358,7 +358,7 @@ export default function App() {
<>
<Editor
tinymceScriptSrc='/tinymce/tinymce.min.js'
licenseKey='your-license-key'
licenseKey='gpl' // gpl for open source, T8LK:... for commercial
onInit={(_evt, editor) => editorRef.current = editor}
initialValue='<p>This is the initial content of the editor.</p>'
init={{
Expand Down Expand Up @@ -496,7 +496,7 @@ import './tinymce/skins/ui/oxide/content.js';
export default function BundledEditor(props) {
return (
<Editor
licenseKey='your-lisense-key'
licenseKey='gpl' // gpl for open source, T8LK:... for commercial
{...props}
/>
);
Expand Down
Loading