Skip to content

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 07:17
· 7 commits to main since this release
125a368

Changed

  • Breaking: plan v2 requires version: 2 and renames top-level/item blank to page; migrate existing plans. Counts must use integer tokens from 1 to 100,000, so spell 3.0 or 3e0 as 3; total generated pages are limited to 100,000 instead of 1,000,000. The CLI --blank operand remains supported. See plan migration and limits.
  • Breaking: result/report v3 replaces the previous response/report contract. Stdout caps diagnostics at 20 and consumer pointers at 20 per diagnostic, with omission counts; --report retains full parts, ranges, known hashes/byte counts and actual field mappings. Update JSON consumers to the result contract and use schema result instead of schema response or schema report.
  • Breaking: the report query command and its selectors, --progress, --jobs and --plan-json are removed. Use --plan FILE or --plan - for plans and consume the full --report JSON directly; source inspection and assembly are sequential.
  • Breaking: paths resolve lexically, and output/report permissions follow umask instead of private-by-default ACLs; replacements retain their permission bits. Private ACLs, captured source/font workspaces and report-recovery copies are removed; source bytes are re-read and digest-checked before assembly. Use stable, trusted local paths and inspect output.published before retrying after a late failure; network-filesystem durability is not guaranteed. See file-safety limits.
  • Breaking: unmodified upstream pdfcpu v0.16.2 replaces the maintained forks and their strict malformed-token/duplicate-key/free-head refusals and parser work/resource budgets. Relaxed parsing can accept repairs or malformed syntax; finite dictionary reals may serialize to twelve fractional digits, and arbitrary numeric/dictionary identity is not promised. Specific unsafe canonical-name and shared resource/annotation shapes are refused. See PDF policy and limits.
  • Breaking: multiple nonempty static forms require identical resolved /DR, /DA and /Q representations; conflicting defaults are refused instead of using the former appearance/resource engine. NeedAppearances remains a viewer-regeneration request with a warning, not a promise of generated appearances. Widgets without appearance dictionaries can fail assembly when any source raises the output to PDF 2.0; provide complete appearances or assemble separately. Widgets remain unsupported for fitting. See form limits.
  • Breaking fidelity boundary: fitting uses upstream resize. Destination page targets survive, but scroll coordinates are not transformed; former print-box, content-analysis and appearance guarantees are removed. UserUnit is normalized to preserve physical target sheet dimensions. Coordinate destinations can now be accepted within the documented limitation; review fitting limits before relying on print or imposition fidelity.
  • Fitting accepts the full sheet-size grammar, including explicit landscape dimensions, beyond the previous A4/Legal choices.
  • Generated PDFs normally embed glyph-pruned TrueType fonts with stable glyph IDs and shared job-wide resources. Embeddable fonts that prohibit subsetting retain their complete original programs.

Added

  • Source bookmarks are preserved, including occurrence-specific direct and named destinations.
  • Repeated legacy /Dests sources retain per-occurrence targets. Existing repeated named-destination and damaged-page-tree protections remain in place.
  • Release packaging includes executable archives for macOS, Linux and Windows on amd64 and arm64, documentation, schemas and third-party notices/licenses. Tagged release publication provides checksums and build provenance for the archives. Runtime modules no longer use local replacements, enabling module-based installation of a compatible published tag; v0.2.0 and earlier published releases contain source only.

Internal

  • The bespoke verification platform is replaced by stock Go tests, curated lint/depguard, actionlint and govulncheck with pinned tooling. Six-job CI retains Required CI; independent qpdf/Poppler checks cover destinations, forms, font extraction/pruning, fitting and publication/report state.