Changelog

See what changed in each published Imposia package version.

This page summarizes each versioned Imposia release. @imposia/core, @imposia/viewer, @imposia/client, and @imposia/react use the same version number; the complete record is the repository's CHANGELOG.md.

0.8.1 — October 13, 2026

  • Fixed the page body width: a table wider than the body no longer widens the body or changes the width of other tables. Cells broken over pages follow box-decoration-break, using the space a cut decoration frees, and the bottom decoration is settled on the last piece of the row.
  • exportPageDocumentHtml renders every page before measuring anchors, freezes anchored elements against their containing block, and paints every page under screen and print. No API changes.

0.8.1 · 0.8.0

0.8.0 — October 13, 2026

  • Added tableRowspan: "split" (default "preserve"): rowspan tables break between rows at a page boundary, merged cells keep their content once and continue as empty cells placed by logical column, and plain containers around a splittable table fragment in place. Table and column widths are carried to every page in this mode.
  • Added targetDevicePixelRatio to exportPageDocumentHtml, which corrects cell borders a lower-ratio renderer would round up, in the exported copy only. Both options are opt-in; there are no breaking changes.

0.7.0 — October 13, 2026

  • Added strict blockedResourcePolicy: "error", ordered elements resolvers, and assetFromDataUrl(). Failed preparation preserves the previous commit.
  • Added standalone committed-page HTML export with inline assets and an accessible iframeTitle preserved by Viewer.
  • Added conservative fontLoading: { mode: "unicode-range" }; generated quotation marks and CSS text transforms retain fonts when needed.
  • Added Viewer fit, zoomable, and keyboard, and React preparation, prepare(), retry(), and state.source on ready states.
  • Fixed tall table rows with blank spacer pseudos, fresh-page retry for avoid rows, and continuation column widths.
  • Updated package guides, all four localized API references and asset guides, and security support to the 0.7.x line. Existing defaults remain compatible.

0.7.0 release notes

0.6.0 — September 27, 2026

  • Fixed repeated fragment edges, footnote/page-float collisions, publishing CSS precedence, list continuation, page names, and avoid-break handling. Positioned visual overflow no longer creates extra pages.
  • Added 183 independently authored pagination scenarios and two multi-generation update checks; unsupported inputs retain explicit diagnostics.
  • Updated measured gzip sizes and budgets: Core pagination 63.2/63.5 KiB, Publication 67.5/68 KiB, Viewer 11.8/13 KiB, Client 71.8/72 KiB, React 73.6/74 KiB (size/budget).
  • Fixed the first-commit iframe flash and preserved consumer iframe visibility on updates; improved documentation label contrast.

Business documents paginate the way they are written, long documents stay fast, and printing matches the preview more closely. Four changes are breaking; see the migration note.

  • Breaking: printing preserves backgrounds, hoisted print font families are renamed, the React status unions gained "aborted", and the PDF.js viewer mountViewer was removed.
  • All sixteen @page margin boxes, with font, color, alignment, border, and padding styles; top and bottom boxes sized to their content; @page :nth(); and the A3, A5, B4, B5, Legal, and Ledger page sizes.
  • PublicationOptions.pageNumbering: "entry" numbers each Publication entry on its own, so every invoice in a batch reads "Page 1 of N".
  • Table rows taller than a page split cell by cell, and grids with column-spanning items break between rows.
  • UNSUPPORTED_LAYOUT fires only when keeping a layout whole costs content; a row of display: flex cards no longer warns.
  • A declared dir="rtl" is kept, and right-to-left documents warn that page progression stays left to right.
  • Pagination stays linear to 10,000 pages, and hosts can raise the input, node, page, and deadline limits.
  • The 0.5.0 experimental escape hatches were removed on schedule.

0.5.0 — August 20, 2026

Core parses with the browser's native parser, and a pagination performance batch reduced layout-measurement work on long documents.

  • Replaced parse5 with browser-native parsing (DOMParser, template fragment parsing, native serialization); malformed markup may parse differently than before, and parse5 and entities left the Core bundle.
  • Patched the bundled postcss and transitive nanoid dependencies flagged by the production vulnerability audit.
  • Placed sibling runs as chunks and bisected only on overflow, removing a forced synchronous reflow and an inline-overflow check per node.
  • Derived page-crossing text splits from line-box rects instead of one measurement call per grapheme; on the project's long-paragraph fixtures, getClientRects calls fell 98.1% for English and 95.9% for CJK text.
  • Shared one resolver call, decode validation, and Blob URL for same-URL assets within a generation, without changing per-occurrence byte accounting or extension veto semantics.
  • Minified the browser bundles and re-based bundle-size budgets. Each new fast path ships beside a temporary internal fallback for one release, which is why the Core bundle grew this release.
  • Fixed a Viewer error that could surface when a host updated a document under load: the Viewer's ambient synchronization now waits out the brief window between a commit landing in the canonical frame and the host delivering the new PageDocument, instead of reporting that transient as page-marker corruption. Explicit calls still validate, and real corruption is still reported.

0.4.1 — July 27, 2026

Multi-page printing became reliable under caller viewport constraints, and Viewer panels follow the responsive control rail.

  • Prevented caller-authored html and body viewport constraints from clipping the isolated native-print snapshot to one sheet while preserving the source document's print cascade.
  • Positioned Viewer TOC, search, thumbnail, and Inspector panels below the actual responsive control rail, including the wrapped 320 px layout.
  • Reorganized the localized documentation around getting started, concepts, publishing guides, package API references, and browser-native Save as PDF.

Read the 0.4.1 release notes.

0.4.0 — July 24, 2026

Cooperative pagination keeps long HTML and CSR updates responsive without changing the accepted page structure.

  • Added an 8 ms default yield budget, an injectable scheduler, and an Infinity opt-out through PageDocumentOptions.compose.
  • Added provisional progress with the completed page count and convergence pass.
  • Settled fonts and images after staging content and styles are mounted.
  • Made scheduler waits abortable and serialized superseding generations before staging the winner.
  • Preserved source html and body context, body-scoped selectors, and computed custom properties in native-print snapshots.
  • Added layout containment to committed page roots while leaving style containment disabled so counters keep working across pages.

Read the 0.4.0 release notes.

0.3.0 — July 24, 2026

Printing became independent from iframe sizing, and constrained table composition gained explicit extension hooks.

  • Moved native printing to a transient, isolated snapshot in the top document to avoid Chromium blank-sheet failures.
  • Added synchronous finalizePage hooks for Core and Publication extensions.
  • Added the opt-in createTableColgroupExtension() preset for stable split-table column widths.
  • Used the current page's remaining space when fragmenting split tables, safe grids, and over-tall normal blocks.

Read the 0.3.0 release notes.

0.2.0 — July 24, 2026

Viewer controls became fully composable by host applications.

  • Added controls: false for hosts that provide their own navigation, view-mode, and zoom UI.
  • Added immediate Viewer state subscriptions, React state callbacks, and imperative navigation and zoom controls.
  • Scoped Viewer tokens and presentation styles to each Viewer root so importing the stylesheet no longer changes the host page.

Read the 0.2.0 release notes.

0.1.3 — July 23, 2026

HTML and CSR pagination integrity became the primary product contract.

  • Added cross-browser continuity coverage that proves source tokens appear exactly once and in order across committed pages.
  • Added a public CSR continuity specimen that applies rapid source revisions while retaining the canonical iframe.
  • Positioned reflowable EPUB as a supported semantic projection rather than the headline rendering path.

Read the 0.1.3 release notes.

0.1.2 — July 23, 2026

Release checks and the demo server's security posture were tightened.

  • Added automatic CodeRabbit review alongside verification and code-scanning checks.
  • Removed unused demo-server request-delay behavior and resolved the related CodeQL finding.
  • Confirmed that structural selectors reach only Element.matches() with conservative fallback behavior.

Read the 0.1.2 release notes.

0.1.1 — July 23, 2026

The demo, documentation, and release path became ready for public package updates.

  • Added portrait-first A4 controls with orientation switching and A3, A4, and B1 presets.
  • Expanded multilingual API and publishing documentation.
  • Added a protected GitHub Actions release path with npm trusted publishing, tags, GitHub Releases, tarballs, and checksums.

Read the 0.1.1 release notes.

0.1.0 — July 19, 2026

The initial browser-only release established the complete public package family.

  • Added deterministic browser pagination in one persistent canonical iframe.
  • Added Viewer presentation, the browser Client entrypoint, and the primary React adapter.
  • Added Publication composition, reader navigation, search, thumbnails, and multiple presentation modes.
  • Added native print and reflowable EPUB 3.3 export from the committed source.
  • Added typed diagnostics, bounded extensions, asset resolution, and constrained table, Flex, Grid, multi-column, and CJK fragmentation.

View @imposia/core 0.1.0 on npm.

On this page