Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 7 additions & 27 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,14 +13,13 @@
<a href="https://github.com/DemchaAV/GraphCompose/actions/workflows/ci.yml?query=branch%3Amain"><img src="https://img.shields.io/github/actions/workflow/status/DemchaAV/GraphCompose/ci.yml?branch=main&style=for-the-badge&label=CI" alt="CI"/></a>
<a href="https://github.com/DemchaAV/GraphCompose/releases/latest"><img src="https://img.shields.io/github/v/release/DemchaAV/GraphCompose?style=for-the-badge&label=Release" alt="Latest release"/></a>
<a href="https://central.sonatype.com/artifact/io.github.demchaav/graphcompose"><img src="https://img.shields.io/maven-central/v/io.github.demchaav/graphcompose?style=for-the-badge&label=Maven%20Central" alt="Maven Central"/></a>
<a href="https://jitpack.io/#DemchaAV/GraphCompose"><img src="https://img.shields.io/jitpack/v/github/DemchaAV/GraphCompose?style=for-the-badge&label=JitPack" alt="JitPack"/></a>
<img src="https://img.shields.io/badge/Java-17%2B-orange?style=for-the-badge&logo=openjdk" alt="Java 17+"/>
<img src="https://img.shields.io/badge/PDFBox-3.0-red?style=for-the-badge" alt="PDFBox 3.0"/>
<img src="https://img.shields.io/badge/License-MIT-blue?style=for-the-badge" alt="MIT License"/>
</p>

> **Release status** &mdash;
> 🟢 **Latest stable**: [v1.6.5](https://github.com/DemchaAV/GraphCompose/releases/tag/v1.6.5) (JitPack)
> 🟢 **Latest stable**: [v1.6.5](https://github.com/DemchaAV/GraphCompose/releases/tag/v1.6.5)
> &nbsp;·&nbsp; 🟡 **In develop**: v1.6.6 (Maven Central debut; zero breaking from v1.6.5)
> &nbsp;·&nbsp; ⚪ **Planned next**: v1.6.7 (dependency cleanup), v1.7.0 (new canonical DSL primitives)
> &nbsp;·&nbsp; See [API stability policy](./docs/api-stability.md) for tier definitions.
Expand Down Expand Up @@ -94,8 +93,6 @@ GraphCompose uses PDFBox under the hood as the rendering backend &mdash; the com

## Installation

### Maven Central (primary, from v1.6.6)

```xml
<dependency>
<groupId>io.github.demchaav</groupId>
Expand All @@ -108,29 +105,12 @@ GraphCompose uses PDFBox under the hood as the rendering backend &mdash; the com
dependencies { implementation("io.github.demchaav:graphcompose:1.6.6") }
```

### JitPack (fallback / pre-v1.6.6)

```xml
<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.5</version>
</dependency>
```

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

> **Distribution status** &mdash; currently **JitPack**. **Maven Central**
> ships from **v1.6.6** under coordinates `io.github.demchaav:graphcompose:<version>`;
> hosted Javadocs auto-publish to [javadoc.io/doc/io.github.demchaav/graphcompose](https://javadoc.io/doc/io.github.demchaav/graphcompose) shortly after each Central release.
> JitPack stays available alongside Central for existing callers.
> **Distribution** &mdash; Maven Central is the canonical channel from **v1.6.6** onwards
> (`io.github.demchaav:graphcompose:<version>`). Hosted Javadocs auto-publish to
> [javadoc.io/doc/io.github.demchaav/graphcompose](https://javadoc.io/doc/io.github.demchaav/graphcompose)
> shortly after each Central release. The legacy JitPack URL
> (`com.github.DemchaAV:GraphCompose:v<version>`) remains resolvable for callers
> pinned to v1.6.5 and earlier but is no longer the documented install option.

> **Upgrading from v1.5?** Core document authoring stays source-compatible &mdash; engine, DSL, themes, and backend-neutral records carry v1.5 callers unchanged. **Templates v2** replaces the legacy CV / cover-letter template classes; legacy classes were **deleted**, not deprecated. Read the [migration guide](./docs/roadmaps/migration-v1-5-to-v1-6.md) before upgrading template-heavy code.

Expand Down
27 changes: 9 additions & 18 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@
"applicationSubCategory": "Library",
"operatingSystem": "Cross-platform (JVM 21+)",
"programmingLanguage": "Java",
"softwareVersion": "1.6.5",
"softwareVersion": "1.6.6",
"url": "https://demchaav.github.io/GraphCompose/",
"downloadUrl": "https://jitpack.io/#DemchaAV/GraphCompose/v1.6.5",
"downloadUrl": "https://central.sonatype.com/artifact/io.github.demchaav/graphcompose/1.6.6",
"image": "https://demchaav.github.io/GraphCompose/assets/logo/graphcompose-logo.png",
"license": "https://github.com/DemchaAV/GraphCompose/blob/main/LICENSE",
"author": {
Expand Down Expand Up @@ -225,31 +225,22 @@ <h3>Tested at every layer</h3>
<section class="section-shell" id="install" aria-labelledby="install-title">
<div class="section-heading">
<p class="section-label">Install</p>
<h2 id="install-title">JitPack, no extra setup.</h2>
<h2 id="install-title">Maven Central. One dependency.</h2>
</div>
<div class="install-blocks">
<div class="install-block">
<h4>Maven</h4>
<pre class="language-xml"><code class="language-xml">&lt;repository&gt;
&lt;id&gt;jitpack.io&lt;/id&gt;
&lt;url&gt;https://jitpack.io&lt;/url&gt;
&lt;/repository&gt;

&lt;dependency&gt;
&lt;groupId&gt;com.github.DemchaAV&lt;/groupId&gt;
&lt;artifactId&gt;GraphCompose&lt;/artifactId&gt;
&lt;version&gt;v1.6.5&lt;/version&gt;
<pre class="language-xml"><code class="language-xml">&lt;dependency&gt;
&lt;groupId&gt;io.github.demchaav&lt;/groupId&gt;
&lt;artifactId&gt;graphcompose&lt;/artifactId&gt;
&lt;version&gt;1.6.6&lt;/version&gt;
&lt;/dependency&gt;</code></pre>
</div>
<div class="install-block">
<h4>Gradle</h4>
<pre class="language-groovy"><code class="language-groovy">repositories {
maven { url 'https://jitpack.io' }
}

dependencies {
<pre class="language-groovy"><code class="language-groovy">dependencies {
implementation(
'com.github.DemchaAV:GraphCompose:v1.6.5'
'io.github.demchaav:graphcompose:1.6.6'
)
}</code></pre>
</div>
Expand Down
74 changes: 48 additions & 26 deletions scripts/cut-release.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -162,28 +162,49 @@ function Update-ReadmeInstallVersion($readmePath, $newVersion) {
$tag = "v$newVersion"
$changed = $false

# The README JitPack install snippets pin the git tag (vX.Y.Z). They must
# flip in the SAME commit the release tag is cut from, so a new user who
# copy-pastes the README resolves the version this release actually
# publishes (Phase 2.3 of the release skill: README version flips at
# release-execution time, never earlier). Two snippets carry it:
# Maven: <artifactId>GraphCompose</artifactId><version>vX.Y.Z</version>
# Gradle: implementation("...:GraphCompose:vX.Y.Z")
# Lookbehind/lookahead so only the version token is rewritten.
$mavenRegex = [regex]'(?<=<artifactId>GraphCompose</artifactId>\s*<version>)v?[\w\.\-]+(?=</version>)'
$afterMaven = $mavenRegex.Replace($content, $tag, 1)
# The README Maven Central install snippets pin the published version
# (X.Y.Z, no `v` prefix). They must flip in the SAME commit the release
# tag is cut from, so a new user who copy-pastes the README resolves
# the version this release actually publishes (Phase 2.3 of the
# release skill: README version flips at release-execution time,
# never earlier). Two snippets carry it:
# Maven: <artifactId>graphcompose</artifactId><version>X.Y.Z</version>
# Gradle: implementation("io.github.demchaav:graphcompose:X.Y.Z")
# Lookbehind/lookahead so only the version token is rewritten. A
# secondary fallback handles the legacy JitPack format
# (<artifactId>GraphCompose</artifactId> / GraphCompose:vX.Y.Z) so
# the script still works if a future change re-introduces a JitPack
# snippet for documentation purposes.
$mavenCentralRegex = [regex]'(?<=<artifactId>graphcompose</artifactId>\s*<version>)v?[\w\.\-]+(?=</version>)'
$afterMaven = $mavenCentralRegex.Replace($content, $newVersion, 1)
if ($content -ne $afterMaven) {
$content = $afterMaven
$changed = $true
Note "bumped README Maven snippet -> $tag"
Note "bumped README Maven Central snippet -> $newVersion"
} else {
$mavenLegacyRegex = [regex]'(?<=<artifactId>GraphCompose</artifactId>\s*<version>)v?[\w\.\-]+(?=</version>)'
$afterMavenLegacy = $mavenLegacyRegex.Replace($content, $tag, 1)
if ($content -ne $afterMavenLegacy) {
$content = $afterMavenLegacy
$changed = $true
Note "bumped README legacy JitPack Maven snippet -> $tag"
}
}

$gradleRegex = [regex]'(?<=:GraphCompose:)v?[\w\.\-]+(?=")'
$afterGradle = $gradleRegex.Replace($content, $tag, 1)
$gradleCentralRegex = [regex]'(?<=io\.github\.demchaav:graphcompose:)v?[\w\.\-]+(?=")'
$afterGradle = $gradleCentralRegex.Replace($content, $newVersion, 1)
if ($content -ne $afterGradle) {
$content = $afterGradle
$changed = $true
Note "bumped README Gradle snippet -> $tag"
Note "bumped README Maven Central Gradle snippet -> $newVersion"
} else {
$gradleLegacyRegex = [regex]'(?<=:GraphCompose:)v?[\w\.\-]+(?=")'
$afterGradleLegacy = $gradleLegacyRegex.Replace($content, $tag, 1)
if ($content -ne $afterGradleLegacy) {
$content = $afterGradleLegacy
$changed = $true
Note "bumped README legacy JitPack Gradle snippet -> $tag"
}
}

if (-not $changed) {
Expand All @@ -207,19 +228,20 @@ function Update-IndexHtmlVersion($indexHtmlPath, $newVersion) {
$tag = "v$newVersion"
$changed = $false

# The GitHub Pages showcase (docs/index.html) hardcodes the version in five
# spots that do NOT inherit from the pom — they previously sat at v1.6.1
# while the library shipped v1.6.4. VersionConsistencyGuardTest fails the
# verify gate if any lags, so flip all five in lockstep with README + poms:
# JSON-LD softwareVersion (bare), JitPack downloadUrl, hero badge, and the
# Maven + Gradle install snippets (all v-prefixed). Lookbehind/lookahead so
# only the version token is rewritten.
# The GitHub Pages showcase (docs/index.html) hardcodes the version in
# several spots that do NOT inherit from the pom — they previously sat at
# v1.6.1 while the library shipped v1.6.4. VersionConsistencyGuardTest
# fails the verify gate if any lags, so flip them all in lockstep with the
# README + poms. The Maven Central format coordinates use bare semver
# ($newVersion), the hero badge keeps the v-prefix ($tag), and the
# downloadUrl points at the Central artefact page. Lookbehind/lookahead
# so only the version token is rewritten.
$replacements = @(
@{ Regex = [regex]'(?<="softwareVersion": ")v?[\w\.\-]+(?=")'; Value = $newVersion; Label = 'JSON-LD softwareVersion' },
@{ Regex = [regex]'(?<=jitpack\.io/#DemchaAV/GraphCompose/)v?[\w\.\-]+(?=")'; Value = $tag; Label = 'JitPack downloadUrl' },
@{ Regex = [regex]'(?<=Java &middot; )v?[\w\.\-]+(?= &middot; MIT)'; Value = $tag; Label = 'hero badge' },
@{ Regex = [regex]'(?<=&lt;version&gt;)v?[\w\.\-]+(?=&lt;/version&gt;)'; Value = $tag; Label = 'Maven snippet' },
@{ Regex = [regex]"(?<=:GraphCompose:)v?[\w\.\-]+(?=')"; Value = $tag; Label = 'Gradle snippet' }
@{ Regex = [regex]'(?<="softwareVersion": ")v?[\w\.\-]+(?=")'; Value = $newVersion; Label = 'JSON-LD softwareVersion' },
@{ Regex = [regex]'(?<=https://central\.sonatype\.com/artifact/io\.github\.demchaav/graphcompose/)v?[\w\.\-]+(?=")'; Value = $newVersion; Label = 'Central downloadUrl' },
@{ Regex = [regex]'(?<=Java &middot; )v?[\w\.\-]+(?= &middot; MIT)'; Value = $tag; Label = 'hero badge' },
@{ Regex = [regex]'(?<=&lt;artifactId&gt;graphcompose&lt;/artifactId&gt;\s*&lt;version&gt;)v?[\w\.\-]+(?=&lt;/version&gt;)'; Value = $newVersion; Label = 'Maven Central snippet' },
@{ Regex = [regex]"(?<=io\.github\.demchaav:graphcompose:)v?[\w\.\-]+(?=')"; Value = $newVersion; Label = 'Gradle Central snippet' }
)

foreach ($r in $replacements) {
Expand Down
Loading