6 hours ago
plate

v53.3.18

@platejs/ai

Patch Changes

  • Updated @platejs/markdown.

@platejs/core

Patch Changes

  • #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.

@platejs/markdown

Patch Changes

  • #5185 by @ybai08 –

    • Apply allowedNodes, disallowedNodes and allowNode to the children of bold, italic and strikethrough, so disallowedNodes: ['a'] also removes a link inside **…**. An allowedNodes list now needs text, and any inline type such as a, listed to keep that content inside these marks, as it already does outside them.
  • #5179 by @dylans –

    • Keep HTML that has no rule as source: unknown tags, raw html nodes and HTML comments deserialize as a text leaf with rawHtml: true and 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.
  • #5177 by @dylans –

    • Deserialize reference links and images ([text][id], [id][], [id], ![alt][id]) as a and img nodes using the matching definition's URL. They were dropped before, so a paragraph holding only a reference link came back empty.
  • #5178 by @dylans –

    • 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.

@platejs/slate

Patch Changes

  • #5172 by @dylans – Bring the bundled history plugin up to date with slate-history:

    • withoutSaving, withoutMerging, withMerging and withNewBatch restore their flags when the callback throws, so one failed transform no longer stops history from recording.
    • A nested withNewBatch keeps 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.hasRange and editor.api.hasRange now share one implementation built on slate's hasRange, and still return false for 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 replacing editor.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.
  • #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.

  • cb4f514 by @github-actions[bot] – Updated slate, slate-dom, slate-react.

@platejs/test-utils

Published @platejs/test-utils@53.3.18.

@platejs/utils

Patch Changes

  • Updated @platejs/core, @platejs/slate.

platejs

Patch Changes

  • Updated @platejs/core, @platejs/slate, @platejs/utils.

Contributors

Thanks to everyone who contributed to this release:

@dylans, @ybai08

Full changelog: v53.3.17...v53.3.18

6 hours ago
ui

shadcn@4.22.1

Patch Changes

  • #12360 4381eeb Thanks @shadcn! - Fix shadcn add --all and the component picker to only include components available for the project's style.
6 hours ago
etherpad

v3.3.9

3.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.

Security

  • 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.json dependency key to rmSync/unlinkSync. A plugin declaring a dependency named like zzz/../../.. 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.

New features

  • Pad retention — delete pads nobody has edited for N days (#8340). A new padRetention setting replaces the unmaintained ep_delete_after_delay plugin without its HTML archive copies or tombstone pads. It is off by default and, once enabled, only logs would delete pad <id> until dryRun is set to false. 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 the deletePad API. Options: deleteAfterDays, warnBeforeDays, sweepIntervalHours, excludeGroupPads and excludePattern.
  • Settings — hide the deletion-token modal without widening deletion rights (#7996, #8319). The new suppressPadDeletionTokenModal setting (SUPPRESS_PAD_DELETION_TOKEN_MODAL in the container image) stops the one-time "Save your pad deletion token" modal from appearing. Until now the only way to hide it was allowPadDeletionByAllUsers: 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.

Notable fixes

  • 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.css was about 1.7 MB and every visitor downloaded all of it before the pad rendered. Fonts are now fetched separately and only when used, and pad.css is 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-color and --bg-color values 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 PnpmVersion is honoured again (#8210, #8320). Thanks to @sirsqm.

Other changes

  • 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.
6 hours ago
etherpad-lite

v3.3.9

3.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.

Security

  • 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.json dependency key to rmSync/unlinkSync. A plugin declaring a dependency named like zzz/../../.. 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.

New features

  • Pad retention — delete pads nobody has edited for N days (#8340). A new padRetention setting replaces the unmaintained ep_delete_after_delay plugin without its HTML archive copies or tombstone pads. It is off by default and, once enabled, only logs would delete pad <id> until dryRun is set to false. 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 the deletePad API. Options: deleteAfterDays, warnBeforeDays, sweepIntervalHours, excludeGroupPads and excludePattern.
  • Settings — hide the deletion-token modal without widening deletion rights (#7996, #8319). The new suppressPadDeletionTokenModal setting (SUPPRESS_PAD_DELETION_TOKEN_MODAL in the container image) stops the one-time "Save your pad deletion token" modal from appearing. Until now the only way to hide it was allowPadDeletionByAllUsers: 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.

Notable fixes

  • 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.css was about 1.7 MB and every visitor downloaded all of it before the pad rendered. Fonts are now fetched separately and only when used, and pad.css is 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-color and --bg-color values 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 PnpmVersion is honoured again (#8210, #8320). Thanks to @sirsqm.

Other changes

  • 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.
7 hours ago
driver.js

1.10.2

Fixed

  • Hints and popovers in an open <dialog> with a transform or filter now 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 of header and footer landmarks, and the centered dummy element gets no aria attributes. (#434)
7 hours ago
driver.js

1.10.2

Fixed

  • Hints and popovers in an open <dialog> with a transform or filter now 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 of header and footer landmarks, and the centered dummy element gets no aria attributes. (#434)
9 hours ago
paper.js

v0.12.20

Fixed

  • Keep the native Symbol in PaperScope#install(), which replaced it with the deprecated paper.Symbol alias of SymbolDefinition. paper.Symbol itself 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.

Changed

  • Update paper-jsdom to jsdom 28, and paper-jsdom-canvas to 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.
11 hours ago
rollup

v4.64.10

4.64.10

2026-10-18

Bug Fixes

  • 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)

Pull Requests

  • #6583: Track manual chunk dependencies when merging small chunks (@ybai08, @lukastaegert)
  • #6584: Use decoded values for JSX string attributes (@luantaraschi)
13 hours ago
paper.js

v0.12.19

Security

  • 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).

Changed

  • #importSVG() is no longer affected by the page's style sheets. Style sheets inside the imported SVG still apply.

Fixed

  • Restore settings.applyMatrix and settings.insertItems when #importSVG() fails.
  • Fix new Path.Rectangle(rectangle, radius), new Shape.Rectangle(rectangle, radius) and Item#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 of insert: { insert: false } shadowed Path#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() returning NaN for views without an element, as in web workers, which broke leading for 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).
13 hours ago
wangEditor-next

v6.5.1

What's Changed

  • [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 col elements 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)