From d076204ee5cf475812c766fe329c467c189b186e Mon Sep 17 00:00:00 2001 From: num0001 Date: Fri, 22 May 2026 01:52:47 -0400 Subject: [PATCH 01/10] Add release workflow that attaches shaded JAR to GitHub Releases --- .github/workflows/release.yml | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..e6730477 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,36 @@ +name: Attach Release Artifacts + +on: + release: + types: [published] + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + fetch-tags: true + ref: ${{ github.event.release.tag_name }} + + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'temurin' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Build with Gradle Wrapper + run: ./gradlew clean build + + - name: Attach shaded JAR to release + uses: softprops/action-gh-release@v2 + with: + files: build/libs/*.jar + fail_on_unmatched_files: true From 0520914a005081fa08cb9d1ccee06af1a18bec60 Mon Sep 17 00:00:00 2001 From: num0001 Date: Fri, 22 May 2026 08:50:23 -0400 Subject: [PATCH 02/10] Add release workflow + switch to git-semver plugin for versioning --- build.gradle.kts | 7 ++----- gradle/libs.versions.toml | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 8fb3af4c..c1ae4182 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,6 @@ plugins { java - alias(libs.plugins.git.version) + alias(libs.plugins.git.semver) alias(libs.plugins.shadow) } @@ -61,11 +61,8 @@ dependencies { compileOnly(libs.io.papermc.paper.paper.api) } -val versionDetails: groovy.lang.Closure by extra -val details = versionDetails() - group = "com.alpsbte" -version = "5.0.3" + "-" + details.gitHash + "-SNAPSHOT" +version = semver.semVersion description = "An easy to use building system for the BuildTheEarth project." java.sourceCompatibility = JavaVersion.VERSION_21 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 29c848f9..e66ee32f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,7 +20,7 @@ org-mariadb-jdbc-mariadb-java-client = "3.5.7" # https://central.sonatype.com/a com-intellectualsites-bom-bom-newest = "1.55" # Ref: https://github.com/IntellectualSites/bom # Plugins shadow = "9.3.1" # https://github.com/GradleUp/shadow/releases -git-version = "5.0.0" # https://github.com/palantir/gradle-git-version/releases +git-semver = "0.19.0" # https://github.com/jmongard/Git.SemVersioning.Gradle/releases [libraries] com-alpsbte-alpslib-alpslib-hologram = { module = "com.alpsbte.alpslib:alpslib-hologram", version.ref = "com-alpsbte-alpslib-alpslib-hologram" } @@ -41,5 +41,5 @@ org-mariadb-jdbc-mariadb-java-client = { module = "org.mariadb.jdbc:mariadb-java com-intellectualsites-bom-bom-newest = { module = "com.intellectualsites.bom:bom-newest", version.ref = "com-intellectualsites-bom-bom-newest" } [plugins] -git-version = { id = "com.palantir.git-version", version.ref = "git-version" } +git-semver = { id = "com.github.jmongard.git-semver-plugin", version.ref = "git-semver" } shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } From a736fa71ebbd3d5b4b14ec5896fb598f85721ad4 Mon Sep 17 00:00:00 2001 From: num0001 Date: Fri, 22 May 2026 01:52:47 -0400 Subject: [PATCH 03/10] Add release workflow that attaches shaded JAR to GitHub Releases --- .github/workflows/release.yml | 36 +++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 00000000..e6730477 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,36 @@ +name: Attach Release Artifacts + +on: + release: + types: [published] + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: write + + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + fetch-tags: true + ref: ${{ github.event.release.tag_name }} + + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'temurin' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Build with Gradle Wrapper + run: ./gradlew clean build + + - name: Attach shaded JAR to release + uses: softprops/action-gh-release@v2 + with: + files: build/libs/*.jar + fail_on_unmatched_files: true From d499b78d19511d950b1a4d00517e8539f68fa335 Mon Sep 17 00:00:00 2001 From: num0001 Date: Fri, 22 May 2026 08:50:23 -0400 Subject: [PATCH 04/10] Add release workflow + switch to git-semver plugin for versioning --- build.gradle.kts | 7 ++----- gradle/libs.versions.toml | 4 ++-- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 8fb3af4c..c1ae4182 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,6 +1,6 @@ plugins { java - alias(libs.plugins.git.version) + alias(libs.plugins.git.semver) alias(libs.plugins.shadow) } @@ -61,11 +61,8 @@ dependencies { compileOnly(libs.io.papermc.paper.paper.api) } -val versionDetails: groovy.lang.Closure by extra -val details = versionDetails() - group = "com.alpsbte" -version = "5.0.3" + "-" + details.gitHash + "-SNAPSHOT" +version = semver.semVersion description = "An easy to use building system for the BuildTheEarth project." java.sourceCompatibility = JavaVersion.VERSION_21 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 29c848f9..e66ee32f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -20,7 +20,7 @@ org-mariadb-jdbc-mariadb-java-client = "3.5.7" # https://central.sonatype.com/a com-intellectualsites-bom-bom-newest = "1.55" # Ref: https://github.com/IntellectualSites/bom # Plugins shadow = "9.3.1" # https://github.com/GradleUp/shadow/releases -git-version = "5.0.0" # https://github.com/palantir/gradle-git-version/releases +git-semver = "0.19.0" # https://github.com/jmongard/Git.SemVersioning.Gradle/releases [libraries] com-alpsbte-alpslib-alpslib-hologram = { module = "com.alpsbte.alpslib:alpslib-hologram", version.ref = "com-alpsbte-alpslib-alpslib-hologram" } @@ -41,5 +41,5 @@ org-mariadb-jdbc-mariadb-java-client = { module = "org.mariadb.jdbc:mariadb-java com-intellectualsites-bom-bom-newest = { module = "com.intellectualsites.bom:bom-newest", version.ref = "com-intellectualsites-bom-bom-newest" } [plugins] -git-version = { id = "com.palantir.git-version", version.ref = "git-version" } +git-semver = { id = "com.github.jmongard.git-semver-plugin", version.ref = "git-semver" } shadow = { id = "com.gradleup.shadow", version.ref = "shadow" } From 562d542155a2df0e8c42caaa9e365130489e8718 Mon Sep 17 00:00:00 2001 From: num0001 Date: Fri, 22 May 2026 12:28:29 -0400 Subject: [PATCH 05/10] ci(release): attach shaded JAR to published GitHub Releases --- .github/release-drafter.yml | 27 +++++++++++++++++++ .github/workflows/release-draft.yml | 41 +++++++++++++++++++++++++++++ .vscode/settings.json | 3 +++ 3 files changed, 71 insertions(+) create mode 100644 .github/release-drafter.yml create mode 100644 .github/workflows/release-draft.yml create mode 100644 .vscode/settings.json diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 00000000..e9e1ccce --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,27 @@ +name-template: 'v$RESOLVED_VERSION' +tag-template: 'v$RESOLVED_VERSION' + +categories: + - title: 'Features' + labels: + - 'feature' + - 'enhancement' + - title: 'Bug Fixes' + labels: + - 'fix' + - 'bug' + - title: 'Maintenance' + labels: + - 'chore' + - 'dependencies' + - 'documentation' + +change-template: '- $TITLE (#$NUMBER) @$AUTHOR' +change-title-escapes: '\<*_&' + +template: | + ## What's Changed + + $CHANGES + + **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION diff --git a/.github/workflows/release-draft.yml b/.github/workflows/release-draft.yml new file mode 100644 index 00000000..e9304d1a --- /dev/null +++ b/.github/workflows/release-draft.yml @@ -0,0 +1,41 @@ +name: Update Release Draft + +on: + push: + branches: [main] + +permissions: + contents: write + pull-requests: read + +jobs: + update-draft: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v5 + with: + fetch-depth: 0 + fetch-tags: true + + - name: Set up JDK 21 + uses: actions/setup-java@v5 + with: + java-version: '21' + distribution: 'temurin' + + - name: Setup Gradle + uses: gradle/actions/setup-gradle@v4 + + - name: Compute next version + id: version + run: | + NEXT="$(./gradlew -q printVersion)" + echo "next=${NEXT}" >> "$GITHUB_OUTPUT" + + - name: Update release draft + uses: release-drafter/release-drafter@v6 + with: + version: ${{ steps.version.outputs.next }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..c5f3f6b9 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "interactive" +} \ No newline at end of file From 20e114631076aea64b3aa85e3ac6ef5601412c17 Mon Sep 17 00:00:00 2001 From: num0001 Date: Fri, 22 May 2026 18:24:03 -0400 Subject: [PATCH 06/10] build(gradle): switch versioning from palantir/git-version to jmongard/git-semver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaces the hardcoded `"5.0.3" + gitHash + "-SNAPSHOT"` expression with `version = semver.semVersion`. The project version is now derived from the latest vMAJOR.MINOR.PATCH tag plus the conventional-commit messages since that tag, so release builds produce clean version numbers (e.g. PlotSystem-5.0.3.jar) without manual edits to build.gradle.kts before each release. Also adds a `printNextReleaseVersion` helper task used by the release-draft workflow. The plugin's `printVersion` task includes a `-SNAPSHOT` suffix on commits between releases, which is correct for the JAR version but wrong for the draft release tag — the helper strips the suffix so the draft tag is e.g. `v5.0.3` instead of `v5.0.3-SNAPSHOT`. The value is computed at task-configuration time so the task stays compatible with the project's configuration cache. --- build.gradle.kts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/build.gradle.kts b/build.gradle.kts index c1ae4182..116d409a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -89,6 +89,13 @@ tasks.jar { enabled = false // Disable the default jar task since we are using shadowJar } +tasks.register("printNextReleaseVersion") { + val nextRelease = semver.version.toString().removeSuffix("-SNAPSHOT") + doLast { + println(nextRelease) + } +} + tasks.processResources { // work around IDEA-296490 duplicatesStrategy = DuplicatesStrategy.INCLUDE From b0fb710f9b799b9a777ebdbd86cd47604f26e296 Mon Sep 17 00:00:00 2001 From: num0001 Date: Fri, 22 May 2026 18:24:54 -0400 Subject: [PATCH 07/10] ci(release): maintain draft GitHub Release on every main push MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds release-draft.yml plus the release-drafter config. On each push to main the workflow runs `./gradlew -q printNextReleaseVersion` to compute the next clean release version, then hands it to release-drafter/release-drafter@v6, which keeps a single draft release in sync — updating the "What's Changed" section and bumping the tag if the computed version changes. The draft is editable; the maintainer publishes it manually when ready. Categorisation in the draft uses three sections (Features, Bug Fixes, Maintenance) mapped to the labels already in use on this repo (enhancement, bug, dependencies, documentation). PRs without a matching label fall under the uncategorised list. --- .github/release-drafter.yml | 3 --- .github/workflows/release-draft.yml | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index e9e1ccce..9b3c047e 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -4,15 +4,12 @@ tag-template: 'v$RESOLVED_VERSION' categories: - title: 'Features' labels: - - 'feature' - 'enhancement' - title: 'Bug Fixes' labels: - - 'fix' - 'bug' - title: 'Maintenance' labels: - - 'chore' - 'dependencies' - 'documentation' diff --git a/.github/workflows/release-draft.yml b/.github/workflows/release-draft.yml index e9304d1a..7e6b5b67 100644 --- a/.github/workflows/release-draft.yml +++ b/.github/workflows/release-draft.yml @@ -27,10 +27,10 @@ jobs: - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 - - name: Compute next version + - name: Compute next release version id: version run: | - NEXT="$(./gradlew -q printVersion)" + NEXT="$(./gradlew -q printNextReleaseVersion)" echo "next=${NEXT}" >> "$GITHUB_OUTPUT" - name: Update release draft From 0de4cec898360b7d714a324c05331ab2b5460555 Mon Sep 17 00:00:00 2001 From: num0001 Date: Fri, 22 May 2026 18:26:04 -0400 Subject: [PATCH 08/10] delete: vscode setting --- .vscode/settings.json | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index c5f3f6b9..00000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.configuration.updateBuildConfiguration": "interactive" -} \ No newline at end of file From c31e180d403c687b1647ab4ed6880d216b926c31 Mon Sep 17 00:00:00 2001 From: Zoriot Date: Sun, 24 May 2026 00:28:29 +0200 Subject: [PATCH 09/10] =?UTF-8?q?ci:=20=F0=9F=94=A7=20update=20GitHub=20Ac?= =?UTF-8?q?tions=20to=20latest=20versions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upgrade workflow dependencies (`actions/checkout`, `gradle/actions/setup-gradle`, `softprops/action-gh-release`, `actions/upload-artifact`, and `release-drafter/release-drafter`) to their latest stable versions for improved compatibility and performance. --- .github/workflows/build.yml | 8 ++++---- .github/workflows/release-draft.yml | 6 +++--- .github/workflows/release.yml | 6 +++--- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 414a9575..912c8edd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -16,7 +16,7 @@ jobs: steps: - name: Checkout PR merge commit if: github.event_name == 'pull_request' - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: ref: refs/pull/${{ github.event.pull_request.number }}/merge fetch-depth: 0 @@ -24,7 +24,7 @@ jobs: - name: Checkout main on push if: github.event_name == 'push' - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true @@ -36,12 +36,12 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v6 - name: Build with Gradle Wrapper run: ./gradlew clean build - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: Staging-Build path: build/libs diff --git a/.github/workflows/release-draft.yml b/.github/workflows/release-draft.yml index 7e6b5b67..1bffe0b1 100644 --- a/.github/workflows/release-draft.yml +++ b/.github/workflows/release-draft.yml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true @@ -25,7 +25,7 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v6 - name: Compute next release version id: version @@ -34,7 +34,7 @@ jobs: echo "next=${NEXT}" >> "$GITHUB_OUTPUT" - name: Update release draft - uses: release-drafter/release-drafter@v6 + uses: release-drafter/release-drafter@v7 with: version: ${{ steps.version.outputs.next }} env: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e6730477..77990d16 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,7 @@ jobs: contents: write steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 with: fetch-depth: 0 fetch-tags: true @@ -24,13 +24,13 @@ jobs: distribution: 'temurin' - name: Setup Gradle - uses: gradle/actions/setup-gradle@v4 + uses: gradle/actions/setup-gradle@v6 - name: Build with Gradle Wrapper run: ./gradlew clean build - name: Attach shaded JAR to release - uses: softprops/action-gh-release@v2 + uses: softprops/action-gh-release@v3 with: files: build/libs/*.jar fail_on_unmatched_files: true From 686369c85970962a19cc6588f25da39ad723c4b9 Mon Sep 17 00:00:00 2001 From: Zoriot Date: Sun, 24 May 2026 00:54:07 +0200 Subject: [PATCH 10/10] =?UTF-8?q?docs:=20=E2=9C=8F=EF=B8=8F=20add=20commit?= =?UTF-8?q?=20naming=20conventions=20section=20to=20README?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/README.md b/README.md index 4f508905..f099d7a1 100644 --- a/README.md +++ b/README.md @@ -111,6 +111,23 @@ dedicated to the Plot-System itself.
* Submitting a fix * Proposing new features +### Commit Naming Conventions + +To keep our commit history clean and readable, please follow a naming convention for your commits by using one of the +following prefixes (based on [Conventional Commits](https://www.conventionalcommits.org/en/v1.0.0/#summary)): + +* `feat:` - A new feature +* `fix:` - A bug fix +* `docs:` - Documentation only changes +* `style:` - Changes that do not affect the meaning of the code (white-space, formatting, etc.) +* `refactor:` - A code change that neither fixes a bug nor adds a feature +* `perf:` - A code change that improves performance +* `test:` - Adding missing tests or correcting existing tests +* `chore:` - Changes to the build process or auxiliary tools and libraries + +If no recognized prefix is provided, the maintainers may ask you to revise your commit message, or they may squash and +rename the commit with an appropriate prefix upon merging. + # License Distributed under the MIT License. See `LICENSE` for more information.