Changelog

August 20, 2026

Curvenote sites can ship their own render plugins

Sites can now ship their own render plugins reaching the Curvenote CLI, Curvenote Theme, and the Reader together, so a site can customize how its content renders without a theme rebuild. Alongside that, Curvenote SCMS now runs end-to-end against a local S3-compatible storage stack out of the box, and Curvenote Theme picks up two article-layout options that make content-grid and centered-logo choices selectable from config for the first time.

Curvenote SCMS

Curvenote SCMS runs fully local, out of the box. The stack now boots end-to-end against a local S3-compatible object store, so contributors and operators evaluating Curvenote SCMS can bring the whole system up on a fresh clone without cloud credentials. Signed upload URLs and content-delivery reads route through a browser-reachable endpoint, and a shared bucket-resolution helper makes sure that files copied between public and private buckets after upload still sign against the right host.

Base-platform hooks for a new Foundry extension. Curvenote SCMS gains the platform pieces an extension needs to run a scoped upload wizard: richer descriptions in the Create Work dropdown, a resume-draft route so an extension can pick up a partially uploaded work, and an optional path filter on document-preview fetches so a wizard can request a main-manuscript-only preview without changing behavior for anything else.

A coordinated ecosystem security upgrade across Curvenote SCMS and the Curvenote CLI clears a batch of open security advisories together, and lifts the shared routing, token, and validation libraries onto aligned versions so future dependency updates land in one place instead of split across packages.

Curvenote Reader

Backmatter and the “On this page” outline read from one table. The list of backmatter sections — with each section’s anchor, title, visibility, and design gating — is now the single source of truth for both the outline and the Backmatter component, so the two can no longer drift out of sync. Two bugs come out with it: a footnote-reference that had no matching footnote definition no longer reports a footnotes section that will not actually render, and abbreviations declared in frontmatter are now detected in the no-argument callers where they were previously missed.

The “On this page” outline and the Backmatter component now read from the same table, so sections like Acknowledgements, Footnotes, Abbreviations, and References are now also listed.

Figure 1:The “On this page” outline and the Backmatter component now read from the same table, so sections like Acknowledgements, Footnotes, Abbreviations, and References are now also listed.

openRxiv Labs — Curvenote Reader

openRxiv Labs

This section covers work on the openRxiv Reader, part of openRxiv Labs — the openRxiv preprint reader powered by Curvenote Reader.

JATS ingestion gets more forgiving. Article subjects are now normalized consistently across the JATS conversion pipeline, and articles that use a bare <table> element (without a <table-wrap> parent) are now ingested cleanly — fixing article rendering for JATS documents that don’t wrap tables the “standard” way.

Cold-start and route-bundle fixes. The openRxiv Reader now loads its own app configuration before the runtime tries to resolve it (fixing an intermittent cold-start crash).

Curvenote Theme

Sites can ship their own render plugins. Curvenote Theme now loads site-declared render plugins at page load, keeps them across configuration reloads, and rewrites plugin URLs locally against the site’s content-delivery origin — so a site operator can drop in a customized renderer for a directive or a figure type without a theme rebuild. See documentation on adding a render plugin to a site for the details.

A fancy-note directive drawn by a renderer the site ships itself: the body is ordinary MyST, while the badge, frame, and striped background come entirely from the site’s own plugin.

Figure 2:A fancy-note directive drawn by a renderer the site ships itself: the body is ordinary MyST, while the badge, frame, and striped background come entirely from the site’s own plugin.

Two design options reshape article layout. A new content_grid option makes the article-grid variants — default (with a margin column), centered, and left-pinned — selectable from a site’s design configuration. A companion center_nav_logo option lifts the site logo out of the header flow and centers it, with nav links moved to the left so they cannot collide with it.

Buttons render with a pointer cursor again. A recent regression in the underlying design system’s preflight stripped the pointer cursor from every unstyled button; the shared button base now sets it once so every button in every Curvenote theme shows the right cursor.

Curvenote CLI

Anonymous curvenote start and curvenote build. The Curvenote CLI no longer requires a login token to run curvenote start or curvenote build, so continuous-integration jobs and first-time users can preview and build a Curvenote site on a fresh install without an account.

Site-shipped render plugins on the CLI side. The CLI bundles a site’s own render plugins as part of build, start, and deploy — with an incremental cache that skips rebundling when the source graph has not changed, and a soft-fail path that continues the build with a clear error if a plugin cannot be emitted.