Changelog

Preview links keep working through long review sessions

Preview cookies in Curvenote Theme are now bounded, self-pruning, and scoped only to preview routes, so heavy review sessions no longer accumulate cookies until the browser’s request-header limit rejects the next click. Alongside that, the openRxiv Labs reader gates its cross-reference JSON endpoint against casual scraping without breaking hover cards, JATS ingestion picks up more of the metadata real preprints ship with, and Curvenote Reader stabilizes figure caption “Show more” and the Jupyter Play icon.

Curvenote Reader

Steadier figure captions and cleaner Jupyter previews. Figure caption “Show more” no longer flickers at the truncation edge, and the toggle no longer appears for short captions that contain inline math — so long captions expand cleanly and short captions stop offering a control they don’t need. Embedded Jupyter previews also render a stable Play icon: the server-rendered markup and the client-hydrated markup now match, so the icon no longer briefly redraws itself on load.

Figure 1:A long figure caption expands and collapses in place: “Show more” holds steady at the truncation edge, so readers can open the full caption without the control flickering under the cursor.

openRxiv Labs — Curvenote Reader

openRxiv Labs

The openRxiv Labs reader (https://reader.openrxivlabs.org), which serves bioRxiv and medRxiv, is built on Curvenote Reader. Updates here reach real readers on those sites.

The article JSON endpoint stops being a scrape target. The article JSON endpoint that powers hover-card cross-references is now gated. Scripted fetch() calls from hover cards and identified Curvenote clients continue to be served, while top-level navigation (pasting the .json URL into the address bar) and bare HTTP clients get a 403.

JATS ingestion covers more of what real preprints ship with. The JATS pipeline now handles additional author-email shapes and the equal_contributor attribute on contributor blocks, normalizes subject strings so downstream faceting sees a consistent form regardless of source-XML variation, and accepts tables that appear outside a <table-wrap> container instead of dropping them. The net effect is that more preprints render correctly on first ingest, with fewer authors missing metadata and fewer articles missing tables.

Curvenote Theme

Preview links stop silently locking editors out. Editors reviewing many submissions used to accumulate one preview cookie per work, and the browser’s per-domain cookie limit would eventually reject the request before it reached Theme — a hard-to-diagnose failure that only surfaced after enough previews had been opened. Preview cookies now expire with the token they carry, are scoped to the caller’s preview route prefix so they no longer ride along on unrelated asset requests, and are capped per browser under an LRU policy. The cap defaults to a sensible fifteen and can be tuned per site via auth.preview.cookieLimit in the app config.

medRxiv joins the openRxiv Reader

This week medRxiv has been processed and served for the openRxiv Reader, a second major preprint venue sharing the same reading experience as bioRxiv, with its own branding, its own subject taxonomy, and a per-venue preprint banner. Curvenote SCMS also gains a new cross-site DOI resolution API for integrators, alongside a load-bearing sign-in reliability fix and a fix for extension packages that share a leaf name across scopes.

Curvenote SCMS

Resolve any DOI to its SCMS site in one request. Curvenote SCMS now exposes a public GET /api/v1/doi/{first}/{second} endpoint that returns the SCMS site that owns a given DOI, backed by a public-only guarded resolver. Integrators and downstream services no longer need to know in advance which site holds a work before fetching it — send the DOI and the API points you at the right site.

Extension packages with shared leaf names now co-exist. Extension import aliases are derived from the full package name rather than the folder basename, so scoped extensions like @hhmi/compliance and @opensci-dashboard/compliance can be installed together without their routes clobbering one another.

Landing/auth logo cap. Oversized organisation logos are now capped in width on the auth and landing layouts, so a tall or wide brand mark no longer stretches the header.

Curvenote Reader

openRxiv Labs — Curvenote Reader

In production at openRxiv Labs

openRxiv Labs uses Curvenote Reader for all bioRxiv and medRxiv content — see openRxiv Labs.

medRxiv is now live in the openRxiv Reader. A new /medrxiv route serves the medRxiv corpus alongside the existing bioRxiv listing, using the same shared listing view and article pipeline. Readers get medRxiv-appropriate branding — the medRxiv logo, its own color tokens, and a preprint banner that links to medRxiv’s own “unrefereed preprint” FAQ instead of bioRxiv’s — so both venues stay visually and editorially distinct while sharing the underlying reader.

A medRxiv preprint in the openRxiv Reader: the medRxiv logo and subject label sit above the article, and the preprint banner points readers to medRxiv’s own explanation of what an uncertified preprint means.

Figure 1:A medRxiv preprint in the openRxiv Reader: the medRxiv logo and subject label sit above the article, and the preprint banner points readers to medRxiv’s own explanation of what an uncertified preprint means.

A per-venue subject filter. Listing subjects are now curated per venue: bioRxiv exposes biology facets, medRxiv exposes health-sciences facets, and the subject filter on each listing page draws from the venue you’re actually browsing rather than a single flat list across both.

The medRxiv listing carries its own branding and health-sciences subject facets, so browsing, searching, and filtering stay within the venue you are actually reading.

Figure 2:The medRxiv listing carries its own branding and health-sciences subject facets, so browsing, searching, and filtering stay within the venue you are actually reading.

A multi-venue foundation, ready for more. Underneath the medRxiv launch, most of the reader’s per-venue state — artifact paths, object storage, image optimization, the runtime cache, DOI-to-artifact lookup, works search, and page metadata — has been reshaped around a site key, so adding a third venue in future is a config change rather than a new fork of the pipeline. Listing views also emit venue-tagged analytics events on both venues from a single shared analytics module.

Improve analytics for Curvenote Reader and Theme

Production analytics got an upgrade for Curvenote Reader — including openRxiv Labs — and Curvenote Theme. Exception, dead-click, rageclick, and web vitals capture are now on by default and driven from remote project config, so operators can retune what gets captured without shipping a new build. It ships alongside upload of source maps through the same first-party proxy as runtime analytics.

openRxiv Labs — Curvenote Reader

Lean listing UI for landing pages. Three new configuration flags let a listing render without the toolbar, without the search box, or with only the date filters, so a landing page can lead with framing instead of full search-and-filter chrome.

No more date flash on the listings page. Listing date labels are now negotiated from the visitor’s browser locale, with a matching CDN header that keeps server-rendered and hydrated pages in step. Readers on non-en-US locales no longer see dates flip format on load.

Curvenote Theme

Same production analytics upgrade as the Reader. Theme’s production build now uploads source maps and tags each release through its own first-party analytics host, emits hashed asset filenames on the build, and defaults exception, dead-click, rageclick, and web vitals capture on — with each signal individually tunable from remote project config without shipping a new build.