From 8d997c8b3dd94c6569acac51014c1d4077d136da Mon Sep 17 00:00:00 2001 From: Lasse Nielsen Date: Sat, 14 Mar 2026 10:16:51 +0100 Subject: [PATCH 1/6] chore: inline shared release workflows --- .github/workflows/release-pr.yml | 11 +- .github/workflows/release.yml | 40 +++- .github/workflows/toc-update.yml | 70 ++++++- scripts/generate_changelog.sh | 118 +++++++++++ scripts/update_toc_versions.sh | 325 +++++++++++++++++++++++++++++++ 5 files changed, 555 insertions(+), 9 deletions(-) create mode 100755 scripts/generate_changelog.sh create mode 100755 scripts/update_toc_versions.sh diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index a6a0cc2..4058723 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -10,5 +10,12 @@ permissions: jobs: release-pr: - uses: DragonAddons/wow-workflows/.github/workflows/release-pr.yml@main - secrets: inherit + runs-on: ubuntu-latest + steps: + - name: Run release-please + id: release + uses: googleapis/release-please-action@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} + config-file: release-please-config.json + manifest-file: .release-please-manifest.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2a9b738..67e94a8 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,39 @@ permissions: jobs: release: - uses: DragonAddons/wow-workflows/.github/workflows/release.yml@main - with: - tag_name: ${{ inputs.tag_name || '' }} - secrets: inherit + name: Package and Upload + runs-on: ubuntu-latest + env: + CF_API_KEY: ${{ secrets.CF_API_KEY }} + WAGO_API_TOKEN: ${{ secrets.WAGO_API_TOKEN }} + GITHUB_OAUTH: ${{ secrets.GITHUB_TOKEN }} + steps: + - name: Resolve tag + shell: bash + run: | + if [[ -n "${{ inputs.tag_name || '' }}" ]]; then + TAG="${{ inputs.tag_name }}" + else + TAG="${{ github.ref_name }}" + fi + + echo "TAG_NAME=$TAG" >> "$GITHUB_ENV" + + - name: Checkout tag + uses: actions/checkout@v5 + with: + ref: refs/tags/${{ env.TAG_NAME }} + fetch-depth: 0 + + - name: Ensure changelog script is executable + shell: bash + run: chmod +x scripts/generate_changelog.sh + + - name: Generate changelog + shell: bash + run: bash scripts/generate_changelog.sh + + - name: Package and upload + uses: BigWigsMods/packager@v2 + env: + GITHUB_REF: refs/tags/${{ env.TAG_NAME }} diff --git a/.github/workflows/toc-update.yml b/.github/workflows/toc-update.yml index 70fea1a..e945b21 100644 --- a/.github/workflows/toc-update.yml +++ b/.github/workflows/toc-update.yml @@ -11,6 +11,70 @@ permissions: jobs: update: - uses: DragonAddons/wow-workflows/.github/workflows/toc-update.yml@main - with: - flavors: "retail classic vanilla tbc" + name: Update TOC versions + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v6 + with: + ref: master + + - name: Ensure TOC update script is executable + shell: bash + run: chmod +x scripts/update_toc_versions.sh + + - name: Update TOC versions + shell: bash + env: + FLAVORS: retail classic vanilla tbc + run: | + args=() + for flavor in $FLAVORS; do + args+=(--flavor "$flavor") + done + + bash scripts/update_toc_versions.sh "${args[@]}" + + - name: Check for changes + id: diff + shell: bash + run: | + if git diff --quiet; then + echo "has_changes=false" >> "$GITHUB_OUTPUT" + echo "No TOC changes detected" + exit 0 + fi + + echo "has_changes=true" >> "$GITHUB_OUTPUT" + echo "TOC changes detected:" + git diff --name-only + + - name: Create or update PR + if: steps.diff.outputs.has_changes == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash + run: | + BRANCH="chore/toc-interface-version" + TITLE="chore: update TOC Interface versions" + + git config user.name "github-actions[bot]" + git config user.email "41898282+github-actions[bot]@users.noreply.github.com" + + git checkout -B "$BRANCH" + git add -A '*.toc' + git commit -m "$TITLE" + git push --force-with-lease origin "$BRANCH" + + gh label create "automated" --description "Auto-generated changes" --color "ededed" 2>/dev/null || true + + if ! gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number' | rg -q .; then + gh pr create \ + --base master \ + --head "$BRANCH" \ + --title "$TITLE" \ + --body "Automated update of \`## Interface\` versions in TOC files based on latest Blizzard CDN data." \ + --label "automated" + else + echo "PR already exists for branch ${BRANCH}, force-push updated it" + fi diff --git a/scripts/generate_changelog.sh b/scripts/generate_changelog.sh new file mode 100755 index 0000000..c687ec0 --- /dev/null +++ b/scripts/generate_changelog.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +############################################################################### +# generate_changelog.sh +# Generates a clean changelog for the BigWigsMods packager release pipeline. +# Strips release commits and Co-authored-by lines from the git log. +# +# Usage: bash scripts/generate_changelog.sh [output_file] +# Env: TAG_NAME - tag to generate changelog for (optional) +# GITHUB_REPOSITORY - owner/repo for links (auto-set in GitHub Actions) +############################################################################### +set -euo pipefail + +OUTPUT_FILE="${1:-.release/CHANGELOG.md}" +REPO="${GITHUB_REPOSITORY:?GITHUB_REPOSITORY must be set}" + +# Derive project name from repo (e.g., "Xerrion/PhDamage" -> "PhDamage") +PROJECT_NAME="${REPO##*/}" + +# --------------------------------------------------------------------------- +# Resolve current tag +# --------------------------------------------------------------------------- +if [[ -n "${TAG_NAME:-}" ]]; then + current_tag="$TAG_NAME" +else + current_tag="$(git describe --tags --abbrev=0)" +fi + +# --------------------------------------------------------------------------- +# Resolve previous tag (may not exist for the first release) +# --------------------------------------------------------------------------- +previous_tag="" +if git describe --tags --abbrev=0 "${current_tag}^" >/dev/null 2>&1; then + previous_tag="$(git describe --tags --abbrev=0 "${current_tag}^")" +fi + +# --------------------------------------------------------------------------- +# Tag date +# --------------------------------------------------------------------------- +tag_date="$(git log -1 --format=%as "${current_tag}")" + +# --------------------------------------------------------------------------- +# Prepare output directory +# --------------------------------------------------------------------------- +mkdir -p "$(dirname "$OUTPUT_FILE")" + +# --------------------------------------------------------------------------- +# Write header +# --------------------------------------------------------------------------- +{ + echo "# ${PROJECT_NAME}" + echo "" + echo "## [${current_tag}](https://github.com/${REPO}/tree/${current_tag}) (${tag_date})" + + if [[ -n "$previous_tag" ]]; then + printf "[Full Changelog](https://github.com/%s/compare/%s...%s)" \ + "$REPO" "$previous_tag" "$current_tag" + else + printf "[Full Changelog](https://github.com/%s/commits/%s)" \ + "$REPO" "$current_tag" + fi + + printf " [Previous Releases](https://github.com/%s/releases)\n" "$REPO" + echo "" +} > "$OUTPUT_FILE" + +# --------------------------------------------------------------------------- +# Determine log range +# --------------------------------------------------------------------------- +if [[ -n "$previous_tag" ]]; then + range="${previous_tag}..${current_tag}" +else + range="$current_tag" +fi + +# --------------------------------------------------------------------------- +# Write commit list - one commit per NUL-delimited record +# --------------------------------------------------------------------------- +while IFS= read -r -d $'\0' record; do + subject="" + body="" + + while IFS= read -r line; do + if [[ -z "$subject" ]]; then + if [[ -n "$line" ]]; then + subject="$line" + fi + continue + fi + + body+="$line"$'\n' + done <<< "$record" + + [[ -z "$subject" ]] && continue + + if [[ "$subject" == chore:\ release\ * || "$subject" == chore\(*\):\ release\ * ]]; then + continue + fi + + echo "- ${subject}" >> "$OUTPUT_FILE" + + while IFS= read -r line; do + if [[ "$line" =~ ^[[:space:]]*[Cc][Oo]-[Aa][Uu][Tt][Hh][Oo][Rr][Ee][Dd]-[Bb][Yy]: ]]; then + continue + fi + + if [[ "$line" =~ ^-+$ ]]; then + continue + fi + + if [[ -z "$line" ]]; then + continue + fi + + echo " ${line}" >> "$OUTPUT_FILE" + done <<< "$body" +done < <(git log --format='%s%n%b%x00' "$range") + +echo "Changelog written to ${OUTPUT_FILE}" diff --git a/scripts/update_toc_versions.sh b/scripts/update_toc_versions.sh new file mode 100755 index 0000000..ebbd58e --- /dev/null +++ b/scripts/update_toc_versions.sh @@ -0,0 +1,325 @@ +#!/usr/bin/env bash +############################################################################### +# update_toc_versions.sh +# Fetches latest WoW interface versions from Blizzard's CDN and updates +# ## Interface directives in .toc files. +# +# Usage: bash scripts/update_toc_versions.sh [--flavor FLAVOR]... +# Env: None required (all config via CLI args) +############################################################################### +set -euo pipefail + +readonly CDN_BASE="https://us.version.battle.net/v2/products" +readonly MAX_RETRIES=5 +readonly RETRY_DELAY=2 +readonly VALID_FLAVORS=("retail" "classic" "vanilla" "tbc") +readonly DEFAULT_EXCLUDE_DIRS=("Libs") + +declare -A VERSION_CACHE + +usage() { + cat </dev/null) && break + + if (( attempt < MAX_RETRIES )); then + echo " Retry ${attempt}/${MAX_RETRIES} for ${product}..." >&2 + sleep "$RETRY_DELAY" + fi + done + + if [[ -z "$response" ]]; then + echo "ERROR: Failed to fetch version for ${product} after ${MAX_RETRIES} attempts" >&2 + return 1 + fi + + local versions_name="" + versions_name=$(echo "$response" | awk -F'|' '$1 == "us" { print $6 }') + + if [[ -z "$versions_name" ]]; then + echo "ERROR: Could not parse US region version for ${product}" >&2 + return 1 + fi + + local game_version="" + game_version=$(echo "$versions_name" | awk -F. '{print $1"."$2"."$3}') + + local interface_version="" + interface_version=$(echo "$game_version" | awk -F. '{printf "%d%02d%02d\n", $1, $2, $3}') + + VERSION_CACHE[$product]="$interface_version" + echo "$interface_version" +} + +find_toc_files() { + local exclude_dirs=("$@") + local find_args=() + + find_args+=("." "-name" "*.toc") + + for dir in "${exclude_dirs[@]}"; do + find_args+=("-not" "-path" "*/${dir}/*") + done + + find "${find_args[@]}" +} + +update_toc_directive() { + local toc_file="$1" + local suffix="$2" + local version="$3" + + local directive="## Interface${suffix}:" + local pattern="^## Interface${suffix}: .*$" + local replacement="## Interface${suffix}: ${version}" + + if ! grep -q "^## Interface${suffix}: " "$toc_file"; then + return 1 + fi + + local current_value="" + current_value=$(grep "^## Interface${suffix}: " "$toc_file" | sed "s/^## Interface${suffix}: //") + + local first_value + first_value=$(echo "$current_value" | cut -d',' -f1 | tr -d ' ') + + if [[ "$first_value" == "$version" ]]; then + echo " ${directive} ${current_value} (unchanged)" + return 1 + fi + + sed -i "s/${pattern}/${replacement}/" "$toc_file" + + echo " ${directive} ${current_value} -> ${version}" + return 0 +} + +update_toc_file() { + local toc_file="$1" + shift + local flavors=("$@") + + local file_changed=false + + for flavor in "${flavors[@]}"; do + case "$flavor" in + retail) + if update_toc_directive "$toc_file" "" "$RETAIL_VERSION"; then + file_changed=true + fi + ;; + classic) + if update_toc_directive "$toc_file" "-Mists" "$CLASSIC_VERSION"; then + file_changed=true + fi + if update_toc_directive "$toc_file" "-Classic" "$CLASSIC_VERSION"; then + file_changed=true + fi + ;; + vanilla) + if update_toc_directive "$toc_file" "-Vanilla" "$VANILLA_VERSION"; then + file_changed=true + fi + if [[ "$HAS_CLASSIC_FLAVOR" != "true" ]]; then + if update_toc_directive "$toc_file" "-Classic" "$VANILLA_VERSION"; then + file_changed=true + fi + fi + ;; + tbc) + if update_toc_directive "$toc_file" "-BCC" "$TBC_VERSION"; then + file_changed=true + fi + if update_toc_directive "$toc_file" "-TBC" "$TBC_VERSION"; then + file_changed=true + fi + ;; + esac + done + + $file_changed +} + +main() { + local flavors=() + local exclude_dirs=() + local exclude_dirs_specified=false + + while [[ $# -gt 0 ]]; do + case "$1" in + --help) + usage + ;; + --flavor) + if [[ -z "${2:-}" ]]; then + echo "ERROR: --flavor requires a value" >&2 + exit 1 + fi + + local valid=false + for valid_flavor in "${VALID_FLAVORS[@]}"; do + if [[ "$2" == "$valid_flavor" ]]; then + valid=true + break + fi + done + + if [[ "$valid" != "true" ]]; then + echo "ERROR: Invalid flavor '${2}'. Valid: ${VALID_FLAVORS[*]}" >&2 + exit 1 + fi + + flavors+=("$2") + shift 2 + ;; + --exclude-dir) + if [[ -z "${2:-}" ]]; then + echo "ERROR: --exclude-dir requires a value" >&2 + exit 1 + fi + + exclude_dirs+=("$2") + exclude_dirs_specified=true + shift 2 + ;; + *) + echo "ERROR: Unknown argument '${1}'" >&2 + echo "Run with --help for usage" >&2 + exit 1 + ;; + esac + done + + if [[ ${#flavors[@]} -eq 0 ]]; then + flavors=("${VALID_FLAVORS[@]}") + fi + + if [[ "$exclude_dirs_specified" != "true" ]]; then + exclude_dirs=("${DEFAULT_EXCLUDE_DIRS[@]}") + fi + + HAS_CLASSIC_FLAVOR="false" + HAS_VANILLA_FLAVOR="false" + for flavor in "${flavors[@]}"; do + if [[ "$flavor" == "classic" ]]; then + HAS_CLASSIC_FLAVOR="true" + fi + + if [[ "$flavor" == "vanilla" ]]; then + HAS_VANILLA_FLAVOR="true" + fi + done + + declare -A FLAVOR_PRODUCT + FLAVOR_PRODUCT[retail]="wow" + FLAVOR_PRODUCT[classic]="wow_classic" + FLAVOR_PRODUCT[vanilla]="wow_classic_era" + FLAVOR_PRODUCT[tbc]="wow_anniversary" + + declare -A FLAVOR_VERSION + + for flavor in "${flavors[@]}"; do + local product="${FLAVOR_PRODUCT[$flavor]}" + echo "Fetching ${flavor} (${product}) version from Blizzard CDN..." + + local version="" + version=$(fetch_version "$product") + FLAVOR_VERSION[$flavor]="$version" + echo " -> ${version}" + done + + RETAIL_VERSION="${FLAVOR_VERSION[retail]:-}" + CLASSIC_VERSION="${FLAVOR_VERSION[classic]:-}" + VANILLA_VERSION="${FLAVOR_VERSION[vanilla]:-}" + TBC_VERSION="${FLAVOR_VERSION[tbc]:-}" + + local updated_count=0 + local toc_files=() + + while IFS= read -r toc_file; do + toc_files+=("$toc_file") + done < <(find_toc_files "${exclude_dirs[@]}") + + if [[ ${#toc_files[@]} -eq 0 ]]; then + echo "No .toc files found" + exit 0 + fi + + for toc_file in "${toc_files[@]}"; do + local has_directives=false + + for flavor in "${flavors[@]}"; do + case "$flavor" in + retail) + grep -q "^## Interface: " "$toc_file" 2>/dev/null && has_directives=true || true + ;; + classic) + grep -q "^## Interface-Mists: " "$toc_file" 2>/dev/null && has_directives=true || true + grep -q "^## Interface-Classic: " "$toc_file" 2>/dev/null && has_directives=true || true + ;; + vanilla) + grep -q "^## Interface-Vanilla: " "$toc_file" 2>/dev/null && has_directives=true || true + if [[ "$HAS_CLASSIC_FLAVOR" != "true" ]]; then + grep -q "^## Interface-Classic: " "$toc_file" 2>/dev/null && has_directives=true || true + fi + ;; + tbc) + grep -q "^## Interface-BCC: " "$toc_file" 2>/dev/null && has_directives=true || true + grep -q "^## Interface-TBC: " "$toc_file" 2>/dev/null && has_directives=true || true + ;; + esac + done + + if [[ "$has_directives" != "true" ]]; then + continue + fi + + echo "Updating ${toc_file}:" + if update_toc_file "$toc_file" "${flavors[@]}"; then + updated_count=$((updated_count + 1)) + fi + done + + if (( updated_count > 0 )); then + echo "Updated ${updated_count} files" + exit 0 + fi + + echo "No changes needed" +} + +main "$@" From dd9532a38221d806397a1dc842a14b1277f2fd2c Mon Sep 17 00:00:00 2001 From: Lasse Nielsen Date: Sat, 14 Mar 2026 10:25:26 +0100 Subject: [PATCH 2/6] fix: harden local release workflows --- .github/workflows/release.yml | 35 ++++++++++++++++++++++++++++++-- .github/workflows/toc-update.yml | 3 ++- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 67e94a8..7fa3d3d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,15 +33,46 @@ jobs: echo "TAG_NAME=$TAG" >> "$GITHUB_ENV" + - name: Resolve workflow source ref + id: workflow-source + shell: bash + env: + WORKFLOW_REF: ${{ github.workflow_ref }} + run: | + WORKFLOW_SOURCE_REF="${WORKFLOW_REF##*@}" + + if [[ -z "$WORKFLOW_SOURCE_REF" || "$WORKFLOW_SOURCE_REF" == "$WORKFLOW_REF" ]]; then + echo "Unable to parse workflow source ref from: $WORKFLOW_REF" >&2 + exit 1 + fi + + echo "ref=$WORKFLOW_SOURCE_REF" >> "$GITHUB_OUTPUT" + + - name: Checkout workflow source + uses: actions/checkout@v5 + with: + ref: ${{ steps.workflow-source.outputs.ref }} + fetch-depth: 1 + path: .workflow-source + + - name: Preserve changelog script + shell: bash + run: | + mkdir -p "$RUNNER_TEMP/release-scripts" + cp .workflow-source/scripts/generate_changelog.sh "$RUNNER_TEMP/release-scripts/generate_changelog.sh" + - name: Checkout tag uses: actions/checkout@v5 with: ref: refs/tags/${{ env.TAG_NAME }} fetch-depth: 0 - - name: Ensure changelog script is executable + - name: Restore changelog script shell: bash - run: chmod +x scripts/generate_changelog.sh + run: | + mkdir -p scripts + cp "$RUNNER_TEMP/release-scripts/generate_changelog.sh" scripts/generate_changelog.sh + chmod +x scripts/generate_changelog.sh - name: Generate changelog shell: bash diff --git a/.github/workflows/toc-update.yml b/.github/workflows/toc-update.yml index e945b21..55a06ef 100644 --- a/.github/workflows/toc-update.yml +++ b/.github/workflows/toc-update.yml @@ -7,6 +7,7 @@ on: permissions: contents: write + issues: write pull-requests: write jobs: @@ -52,7 +53,7 @@ jobs: - name: Create or update PR if: steps.diff.outputs.has_changes == 'true' env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GH_TOKEN: ${{ github.token }} shell: bash run: | BRANCH="chore/toc-interface-version" From f82992a37fa5d830ebbe9e12861bf1b70feca028 Mon Sep 17 00:00:00 2001 From: Lasse Nielsen Date: Sun, 15 Mar 2026 14:41:46 +0100 Subject: [PATCH 3/6] fix: wrong tags --- .github/workflows/release-pr.yml | 2 +- .github/workflows/release.yml | 4 ++-- .github/workflows/toc-update.yml | 5 +++-- RaidLogAuto.toc | 2 +- 4 files changed, 7 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 4058723..d680dde 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -16,6 +16,6 @@ jobs: id: release uses: googleapis/release-please-action@v4 with: - token: ${{ secrets.GITHUB_TOKEN }} + token: ${{ githun.token }} config-file: release-please-config.json manifest-file: .release-please-manifest.json diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7fa3d3d..571ca3b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -49,7 +49,7 @@ jobs: echo "ref=$WORKFLOW_SOURCE_REF" >> "$GITHUB_OUTPUT" - name: Checkout workflow source - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: ref: ${{ steps.workflow-source.outputs.ref }} fetch-depth: 1 @@ -62,7 +62,7 @@ jobs: cp .workflow-source/scripts/generate_changelog.sh "$RUNNER_TEMP/release-scripts/generate_changelog.sh" - name: Checkout tag - uses: actions/checkout@v5 + uses: actions/checkout@v6 with: ref: refs/tags/${{ env.TAG_NAME }} fetch-depth: 0 diff --git a/.github/workflows/toc-update.yml b/.github/workflows/toc-update.yml index 55a06ef..a8ad932 100644 --- a/.github/workflows/toc-update.yml +++ b/.github/workflows/toc-update.yml @@ -63,13 +63,14 @@ jobs: git config user.email "41898282+github-actions[bot]@users.noreply.github.com" git checkout -B "$BRANCH" - git add -A '*.toc' + git add -A git commit -m "$TITLE" git push --force-with-lease origin "$BRANCH" gh label create "automated" --description "Auto-generated changes" --color "ededed" 2>/dev/null || true - if ! gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number' | rg -q .; then + pr_number="$(gh pr list --head "$BRANCH" --state open --json number --jq '.[0].number')" + if [ -z "$pr_number" ]; then gh pr create \ --base master \ --head "$BRANCH" \ diff --git a/RaidLogAuto.toc b/RaidLogAuto.toc index 1a3ca19..90bdf20 100644 --- a/RaidLogAuto.toc +++ b/RaidLogAuto.toc @@ -1,7 +1,7 @@ ## Interface: 110207, 120001, 120000 ## Interface-Mists: 50502, 50503 ## Interface-BCC: 20505 -## Interface-vanilla: 11508, 11507 +## Interface-Vanilla: 11508, 11507 ## Title: RaidLogAuto ## Notes: Automatically enables combat logging when entering a raid and disables it when leaving. From d7483b12f821f0cdc2510c22997fe59d4e8c756f Mon Sep 17 00:00:00 2001 From: Lasse Nielsen Date: Sun, 15 Mar 2026 14:44:37 +0100 Subject: [PATCH 4/6] fix: typo in github --- .github/workflows/release-pr.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index d680dde..09d80ad 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -16,6 +16,6 @@ jobs: id: release uses: googleapis/release-please-action@v4 with: - token: ${{ githun.token }} + token: ${{ github.token }} config-file: release-please-config.json manifest-file: .release-please-manifest.json From 1a6fe05239c047d4d3678c65c5acfcf2a67a6e07 Mon Sep 17 00:00:00 2001 From: Lasse Nielsen Date: Sun, 15 Mar 2026 14:50:18 +0100 Subject: [PATCH 5/6] fix: pin correct checkout version --- .github/workflows/lint.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 60f71bf..654de6a 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -9,7 +9,7 @@ jobs: luacheck: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 with: ref: ${{ github.event.pull_request.head.sha }} - uses: nebularg/actions-luacheck@v1 From 62b5468aa034956303b386e79f4b4a37018a25a5 Mon Sep 17 00:00:00 2001 From: Lasse Nielsen Date: Sun, 15 Mar 2026 14:52:40 +0100 Subject: [PATCH 6/6] fix: add proper permissions --- .github/workflows/release-pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 09d80ad..9ba340b 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -7,6 +7,7 @@ on: permissions: contents: write pull-requests: write + issues: write jobs: release-pr: