Repository navigation
1.1.0-alpha.5
Pre-release
Pre-release
This release focuses on correct read-only access, live read-only pad content, session lifecycle management, Nextcloud 34 support, and further hardening of the creation and public-share flows.
New features
- Live read-only pad viewer. Read-only users now see the current content from Etherpad instead of the last snapshot stored in the
.padfile. The view can be refreshed without reopening the file and supports safe links. - Nextcloud 34 support. The declared and tested compatibility range is now Nextcloud 31 through 34.
- Etherpad session cleanup. Expired sessions are collected in the background, and logging out of Nextcloud now revokes the user's active Etherpad sessions.
Access control and security
- Correct view-only sharing. Until now a share without write permission still opened a protected pad in the editor, because read-only handling existed only for public links. A "can view" recipient was issued an ordinary Etherpad session and could edit the pad everyone else opens. A protected pad now renders without a session; a public one gets Etherpad's read-only URL, which is presentation rather than enforcement, since a public pad is reachable by anyone holding its id. Writable shares are unaffected.
- Safer public-share resolution. Public shares now address pads primarily by their stable file ID. Renaming or moving a shared file therefore no longer breaks it, and ambiguous names such as
A+B.padandA B.padcannot resolve to the wrong file. - Hardened content retrieval. Live content responses are not cached, and permissions and bindings are checked for every request rather than only when the pad is opened. Fetching an external pad's export is capped at 5 MiB and follows no redirects, alongside the existing SSRF protections.
- Stricter frontmatter parsing. Pad metadata containing unsafe line breaks or NUL bytes is now rejected instead of being silently changed or interpreted as additional keys.
- Updated HTML sanitizer. DOMPurify was updated to 3.4.14 and the browser bundles were rebuilt.
- More compatible Content Security Policy. The obsolete
child-srcoverride was removed. It could interfere with Nextcloud workers and was incompatible with Nextcloud 34.
Reliability
- Race-safe file creation. Creation, initialization and rollback now operate on the identity and expected content of a file instead of trusting a potentially stale path or node object. Concurrent moves, replacements and duplicate requests can no longer cause the wrong file to be overwritten or deleted.
- Unified pad provisioning. New pads, restored pads and pads initialized from existing files now use the same provisioning and cleanup path. An access mode that path does not recognise is refused rather than turned into an unprotected pad.
- Unified frontend opening flow. The Viewer and embedded views now share one implementation for loading pad metadata, handling read-only content and normalizing synchronization intervals. The embedded view had been accepting any interval the server sent; the bound it gets now is the one a browser timer can actually hold.
- Public shares fall back again on unhandled file types. Clicking a shared file whose type the Viewer does not handle had nothing left to fall back to, because every asynchronous rejection from the Viewer was being swallowed. Only expected navigation redirects are ignored now.
- Machine-readable API errors. The frontend now reacts to stable error codes such as
missing_frontmatterinstead of matching translated English messages. - Single-pass pad parsing. A
.padfile is parsed once and passed through the opening and initialization flow as structured data.
File handling
- MIME-part repair. Existing
.padfiles receive the correct MIME part during upgrades, improving compatibility with MIME-based filters and search integrations. A folder namedArchive.padis no longer rewritten as a pad file. - Consistent
.padrecognition. Filename, extension and MIME rules are centralized. Uppercase.PADfiles, including files opened through DAV links, are now handled consistently. - Obsolete Files API integration removed. The old
window.OCA.Files.fileActionsregistration, which is unavailable on every supported Nextcloud version, has been removed. The native Nextcloud Viewer integration remains responsible for opening pads.
Testing and maintenance
- Added end-to-end coverage for read-only access, live content, public shares, session cleanup and logout revocation.
- Extended the CI and end-to-end matrices to cover Nextcloud 34, and added a check that holds seven files – the Psalm and end-to-end matrices, three stack defaults,
composer.jsonand the README – to the compatibility range declared inappinfo/info.xml. - Centralized duplicated file-type, Viewer URL, creation and opening rules.
- Time-dependent services now read the clock through Nextcloud's
ITimeFactory, which removes the last source of timestamp flakiness from the tests. - Updated development requirements to Node.js
^24.15.0and npm^11.0.0. - Updated the development-only
fast-uri,browserslistandhappy-domdependencies.
Upgrading
No manual migration steps are required.
The post-migration repair updates the MIME metadata of existing .pad files automatically.
If you shared a protected pad read-only on an earlier version, those recipients could edit it until now. Such a share opens the live read-only view from this release on.
The supported Nextcloud range is 31 through 34.