Skip to content

GraphCompose 2.0

v1.6.0 Breaking

This release includes 1 breaking change for platform teams planning a safe upgrade.

Published 2mo Build & Package
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

business-documents cv-templates declarative-api document-generation invoice-template java
+12 more
java-17 layout-engine maven pagination pdf pdf-generator pdf-lib pdf-library pdfbox3 report-generation snapshot-testing template-engine

Affected surfaces

breaking_upgrade

Summary

AI summary

Updates Links, What's verified, and theme across a mixed release.

Full changelog

For users

v1.6.0 — "expressive" — makes GraphCompose more expressive without breaking your engine code:

  • Nested lists are now easier to compose — ListBuilder.addItem(label, Consumer) opens a child scope, and a per-depth marker cascade (·) handles the visual hierarchy. Mixed flat / nested authoring preserves source order.
  • Table cells can hold any composable node — DocumentTableCell.node(...) accepts paragraphs, nested lists, sub-tables, layer stacks. Two-pass measurement preserves the row-by-row pagination contract.
  • Canvas layers support pixel-precise (x, y) placement — CanvasLayerNode is the controlled free-canvas primitive for when you do need coordinates, with ClipPolicy.CLIP_BOUNDS clipping and atomic pagination.
  • Templates v2 ships 14 CV presets and 14 paired cover-letter presets, theme-driven via BusinessTheme, with one-liner create(theme) factories. Inline markdown, active hyperlinks, slot-based multi-column layouts. The Templates v2 visual pipeline is hardened with pixel-diff parity checks against v1 reference renders to catch visual regressions on every build.
  • Architecture hardening@Internal API stability marker on engine internals, public PdfFragmentRenderHandler SPI for custom render handlers, DocumentRenderingException wrapping the convenience render path so buildPdf / writePdf / toPdfBytes no longer declare throws Exception, documented thread-safety contract.

Engine source-compatibility with v1.5 is preserved for unmodified callers. Every public record that grew a new field ships back-compat constructors that default the new value, so v1.5 callers compile and behave unchanged.

Breaking change

Templates v2 replaces the legacy CV / cover-letter template classes. Legacy classes (CvTemplateV1, NordicCleanCvTemplate, MonogramSidebarCvTemplate, …) are deleted, not deprecated. Anyone constructing those classes must switch to the matching v2 preset's create(BusinessTheme) factory. The full v1 → v2 mapping (every old class → its v2 replacement, with before/after code) is documented in docs/migration-v1-5-to-v1-6.md.

Quick start

Maven:

<repositories>
    <repository><id>jitpack.io</id><url>https://jitpack.io</url></repository>
</repositories>

<dependency>
    <groupId>com.github.DemchaAV</groupId>
    <artifactId>GraphCompose</artifactId>
    <version>v1.6.0</version>
</dependency>

Gradle (Kotlin DSL):

repositories { maven("https://jitpack.io") }
dependencies { implementation("com.github.demchaav:GraphCompose:v1.6.0") }

Distribution status — currently published via JitPack. Maven Central is planned for v1.7 (tracking issue #7).

What's verified

  • 819 / 0 / 0 / 0 — full canonical test suite green via mvnw verify.
  • 26 runnable examples regenerate cleanly via GenerateAllExamples and ship as a CI artifact on every build.
  • 28 layout-snapshot baselines + 29 pixel-diff visual baselines cover every CV / cover-letter preset. The parity gate runs on every CI build with a calibrated mismatchedPixelBudget for cross-platform PDFBox font drift.

Links

  • Live showcase — install snippet, every example with a generated PDF preview, template gallery, feature examples.
  • Templates v2 landing — preset gallery, four-layer architecture explanation, quick-start.
  • Migration v1.5 → v1.6 — v1 → v2 template upgrade table.
  • CHANGELOG.md — full technical changelog, including architecture-hardening details, package-level changes, and ADRs 0011-0014.

Author intent, not coordinates.

Breaking Changes

  • Legacy CV and cover‑letter template classes (`CvTemplateV1`, `NordicCleanCvTemplate`, `MonogramSidebarCvTemplate`, …) are deleted; must use Templates v2 `create(BusinessTheme)` factories.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track GraphCompose 2.0

Get notified when new releases ship.

Sign up free

About GraphCompose 2.0

All releases →

Related context

Related tools

Earlier breaking changes

  • v2.0.0 Package rename: layered template packages dropped `.v2` suffix; update imports.
  • v2.0.0 Removed dormant ECS engine internals (EntityManager, SystemECS, Entity components, render pipeline).
  • v2.0.0 Removed linkOptions() accessor; use linkTarget() and ExternalLinkTarget.options().
  • v2.0.0 Removed PDF‑typed document‑chrome overloads on DocumentSession; use backend‑neutral metadata/watermark/protect/header/footer.
  • v2.0.0 Removed DSL name-aliases DocumentSession.builder() and DocumentDsl.text(); use builder() and paragraph().

Beta — feedback welcome: [email protected]