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. exportPageDocumentHtmlrenders every page before measuring anchors, freezes anchored elements against their containing block, and paints every page underscreenandprint. No API changes.
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
targetDevicePixelRatiotoexportPageDocumentHtml, 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", orderedelementsresolvers, andassetFromDataUrl(). Failed preparation preserves the previous commit. - Added standalone committed-page HTML export with inline assets and an accessible
iframeTitlepreserved by Viewer. - Added conservative
fontLoading: { mode: "unicode-range" }; generated quotation marks and CSS text transforms retain fonts when needed. - Added Viewer
fit,zoomable, andkeyboard, and Reactpreparation,prepare(),retry(), andstate.sourceon 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.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 viewermountViewerwas removed. - All sixteen
@pagemargin 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_LAYOUTfires only when keeping a layout whole costs content; a row ofdisplay: flexcards 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.0experimental 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
parse5with browser-native parsing (DOMParser, template fragment parsing, native serialization); malformed markup may parse differently than before, andparse5andentitiesleft the Core bundle. - Patched the bundled
postcssand transitivenanoiddependencies 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,
getClientRectscalls 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
htmlandbodyviewport 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.
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
Infinityopt-out throughPageDocumentOptions.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
htmlandbodycontext, 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.
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
finalizePagehooks 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.
0.2.0 — July 24, 2026
Viewer controls became fully composable by host applications.
- Added
controls: falsefor 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.
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.
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.
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.
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.