From 4fb5d54091e8db9b8f6dc9491fbccdfb203e0a60 Mon Sep 17 00:00:00 2001 From: Luke Nelson Date: Wed, 22 Jul 2026 10:44:52 +0100 Subject: [PATCH 01/12] ci: improve actions workflows --- .github/workflows/module.yml | 154 ++++++++++++++++------------- .github/workflows/pr-labeler.yml | 2 +- .github/workflows/release.yml | 17 ++-- .github/workflows/reproduction.yml | 2 +- .github/workflows/reproduire.yml | 4 +- .github/workflows/stale.yml | 2 +- 6 files changed, 101 insertions(+), 80 deletions(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index 757d6ec3cd..e71e30d3ec 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -8,6 +8,10 @@ on: branches: - v4 +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.number || github.ref }} + cancel-in-progress: true + jobs: build: runs-on: ${{ matrix.os }} @@ -27,6 +31,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v7 + with: + persist-credentials: false - name: Install pnpm uses: pnpm/action-setup@v6 @@ -43,23 +49,22 @@ jobs: - name: Prepare run: pnpm run dev:prepare - - name: Lint - run: pnpm run lint - - - name: Typecheck - run: pnpm run typecheck - - - name: Test - run: pnpm run test run + - parallel: + - name: Lint + run: pnpm run lint + - name: Typecheck + run: pnpm run typecheck + - name: Test + run: pnpm run test run - name: Build run: pnpm run build - - name: Build Nuxt playground - run: pnpm run dev:build - - - name: Build Vue playground - run: pnpm run dev:vue:build + - parallel: + - name: Build Nuxt playground + run: pnpm run dev:build + - name: Build Vue playground + run: pnpm run dev:vue:build - name: Publish # Only publish preview package on ubuntu, and skip forks of the repo (pkg-pr-new still runs on fork PRs against nuxt/ui) @@ -91,6 +96,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v7 + with: + persist-credentials: false - name: Store commit SHA run: | @@ -135,6 +142,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/starter - name: Store commit SHA @@ -156,11 +164,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build starter-vue: needs: build @@ -180,6 +188,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/starter-vue - name: Store commit SHA @@ -201,11 +210,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Build - run: pnpm run build - - - name: Typecheck - run: pnpm run typecheck + - parallel: + - name: Build + run: pnpm run build + - name: Typecheck + run: pnpm run typecheck landing: needs: build @@ -225,6 +234,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/landing - name: Store commit SHA @@ -246,11 +256,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build docs: needs: build @@ -270,6 +280,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/docs - name: Store commit SHA @@ -291,11 +302,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build saas: needs: build @@ -315,6 +326,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/saas - name: Store commit SHA @@ -336,11 +348,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build dashboard: needs: build @@ -360,6 +372,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/dashboard - name: Store commit SHA @@ -381,11 +394,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build dashboard-vue: needs: build @@ -405,6 +418,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/dashboard-vue - name: Store commit SHA @@ -426,11 +440,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Build - run: pnpm run build - - - name: Typecheck - run: pnpm run typecheck + - parallel: + - name: Build + run: pnpm run build + - name: Typecheck + run: pnpm run typecheck chat: needs: build @@ -450,6 +464,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/chat - name: Store commit SHA @@ -471,11 +486,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build portfolio: needs: build @@ -495,6 +510,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/portfolio - name: Store commit SHA @@ -516,11 +532,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build changelog: needs: build @@ -540,6 +556,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/changelog - name: Store commit SHA @@ -561,11 +578,11 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build editor: needs: build @@ -585,6 +602,7 @@ jobs: - name: Checkout uses: actions/checkout@v7 with: + persist-credentials: false repository: nuxt-ui-templates/editor - name: Store commit SHA @@ -606,8 +624,8 @@ jobs: - name: Install dependencies run: pnpm install - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build + - parallel: + - name: Typecheck + run: pnpm run typecheck + - name: Build + run: pnpm run build diff --git a/.github/workflows/pr-labeler.yml b/.github/workflows/pr-labeler.yml index c4eb4c5804..45bff52433 100644 --- a/.github/workflows/pr-labeler.yml +++ b/.github/workflows/pr-labeler.yml @@ -5,7 +5,7 @@ on: jobs: labeler: - runs-on: ubuntu-latest + runs-on: ubuntu-slim permissions: contents: read diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5a9a1d02b5..00e5293da3 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,6 +20,8 @@ jobs: steps: - name: Checkout uses: actions/checkout@v7 + with: + persist-credentials: false - name: Install pnpm uses: pnpm/action-setup@v6 @@ -36,14 +38,13 @@ jobs: - name: Prepare run: pnpm run dev:prepare - - name: Lint - run: pnpm run lint - - - name: Typecheck - run: pnpm run typecheck - - - name: Test - run: pnpm run test run + - parallel: + - name: Lint + run: pnpm run lint + - name: Typecheck + run: pnpm run typecheck + - name: Test + run: pnpm run test run - name: Publish run: ./scripts/release.sh diff --git a/.github/workflows/reproduction.yml b/.github/workflows/reproduction.yml index 41b077e183..9748812ba5 100644 --- a/.github/workflows/reproduction.yml +++ b/.github/workflows/reproduction.yml @@ -7,7 +7,7 @@ on: jobs: reproduction: - runs-on: ubuntu-latest + runs-on: ubuntu-slim permissions: actions: write diff --git a/.github/workflows/reproduire.yml b/.github/workflows/reproduire.yml index f71328e8ab..469b2d9391 100644 --- a/.github/workflows/reproduire.yml +++ b/.github/workflows/reproduire.yml @@ -9,9 +9,11 @@ permissions: jobs: reproduire: - runs-on: ubuntu-latest + runs-on: ubuntu-slim steps: - uses: actions/checkout@v7 + with: + persist-credentials: false - uses: Hebilicious/reproduire@4b686ae9cbb72dad60f001d278b6e3b2ce40a9ac # v0.0.9 with: label: needs reproduction diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index f76c5fd77f..f2a950c376 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -7,7 +7,7 @@ on: jobs: stale: - runs-on: ubuntu-latest + runs-on: ubuntu-slim permissions: actions: write From 84ebcd92a09056e8f9886b4c65706989fd5231b0 Mon Sep 17 00:00:00 2001 From: Luke Nelson Date: Wed, 22 Jul 2026 11:18:51 +0100 Subject: [PATCH 02/12] ci: separate typecheck and build steps in workflows --- .github/workflows/module.yml | 110 +++++++++++++++++------------------ 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index e71e30d3ec..a6f0cd6e0d 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -164,11 +164,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build starter-vue: needs: build @@ -210,11 +210,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Build - run: pnpm run build - - name: Typecheck - run: pnpm run typecheck + - name: Build + run: pnpm run build + + - name: Typecheck + run: pnpm run typecheck landing: needs: build @@ -256,11 +256,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build docs: needs: build @@ -302,11 +302,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build saas: needs: build @@ -348,11 +348,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build dashboard: needs: build @@ -394,11 +394,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build dashboard-vue: needs: build @@ -440,11 +440,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Build - run: pnpm run build - - name: Typecheck - run: pnpm run typecheck + - name: Build + run: pnpm run build + + - name: Typecheck + run: pnpm run typecheck chat: needs: build @@ -486,11 +486,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build portfolio: needs: build @@ -532,11 +532,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build changelog: needs: build @@ -578,11 +578,11 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build editor: needs: build @@ -624,8 +624,8 @@ jobs: - name: Install dependencies run: pnpm install - - parallel: - - name: Typecheck - run: pnpm run typecheck - - name: Build - run: pnpm run build + - name: Typecheck + run: pnpm run typecheck + + - name: Build + run: pnpm run build From 47eaa8136d838af69734ba065e6c35b12aca858d Mon Sep 17 00:00:00 2001 From: Luke Nelson Date: Wed, 22 Jul 2026 11:38:53 +0100 Subject: [PATCH 03/12] refactor: consolidate template jobs in module workflow --- .github/workflows/module.yml | 476 ++--------------------------------- 1 file changed, 14 insertions(+), 462 deletions(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index a6f0cd6e0d..d219b72559 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -124,7 +124,7 @@ jobs: - name: Typecheck run: pnpm run typecheck - starter: + templates: needs: build runs-on: ${{ matrix.os }} @@ -137,473 +137,25 @@ jobs: matrix: os: [ubuntu-latest] # macos-latest, windows-latest node: [22] + template: + - starter + - starter-vue + - landing + - docs + - saas + - dashboard + - dashboard-vue + - chat + - portfolio + - changelog + - editor steps: - name: Checkout uses: actions/checkout@v7 with: persist-credentials: false - repository: nuxt-ui-templates/starter - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build - - starter-vue: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/starter-vue - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Build - run: pnpm run build - - - name: Typecheck - run: pnpm run typecheck - - landing: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/landing - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build - - docs: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/docs - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build - - saas: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/saas - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build - - dashboard: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/dashboard - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build - - dashboard-vue: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/dashboard-vue - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Build - run: pnpm run build - - - name: Typecheck - run: pnpm run typecheck - - chat: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/chat - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build - - portfolio: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/portfolio - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build - - changelog: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/changelog - - - name: Store commit SHA - run: | - echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.head.sha || github.sha }} | cut -c1-7)" >> $GITHUB_ENV - - - name: Install pnpm - uses: pnpm/action-setup@v6 - - - name: Install node - uses: actions/setup-node@v6 - with: - node-version: ${{ matrix.node }} - cache: pnpm - - - name: Install latest nuxt/ui - run: pnpm install https://pkg.pr.new/@nuxt/ui@${{ env.COMMIT_SHA }} --lockfile-only - - - name: Install dependencies - run: pnpm install - - - name: Typecheck - run: pnpm run typecheck - - - name: Build - run: pnpm run build - - editor: - needs: build - - runs-on: ${{ matrix.os }} - - permissions: - contents: read - pull-requests: read - - strategy: - matrix: - os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] - - steps: - - name: Checkout - uses: actions/checkout@v7 - with: - persist-credentials: false - repository: nuxt-ui-templates/editor + repository: nuxt-ui-templates/${{ matrix.template }} - name: Store commit SHA run: | From e06a9d2f65d3ddb8eb5bed20c7e6ef3927fe2e12 Mon Sep 17 00:00:00 2001 From: Luke Nelson Date: Wed, 22 Jul 2026 12:13:19 +0100 Subject: [PATCH 04/12] ci: add prepare step to install dependencies in module workflow --- .github/workflows/module.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index d219b72559..8573d86226 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -176,6 +176,9 @@ jobs: - name: Install dependencies run: pnpm install + - name: Prepare + run: pnpm nuxt prepare + - name: Typecheck run: pnpm run typecheck From 49e988d1a2285b4ea6026c4942cc1fd7f7471133 Mon Sep 17 00:00:00 2001 From: Luke Nelson Date: Wed, 22 Jul 2026 12:35:28 +0100 Subject: [PATCH 05/12] ci: update prepare step to use pnpx for nuxt preparation --- .github/workflows/module.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index 8573d86226..831340c36b 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -177,7 +177,7 @@ jobs: run: pnpm install - name: Prepare - run: pnpm nuxt prepare + run: pnpx nuxt prepare - name: Typecheck run: pnpm run typecheck From f3932d118c9cb54b9584df2a3e493af05e7419c4 Mon Sep 17 00:00:00 2001 From: Luke Nelson Date: Wed, 22 Jul 2026 13:20:03 +0100 Subject: [PATCH 06/12] ci: replace prepare step with build in module workflow --- .github/workflows/module.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index 831340c36b..414bdbcc3a 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -176,11 +176,8 @@ jobs: - name: Install dependencies run: pnpm install - - name: Prepare - run: pnpx nuxt prepare + - name: Build + run: pnpm run build - name: Typecheck run: pnpm run typecheck - - - name: Build - run: pnpm run build From 5f907f0d87056bb7bdbbf8c12747fe2dd61698fd Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Tue, 28 Jul 2026 14:53:29 +0200 Subject: [PATCH 07/12] ci: keep all templates running and scope run cancellation to PRs --- .github/workflows/module.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index f74ae65bf1..ccbaec18a6 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -9,8 +9,9 @@ on: - v4 concurrency: - group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.number || github.ref }} - cancel-in-progress: true + group: ${{ github.workflow }}-${{ github.ref }} + # Only cancel superseded pull request runs, so pushes on v4 always publish their preview package + cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: build: @@ -134,6 +135,8 @@ jobs: pull-requests: read strategy: + # Keep validating every template when one of them breaks + fail-fast: false matrix: os: [ubuntu-latest] # macos-latest, windows-latest node: [22] From 91e8e9614ac2b6e7f33d7feb19f91b37790b5872 Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Tue, 28 Jul 2026 15:42:11 +0200 Subject: [PATCH 08/12] ci: restore original concurrency group expression --- .github/workflows/module.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index ccbaec18a6..4da43c590f 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -9,8 +9,8 @@ on: - v4 concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - # Only cancel superseded pull request runs, so pushes on v4 always publish their preview package + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.number || github.ref }} + # Only cancel superseded pull request runs, since each push on v4 also covers windows and publishes its own preview package cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: From 3bae248cc2a0aa75944e9e566b22cdc18acac047 Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Thu, 30 Jul 2026 10:50:17 +0200 Subject: [PATCH 09/12] ci: give every v4 push its own concurrency group --- .github/workflows/module.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index 4da43c590f..29ff2af550 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -9,8 +9,9 @@ on: - v4 concurrency: - group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.number || github.ref }} - # Only cancel superseded pull request runs, since each push on v4 also covers windows and publishes its own preview package + # Group pull request runs per number so a new push cancels the previous one, and give every push on v4 + # its own group since each of them also covers windows and publishes its own preview package + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.event.number || github.run_id }} cancel-in-progress: ${{ github.event_name == 'pull_request' }} jobs: From 48919b517c103af705714e0dd74cd2f6d620f80a Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Thu, 30 Jul 2026 10:53:18 +0200 Subject: [PATCH 10/12] ci: grant contents read permission to reproduire workflow --- .github/workflows/reproduire.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reproduire.yml b/.github/workflows/reproduire.yml index 469b2d9391..3838291977 100644 --- a/.github/workflows/reproduire.yml +++ b/.github/workflows/reproduire.yml @@ -5,6 +5,7 @@ on: types: [labeled] permissions: + contents: read issues: write jobs: From 95f6b26b50e183c25224594608bcc0dcb54aa89f Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Thu, 30 Jul 2026 11:06:35 +0200 Subject: [PATCH 11/12] ci: cover chat-vue template --- .github/workflows/module.yml | 7 ++++++- .github/workflows/release.yml | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index 29ff2af550..078fd125e1 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -150,9 +150,14 @@ jobs: - dashboard - dashboard-vue - chat + - chat-vue - portfolio - changelog - editor + include: + # Build with vite directly since the `build` script also runs the database migrations + - template: chat-vue + build: pnpm vite build steps: - name: Checkout @@ -181,7 +186,7 @@ jobs: run: pnpm install - name: Build - run: pnpm run build + run: ${{ matrix.build || 'pnpm run build' }} - name: Typecheck run: pnpm run typecheck diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index bcacd6b079..f25170abfe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,6 +9,9 @@ jobs: publish: runs-on: ${{ matrix.os }} + permissions: + contents: read + strategy: matrix: os: [ubuntu-latest] # macos-latest, windows-latest From 426e0d302b5ffef8922314ef1bdeadb6fb1afe5b Mon Sep 17 00:00:00 2001 From: Benjamin Canac Date: Thu, 30 Jul 2026 11:31:01 +0200 Subject: [PATCH 12/12] ci: run workflows on node 24 --- .github/workflows/module.yml | 6 +++--- .github/workflows/release.yml | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/module.yml b/.github/workflows/module.yml index 078fd125e1..8ce394f2e0 100644 --- a/.github/workflows/module.yml +++ b/.github/workflows/module.yml @@ -25,7 +25,7 @@ jobs: strategy: matrix: os: ${{ github.event_name == 'pull_request' && fromJSON('["ubuntu-latest"]') || fromJSON('["ubuntu-latest", "windows-latest"]') }} # macos-latest - node: [22] + node: [24] env: NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }} @@ -93,7 +93,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] + node: [24] steps: - name: Checkout @@ -140,7 +140,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] + node: [24] template: - starter - starter-vue diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index f25170abfe..2c331c6a58 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -15,7 +15,7 @@ jobs: strategy: matrix: os: [ubuntu-latest] # macos-latest, windows-latest - node: [22] + node: [24] env: NUXT_GITHUB_TOKEN: ${{ secrets.NUXT_GITHUB_TOKEN }}