Changelog
Product updates and release notes
All notable changes to Paradoc. Packages are versioned in lockstep.
[Unreleased]
0.8.0 - 2026-10-19
Paradoc 0.8 gives registries editions and versions. A registry manifest now lists every release of an artifact with its checksum, and the CLI and AI tools can ask for one edition or version.
Highlights
paradoc add @ns/name[/edition][@version]installs one release, checks its SHA-256, and records the edition and version in.paradoc/lock.json.get_artifactand registry sources in the AI tools takeeditionandversion, and the output names the release that was read.paradoc registry compilebuilds a registry fromregistry.config.json: one manifest and a folder for each release.
Breaking changes
Registries
- The registry manifest (
registry.json) listscurrentEditionandeditions, orlatestVersionandversions, for each item.artifactsPathand the itempathare removed. Paradoc 0.8 cannot read an older manifest, and 0.7 cannot read a new one.
CLI
paradoc registry makewritesregistry.config.jsonand no longer takes--artifacts-path.registry catalog add,catalog removeandcompileread that file:-r, --registryis now-c, --config, andcatalog addhas no--yes.paradoc checktakestsxfrom your project, which halves the CLI install. Without it, the command stops and prints the install line.
AI tools
fetchRegistryItem,fetchRegistryItemResponseandbuildArtifactItemUrlare removed.- The
get_registryoutput has noartifacts_pathor itempath. Each item lists its editions and versions.
Upgrading from 0.7
- If you host a registry, run
paradoc registry make, add your artifact files toregistry.config.json, and runparadoc registry compile. Host the output in place of the oldregistry.jsonandr/folder, and upgrade its clients to 0.8 at the same time. - Replace calls to the removed AI tools registry functions with
fetchRegistryArtifact. - Run
npm install -D tsxin a project that runsparadoc check.
Other changes
Schemas
- New exports resolve a release from a manifest (
resolveRegistryRelease,listRegistryReleases), parse and format registry references, and compare versions by SemVer precedence. - A lock file entry can record an
edition.
Core
- An empty string no longer satisfies a required field or annex, so fill state keeps it open and validation reports it as missing.
CLI
paradoc searchshows every edition and version of an artifact.- A reference to an edition or version the registry does not list fails and names the ones it does list.
0.7.1 - 2026-10-08
Paradoc 0.7.1 fixes problems that real models hit with the AI tools. Renders no longer report a blank file as success, registry calls can rely on the configured default registry, and the Mastra adapter passes free-form JSON through intact.
Highlights
renderrefuses a form or checklist with no values instead of returning a blank file. Setblank: trueto render a blank copy on purpose.registry_urlis optional. A call without it usesdefaultRegistryUrl.get_fill_statereturns typed targets, exported asFillTargetandFillItemStatefrom every adapter.- Mastra tools keep
data,patchandartifactinputs, so OpenAI models no longer sendnullfor them. - The documentation has separate Docs and Reference tabs, and the AI agents section is rewritten as task guides.
Other changes
AI tools
renderwith missing,nullor emptydatafor a form or checklist returnssuccess: falsewithmissing_data. If you render blank copies, passblank: true.- A registry call with no
registry_urland nodefaultRegistryUrlfails withmissing_registry_url. - The
get_fill_stateoutput schema typesopen_required,open_optional,blocked,done,candidatesandnext.
Core
- Progressive validation refuses an array for a party role with
max1. Pass one party object.
Adapters
@paradoc/mastracreates its tools withstrict: false.@paradoc/ai-sdk,@paradoc/mastraand@paradoc/tanstack-aiexport theFillTargetandFillItemStatetypes.
0.7.0 - 2026-10-08
Paradoc 0.7 records who issued a form and which edition an artifact encodes, and lets bundles address registry artifacts by edition and version. It also adds PDF digital-signature helpers and per-overlay fonts to the renderer.
Highlights
- Artifacts carry an optional
issuerandedition(key,label,date,effectiveFrom), andcodeis the form number as the issuer prints it. - Registry coordinates take the form
@org/repo/name[/edition][@version], with helpers to parse and format them. @paradoc/render/pdfcan prepare, embed and read a PDF digital signature.- PDF text overlays can each use their own font, and
pdfFontMetrics()reports whether a font can draw a string and how wide it is. paradoc migratemoves artifacts to schema2026-10-02.
Breaking changes
Schemas and artifacts
- Schema
2026-10-02removesreleaseDate. Record the issuer and edition withissuerandeditioninstead. - A registry bundle item's
slugis only the address@org/repo/name. Edition and version move to the neweditionandversionfields. Edition keys cannot becurrent,latest,editions,tagsordiff. - The hosted
2026-09-24schemas are removed fromschema.paradoc.dev. Runparadoc migrateto move files to2026-10-02.
Core and SDK
- The builders drop
.releaseDate()for.issuer()and.edition()..registry(key, coordinate, include?)takes a full three-segment coordinate and throws aTypeErroron any other value.
Essentials
- Each form's
spechas a top-levelissuerinstead ofmetadata.issuer, andmetadata.sourceUrlis removed.
Upgrading from 0.6
- Run
paradoc migrate <file-or-directory> --dry-run, review the changes, then rerun without--dry-run. The step removesreleaseDateand moves a slug's@versionintoversion. - Correct by hand any registry slug that is not
@org/repo/name[@version], such as@paradoc/essentials/tax/w-9@1.0.0. The migration stops on it. - Replace
.releaseDate()with.issuer()and.edition(), and pass full@org/repo/namecoordinates to.registry(). - Read
issuerfrom an essentials form'sspecinstead ofspec.metadata.issuer.
Other changes
Schemas and types
@paradoc/schemasexportsparseArtifactCoordinate,formatArtifactCoordinate,ArtifactCoordinateSchema, the edition and version selector schemas, and the reserved edition keys.@paradoc/typesexportsArtifactEdition.
Core
sealBundlerefuses a part whose edition differs from the edition its bundle item declares.
Render
preparePdfSignature,signedBytes,embedPdfSignatureandreadPdfSignaturesign a PDF with a container from any signing service.- A text overlay takes its own
font, andpdfFontMetrics(font)returnscanDrawandwidth. - Rendering on a page that an earlier render drew on keeps the earlier fonts and images.
CLI
paradoc showprints the issuer and edition, and shows registry bundle items as full coordinates.paradoc new --codesets the issuer's form number.- The CLI sends all telemetry to
telemetry.paradoc.dev. Public-registry installs send adirectory.installedevent in the same batch, and nothing goes totasks.paradoc.dev.PARADOC_TELEMETRY_URLpoints the CLI at another telemetry origin, such ashttps://telemetry-dev.paradoc.dev.
AI tools
inspect_artifactreturns the artifact's issuer and edition.
0.6.1 - 2026-09-28
Paradoc 0.6.1 tightens prerelease schema distribution and makes the documentation easier for people and agents to discover. It also publishes a reusable service-layer boundary for projects using the Paradoc ESLint configuration.
Highlights
@paradoc/schemasnow packages only the current dated schema set and live-root schemas, while older prerelease schemas remain available through Git history.- The documentation publishes a permanent page for each release alongside the latest changelog index.
- Canonical URLs, a generated sitemap, and improved Markdown responses make documentation routes easier for search engines and agents to discover.
@paradoc/eslint-config/service-boundaryenforces API-free service modules by preventing imports from co-located contracts and@paradoc/api-kernel.
Other changes
Documentation
- Public navigation no longer advertises the hosted MCP reference; AI guidance directs developers to the published adapter packages for in-process tools.
- Sidebar and content-grid behavior is more consistent across documentation pages.
0.6.0 - 2026-09-25
Paradoc 0.6 turns documents into a complete application surface: compose them in React, migrate versioned artifacts, extract filled PDFs, and seal multi-document packets. It also tightens public contracts across the SDK, CLI, rendering, sessions, and AI adapters.
Highlights
- Dated schemas and
paradoc migratemake artifact upgrades explicit, reviewable, and reversible with--dry-run. - React layers, live
paradoc devpreviews,paradoc check, and the copyable component registry provide an end-to-end document composition workflow. sealBundleprepares and seals multi-part packets with one canonical PDF, packet-wide signer mapping, and part-level provenance.- PDF rendering now embeds fonts, follows AcroForm appearance settings, rejects encrypted inputs, and can extract filled values back into artifact data.
- Templates and artifact logic share
@paradoc/expr, including typed conditions, list aggregates, party data, and row-aware expressions. @paradoc/formatreplaces serialization with locale-aware formatting shared by text, DOCX, PDF, and React output.- AI SDK, TanStack AI, and Mastra adapters expose the same validated document operations, including extraction and progressive filling.
Breaking changes
Schemas and artifacts
- Artifact files must use the current dated
$schema; runparadoc migratebefore loading older, undated, or unversioned files. - Signing fields now live only in
signatures; migrate legacysignatureBlocksandanchorBlocksto signature slots. - Field, party, option, and config schemas reject unknown keys; correct misspellings instead of relying on dropped properties.
- The marker placement literal is
flow, notauto; the migration rewrites existing slots.
Core and SDK
- Import the builder namespace as
pinstead ofpara. fill()andsafeFill()are progressive; replace partial-fill APIs withfill()followed byupdate().- Bind file resolvers when constructing or loading an artifact, not in
render(),seal(), or bundle operations. - Pass a
SealAdapterthroughseal({ adapter }); the legacySealeroverload and formal-signing aliases are removed. - Replace
DraftForm.setField()andupdateFields()withdraft.update({ fields: ... }). - Custom renderers must read
parties,annexes,signers,captures, anddefsbesidedata.fields.
Rendering and React
- Import PDF runtime APIs from
@paradoc/react-pdf;@paradoc/reactnow contains the headless React runtime and discovery APIs. - Text and DOCX templates must use full paths such as
{{fields.name}}; binding aliases are supported only on PDF file layers. - PDF bindings now fail on missing fields, invalid roots, and malformed qualifiers; use AcroForm field names as keys and Paradoc paths as values.
- Replace legacy template helpers and Handlebars context paths with artifact expressions,
item,parent, andindex(item). - Application styles own typography; remove
fontFamilytokens and registered package font families. - Remove PDF signature rendering options and deprecated SDK renderer wrappers; use built-in rendering or
@paradoc/rendersubpaths.
CLI, sessions, AI, and resolvers
- The CLI,
@paradoc/ai-tools,@paradoc/ai-sdk, and@paradoc/tanstack-airequire Node.js 22 or newer. - Invoke the CLI as
paradoc; theparabinary is removed. - Configure every registry explicitly; the CLI no longer falls back to a default registry.
- Session projections now include annexes and richer party state; persist events directly instead of using the removed spine adapter.
- Use the unified
@paradoc/ai-toolsoperation contracts and renamed validation outputs. - Import resolvers from
@paradoc/resolvers/fs,/http, or/memory; the package root exports nothing. - Replace
@paradoc/serializationwith@paradoc/formatand pass a formatter through render context.
Upgrading from 0.5
- Upgrade CLI and AI runtimes to Node.js 22 or newer.
- Run
paradoc migrate <file-or-directory> --dry-run, review the schema and signature-slot changes, then rerun without--dry-run. - Rename
paraimports top, bind resolvers when artifacts are constructed, and replace removed draft and fill helpers. - Install
@paradoc/react-pdffor React PDF rendering, checking, or Chromium output and update imports from@paradoc/react. - Replace template binding aliases and helpers, then run
paradoc validateandparadoc checkacross the migrated project.
Other changes
Core, schemas, and sessions
- Builders cover every schema key, and validation reports schema versions, file references, template expressions, signing slots, and PDF bindings earlier.
- List aggregates, typed party expressions, row references, progressive checklists, annex commands, and rule IDs improve guided form completion.
- Bundle rendering preserves nested parts, while sealing and finalization enforce signer, capture, and required-slot integrity.
Render, React, and components
- PDF fill and extraction support embedded fonts, Unicode strings, comb fields, multiline values, overlays, page selection, flattening, and merging.
- React documents add pagination, page furniture, explicit breaks, application fonts, right-to-left output, annex images, and packet previews.
- The
@paradoccomponent registry ships document components and complete blocks for invoices, engagement letters, purchase orders, and vendor packets. - Formatters add selection, rating, contact, temporal, money, party, attachment, and signature output with locale fallbacks and structured issues.
CLI, SDK, and AI
paradoc migrate,data extract,dev, andcheckcover schema upgrades, PDF recovery, live composition previews, and static composition checks.- CLI validation accepts multiple artifacts, validates project files and data through core, and preserves installed layer dependencies and checksums.
- AI adapters share bounded model output, validated inputs and outputs, fill-state inspection, updates, rendering, and extraction.
hostedSealAdapteruses the served conversion route, supports cancellation, and reports structured conversion and response errors.
Packages
@paradoc/react,@paradoc/react-pdf,@paradoc/format, and@paradoc/mastrajoin the public framework.@paradoc/resolvers/httpsafely resolves file-backed layers beneath a base URL in any runtime withfetch.- Essentials artifacts and examples use current schemas, signature slots, formatter behavior, and rendering limits.
0.5.0 - 2026-08-10
Paradoc 0.5 introduces a single signature-slot model and a dependency-light placement engine for preparing documents before signing.
Highlights
- Layers declare a unified
signaturesmap for marker, anchor, or absolute signature placement. prepareSeal()returns the exact pre-flatten PDF, resolved fields, provenance, and warnings without changing form state.- The built-in PDF locator resolves signature markers and anchor text without a PDF rendering engine.
- Pure byte converters such as
hostedSealAdapterwork with anchor-based sealing without extra placement configuration.
Breaking changes
Core and types
SealingRequest.optionsis removed; stop passing its unusedrendererorformatkeys.
Other changes
Schemas and render
- Schema version
2026-08-10adds signature slots while keeping the published2026-08-06schemas available. SealOptions.locateallows a custom placement locator when the built-in PDF locator is not suitable.- PDF parsing resolves indirect stream lengths, preserving content from PDFs written by LibreOffice.
0.4.0 - 2026-08-06
Paradoc 0.4 consolidates rendering into one dependency-light package and makes MIME-selected rendering the default across the framework.
Highlights
@paradoc/renderrenders text, Markdown, HTML, PDF, and DOCX layers through one public package.- Form rendering and sealing select built-in renderers by MIME type while preserving custom renderer overrides.
- Recursive list fields work across builders, schemas, validation, serialization, and rendering.
- Sealing can flatten PDFs locally and delegate non-PDF conversion through an adapter.
Breaking changes
Render
- Replace
@paradoc/renderersand the format-specific renderer packages with@paradoc/renderand its/text,/pdf, and/docxsubpaths.
Upgrading from 0.3
- Update renderer imports and remove dependencies on
@paradoc/renderer-text,@paradoc/renderer-pdf, and@paradoc/renderer-docx.
Other changes
Schemas
- Schema version
2026-08-06becomes current while the published2026-01-01schemas remain available. - Rendering and e-signing paths no longer require the previous heavy PDF, DOCX templating, and Handlebars dependency stack.
0.3.0 - 2026-06-19
Paradoc 0.3 adds a purpose-built expression language and publishes the deterministic session engine for guided form completion.
Highlights
@paradoc/exprprovides a typed parser, evaluator, and artifact-aware checker with exact decimal and temporal values.@paradoc/sessionsprovides an event-sourced, storage-agnostic form-completion engine.- Fill state reports one visibility and requirement status, transitive blockers, and the next field in dependency order.
- The SDK exposes expression APIs through
expr, including parsing, checking, andDecimal.
Other changes
Core
- Artifact logic runs on
@paradoc/expr, and hidden fieldsets now hide their full subtree. - The
expr-eval-forkdependency is removed.
0.2.0 - 2026-05-19
Paradoc 0.2 adds labeled enum choices and source-language metadata across artifacts, schemas, builders, and CLI workflows.
Highlights
- Enum and multiselect options use
{ value, label? }, allowing display labels without changing stored values. - Artifacts can declare a BCP 47 source language through
language. - Shared artifact methods expose the artifact
code.
Breaking changes
Types and schemas
- Replace primitive enum arrays with
EnumOption[]; multiselect defaults now contain option values rather than option objects.
Upgrading from 0.1
- Rewrite enum options as
{ value, label? }and keep multiselect defaults as the selected primitive values.
Other changes
CLI and schemas
- CLI fill, validation, and template commands understand labeled options.
- Published per-form JSON schemas are regenerated without the stale non-standard
idproperty.
0.1.1 - 2026-05-08
This patch expands signature blocks and corrects rendering and schema behavior for common field values.
Highlights
- Signature blocks support
capacityandprinted_name, with matching text and PDF helpers. - PDF rendering handles multiselect arrays in qualified checkbox bindings.
- Address-region schema and rendering behavior are corrected.
Other changes
Packages
- All public packages remain on the same 0.1.1 lockstep version.
0.1.0 - 2026-04-28
The first public Paradoc release establishes documents as typed, machine-readable artifacts for applications and AI agents.
Highlights
- Typed builders define forms, documents, checklists, bundles, parties, fields, annexes, and output layers.
- Core validation checks artifact definitions and filled data against shared Zod and JSON Schema contracts.
- Text, PDF, and DOCX renderers produce multiple outputs from the same artifact definition.
@paradoc/sdkprovides the all-in-one framework entry point, with CLI and AI adapter packages alongside it.- The published packages support Node.js 18 and are released in lockstep under the MIT license.