From 0ddfd73ed0c01c1ab58011a6799bf35f83a9443e Mon Sep 17 00:00:00 2001 From: CJ Rivas Date: Sat, 5 Sep 2026 16:00:20 -0400 Subject: [PATCH 1/6] KSN: add emoji to `Keepalive` workflow title MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - rename `Keepalive` to `๐Ÿ’“ Keepalive` in `.github/workflows/keepalive.yml` --- .github/workflows/keepalive.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/keepalive.yml b/.github/workflows/keepalive.yml index 4f33340..804b388 100644 --- a/.github/workflows/keepalive.yml +++ b/.github/workflows/keepalive.yml @@ -1,4 +1,4 @@ -name: Keepalive +name: ๐Ÿ’“ Keepalive # Supabase pauses a free-tier project after roughly a week without external API # traffic, which takes production and the e2e suite down with it. Nothing else in From 8c646ae1e8e3c80ff0b5e175cd26535d73824bdd Mon Sep 17 00:00:00 2001 From: CJ Rivas Date: Sat, 5 Sep 2026 16:00:31 -0400 Subject: [PATCH 2/6] KSN: rename `CI` workflow to `pull-request-checks.yml` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - rename `.github/workflows/ci.yml` to `.github/workflows/pull-request-checks.yml` - retitle `CI` to `๐Ÿงช Pull Request Checks` - broaden `on:` from `push`/`pull_request` scoped to `branches: [main]` to unscoped `pull_request:`, `push:`, and `workflow_dispatch:` - add `name: ๐Ÿšฆ Pull request checks` to the `checks`, `build`, and `e2e` jobs --- .github/workflows/{ci.yml => pull-request-checks.yml} | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) rename .github/workflows/{ci.yml => pull-request-checks.yml} (96%) diff --git a/.github/workflows/ci.yml b/.github/workflows/pull-request-checks.yml similarity index 96% rename from .github/workflows/ci.yml rename to .github/workflows/pull-request-checks.yml index c392a48..1328dbf 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/pull-request-checks.yml @@ -1,10 +1,9 @@ -name: CI +name: ๐Ÿงช Pull Request Checks on: - push: - branches: [main] pull_request: - branches: [main] + push: + workflow_dispatch: # Least privilege: this workflow only reads the repository. Set explicitly so it # stays read-only even if the repo or org default token permission is widened. @@ -24,6 +23,7 @@ jobs: # The `system-check` script minus `build:web`, which `build` owns so that the # e2e chain does not queue behind linting. checks: + name: ๐Ÿšฆ Pull request checks runs-on: ubuntu-latest timeout-minutes: 15 steps: @@ -58,6 +58,7 @@ jobs: # bundle, not on the linters, and gating it behind them only delays the slowest # job in the workflow. build: + name: ๐Ÿšฆ Pull request checks runs-on: ubuntu-latest timeout-minutes: 15 steps: @@ -91,6 +92,7 @@ jobs: # against the real `dist/` the build job already produced, so it covers the # bundle that ships, including the SPA fallback and the MangaDex proxy. e2e: + name: ๐Ÿšฆ Pull request checks runs-on: ubuntu-latest needs: build timeout-minutes: 15 From 708afeab261e0b1df6f6bf932880fe36151809ff Mon Sep 17 00:00:00 2001 From: CJ Rivas Date: Sat, 5 Sep 2026 16:00:39 -0400 Subject: [PATCH 3/6] KSN: add `sanity-check.yml` workflow for post-merge `main` verification - new `.github/workflows/sanity-check.yml` runs `bun run system-check` on `push: branches: [main]` only - sets `concurrency.cancel-in-progress: false`, unlike `pull-request-checks.yml`'s unconditional `cancel-in-progress: true`, so a rapid second push to `main` can no longer cancel an in-flight check run and leave a merged commit unverified --- .github/workflows/sanity-check.yml | 45 ++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/workflows/sanity-check.yml diff --git a/.github/workflows/sanity-check.yml b/.github/workflows/sanity-check.yml new file mode 100644 index 0000000..e8638f3 --- /dev/null +++ b/.github/workflows/sanity-check.yml @@ -0,0 +1,45 @@ +name: โœ… Sanity check + +on: + push: + branches: [main] + +# Least privilege: this workflow only reads the repository. +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: false + +env: + BUN_VERSION: 1.3.14 + +jobs: + sanity-check: + name: ๐Ÿฉบ Sanity check + runs-on: ubuntu-latest + timeout-minutes: 15 + steps: + - name: ๐Ÿ“ฅ Checkout repository + uses: actions/checkout@v5 + with: + persist-credentials: false + + - name: ๐ŸฅŸ Set up Bun + uses: oven-sh/setup-bun@v2 + with: + bun-version: ${{ env.BUN_VERSION }} + + - name: ๐Ÿ“ฆ Install dependencies + run: bun install --frozen-lockfile + + - name: ๐Ÿšฆ Full check + run: bun run system-check + + - name: ๐ŸŽ‰ All clear + run: echo "โœ… ${GITHUB_SHA:0:7} landed on \`main\` clean โ€” typecheck, format, lint, tests, and web build all green." >> "$GITHUB_STEP_SUMMARY" + + - name: ๐Ÿšจ Something broke + if: failure() + run: echo "๐Ÿ’ฅ ${GITHUB_SHA:0:7} broke \`main\` โ€” check the failed step above." >> "$GITHUB_STEP_SUMMARY" From 0cfc81350dd3e5dcf249590901579c1099446ac5 Mon Sep 17 00:00:00 2001 From: CJ Rivas Date: Sat, 5 Sep 2026 16:04:33 -0400 Subject: [PATCH 4/6] KSN: use sentence case for `pull-request-checks.yml` workflow name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - top-level `name:` becomes `๐Ÿงช Pull request checks` (was `๐Ÿงช Pull Request Checks`) --- .github/workflows/pull-request-checks.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/pull-request-checks.yml b/.github/workflows/pull-request-checks.yml index 1328dbf..9f4c4d4 100644 --- a/.github/workflows/pull-request-checks.yml +++ b/.github/workflows/pull-request-checks.yml @@ -1,4 +1,4 @@ -name: ๐Ÿงช Pull Request Checks +name: ๐Ÿงช Pull request checks on: pull_request: From 88c2546159e490f76660e01b243fd1d80bbaa419 Mon Sep 17 00:00:00 2001 From: CJ Rivas Date: Sat, 5 Sep 2026 16:19:54 -0400 Subject: [PATCH 5/6] KSN: drop job-level `name:` from `pull-request-checks.yml` MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - remove `name: ๐Ÿšฆ Pull request checks` from the `checks`, `build`, and `e2e` jobs - jobs go back to having no `name:` field, as before the rename --- .github/workflows/pull-request-checks.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/pull-request-checks.yml b/.github/workflows/pull-request-checks.yml index 9f4c4d4..24e7054 100644 --- a/.github/workflows/pull-request-checks.yml +++ b/.github/workflows/pull-request-checks.yml @@ -23,7 +23,6 @@ jobs: # The `system-check` script minus `build:web`, which `build` owns so that the # e2e chain does not queue behind linting. checks: - name: ๐Ÿšฆ Pull request checks runs-on: ubuntu-latest timeout-minutes: 15 steps: @@ -58,7 +57,6 @@ jobs: # bundle, not on the linters, and gating it behind them only delays the slowest # job in the workflow. build: - name: ๐Ÿšฆ Pull request checks runs-on: ubuntu-latest timeout-minutes: 15 steps: @@ -92,7 +90,6 @@ jobs: # against the real `dist/` the build job already produced, so it covers the # bundle that ships, including the SPA fallback and the MangaDex proxy. e2e: - name: ๐Ÿšฆ Pull request checks runs-on: ubuntu-latest needs: build timeout-minutes: 15 From e91e9873f85f2c142cf6c6c355ec860c41a2c091 Mon Sep 17 00:00:00 2001 From: CJ Rivas Date: Sat, 5 Sep 2026 16:49:47 -0400 Subject: [PATCH 6/6] KSN: run `pull-request-checks.yml` on pull requests only - drop `push:` and `workflow_dispatch:` from `on:`, leaving `pull_request:` - keeps pull request checks off `main`, where `sanity-check.yml` covers verification --- .github/workflows/pull-request-checks.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/pull-request-checks.yml b/.github/workflows/pull-request-checks.yml index 24e7054..37f82f3 100644 --- a/.github/workflows/pull-request-checks.yml +++ b/.github/workflows/pull-request-checks.yml @@ -2,8 +2,6 @@ name: ๐Ÿงช Pull request checks on: pull_request: - push: - workflow_dispatch: # Least privilege: this workflow only reads the repository. Set explicitly so it # stays read-only even if the repo or org default token permission is widened.