v7.3.11
A big thanks to the 5 contributors who made this release possible.
- [autocomplete] Fix highlight sync and scroll preservation (#48350) @mj12albert
- [autocomplete] Fix popper rendering issues (#48343) @mj12albert
- [autocomplete] Improve highlight tracking and selection state (#48318) @mj12albert
- [button] Fix
startIconalignment (#48339) @mj12albert - [button] Remove duplicated className entries (#48284) @silviuaavram
- [checkbox] Set
aria-checked=mixedwhen indeterminate (#48286) @mj12albert - [dialog][drawer][focus trap] Fix initial focus target (#48324) @mj12albert
- [drawer] Fix transition jump (#48340) @mj12albert
- [input] Fix layout shift with display: flex (#48359) @oliviertassinari
- [inputs] Fix autofocus in SSR environment (#48307) @mj12albert
- [popper] Persist positioning styles when popperOptions changes reference (#48302) @mj12albert
- [switch] Fix incorrect
rolewithslotProps.input(#48472) @mj12albert - [utils] Add shadow dom utils (#48309) @mj12albert
- [docs] Update banner to announce v9 (#48299) @siriwatknp
- [docs] Add v9 in the versions select in v7.mui.com (#48233) @alexfauquette
- [internal] Update some host-reference entries (#48225) @silviuaavram
All contributors of this release in alphabetical order: @alexfauquette, @mj12albert, @oliviertassinari, @silviuaavram, @siriwatknp
v16.3.0-canary.13
- Disable instant validations in draft mode: #93472
- Drop
ReferencedAsset::from_resolve_resultas a turbotask: #93297 - Turbopack: Cache effect errors, replace the write_lock Mutex with a lazily created Notify instance: #93476
Huge thanks to @samselikoff, @lukesandberg, and @bgw for helping!
Release 2026-05-06 23:03
Release 2026-05-06 23:03
- Bump jiti to 2.7.0 (#7355) (c5811aacb5) by @Copilot
- @tanstack/react-start@1.167.65
- @tanstack/react-start-rsc@0.0.44
- @tanstack/router-cli@1.166.43
- @tanstack/router-generator@1.166.42
- @tanstack/router-plugin@1.167.35
- @tanstack/router-vite-plugin@1.166.50
- @tanstack/solid-start@1.167.62
- @tanstack/start-plugin-core@1.169.20
- @tanstack/vue-start@1.167.58
v6.0.5
- fix(dockview-vue): forward didDrop and willDrop events (#1195) by @mathuo in https://github.com/mathuo/dockview/pull/1238
Full Changelog: https://github.com/mathuo/dockview/compare/v6.0.4...v6.0.5
v2.7.3
- Minimum required Node.js version is now 22.13. Node.js 20 is reaching end-of-life (see https://nodejs.org/en/about/previous-releases) and pnpm 11 hard-rejects Node releases older than 22.13. The CI matrix targets Node 22, 24, and 25. Upgrading should be straightforward — install a current Node.js release before updating Etherpad.
- The official Docker image no longer ships
curl,npm, ornpx. These were dropped to remove transitive CVEs (curl/libcurl SMB advisories, npm's bundled picomatch 4.0.3 and brace-expansion 2.0.2). The container's healthcheck now useswget(busybox built-in, always present), and Etherpad provisionspnpmviacorepackfor all runtime package operations. If you exec into the container and rely oncurlornpmfor ad-hoc tasks, install them on demand withapk add curlor use the busyboxwget/pnpmalready present.
- GDPR / privacy controls. A multi-PR series adds the building blocks operators need to satisfy data-subject requests:
- Pad deletion controls (admin-driven and self-service).
- IP / privacy audit pass across the codebase.
- Author-token cookies are now
HttpOnly, removing them from JavaScript reach. - Configurable privacy banner shown on first visit.
- Author erasure: an authenticated path for purging an individual author's identity and contributions.
- Self-update subsystem (Tier 1: notify).
- Periodic check against the GitHub Releases API for the configured repo (default
ether/etherpad). Configurable via the newupdates.*settings block, default tier"notify". Setupdates.tierto"off"to disable entirely. - The admin UI shows a banner and a dedicated "Etherpad updates" page with the current version, latest version, install method, and changelog.
- Pad users see a discreet footer badge only when the running version is severely outdated (one or more major versions behind) or flagged as vulnerable in a recent release manifest. The public endpoint that drives this never leaks the version string itself.
- New top-level
adminEmailsetting. When set, the updater emails the admin on first detection of severe / vulnerable status, with escalating cadence (weekly while vulnerable, monthly while severely outdated). PR 1 ships the dedupe + cadence logic; real SMTP wiring lands in a follow-up PR. - Tier 1 ships in this release. Tiers 2 (manual click), 3 (auto with grace window) and 4 (autonomous in maintenance window) are designed and will land in subsequent releases.
- See
doc/admin/updates.mdfor full configuration.
- Periodic check against the GitHub Releases API for the configured repo (default
- Pad compaction. New
compactPadHTTP API plusbin/compactPadandbin/compactAllPadsCLIs to reclaim database space on long-lived pads with heavy edit history (issue #6194).--keep Nretains the last N revisions;--dry-runpreviews per-pad rev counts before writing. Per-pad failures don't stop the bulk run. - New packaging targets.
- Etherpad is now published as a Snap package.
- Debian (.deb) packages are built via nfpm with a systemd unit, and a signed apt repository is published to
etherpad.org/apt.
- Editor enhancements.
- IDE-style line operations: keyboard shortcuts to duplicate or delete the current line.
- New
showMenuRightURL parameter to hide the right-side toolbar — useful for embeds that need slimmer chrome. - Click a user in the userlist to open chat with
@<name>prefilled, making mentions discoverable. - New
padOptions.fadeInactiveAuthorColorssetting plus a toolbar UI to fade the background colors of authors who have left the pad.
- Color contrast. Author colors now pick the WCAG-higher-contrast text color for readability.
- Social / mobile metadata. Pad, timeslider, and home views now emit Open Graph and Twitter Card tags (closes #7599) and a
theme-colormeta that matches the toolbar on mobile. - Plugin admin UX. The
/adminplugin browser surfaces each plugin'sep.jsondisablesdeclarations, so operators can see what a plugin will turn off before installing.
- Socket.io: don't kick authenticated duplicate-author sessions. A regression where two tabs from the same authenticated author could evict each other has been fixed (#7656 / #7678).
- Anchor scrolling. Anchor-link navigation now waits for layout to settle, so jumping to a deep link no longer overshoots.
- Plugin updater.
bin/updatePlugins.shactually updates installed plugins again (closes #6670). - Settings: stable per-release version string.
randomVersionStringis now derived from the release identity rather than regenerated on each boot, so caches behave correctly across restarts of the same version.
- The HTTP client in the backend has been migrated from
axiosto the built-infetchAPI, dropping a dependency now that Node 22 ships a stable fetch. admin/andui/workspaces moved fromrolldown-viteto upstream Vite 8.- Build and CI moved to pnpm 11 (
packageManager: "pnpm@11.0.6"); theDockerfile, snap, and all GitHub workflows are aligned. pnpm overrides have been migrated frompackage.jsontopnpm-workspace.yamlto match pnpm 11's expectations. - All client modules have been converted to ESM.
- The CI matrix tests Node 22, 24, and 25; on PRs the matrix is reduced to a single Node version to keep feedback fast.
- Frontend Playwright tests now run against the
/etherplugin set, with feature-tag based skips so plugin-incompatible specs are excluded automatically. - Build hardening: signed apt repo publishing, frozen lockfile installs across CI, Node setup pinned in every workflow, and a Docker-image CVE sweep that bumps
npm,pnpm, anduuid.
- Multiple updates from translatewiki.net.
v2.7.3
- Minimum required Node.js version is now 22.13. Node.js 20 is reaching end-of-life (see https://nodejs.org/en/about/previous-releases) and pnpm 11 hard-rejects Node releases older than 22.13. The CI matrix targets Node 22, 24, and 25. Upgrading should be straightforward — install a current Node.js release before updating Etherpad.
- The official Docker image no longer ships
curl,npm, ornpx. These were dropped to remove transitive CVEs (curl/libcurl SMB advisories, npm's bundled picomatch 4.0.3 and brace-expansion 2.0.2). The container's healthcheck now useswget(busybox built-in, always present), and Etherpad provisionspnpmviacorepackfor all runtime package operations. If you exec into the container and rely oncurlornpmfor ad-hoc tasks, install them on demand withapk add curlor use the busyboxwget/pnpmalready present.
- GDPR / privacy controls. A multi-PR series adds the building blocks operators need to satisfy data-subject requests:
- Pad deletion controls (admin-driven and self-service).
- IP / privacy audit pass across the codebase.
- Author-token cookies are now
HttpOnly, removing them from JavaScript reach. - Configurable privacy banner shown on first visit.
- Author erasure: an authenticated path for purging an individual author's identity and contributions.
- Self-update subsystem (Tier 1: notify).
- Periodic check against the GitHub Releases API for the configured repo (default
ether/etherpad). Configurable via the newupdates.*settings block, default tier"notify". Setupdates.tierto"off"to disable entirely. - The admin UI shows a banner and a dedicated "Etherpad updates" page with the current version, latest version, install method, and changelog.
- Pad users see a discreet footer badge only when the running version is severely outdated (one or more major versions behind) or flagged as vulnerable in a recent release manifest. The public endpoint that drives this never leaks the version string itself.
- New top-level
adminEmailsetting. When set, the updater emails the admin on first detection of severe / vulnerable status, with escalating cadence (weekly while vulnerable, monthly while severely outdated). PR 1 ships the dedupe + cadence logic; real SMTP wiring lands in a follow-up PR. - Tier 1 ships in this release. Tiers 2 (manual click), 3 (auto with grace window) and 4 (autonomous in maintenance window) are designed and will land in subsequent releases.
- See
doc/admin/updates.mdfor full configuration.
- Periodic check against the GitHub Releases API for the configured repo (default
- Pad compaction. New
compactPadHTTP API plusbin/compactPadandbin/compactAllPadsCLIs to reclaim database space on long-lived pads with heavy edit history (issue #6194).--keep Nretains the last N revisions;--dry-runpreviews per-pad rev counts before writing. Per-pad failures don't stop the bulk run. - New packaging targets.
- Etherpad is now published as a Snap package.
- Debian (.deb) packages are built via nfpm with a systemd unit, and a signed apt repository is published to
etherpad.org/apt.
- Editor enhancements.
- IDE-style line operations: keyboard shortcuts to duplicate or delete the current line.
- New
showMenuRightURL parameter to hide the right-side toolbar — useful for embeds that need slimmer chrome. - Click a user in the userlist to open chat with
@<name>prefilled, making mentions discoverable. - New
padOptions.fadeInactiveAuthorColorssetting plus a toolbar UI to fade the background colors of authors who have left the pad.
- Color contrast. Author colors now pick the WCAG-higher-contrast text color for readability.
- Social / mobile metadata. Pad, timeslider, and home views now emit Open Graph and Twitter Card tags (closes #7599) and a
theme-colormeta that matches the toolbar on mobile. - Plugin admin UX. The
/adminplugin browser surfaces each plugin'sep.jsondisablesdeclarations, so operators can see what a plugin will turn off before installing.
- Socket.io: don't kick authenticated duplicate-author sessions. A regression where two tabs from the same authenticated author could evict each other has been fixed (#7656 / #7678).
- Anchor scrolling. Anchor-link navigation now waits for layout to settle, so jumping to a deep link no longer overshoots.
- Plugin updater.
bin/updatePlugins.shactually updates installed plugins again (closes #6670). - Settings: stable per-release version string.
randomVersionStringis now derived from the release identity rather than regenerated on each boot, so caches behave correctly across restarts of the same version.
- The HTTP client in the backend has been migrated from
axiosto the built-infetchAPI, dropping a dependency now that Node 22 ships a stable fetch. admin/andui/workspaces moved fromrolldown-viteto upstream Vite 8.- Build and CI moved to pnpm 11 (
packageManager: "pnpm@11.0.6"); theDockerfile, snap, and all GitHub workflows are aligned. pnpm overrides have been migrated frompackage.jsontopnpm-workspace.yamlto match pnpm 11's expectations. - All client modules have been converted to ESM.
- The CI matrix tests Node 22, 24, and 25; on PRs the matrix is reduced to a single Node version to keep feedback fast.
- Frontend Playwright tests now run against the
/etherplugin set, with feature-tag based skips so plugin-incompatible specs are excluded automatically. - Build hardening: signed apt repo publishing, frozen lockfile installs across CI, Node setup pinned in every workflow, and a Docker-image CVE sweep that bumps
npm,pnpm, anduuid.
- Multiple updates from translatewiki.net.
v16.3.0-canary.12
- Refactor: Decouple request store creation from
req/res: #93499 - Detect
'use cache'module-scope deadlocks early in dev: #93500 - Bundle the
'use cache'deadlock probe worker: #93538 - Support configuring a default instant validation level : #93301
- Upgrade React from
f4e0d4ed-20260429todd453071-20260506: #93547
- [turbopack] shrink the size of futures: #93474
- [turbopack] Simplify local task tracking: #93478
- [turbopack] correct a fencepost error in our inline string descision: #93524
- Turbopack: make rcstr! macro expansion const: #93516
- Turbopack: lazy aggregation optimize via persistent pending flag: #93454
- docs: remove unreachable forms and mutations: #93509
- docs: broken link from usePathname compat call out: #93528
- Turbopack: really fix MAX_INLINE_LEN: #93531
- [ci] Clarify new preview build flow: #93540
- Turbopack: simplify asset ident constructors: #93213
Huge thanks to @lukesandberg, @unstubbable, @mischnic, @sokra, @icyJoseph, @eps1lon, @gnoff, and @vercel-release-bot for helping!
v15.5.16
This release contains security fixes for the following advisories:
High:
- GHSA-8h8q-6873-q5fj: Denial of Service with Server Components
- GHSA-267c-6grr-h53f: Middleware / Proxy bypass in App Router applications via segment-prefetch routes
- GHSA-mg66-mrh9-m8jx: Denial of Service via connection exhaustion in applications using Cache Components
- GHSA-492v-c6pp-mqqv: Middleware / Proxy bypass through dynamic route parameter injection
- GHSA-c4j6-fc7j-m34r: Server-side request forgery in applications using WebSocket upgrades
- GHSA-36qx-fr4f-26g5: Middleware / Proxy bypass in Pages Router applications using i18n
Moderate:
- GHSA-ffhc-5mcf-pf4q: Cross-site scripting in App Router applications using CSP nonces
- GHSA-gx5p-jg67-6x7h: Cross-site scripting in beforeInteractive scripts with untrusted input
- GHSA-h64f-5h5j-jqjh: Denial of Service in the Image Optimization API
- GHSA-wfc6-r584-vfw7: Cache poisoning in React Server Component responses
Low:
v16.2.5
This release contains security fixes for the following advisories:
High:
- GHSA-8h8q-6873-q5fj: Denial of Service with Server Components
- GHSA-267c-6grr-h53f: Middleware / Proxy bypass in App Router applications via segment-prefetch routes
- GHSA-mg66-mrh9-m8jx: Denial of Service via connection exhaustion in applications using Cache Components
- GHSA-492v-c6pp-mqqv: Middleware / Proxy bypass through dynamic route parameter injection
- GHSA-c4j6-fc7j-m34r: Server-side request forgery in applications using WebSocket upgrades
- GHSA-36qx-fr4f-26g5: Middleware / Proxy bypass in Pages Router applications using i18n
Moderate:
- GHSA-ffhc-5mcf-pf4q: Cross-site scripting in App Router applications using CSP nonces
- GHSA-gx5p-jg67-6x7h: Cross-site scripting in beforeInteractive scripts with untrusted input
- GHSA-h64f-5h5j-jqjh: Denial of Service in the Image Optimization API
- GHSA-wfc6-r584-vfw7: Cache poisoning in React Server Component responses
Low: