From 94a8822e1098bf53c4379458a09bb484b6baa67c Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Sun, 28 Jun 2026 18:32:42 +0100 Subject: [PATCH 1/2] test(api): extend the engine-leak guard to all public document.* packages PublicApiNoEngineLeakTest pinned only eight document.* packages, while output, snapshot, theme, exceptions, and emoji are equally public and must stay free of com.demcha.compose.engine.* imports. Add all five to PUBLIC_API_ROOTS; each is already engine-clean so the guard passes and locks the property in. Engine-adjacent internals (layout, backend, templates, debug) stay excluded by design. --- .../com/demcha/documentation/PublicApiNoEngineLeakTest.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java b/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java index 946c17468..0f20abbe2 100644 --- a/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java +++ b/src/test/java/com/demcha/documentation/PublicApiNoEngineLeakTest.java @@ -41,6 +41,11 @@ class PublicApiNoEngineLeakTest { PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/style"), PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/table"), PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/image"), + PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/output"), + PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/snapshot"), + PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/theme"), + PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/exceptions"), + PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/document/emoji"), PROJECT_ROOT.resolve("src/main/java/com/demcha/compose/font")); /** From 3e8d2d49e7156ae7b64c33f626d87c3bdd83e96e Mon Sep 17 00:00:00 2001 From: DemchaAV Date: Sun, 28 Jun 2026 18:32:42 +0100 Subject: [PATCH 2/2] docs(api): complete v1.9.0 since/deprecation metadata and date-ready CHANGELOG - DocumentSession.pageMargins(List) gains @since 1.9.0, matching its sibling 1.9.0 methods (viewerPreferences, pageIndex, toImage). - HeadlineRenderer / ContactRenderer / BannerRenderer become @Deprecated(since = "1.9.0", forRemoval = true) with the @deprecated Javadoc leading "since 1.9.0; removed in 2.0.", matching CoverLetterTemplate and the api-stability deprecation ledger. - CHANGELOG in-progress header "v1.9.0 - unreleased" -> "v1.9.0 - Planned" so the release tooling rewrites it to the ISO date at cut time. --- CHANGELOG.md | 2 +- .../java/com/demcha/compose/document/api/DocumentSession.java | 1 + .../document/templates/cv/v2/components/BannerRenderer.java | 4 ++-- .../document/templates/cv/v2/components/ContactRenderer.java | 4 ++-- .../document/templates/cv/v2/components/HeadlineRenderer.java | 4 ++-- 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 782755d47..f858988bf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,7 @@ All notable changes to GraphCompose are documented here. Versions follow semantic versioning; release dates are ISO 8601. -## v1.9.0 — unreleased +## v1.9.0 — Planned In-document navigation. Rendered PDFs can now declare named **anchors** and **internal links** that jump to them — clickable tables of contents, diff --git a/src/main/java/com/demcha/compose/document/api/DocumentSession.java b/src/main/java/com/demcha/compose/document/api/DocumentSession.java index 5f0586f73..8ae52b00f 100644 --- a/src/main/java/com/demcha/compose/document/api/DocumentSession.java +++ b/src/main/java/com/demcha/compose/document/api/DocumentSession.java @@ -475,6 +475,7 @@ public DocumentSession pageBackgrounds(List fills) { * @param rules ordered list of per-page margin overrides, or {@code null}/empty to clear * @return this session * @throws IllegalStateException if this session has already been closed + * @since 1.9.0 */ public DocumentSession pageMargins(List rules) { ensureOpen(); diff --git a/src/main/java/com/demcha/compose/document/templates/cv/v2/components/BannerRenderer.java b/src/main/java/com/demcha/compose/document/templates/cv/v2/components/BannerRenderer.java index 79782a470..ea6ee9ad4 100644 --- a/src/main/java/com/demcha/compose/document/templates/cv/v2/components/BannerRenderer.java +++ b/src/main/java/com/demcha/compose/document/templates/cv/v2/components/BannerRenderer.java @@ -5,7 +5,7 @@ import com.demcha.compose.document.templates.cv.v2.widgets.SectionHeader; /** - * @deprecated Use + * @deprecated since 1.9.0; removed in 2.0. Use * {@link com.demcha.compose.document.templates.cv.v2.widgets.SectionHeader#banner} * instead — the widget groups the banner alongside its sibling * variants ({@code underlined}, {@code flat}) so picking a section- @@ -13,7 +13,7 @@ * delegating shim so v2 code written before the widgets layer keeps * compiling unchanged. */ -@Deprecated(forRemoval = true) +@Deprecated(since = "1.9.0", forRemoval = true) public final class BannerRenderer { private BannerRenderer() { diff --git a/src/main/java/com/demcha/compose/document/templates/cv/v2/components/ContactRenderer.java b/src/main/java/com/demcha/compose/document/templates/cv/v2/components/ContactRenderer.java index 2c091171e..1ba904810 100644 --- a/src/main/java/com/demcha/compose/document/templates/cv/v2/components/ContactRenderer.java +++ b/src/main/java/com/demcha/compose/document/templates/cv/v2/components/ContactRenderer.java @@ -6,14 +6,14 @@ import com.demcha.compose.document.templates.cv.v2.widgets.ContactLine; /** - * @deprecated Use + * @deprecated since 1.9.0; removed in 2.0. Use * {@link com.demcha.compose.document.templates.cv.v2.widgets.ContactLine#centered} * instead — the widget gives you named centred/right-aligned * variants plus a configurable field order. Kept as a thin * delegating shim so v2 code written before the widgets layer keeps * compiling unchanged. */ -@Deprecated(forRemoval = true) +@Deprecated(since = "1.9.0", forRemoval = true) public final class ContactRenderer { private ContactRenderer() { diff --git a/src/main/java/com/demcha/compose/document/templates/cv/v2/components/HeadlineRenderer.java b/src/main/java/com/demcha/compose/document/templates/cv/v2/components/HeadlineRenderer.java index 7da0ccf95..c59b057a6 100644 --- a/src/main/java/com/demcha/compose/document/templates/cv/v2/components/HeadlineRenderer.java +++ b/src/main/java/com/demcha/compose/document/templates/cv/v2/components/HeadlineRenderer.java @@ -6,14 +6,14 @@ import com.demcha.compose.document.templates.cv.v2.widgets.Headline; /** - * @deprecated Use + * @deprecated since 1.9.0; removed in 2.0. Use * {@link com.demcha.compose.document.templates.cv.v2.widgets.Headline#spacedCentered} * instead — the widget gives you a named API plus alignment + * spaced-caps variants, while this class only ever did the * centred-spaced-caps form. Kept as a thin delegating shim so v2 * code written before the widgets layer keeps compiling unchanged. */ -@Deprecated(forRemoval = true) +@Deprecated(since = "1.9.0", forRemoval = true) public final class HeadlineRenderer { private HeadlineRenderer() {