From dc386ee07163b3ddac8d252e3cbfb8e35bd7d530 Mon Sep 17 00:00:00 2001 From: Patrick Schaper Date: Thu, 21 May 2026 16:10:52 +0200 Subject: [PATCH 1/5] fix: source release changelog from development branch (#80) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - branch release from origin/development instead of main - replace --no-merges with --first-parent to avoid duplicates - reorder steps: branch creation → build → changelog → commit - defer VERSION write to the release branch - skip build/changelog/commit on reruns via created output flag --- .github/workflows/release.yml | 63 +++++++++++++++++++++++------------ 1 file changed, 42 insertions(+), 21 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 324fd7a..88a3521 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -86,8 +86,6 @@ jobs: exit 1 fi - printf '%s\n' "${next_version}" > VERSION - echo "current=${current_version}" >> "$GITHUB_OUTPUT" echo "next=${next_version}" >> "$GITHUB_OUTPUT" echo "branch=${release_branch}" >> "$GITHUB_OUTPUT" @@ -117,7 +115,42 @@ jobs: echo "branch_exists=false" >> "$GITHUB_OUTPUT" fi + - name: Create or reuse release branch + id: branch + shell: bash + run: | + set -euo pipefail + + version="${{ steps.version.outputs.next }}" + branch="${{ steps.version.outputs.branch }}" + branch_exists="${{ steps.refs.outputs.branch_exists }}" + + if [[ "${branch_exists}" == "true" ]]; then + git fetch origin "${branch}" + git switch -C "${branch}" "origin/${branch}" + + branch_version="$(tr -d '[:space:]' < VERSION)" + if [[ "${branch_version}" != "${version}" ]]; then + echo "Existing ${branch} has VERSION ${branch_version}, expected ${version}." >&2 + exit 1 + fi + + echo "created=false" >> "$GITHUB_OUTPUT" + exit 0 + fi + + # Branch from development so the release includes all new changes + git fetch origin development + git switch -c "${branch}" origin/development + + # Merge main to incorporate any commits not on development + # (e.g. previous release chore commits) + git merge origin/main --no-edit + + echo "created=true" >> "$GITHUB_OUTPUT" + - name: Validate build + if: steps.branch.outputs.created == 'true' shell: bash run: | set -euo pipefail @@ -125,6 +158,7 @@ jobs: ./build.sh - name: Update CHANGELOG + if: steps.branch.outputs.created == 'true' id: changelog shell: bash run: | @@ -138,7 +172,9 @@ jobs: fi today="$(date -u +%Y-%m-%d)" - # Collect conventional commits since the previous tag + # Collect conventional commits since the previous tag. + # --first-parent follows only the mainline (one entry per merged PR, + # no duplicates from feature branch commits). features="" fixes="" while IFS= read -r line; do @@ -154,7 +190,7 @@ jobs: rest="${msg#fix(}" fixes="${fixes}- ${rest#*): }"$'\n' fi - done < <(git log "${prev_tag}..HEAD" --oneline --no-merges 2>/dev/null || git log --oneline --no-merges) + done < <(git log "${prev_tag}..HEAD" --oneline --first-parent 2>/dev/null || git log --oneline --first-parent) # Build the new changelog section new_section="## [${version}] - ${today}"$'\n' @@ -174,30 +210,15 @@ jobs: } > "${tmp}" mv "${tmp}" CHANGELOG.md - - name: Create or reuse release branch + - name: Commit and push release changes + if: steps.branch.outputs.created == 'true' shell: bash run: | set -euo pipefail version="${{ steps.version.outputs.next }}" branch="${{ steps.version.outputs.branch }}" - branch_exists="${{ steps.refs.outputs.branch_exists }}" - - if [[ "${branch_exists}" == "true" ]]; then - git restore --source=HEAD --staged --worktree VERSION CHANGELOG.md - git fetch origin "${branch}" - git switch -C "${branch}" "origin/${branch}" - - branch_version="$(tr -d '[:space:]' < VERSION)" - if [[ "${branch_version}" != "${version}" ]]; then - echo "Existing ${branch} has VERSION ${branch_version}, expected ${version}." >&2 - exit 1 - fi - - exit 0 - fi - git switch -c "${branch}" printf '%s\n' "${version}" > VERSION git add VERSION CHANGELOG.md git commit -m "chore(release): ${version}" -m "- bump VERSION to ${version}" -m "- update CHANGELOG.md" From d561c1fec3b9e12503b9facea6af96c3717058f7 Mon Sep 17 00:00:00 2001 From: Patrick Schaper Date: Thu, 21 May 2026 16:19:52 +0200 Subject: [PATCH 2/5] fix: allow release workflow dispatch from development branch (#81) - accept both main and development in the branch guard --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 88a3521..fa32b12 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,13 +43,13 @@ jobs: with: fetch-depth: 0 - - name: Ensure release runs from main + - name: Ensure release runs from main or development shell: bash run: | set -euo pipefail - if [[ "${GITHUB_REF}" != "refs/heads/main" ]]; then - echo "Run this workflow from main." >&2 + if [[ "${GITHUB_REF}" != "refs/heads/main" && "${GITHUB_REF}" != "refs/heads/development" ]]; then + echo "Run this workflow from main or development." >&2 exit 1 fi From 46ec988d45f88a136bb44e3b9e6094aaf4025dbc Mon Sep 17 00:00:00 2001 From: Patrick Schaper Date: Thu, 21 May 2026 16:30:22 +0200 Subject: [PATCH 3/5] fix: always regenerate changelog on release reruns (#82) - remove branch reuse logic that skipped changelog regeneration - always recreate release branch from development - use --force-with-lease to update existing remote branch - remove unused branch_exists check from inspect step --- .github/workflows/release.yml | 37 ++++------------------------------- 1 file changed, 4 insertions(+), 33 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fa32b12..7b335a2 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -91,13 +91,11 @@ jobs: echo "branch=${release_branch}" >> "$GITHUB_OUTPUT" - name: Inspect release refs - id: refs shell: bash run: | set -euo pipefail version="${{ steps.version.outputs.next }}" - branch="${{ steps.version.outputs.branch }}" if git ls-remote --exit-code --tags origin "refs/tags/${version}" >/dev/null 2>&1; then echo "Tag ${version} already exists." >&2 @@ -109,37 +107,15 @@ jobs: exit 1 fi - if git ls-remote --exit-code --heads origin "${branch}" >/dev/null 2>&1; then - echo "branch_exists=true" >> "$GITHUB_OUTPUT" - else - echo "branch_exists=false" >> "$GITHUB_OUTPUT" - fi - - - name: Create or reuse release branch - id: branch + - name: Create release branch shell: bash run: | set -euo pipefail - version="${{ steps.version.outputs.next }}" branch="${{ steps.version.outputs.branch }}" - branch_exists="${{ steps.refs.outputs.branch_exists }}" - - if [[ "${branch_exists}" == "true" ]]; then - git fetch origin "${branch}" - git switch -C "${branch}" "origin/${branch}" - branch_version="$(tr -d '[:space:]' < VERSION)" - if [[ "${branch_version}" != "${version}" ]]; then - echo "Existing ${branch} has VERSION ${branch_version}, expected ${version}." >&2 - exit 1 - fi - - echo "created=false" >> "$GITHUB_OUTPUT" - exit 0 - fi - - # Branch from development so the release includes all new changes + # Always (re)create from development so the release includes all + # new changes — even on a rerun where the branch already exists. git fetch origin development git switch -c "${branch}" origin/development @@ -147,10 +123,7 @@ jobs: # (e.g. previous release chore commits) git merge origin/main --no-edit - echo "created=true" >> "$GITHUB_OUTPUT" - - name: Validate build - if: steps.branch.outputs.created == 'true' shell: bash run: | set -euo pipefail @@ -158,7 +131,6 @@ jobs: ./build.sh - name: Update CHANGELOG - if: steps.branch.outputs.created == 'true' id: changelog shell: bash run: | @@ -211,7 +183,6 @@ jobs: mv "${tmp}" CHANGELOG.md - name: Commit and push release changes - if: steps.branch.outputs.created == 'true' shell: bash run: | set -euo pipefail @@ -222,7 +193,7 @@ jobs: printf '%s\n' "${version}" > VERSION git add VERSION CHANGELOG.md git commit -m "chore(release): ${version}" -m "- bump VERSION to ${version}" -m "- update CHANGELOG.md" - git push --set-upstream origin "${branch}" + git push --force-with-lease --set-upstream origin "${branch}" - name: Open or reuse release pull request id: pr From 193607a668cbaa5b205c6311d614f47360341121 Mon Sep 17 00:00:00 2001 From: Patrick Schaper Date: Thu, 21 May 2026 16:40:13 +0200 Subject: [PATCH 4/5] fix: restrict release workflow dispatch to development branch (#83) - only allow workflow_dispatch from development - publish job push trigger on main stays unchanged --- .github/workflows/release.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7b335a2..79eccd6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -43,13 +43,13 @@ jobs: with: fetch-depth: 0 - - name: Ensure release runs from main or development + - name: Ensure release runs from development shell: bash run: | set -euo pipefail - if [[ "${GITHUB_REF}" != "refs/heads/main" && "${GITHUB_REF}" != "refs/heads/development" ]]; then - echo "Run this workflow from main or development." >&2 + if [[ "${GITHUB_REF}" != "refs/heads/development" ]]; then + echo "Run this workflow from development." >&2 exit 1 fi From d925fd719aea5b5d3a207abac50e7948c1322605 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 21 May 2026 14:47:08 +0000 Subject: [PATCH 5/5] chore(release): 0.1.2 - bump VERSION to 0.1.2 - update CHANGELOG.md --- CHANGELOG.md | 18 ++++++++++++++++++ VERSION | 2 +- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 81c384d..f1f6e38 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,24 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [0.1.2] - 2026-05-21 + +### Features + +- add two darker brightness steps to rain palette (#71) +- group options sheet into sections (#69) + +### Bug Fixes + +- restrict release workflow dispatch to development branch (#83) +- always regenerate changelog on release reruns (#82) +- allow release workflow dispatch from development branch (#81) +- source release changelog from development branch (#80) +- derive current version from latest git tag in release workflow (#74) +- auto-merge back-merge PR and sync VERSION after release (#73) +- apply typing speed to all intro scenes (#70) + ## [0.1.1] - 2026-05-20 ### Features diff --git a/VERSION b/VERSION index 17e51c3..d917d3e 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.1.1 +0.1.2