Changelog
Release v0.5.0
All notable changes to Paradoc. Packages are versioned in lockstep.
[Unreleased]
[0.5.0] - 2026-08-10
Added
- Unified
signaturesslot map on layers. Each slot binds a party to a placement:'auto'(an invisible marker injected at render time and located after conversion), a textanchor(unique in the document, or selected withoccurrence), or absolute coordinates. One placement engine resolves all three, and misconfiguration fails before rendering with aSealConfigErrornaming every problem. LegacysignatureBlocks/anchorBlocksstill parse and seal unchanged. - A built-in placement locator in
@paradoc/render: a dependency-light PDF text scanner (locate,extractFieldsFromPdf,pageTextRuns, marker encoding) that resolves signature positions in converted PDFs without a PDF rendering engine. Exported from@paradoc/render/pdfand re-exported by@paradoc/sdk. prepareSeal()on draft forms: resolves the signature map and returns the exact pre-flatten PDF it describes, with per-field provenance (declared|anchor|marker) and warnings, without changing the form's phase.SealOptions.locateto substitute a custom placement locator.- The schema version
2026-08-10adds theSignatureSlotlayer schema; the published2026-08-06schemas remain available unchanged.
Changed
- Anchor-based sealing works with pure byte converters, including
hostedSealAdapter, with zero configuration: core locates anchor text itself in the converted PDF. Adapters that resolve placements themselves still take precedence. - The sealing guide is rewritten around signature slots, placement strategies, and pure converters.
Fixed
PdfModelresolves indirect/Lengthstream references, so PDFs written by LibreOffice no longer lose trailing stream bytes.
Removed
- The unused
SealingRequest.optionsblock (renderer,format). It was never read by any implementation.
[0.4.0] - 2026-08-06
Changed
- Form rendering and sealing use the built-in MIME-selected renderer by default while preserving custom renderer overrides. The CLI and integrations use the same unified renderer.
- The current schema version is
2026-08-06; the published2026-01-01schemas remain available unchanged.
Added
@paradoc/render, a dependency-light renderer for text, Markdown, HTML, PDF, and DOCX layers, including template control flow, PDF AcroForm filling, overlays, inspection, page selection, and flattening.- Recursive List fields across builders, types, schemas, validation, serialization, and rendering.
- A sealing boundary with local PDF flattening and optional adapters for non-PDF conversion.
Removed
- The legacy
@paradoc/renderers,@paradoc/renderer-text,@paradoc/renderer-pdf, and@paradoc/renderer-docxpackages. - Heavy PDF, DOCX templating, and Handlebars dependencies from the rendering and e-signing paths.
[0.3.0] - 2026-06-19
Added
@paradoc/expr: a purpose-built, typed expression language for artifacts — a parser, an evaluator, and an artifact-aware type checker sharing one function registry. Exact-decimal arithmetic (no floating-point drift), temporal types (date, datetime, time, duration),in/not in, and null-safe access.@paradoc/sessionsis now published: the deterministic, event-sourced form-completion session engine.- Dependency-aware fill state: a single
statusordinal (hidden,optional,required), transitiveblockedBy, and DAG-ordered next-field. - The expression engine is reachable through
@paradoc/sdkas theexprnamespace (expr.check,expr.parse,expr.Decimal). - Documentation for
@paradoc/sessionsand@paradoc/expr, and the fieldset visibility cascade.
Changed
- Artifact logic now runs on
@paradoc/expr. A hidden fieldset hides its entire subtree, and a child's required follows its effective visibility.
Removed
- The
expr-eval-forkdependency.
[0.2.0] - 2026-05-19
Earlier release. See the Git history for details.
[0.1.1] - 2026-05-08
[0.1.0] - 2026-04-28
Initial public releases.