From 1ef54468703a1c084517e31503ebd55cfa9c4654 Mon Sep 17 00:00:00 2001 From: Peter Salomonsen Date: Fri, 17 Jul 2026 11:30:28 +0200 Subject: [PATCH 1/2] publish: create a GitHub release after each npm publish Every successful npm publish now also tags v and creates a GitHub release with auto-generated notes, so watchers and stargazers are notified. Requires contents: write; the v0.0.17 release was created manually and serves as the baseline tag for generated notes. Co-Authored-By: Claude Fable 5 --- .github/workflows/publish.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8bfacae..14cf142 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -7,7 +7,7 @@ on: push: branches: [ master ] permissions: - contents: read + contents: write # create the GitHub release + tag after a successful npm publish id-token: write jobs: default: @@ -20,6 +20,8 @@ jobs: node-version: '24' registry-url: 'https://registry.npmjs.org' - name: Default + env: + GH_TOKEN: ${{ github.token }} run: | npm install sh setup.sh @@ -50,6 +52,10 @@ jobs: # always does a dry-run, never a real publish. if [[ "$VERSION" != "$NEWVERSION" && "$GITHUB_EVENT_NAME" = "push" ]]; then npm publish --provenance --access public + # Announce the release on GitHub so watchers/stargazers are notified; + # notes are generated from the PRs merged since the previous tag. + gh release create "v$NEWVERSION" --target "$GITHUB_SHA" \ + --title "v$NEWVERSION" --generate-notes elif [[ "$VERSION" != "$NEWVERSION" ]]; then echo "version change is $VERSION->$NEWVERSION, event is $GITHUB_EVENT_NAME, not publishing, only dry-run" npm publish --dry-run From ae326c5856ec0c774dfd7949394e0e850640582e Mon Sep 17 00:00:00 2001 From: Peter Salomonsen Date: Fri, 17 Jul 2026 11:39:03 +0200 Subject: [PATCH 2/2] ci: cap all jobs at 30 minutes The Default CI job hung twice today on master pushes (the intermittent install hang known from #115), each time blocking as in_progress toward GitHub's 6-hour default timeout. Healthy runs finish in under 10 minutes; a 30-minute cap turns a hang into a visible failure that can simply be rerun. Co-Authored-By: Claude Fable 5 --- .github/workflows/main.yml | 6 ++++++ .github/workflows/publish.yml | 1 + 2 files changed, 7 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 89966c1..83f3f43 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -8,6 +8,7 @@ jobs: detectonly: name: Detect use of .only runs-on: ubuntu-latest + timeout-minutes: 30 steps: - uses: actions/checkout@v2 - name: Detect use of .only @@ -17,6 +18,7 @@ jobs: default: name: "Default" runs-on: ubuntu-latest + timeout-minutes: 30 steps: - uses: actions/checkout@v2 - name: Default @@ -40,6 +42,7 @@ jobs: asyncify: name: Asyncify runs-on: ubuntu-latest + timeout-minutes: 30 steps: - uses: actions/checkout@v2 - name: Default @@ -62,6 +65,7 @@ jobs: opfs: name: OPFS runs-on: ubuntu-latest + timeout-minutes: 30 steps: - uses: actions/checkout@v2 - name: OPFS Build and Test @@ -89,6 +93,7 @@ jobs: opfs-sab-free: name: OPFS (SAB-free ASYNCIFY + JSPI + loader) runs-on: ubuntu-latest + timeout-minutes: 30 steps: - uses: actions/checkout@v2 - name: Build SAB-free OPFS variants and test @@ -135,6 +140,7 @@ jobs: package: name: "Package (tarball browser tests)" runs-on: ubuntu-latest + timeout-minutes: 30 steps: - uses: actions/checkout@v2 - name: Pack the npm tarball and run the browser tests against it diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 14cf142..ffc9afc 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -13,6 +13,7 @@ jobs: default: name: "Publish" runs-on: ubuntu-latest + timeout-minutes: 30 steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4