Skip to content

Commit e2b265a

Browse files
authored
Merge pull request #19764 from ckeditor/release_to_stable
Merge release (v47.5.0) to stable
2 parents 421886f + a15fee5 commit e2b265a

File tree

154 files changed

+3266
-1439
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

154 files changed

+3266
-1439
lines changed

.circleci/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ parameters:
2626
default: false
2727
chromeVersion:
2828
type: string
29-
default: "143.0.7499.109"
29+
default: "144.0.7559.59"
3030

3131
orbs:
3232
continuation: circleci/continuation@0.1.2

.circleci/template.yml

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,23 @@ jobs:
108108
command: |
109109
export PUPPETEER_EXECUTABLE_PATH="$(command -v google-chrome)"
110110
bash scripts/check-manual-tests.sh -r ckeditor5-root
111-
111+
112+
cke5_memory_leak_test:
113+
docker:
114+
- image: cimg/node:24.11.0-browsers
115+
resource_class: medium
116+
steps:
117+
- checkout_command
118+
- halt_if_short_flow
119+
- browser-tools/install_chrome
120+
- bootstrap_repository_command
121+
- install_newest_emoji
122+
- run:
123+
name: Test for memory leaks
124+
command: |
125+
export PUPPETEER_EXECUTABLE_PATH="$(command -v google-chrome)"
126+
pnpm run test:memory
127+
112128
cke5_validators:
113129
docker:
114130
- image: cimg/node:24.11.0
@@ -298,6 +314,11 @@ workflows:
298314
branches:
299315
ignore:
300316
- stable
317+
- cke5_memory_leak_test:
318+
filters:
319+
branches:
320+
ignore:
321+
- stable
301322
- release_prepare:
302323
filters:
303324
branches:
@@ -310,6 +331,7 @@ workflows:
310331
- cke5_coverage
311332
- cke5_validators
312333
- cke5_manual
334+
- cke5_memory_leak_test
313335
- release_prepare
314336
filters:
315337
branches:
@@ -321,6 +343,7 @@ workflows:
321343
- cke5_tests_features_batch_n
322344
- cke5_validators
323345
- cke5_manual
346+
- cke5_memory_leak_test
324347
- release_prepare
325348
filters:
326349
branches:
@@ -343,6 +366,7 @@ workflows:
343366
- cke5_tests_features_batch_n
344367
- cke5_validators
345368
- cke5_manual
369+
- cke5_memory_leak_test
346370
- release_prepare
347371
- notify_ci_failure:
348372
hideAuthor: "true"

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,3 +33,10 @@ yalc.lock
3333
packages/*/src/**/*.d.ts
3434
packages/*/src/**/*.js
3535
packages/*/src/**/*.js.map
36+
37+
# Memory leak test assets.
38+
scripts/memory/assets/*.js
39+
scripts/memory/assets/*.css
40+
41+
# Ignore local environment variables.
42+
.env

CHANGELOG.md

Lines changed: 225 additions & 186 deletions
Large diffs are not rendered by default.

LICENSE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Software License Agreement
2+
==========================
3+
4+
The license for this repository is maintained in [`packages/ckeditor5/LICENSE.md`](packages/ckeditor5/LICENSE.md).

docs/features/feature-digest.md

Lines changed: 61 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ category: features
33
menu-title: Feature digest
44
meta-title: Feature digest | CKEditor 5 Documentation
55
meta-description: CKEditor 5 offers over 150 features, from basic editing capabilities like bold or italics to full-blown real-time collaboration - this page lists them all.
6-
modified_at: 2024-11-20
6+
modified_at: 2026-01-27
77
order: -998
88
---
99

@@ -1168,17 +1168,71 @@ The Table of Contents feature is a dynamic tool for organizing documents. It all
11681168

11691169
## Productivity
11701170

1171-
Speed up the content creation process with dedicated productivity utilities. The CKEditor AI feature brings generation, summarization, correction, contextual chat help, reviews, and many other capabilities right into the editor.
1171+
Speed up the content creation process with dedicated productivity utilities. The CKEditor AI feature brings generation, summarization, correction, translation, contextual chat help, reviews, and many other capabilities right into the editor.
11721172

1173-
<ck:heading-badge heading-id='ai-assistant' badge='premium'>CKEditor AI</ck:heading-badge>
1173+
<ck:heading-badge heading-id='ckeditor-ai' badge='premium'>CKEditor AI</ck:heading-badge>
11741174

11751175
By integrating AI writing assistance directly into the editing experience, CKEditor AI empowers authors with real-time AI writing support, streamlines content creation, and enhances editorial workflows across a wide range of use cases – from productivity boosts and proof-reading to content quality and consistency.
11761176

1177-
<ck:button-link size='sm' variant='secondary' href='{@link features/ckeditor-ai-overview}'>
1178-
Feature page
1179-
</ck:button-link>
1177+
<ck:columns>
1178+
<ck:card>
1179+
<ck:card-title level='4' heading-id='ai-chat'>
1180+
AI Chat <ck:badge variant='premium' />
1181+
</ck:card-title>
1182+
<ck:card-description>
1183+
A conversational AI assistant that aids content creation and editing through a dynamic chat interface. It enables multi-turn interactions, context setting, model selection, and maintains chat history for quick reference.
1184+
</ck:card-description>
1185+
<ck:card-footer>
1186+
<ck:button-link size='sm' variant='secondary' href='{@link features/ckeditor-ai-chat}'>
1187+
Feature page
1188+
</ck:button-link>
1189+
</ck:card-footer>
1190+
</ck:card>
1191+
1192+
<ck:card>
1193+
<ck:card-title level='4' heading-id='ai-quick-actions'>
1194+
AI Quick Actions <ck:badge variant='premium' />
1195+
</ck:card-title>
1196+
<ck:card-description>
1197+
Streamline routine content transformations with one-click AI-powered suggestions directly within the editor. Choose from predefined commands or ask questions about selected text for instant AI insights.
1198+
</ck:card-description>
1199+
<ck:card-footer>
1200+
<ck:button-link size='sm' variant='secondary' href='{@link features/ckeditor-ai-actions}'>
1201+
Feature page
1202+
</ck:button-link>
1203+
</ck:card-footer>
1204+
</ck:card>
1205+
1206+
<ck:card>
1207+
<ck:card-title level='4' heading-id='ai-review'>
1208+
AI Review <ck:badge variant='premium' />
1209+
</ck:card-title>
1210+
<ck:card-description>
1211+
AI-powered quality assurance for content by running checks for grammar, style, tone, and more. Review and manage AI-suggested edits directly within the document to ensure content meets professional standards.
1212+
</ck:card-description>
1213+
<ck:card-footer>
1214+
<ck:button-link size='sm' variant='secondary' href='{@link features/ckeditor-ai-review}'>
1215+
Feature page
1216+
</ck:button-link>
1217+
</ck:card-footer>
1218+
</ck:card>
1219+
1220+
<ck:card>
1221+
<ck:card-title level='4' heading-id='ai-translate'>
1222+
AI Translate <ck:badge variant='premium' />
1223+
</ck:card-title>
1224+
<ck:card-description>
1225+
AI-powered translations with an intuitive interface for reviewing and managing translation suggestions directly within the document. Supports multiple languages with production-ready quality for common language pairs.
1226+
</ck:card-description>
1227+
<ck:card-footer>
1228+
<ck:button-link size='sm' variant='secondary' href='{@link features/ckeditor-ai-translate}'>
1229+
Feature page
1230+
</ck:button-link>
1231+
</ck:card-footer>
1232+
</ck:card>
1233+
</ck:columns>
11801234

1181-
<ck:heading-badge heading-id='ai-assistant' badge='premium'>AI Assistant (older version)</ck:heading-badge>
1235+
<ck:heading-badge heading-id='ai-assistant' badge='premium'>AI Assistant (legacy)</ck:heading-badge>
11821236

11831237
The AI Assistant feature enhances editing efficiency and creativity with artificial intelligence capabilities. It allows users to generate new content and process data through custom queries or utilize a set of predefined commands that are also customizable. The feature supports integration with multiple AI API providers: OpenAI, Azure OpenAI, and Amazon Bedrock. You can also integrate it with custom models.
11841238

docs/framework/contributing/testing-environment.md

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ Each CKEditor&nbsp;5 package has its own tests suite (see for example the [engin
2424

2525
To run the automated tests, use the `pnpm run test [<args>...]` command.
2626

27-
It accepts the following arguments that must be passed after the `--` option:
27+
It accepts the following arguments:
2828

2929
* `--watch` (alias `-w`) &ndash; Whether to watch the files and execute tests whenever any file changes.
3030
* `--source-map` (alias `-s`) &ndash; Whether to generate useful source maps for the code.
@@ -205,6 +205,53 @@ pnpm run manual:verify
205205

206206
Read more about the crawler in the {@link framework/contributing/development-environment#verifying-documentation Verifying documentation} guide.
207207

208+
## Running memory leak tests
209+
210+
To run the memory leak tests, use the `pnpm run test:memory` command. It builds a browser bundle, starts a local server, and runs the tests in headless Chromium.
211+
212+
The command accepts the following arguments:
213+
214+
* `--editor` &ndash; A list of editor names to test. You can pass the option multiple times. Defaults to `BalloonEditor`, `ClassicEditor`, `DecoupledEditor`, `InlineEditor`, and `MultiRootEditor`.
215+
* `--html` &ndash; The HTML file to load from `scripts/memory/assets`. Defaults to `index.html`.
216+
* `--no-build` &ndash; Skips generating the browser build and reuses the existing editor assets.
217+
218+
### Examples
219+
220+
Run all memory leak tests:
221+
222+
```
223+
pnpm run test:memory
224+
```
225+
226+
Test only the classic and inline editors:
227+
228+
```
229+
pnpm run test:memory --editor ClassicEditor --editor InlineEditor
230+
```
231+
232+
Use a custom HTML file from `scripts/memory/assets`:
233+
234+
```
235+
pnpm run test:memory --html my-test.html
236+
```
237+
238+
Reuse existing assets:
239+
240+
```
241+
pnpm run test:memory --no-build
242+
```
243+
244+
### Interpreting the results
245+
246+
Each editor run consists of multiple create/destroy cycles. The warmup phase creates and destroys the editor a few times to populate caches and JIT state. The actual test then repeats the same create/destroy cycle more times while sampling memory between cycles. This makes the results less sensitive to first‑run effects and helps highlight steady growth trends.
247+
248+
After the run completes, the summary table reports:
249+
250+
* **Baseline** &ndash; The memory level after warmup. It is the reference point for the rest of the run and should already include initial cache effects.
251+
* **Growth** &ndash; The difference between the final measurement and the baseline across repeated cycles. Use this to spot steady memory increases over time rather than one‑off spikes.
252+
* **Tail Growth** &ndash; The spread within the last few measurements. It helps verify that memory stabilized near the end; large values suggest a still-growing footprint or high noise even after multiple cycles.
253+
* **Status** &ndash; `OK` when both Growth and Tail Growth stay below the threshold. `Exceeds threshold` or `Error` means the run should be treated as a failure.
254+
208255
## Rules for using the `--files` option
209256

210257
The `--files` (alias `-f`) option is used by both the manual and automated tests. Running tests for the root of the mono-repository is no longer supported. Each set of tests should be assigned to a package, and placed in `tests` directory. It accepts the following types of patterns:

0 commit comments

Comments
 (0)