v53.3.18
- Updated
@platejs/markdown.
-
#5172 by @dylans – Upgrade to slate 0.142.1, slate-dom 0.142.0, slate-react 0.142.0 and slate-hyperscript 0.138.3.
-
#5190 by @dylans – Upgrade to slate 0.146.0, slate-dom 0.146.0 and slate-react 0.145.1.
-
- Apply
allowedNodes,disallowedNodesandallowNodeto the children of bold, italic and strikethrough, sodisallowedNodes: ['a']also removes a link inside**…**. AnallowedNodeslist now needstext, and any inline type such asa, listed to keep that content inside these marks, as it already does outside them.
- Apply
-
- Keep HTML that has no rule as source: unknown tags, raw
htmlnodes and HTML comments deserialize as a text leaf withrawHtml: trueand serialize back unescaped. Before,<b>x</b>came back as\<b>x\</b>, and comments were dropped. - Keep Markdown inside unknown tags:
<b>`code`</b>no longer loses its backticks, and a list or paragraph inside a block tag such as<details>keeps the blank lines around it, so it still renders as Markdown.
- Keep HTML that has no rule as source: unknown tags, raw
-
- Deserialize reference links and images (
[text][id],[id][],[id],![alt][id]) asaandimgnodes using the matching definition's URL. They were dropped before, so a paragraph holding only a reference link came back empty.
- Deserialize reference links and images (
-
- Stop serializing the empty text around inline elements (links, mentions, footnote references) as a zero-width space. Only an empty paragraph is written as
now, so Markdown output no longer carries invisible characters at the start or end of a paragraph.
- Stop serializing the empty text around inline elements (links, mentions, footnote references) as a zero-width space. Only an empty paragraph is written as
-
#5172 by @dylans – Bring the bundled history plugin up to date with slate-history:
withoutSaving,withoutMerging,withMergingandwithNewBatchrestore their flags when the callback throws, so one failed transform no longer stops history from recording.- A nested
withNewBatchkeeps the enclosing batch's split. - An edit no longer merges into the previous undo step just because another operation, such as a selection change, ran earlier in the same tick.
- Inside
withoutMerging, a transform's normalization stays in the same undo step as the transform, so undoing it no longer leaves an unnormalized document behind.
editor.hasRangeandeditor.api.hasRangenow share one implementation built on slate'shasRange, and still returnfalsefor a missing range. -
#5190 by @dylans – Bring the bundled history plugin up to date with slate-history 0.144.0:
- Add
editor.tf.setChildren(children), which applies an outside document through operations instead of replacingeditor.children, so the selection, refs and history stay valid. Each call is its own undo step, separate from typing before and after it. - Undo and redo now account for changes applied with
editor.tf.withoutSaving. Saved steps are moved past each unsaved operation, so a block inserted above earlier typing, or text inserted before it, no longer makes undo remove the wrong characters. Steps whose content was removed, or that can no longer be applied, are dropped.
- Add
-
#5172 by @dylans – Upgrade to slate 0.142.1, slate-dom 0.142.0, slate-react 0.142.0 and slate-hyperscript 0.138.3.
-
#5190 by @dylans – Upgrade to slate 0.146.0, slate-dom 0.146.0 and slate-react 0.145.1.
-
cb4f514by @github-actions[bot] – Updatedslate,slate-dom,slate-react.
Published @platejs/test-utils@53.3.18.
- Updated
@platejs/core,@platejs/slate.
- Updated
@platejs/core,@platejs/slate,@platejs/utils.
Thanks to everyone who contributed to this release:
@dylans, @ybai08
Full changelog: v53.3.17...v53.3.18
v3.3.9
3.3.9 is a security and feature release. It closes a path traversal in plugin uninstall (GHSA-g9xm-3pqr-wcph), adds built-in pad retention, and ships a batch of fixes.
- Plugins — dependency names are validated on uninstall as well as install (GHSA-g9xm-3pqr-wcph). GHSA-92hr-gmr6-h8cp made the plugin installer validate dependency names on install, but the uninstall path still passed the raw
package.jsondependency key tormSync/unlinkSync. A plugin declaring a dependency named likezzz/../../..could therefore delete a directory outside the plugin folder when an admin uninstalled it. Every install and uninstall path now resolves dependency paths through one helper that refuses names that escape the plugin directory. Exploiting it needs an admin to install and then uninstall the malicious plugin. Reported by @baeseungwon1010.
- Pad retention — delete pads nobody has edited for N days (#8340). A new
padRetentionsetting replaces the unmaintainedep_delete_after_delayplugin without its HTML archive copies or tombstone pads. It is off by default and, once enabled, only logswould delete pad <id>untildryRunis set tofalse. A periodic sweep reads each pad's last-edit time straight from the database without loading pads into the cache, and an overdue pad is also deleted when someone opens it instead of showing stale content. Deletion uses the same path as thedeletePadAPI. Options:deleteAfterDays,warnBeforeDays,sweepIntervalHours,excludeGroupPadsandexcludePattern. - Settings — hide the deletion-token modal without widening deletion rights (#7996, #8319). The new
suppressPadDeletionTokenModalsetting (SUPPRESS_PAD_DELETION_TOKEN_MODALin the container image) stops the one-time "Save your pad deletion token" modal from appearing. Until now the only way to hide it wasallowPadDeletionByAllUsers: true, which also let any editor delete the pad. The token is still issued and still works, and non-creators still can't delete. Thanks to @sirsqm.
- Performance — fonts are no longer inlined into the minified CSS (#8268, #8314). The pad stylesheet embedded every editor and icon font as base64, so
pad.csswas about 1.7 MB and every visitor downloaded all of it before the pad rendered. Fonts are now fetched separately and only when used, andpad.cssis about 61 KB. Thanks to @sirsqm. - Toolbar — a popup opened from the toolbar keeps focus (#8345). The editor grabbed focus back after every toolbar command, so in current Firefox Escape didn't close the settings or users popup and typing a name didn't reach the name field.
- Colibris — dark mode colours apply everywhere (#8271). The light
--text-colorand--bg-colorvalues could override the dark ones on elements outside the editor, such as the history banner. Thanks to @bobmullut. - Session transfer — failed requests are reported as failures (#8172, #8273). Errors from the session transfer endpoint were treated as success. They now show a localized error, and a retry clears it. Thanks to @toashu123.
- Share dialog — "Read only" is now "Use read-only link" (#8181, #8326). The checkbox switches which link and embed code you copy; it never locked the pad. The new label and an accessible description say so. Thanks to @jum-apzn.
- Docker —
--build-arg PnpmVersionis honoured again (#8210, #8320). Thanks to @sirsqm.
- Localisation updates from translatewiki.net.
- Dependency updates, including express 5.3.0, ejs 7.0.1, nodemailer 10.1.1, surrealdb 2.1.1, mssql 12.7.9 and ueberdb2 6.1.18.
v3.3.9
3.3.9 is a security and feature release. It closes a path traversal in plugin uninstall (GHSA-g9xm-3pqr-wcph), adds built-in pad retention, and ships a batch of fixes.
- Plugins — dependency names are validated on uninstall as well as install (GHSA-g9xm-3pqr-wcph). GHSA-92hr-gmr6-h8cp made the plugin installer validate dependency names on install, but the uninstall path still passed the raw
package.jsondependency key tormSync/unlinkSync. A plugin declaring a dependency named likezzz/../../..could therefore delete a directory outside the plugin folder when an admin uninstalled it. Every install and uninstall path now resolves dependency paths through one helper that refuses names that escape the plugin directory. Exploiting it needs an admin to install and then uninstall the malicious plugin. Reported by @baeseungwon1010.
- Pad retention — delete pads nobody has edited for N days (#8340). A new
padRetentionsetting replaces the unmaintainedep_delete_after_delayplugin without its HTML archive copies or tombstone pads. It is off by default and, once enabled, only logswould delete pad <id>untildryRunis set tofalse. A periodic sweep reads each pad's last-edit time straight from the database without loading pads into the cache, and an overdue pad is also deleted when someone opens it instead of showing stale content. Deletion uses the same path as thedeletePadAPI. Options:deleteAfterDays,warnBeforeDays,sweepIntervalHours,excludeGroupPadsandexcludePattern. - Settings — hide the deletion-token modal without widening deletion rights (#7996, #8319). The new
suppressPadDeletionTokenModalsetting (SUPPRESS_PAD_DELETION_TOKEN_MODALin the container image) stops the one-time "Save your pad deletion token" modal from appearing. Until now the only way to hide it wasallowPadDeletionByAllUsers: true, which also let any editor delete the pad. The token is still issued and still works, and non-creators still can't delete. Thanks to @sirsqm.
- Performance — fonts are no longer inlined into the minified CSS (#8268, #8314). The pad stylesheet embedded every editor and icon font as base64, so
pad.csswas about 1.7 MB and every visitor downloaded all of it before the pad rendered. Fonts are now fetched separately and only when used, andpad.cssis about 61 KB. Thanks to @sirsqm. - Toolbar — a popup opened from the toolbar keeps focus (#8345). The editor grabbed focus back after every toolbar command, so in current Firefox Escape didn't close the settings or users popup and typing a name didn't reach the name field.
- Colibris — dark mode colours apply everywhere (#8271). The light
--text-colorand--bg-colorvalues could override the dark ones on elements outside the editor, such as the history banner. Thanks to @bobmullut. - Session transfer — failed requests are reported as failures (#8172, #8273). Errors from the session transfer endpoint were treated as success. They now show a localized error, and a retry clears it. Thanks to @toashu123.
- Share dialog — "Read only" is now "Use read-only link" (#8181, #8326). The checkbox switches which link and embed code you copy; it never locked the pad. The new label and an accessible description say so. Thanks to @jum-apzn.
- Docker —
--build-arg PnpmVersionis honoured again (#8210, #8320). Thanks to @sirsqm.
- Localisation updates from translatewiki.net.
- Dependency updates, including express 5.3.0, ejs 7.0.1, nodemailer 10.1.1, surrealdb 2.1.1, mssql 12.7.9 and ueberdb2 6.1.18.
1.10.2
- Hints and popovers in an open
<dialog>with atransformorfilternow stay next to their element, also after the dialog reopens. (#627) - Tour steps scrolled out of a visible scrollable container are now scrolled into view. (#577)
- The popover title and footer are
divs instead ofheaderandfooterlandmarks, and the centered dummy element gets no aria attributes. (#434)
1.10.2
- Hints and popovers in an open
<dialog>with atransformorfilternow stay next to their element, also after the dialog reopens. (#627) - Tour steps scrolled out of a visible scrollable container are now scrolled into view. (#577)
- The popover title and footer are
divs instead ofheaderandfooterlandmarks, and the centered dummy element gets no aria attributes. (#434)
v0.12.20
- Keep the native
SymbolinPaperScope#install(), which replaced it with the deprecatedpaper.Symbolalias ofSymbolDefinition.paper.Symbolitself still works. - Support jsdom 20 and newer in Node.js: find jsdom's internals where jsdom 28 moved them, and run in worker mode without the canvas module again, which failed to load before.
- Update
paper-jsdomto jsdom 28, andpaper-jsdom-canvasto jsdom 28 and canvas 3, which install on current Node.js versions. Both now require Node.js 20.19, 22.12 or 24 and newer.
v4.64.10
2026-10-18
- Avoid breaking lazy loading when a dynamic import only contains reexports from a manual chunk (#6583)
- Ensure HTML entities in JSX are properly decoded in the output (#6584)
v0.12.19
- Fix XSS in
#importSVG(): imported SVG is now attached to a sandboxed iframe instead of the page while its styles are computed, so it can't run scripts or load resources (#2100).
#importSVG()is no longer affected by the page's style sheets. Style sheets inside the imported SVG still apply.
- Restore
settings.applyMatrixandsettings.insertItemswhen#importSVG()fails. - Fix
new Path.Rectangle(rectangle, radius),new Shape.Rectangle(rectangle, radius)andItem#fitBounds(rectangle, fill)when the rectangle is given as an array or object literal. - Fix
new Raster(source, position)ignoring the position. - Fix
new Path.Arc()handling ofinsert:{ insert: false }shadowedPath#insert(), and{ insert: true }was ignored. - Fix tweening of points, colors and relative values in
paper-core, which relied on PaperScript. - Fix setting
ToolEvent#count, which had no effect. - Fix
new Shape({ type: 'circle', radius })without a size, which threw. - Fix
View#getPixelSize()returningNaNfor views without an element, as in web workers, which brokeleadingfor font sizes in units other than pixels. - Only publish the intended files to npm, removing an accidental copy of the whole distribution from the package (12.3 MB → 6.2 MB unpacked).
v6.5.1
- [core] Avoid focusing a blurred editor while replacing its HTML content, preventing mobile browsers from opening the soft keyboard during programmatic updates.
- [table-module] Fix table HTML serialization so void
colelements are emitted without invalid closing tags.
Package versions
| Package | Version | Source |
|---|---|---|
@wangeditor-next/basic-modules |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/code-highlight |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/core |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/editor |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/editor-for-react |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/editor-for-vue |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/editor-for-vue2 |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/list-module |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/plugin-attachment |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/plugin-ctrl-enter |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/plugin-float-image |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/plugin-formula |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/plugin-link-card |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/plugin-markdown |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/plugin-mention |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/table-module |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/upload-image-module |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/video-module |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/yjs |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/yjs-for-react |
6.5.1 |
Source (tar.gz) |
@wangeditor-next/yjs-for-vue |
6.5.1 |
Source (tar.gz) |