Skip to content

chore: streamline release workflow and scripts#25

Merged
c3b2a7 merged 1 commit into
masterfrom
chore/release-workflow
May 20, 2026
Merged

chore: streamline release workflow and scripts#25
c3b2a7 merged 1 commit into
masterfrom
chore/release-workflow

Conversation

@c3b2a7
Copy link
Copy Markdown
Owner

@c3b2a7 c3b2a7 commented May 20, 2026

No description provided.

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 20, 2026

Review Change Stack

Warning

Rate limit exceeded

@c3b2a7 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 10 minutes and 15 seconds before requesting another review.

You’ve run out of usage credits. Purchase more in the billing tab.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 8649eb5c-a959-4e68-ac37-7856b6569426

📥 Commits

Reviewing files that changed from the base of the PR and between 4303e9b and 7b9129a.

📒 Files selected for processing (7)
  • .github/workflows/build.yml
  • .github/workflows/codeql.yml
  • .github/workflows/release.yml
  • Makefile
  • README.md
  • install.sh
  • scripts/get-sshtunnel.sh
📝 Walkthrough

Walkthrough

This PR refactors the release and installer infrastructure by replacing a legacy GitHub-embedded installer script with a modern prebuilt-release-first installer served via CDN, updating Makefile platform targeting and packaging, enhancing the release workflow with changelog generation and GPG verification, and enabling CodeQL security scanning on pull requests.

Changes

Release Pipeline and Installer Refactor

Layer / File(s) Summary
CI trigger and security scanning
.github/workflows/build.yml, .github/workflows/codeql.yml
Enabled pull_request triggers in the build workflow alongside master branch restrictions. Introduced a new CodeQL workflow for security scanning on PRs and master pushes via the reusable Go CodeQL workflow.
Platform standardization and release packaging
Makefile
Replaced win64/win32 platform targets with windows-amd64/windows-386 naming. Added $(BINDIR) output directory rule. Refactored the releases target from explicit per-platform tar/zip commands to loop-based staging under $(BINDIR)/pkg/<target>, producing appropriate archives and cleaning up intermediates. Removed the prior GitHub upload target and GITHUB_UPLOAD_URL variable.
Release workflow with changelog and attestation
.github/workflows/release.yml
Added a generate-changelog job using orhun/git-cliff-action to produce release notes. Extended publish-binaries with granular permissions (id-token, attestations, artifact-metadata) and GPG tag signature verification. Integrated softprops/action-gh-release@v2 to publish artifacts with changelog as release body, followed by artifact attestation via actions/attest@v4. Added release-install-script job to invoke a reusable installer workflow with release tag and R2 credentials.
New prebuilt+source installer implementation
install.sh
Created a comprehensive installer that detects platform, normalizes OS/arch naming to Makefile conventions, queries GitHub for the latest release (or uses a specified version), and downloads/extracts prebuilt archives (.tar.gz for Unix, .zip for Windows). Supports interactive confirmation, quiet mode, custom install prefix, and falls back to source-based go install when prebuilt assets are unavailable. Includes helper functions for downloads, extraction, and error handling.
Installation documentation updates
README.md
Updated the installation command to run the new installer via https://get.lolico.me/sshtunnel | sh instead of the GitHub raw script URL. Reformatted the prebuilt archives description to a single line.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

The PR spans multiple infrastructure areas (CI/workflows, Makefile, installer script) with some heterogeneity: workflow YAML configuration, Makefile target refactoring with loop-based logic, and a new shell script with platform detection and multiple execution paths. The changes are cohesive (all parts work together for the new release+install flow) but require verification across CI triggers, build artifact structure, release automation, and installer correctness.

Possibly related PRs

  • c3b2a7/sshtunnel#21: Prior iteration of the same release pipeline and installer refactoring across workflows, Makefile, and install script.
  • c3b2a7/sshtunnel#20: Adds cliff.toml configuration and CHANGELOG.md updates that pair with this PR's git-cliff-action integration in the release workflow.

Poem

🐰 A rabbit hops through the CI halls,
With installers new and workflows tall,
From win64 to windows-amd64 we go,
CDN serves fast, what a show!
GPG seals the tag, and artifacts fly—
Building with style, reaching the sky! 🚀

🚥 Pre-merge checks | ✅ 3 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Description check ⚠️ Warning No pull request description was provided by the author, making it impossible to evaluate whether a description exists and relates to the changeset. Add a pull request description explaining the motivation and impact of the workflow and script changes for better context and maintainability.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main changes: updating GitHub Actions workflows (build, codeql, release) and streamlining release scripts (install.sh replaces get-sshtunnel.sh, Makefile refactored).
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
✨ Simplify code
  • Create PR with simplified code
  • Commit simplified code in branch chore/release-workflow

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🧹 Nitpick comments (2)
Makefile (1)

10-10: ⚡ Quick win

Declare command-only targets as .PHONY.

Please add .PHONY: all releases test clean to avoid filename collisions changing target execution behavior.

Also applies to: 64-68

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@Makefile` at line 10, Add a .PHONY declaration so command-only Makefile
targets cannot be mistaken for files: add a line declaring .PHONY: all releases
test clean (so targets like all, releases, test, clean are always executed as
targets), and ensure any other non-file targets used for builds (e.g.,
platform-specific targets invoked by all/releases) are covered by .PHONY where
appropriate.
.github/workflows/release.yml (1)

13-15: ⚡ Quick win

Disable checkout credential persistence in release jobs.

Set persist-credentials: false unless required later in the job to reduce token exposure risk.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml around lines 13 - 15, Update the checkout step
that currently uses "actions/checkout@v6" (the block with fetch-depth: 0) to
explicitly set persist-credentials: false so the workflow does not retain the
GITHUB_TOKEN for later steps; locate the "uses: actions/checkout@v6" step and
add the "persist-credentials: false" key alongside existing keys (e.g.,
fetch-depth) to disable credential persistence.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/codeql.yml:
- Line 15: Replace the mutable branch reference in the uses line ("uses:
c3b2a7/.github/.github/workflows/codeql-go.yaml@main") with a fixed full commit
SHA (e.g., @<full-commit-sha>) and append a short version comment for
maintainability (e.g., " # v1.x.y"); update the string in the workflow so the
reusable workflow is pinned to that immutable commit SHA instead of `@main`.

In @.github/workflows/release.yml:
- Around line 45-47: The workflow step currently interpolates ${{
github.event.release.tag_name }} directly in the shell run which is unsafe;
modify the step to pass the tag into the step's env (e.g., set an env variable
like RELEASE_TAG: ${{ github.event.release.tag_name }}) and then use that env
var inside the run commands (replace occurrences of echo "Verifying the tag: ${{
github.event.release.tag_name }}" and git verify-tag "${{
github.event.release.tag_name }}" with references to $RELEASE_TAG and git
verify-tag "$RELEASE_TAG") so the shell never directly expands the GH
expression.
- Around line 13-17: Replace all mutable action refs with their corresponding
full commit SHAs: update the uses entries for actions/checkout@v6 (both
occurrences), orhun/git-cliff-action@v4, actions/setup-go@v6,
softprops/action-gh-release@v2, actions/attest@v4, and
c3b2a7/.github/.github/workflows/release-install-script.yaml@main to their
pinned SHA commits; also add persist-credentials: false to both checkout steps
(the two actions/checkout blocks) so credentials are not passed to later steps.
Ensure each replacement preserves the existing keys and indentation and only
changes the tag to the exact commit SHA and adds the persist-credentials
property under the checkout step configuration.

In `@install.sh`:
- Around line 136-138: After resolving version with latest_tag into the variable
version, validate that version is non-empty and exit with a clear error if it is
empty; update the install.sh block that calls latest_tag (and any code that uses
the version variable) to check [ -z "$version" ] (or equivalent) after
assignment and call echo to stderr and exit 1 to avoid proceeding with an
invalid URL.
- Around line 35-39: The untar function prints success regardless of failures;
update untar (and the similar block at lines 186-189) to fail-fast by checking
the exit status of the tar (and any curl/download) command(s). Specifically,
after running tar (and after any curl/download), inspect the exit code and if
non-zero log an error and exit non‑zero rather than continuing to chmod/print
success; ensure you only print the "Extracting release..."/success message after
a successful extraction. Target the untar function name (and the other
extract/download block) when making the change.

---

Nitpick comments:
In @.github/workflows/release.yml:
- Around line 13-15: Update the checkout step that currently uses
"actions/checkout@v6" (the block with fetch-depth: 0) to explicitly set
persist-credentials: false so the workflow does not retain the GITHUB_TOKEN for
later steps; locate the "uses: actions/checkout@v6" step and add the
"persist-credentials: false" key alongside existing keys (e.g., fetch-depth) to
disable credential persistence.

In `@Makefile`:
- Line 10: Add a .PHONY declaration so command-only Makefile targets cannot be
mistaken for files: add a line declaring .PHONY: all releases test clean (so
targets like all, releases, test, clean are always executed as targets), and
ensure any other non-file targets used for builds (e.g., platform-specific
targets invoked by all/releases) are covered by .PHONY where appropriate.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 7f975a69-b0db-4164-a9ef-0ace6134d767

📥 Commits

Reviewing files that changed from the base of the PR and between 9d120fb and 4303e9b.

📒 Files selected for processing (7)
  • .github/workflows/build.yml
  • .github/workflows/codeql.yml
  • .github/workflows/release.yml
  • Makefile
  • README.md
  • install.sh
  • scripts/get-sshtunnel.sh
💤 Files with no reviewable changes (1)
  • scripts/get-sshtunnel.sh


jobs:
analyze:
uses: c3b2a7/.github/.github/workflows/codeql-go.yaml@main
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🌐 Web query:

GitHub Actions security reusable workflow pinning commit SHA best practices

💡 Result:

Pinning GitHub Actions and reusable workflows to a full-length commit SHA is a critical supply chain security best practice [1][2][3][4]. Because version tags (e.g., @v1) and branches (e.g., @main) are mutable, they can be re-pointed by a malicious actor or a compromised maintainer account to inject malicious code into your workflow without warning [5][4][6]. Best Practices for Pinning: 1. Use Full-Length Commit SHAs: Always reference actions and reusable workflows using the full-length commit SHA (e.g., uses: actions/checkout@b4ffde6) [2][3][7]. This ensures the code executed is immutable and identical to what you verified [2][3]. 2. Include Version Comments: Since commit SHAs are difficult to read, always append a comment specifying the version tag or release name to improve maintainability [5][8]. Example: - uses: actions/checkout@b4ffde6 # v4.1.1 3. Enforce via Policy: Administrators can enforce SHA pinning at the organization or repository level by configuring the allowed actions policy [1][2]. When enabled, GitHub will block any workflow that attempts to use an action not pinned to a full commit SHA [1]. 4. Manage Updates with Automation: To avoid the maintenance burden of manual updates, use tools like Dependabot or Renovate to automatically open pull requests when new tagged versions of your pinned actions are released [5][8][3]. This allows you to review and verify the update before merging [4][7]. 5. Contextual Risk Assessment: While pinning all actions is a best practice, it is especially critical for high-trust release pipelines, workflows with access to sensitive secrets, or those utilizing OIDC credentials [3][4][9]. 6. Verify Sources: When pinning, ensure the commit SHA originates from the original, trusted action repository and not a fork [2]. By pinning to a specific commit SHA, you neutralize risks associated with tag hijacking, where an attacker moves tags to an "imposter commit" to silently compromise downstream users [6]. Organizations are strongly encouraged to audit existing workflows and replace all tag-based references with pinned SHAs [6].

Citations:


🏁 Script executed:

# First, let's examine the specific workflow file
cat -n .github/workflows/codeql.yml | head -30

Repository: c3b2a7/sshtunnel

Length of output: 419


🏁 Script executed:

# Check for other workflow files and their pinning patterns
fd -e yml -e yaml .github/workflows/ -x cat -n {} \; | head -100

Repository: c3b2a7/sshtunnel

Length of output: 438


🏁 Script executed:

fd . '.github/workflows/' -e yml -e yaml

Repository: c3b2a7/sshtunnel

Length of output: 147


🏁 Script executed:

# Let's examine other workflow files to see if they use pinning
find .github/workflows -type f \( -name "*.yml" -o -name "*.yaml" \) -exec cat {} \;

Repository: c3b2a7/sshtunnel

Length of output: 3499


Pin reusable workflow to an immutable commit SHA.

Using @main is mutable and can silently change security behavior. Pin to a full commit SHA and update intentionally. Per GitHub's official security guidance, branch references are vulnerable to compromise by malicious actors or compromised maintainers. Additionally, include a version comment alongside the commit SHA for maintainability (e.g., @abc123def456 # v1.2.3).

🧰 Tools
🪛 zizmor (1.25.2)

[error] 15-15: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/codeql.yml at line 15, Replace the mutable branch
reference in the uses line ("uses:
c3b2a7/.github/.github/workflows/codeql-go.yaml@main") with a fixed full commit
SHA (e.g., @<full-commit-sha>) and append a short version comment for
maintainability (e.g., " # v1.x.y"); update the string in the workflow so the
reusable workflow is pinned to that immutable commit SHA instead of `@main`.

Comment on lines +13 to +17
uses: actions/checkout@v6
with:
fetch-depth: 0
- name: Generate a changelog
uses: orhun/git-cliff-action@v4
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

cat -n .github/workflows/release.yml

Repository: c3b2a7/sshtunnel

Length of output: 2899


🏁 Script executed:

# Check for any additional security considerations
# Look at the permissions and see the full context of how these actions are used

# Also verify the git verify-tag usage
grep -n "persist-credentials" .github/workflows/release.yml || echo "No persist-credentials found"

# Check if there are any other workflow files that might show a pattern
ls -la .github/workflows/ 2>/dev/null || echo "No workflows directory"

Repository: c3b2a7/sshtunnel

Length of output: 381


Pin all GitHub Actions to full commit SHAs instead of mutable tags.

Mutable refs like @v6, @v4, @v2, and @main can be retagged by maintainers, creating supply-chain risk in a release workflow. Replace each uses: entry with its corresponding full commit SHA:

  • Line 13: actions/checkout@v6 → SHA
  • Line 17: orhun/git-cliff-action@v4 → SHA
  • Line 34: actions/checkout@v6 → SHA
  • Line 37: actions/setup-go@v6 → SHA
  • Line 51: softprops/action-gh-release@v2 → SHA
  • Line 60: actions/attest@v4 → SHA
  • Line 68: c3b2a7/.github/.github/workflows/release-install-script.yaml@main → SHA

Additionally, set persist-credentials: false on checkout steps (lines 13–15 and 34–36) to avoid credential exposure to subsequent steps.

🧰 Tools
🪛 zizmor (1.25.2)

[error] 13-13: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)


[error] 17-17: unpinned action reference (unpinned-uses): action is not pinned to a hash (required by blanket policy)

(unpinned-uses)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml around lines 13 - 17, Replace all mutable
action refs with their corresponding full commit SHAs: update the uses entries
for actions/checkout@v6 (both occurrences), orhun/git-cliff-action@v4,
actions/setup-go@v6, softprops/action-gh-release@v2, actions/attest@v4, and
c3b2a7/.github/.github/workflows/release-install-script.yaml@main to their
pinned SHA commits; also add persist-credentials: false to both checkout steps
(the two actions/checkout blocks) so credentials are not passed to later steps.
Ensure each replacement preserves the existing keys and indentation and only
changes the tag to the exact commit SHA and adds the persist-credentials
property under the checkout step configuration.

Comment on lines +45 to +47
echo "Verifying the tag: ${{ github.event.release.tag_name }}"
# Only accepted if signed by c3b2a7's key
git verify-tag "${{ github.event.release.tag_name }}" || exit 1
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Avoid direct expression interpolation inside shell commands.

Interpolating ${{ github.event.release.tag_name }} directly in run: can enable command substitution payloads if tag content is unsafe. Pass it via env and reference the env var.

Proposed fix
       - name: Validate commits and tag signatures
+        env:
+          RELEASE_TAG: ${{ github.event.release.tag_name }}
         run: |
           # Import key
           curl 'https://github.com/c3b2a7.gpg' | gpg --import
-          echo "Verifying the tag: ${{ github.event.release.tag_name }}"
+          echo "Verifying the tag: $RELEASE_TAG"
           # Only accepted if signed by c3b2a7's key
-          git verify-tag "${{ github.event.release.tag_name }}" || exit 1
+          git verify-tag "$RELEASE_TAG" || exit 1
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
echo "Verifying the tag: ${{ github.event.release.tag_name }}"
# Only accepted if signed by c3b2a7's key
git verify-tag "${{ github.event.release.tag_name }}" || exit 1
- name: Validate commits and tag signatures
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: |
# Import key
curl 'https://github.com/c3b2a7.gpg' | gpg --import
echo "Verifying the tag: $RELEASE_TAG"
# Only accepted if signed by c3b2a7's key
git verify-tag "$RELEASE_TAG" || exit 1
🧰 Tools
🪛 zizmor (1.25.2)

[error] 45-45: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)


[error] 47-47: code injection via template expansion (template-injection): may expand into attacker-controllable code

(template-injection)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/release.yml around lines 45 - 47, The workflow step
currently interpolates ${{ github.event.release.tag_name }} directly in the
shell run which is unsafe; modify the step to pass the tag into the step's env
(e.g., set an env variable like RELEASE_TAG: ${{ github.event.release.tag_name
}}) and then use that env var inside the run commands (replace occurrences of
echo "Verifying the tag: ${{ github.event.release.tag_name }}" and git
verify-tag "${{ github.event.release.tag_name }}" with references to
$RELEASE_TAG and git verify-tag "$RELEASE_TAG") so the shell never directly
expands the GH expression.

Comment thread install.sh Outdated
Comment on lines +35 to +39
untar() {
print "Extracting release to $out_prefix/$binary"
sh -c "tar -xzO \"$binary\" > \"$out_prefix/$binary\""
chmod +x "$out_prefix/$binary"
}
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Handle tar download/extract failures explicitly.

The tar path can fail without aborting, then still print a success message. Fail fast on curl/tar errors.

Proposed fix
 untar() {
   print "Extracting release to $out_prefix/$binary"
-  sh -c "tar -xzO \"$binary\" > \"$out_prefix/$binary\""
+  sh -c "tar -xzO \"$binary\" > \"$out_prefix/$binary\"" || err "Unable to extract $archive_name"
   chmod +x "$out_prefix/$binary"
 }
@@
-      curl -L -s "$download_url/$version/$archive_name" | untar
+      curl -fL -s "$download_url/$version/$archive_name" | untar || err "Unable to download $archive_name"

Also applies to: 186-189

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@install.sh` around lines 35 - 39, The untar function prints success
regardless of failures; update untar (and the similar block at lines 186-189) to
fail-fast by checking the exit status of the tar (and any curl/download)
command(s). Specifically, after running tar (and after any curl/download),
inspect the exit code and if non-zero log an error and exit non‑zero rather than
continuing to chmod/print success; ensure you only print the "Extracting
release..."/success message after a successful extraction. Target the untar
function name (and the other extract/download block) when making the change.

Comment thread install.sh
Comment on lines +136 to +138
if test -z "$version"; then
version="$(latest_tag)"
fi
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major | ⚡ Quick win

Validate resolved release version before continuing.

If latest_tag returns empty (API failure/rate limit), the script proceeds with an invalid URL. Add a non-empty check and error out early.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@install.sh` around lines 136 - 138, After resolving version with latest_tag
into the variable version, validate that version is non-empty and exit with a
clear error if it is empty; update the install.sh block that calls latest_tag
(and any code that uses the version variable) to check [ -z "$version" ] (or
equivalent) after assignment and call echo to stderr and exit 1 to avoid
proceeding with an invalid URL.

@c3b2a7 c3b2a7 force-pushed the chore/release-workflow branch from 4303e9b to 7b9129a Compare May 20, 2026 16:57
@c3b2a7 c3b2a7 merged commit 435342e into master May 20, 2026
10 checks passed
@c3b2a7 c3b2a7 deleted the chore/release-workflow branch May 20, 2026 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant