From dc0daf3aa0dd46825c29ceca2418c5f730cfde0c Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Mon, 14 Sep 2026 16:00:26 -0400 Subject: [PATCH 1/2] ci: make PR checks actually run on shared-package changes Every job in pr-checks.yml is gated behind a dorny/paths-filter, and none of the filters covered the repo's root packages/ directory. A PR touching only packages/ therefore skipped Lint, Type Check, Unit Tests and Build Check. Measured on PR #181, which changes two tsconfigs under packages/: 12 of its checks reported SKIPPED and nothing compiled the code it changed. - packages: also match packages/**, pnpm-workspace.yaml, pnpm-lock.yaml - web: matched frontend/apps/web/**, which does not exist; the web surface is the root web/ directory The mobile: and desktop: filters matched four paths that are absent from the repo -- frontend/platforms/{capacitor,react-native,electron,tauri}. The real directories are frontend/platforms/mobile and desktop/. Those two filters could never match, so Mobile Build Check and Desktop Build Check have never produced a verdict; had they matched, both would have failed, because each cds into one of the missing directories. Both jobs duplicate a dedicated workflow that already targets the real path: build-capacitor.yml builds frontend/platforms/mobile, and desktop-linux.yml, desktop-macos.yml and desktop-windows.yml build desktop/. Removing the two dead jobs drops no coverage that existed. Still uncovered and deliberately not papered over here: frontend-vite/ matches no filter, but every job in this workflow runs with working-directory: frontend, so adding a filter for it would run the wrong app's build and report a green that means nothing. It needs its own job. --- .github/workflows/pr-checks.yml | 96 +++------------------------------ 1 file changed, 6 insertions(+), 90 deletions(-) diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index af3e948b..64b164be 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -30,8 +30,6 @@ jobs: tests: ${{ steps.changes.outputs.tests }} config: ${{ steps.changes.outputs.config }} docs: ${{ steps.changes.outputs.docs }} - mobile: ${{ steps.changes.outputs.mobile }} - desktop: ${{ steps.changes.outputs.desktop }} backend: ${{ steps.changes.outputs.backend }} frontend: ${{ steps.changes.outputs.frontend }} packages: ${{ steps.changes.outputs.packages }} @@ -52,9 +50,11 @@ jobs: - 'frontend/**' packages: - 'frontend/src/**' - - 'frontend/pnpm-workspace.yaml' + - 'packages/**' + - 'pnpm-workspace.yaml' + - 'pnpm-lock.yaml' web: - - 'frontend/apps/web/**' + - 'web/**' src: - 'frontend/src/**' - 'frontend/public/**' @@ -74,12 +74,6 @@ jobs: docs: - '*.md' - 'docs/**' - mobile: - - 'frontend/platforms/capacitor/**' - - 'frontend/platforms/react-native/**' - desktop: - - 'frontend/platforms/electron/**' - - 'frontend/platforms/tauri/**' lint: name: Lint & Format @@ -91,9 +85,7 @@ jobs: needs.changes.outputs.web == 'true' || needs.changes.outputs.packages == 'true' || needs.changes.outputs.src == 'true' || - needs.changes.outputs.config == 'true' || - needs.changes.outputs.mobile == 'true' || - needs.changes.outputs.desktop == 'true' + needs.changes.outputs.config == 'true' defaults: run: working-directory: frontend @@ -143,9 +135,7 @@ jobs: needs.changes.outputs.web == 'true' || needs.changes.outputs.packages == 'true' || needs.changes.outputs.src == 'true' || - needs.changes.outputs.config == 'true' || - needs.changes.outputs.mobile == 'true' || - needs.changes.outputs.desktop == 'true' + needs.changes.outputs.config == 'true' defaults: run: working-directory: frontend @@ -261,80 +251,6 @@ jobs: BUILD_SIZE=$(du -sh .next | cut -f1) echo "Build size: $BUILD_SIZE" >> $GITHUB_STEP_SUMMARY - build-mobile: - name: Mobile Build Check - runs-on: ubuntu-latest - needs: [changes] - if: needs.changes.outputs.mobile == 'true' - defaults: - run: - working-directory: frontend - steps: - - name: Checkout - uses: actions/checkout@v7 - - - name: Setup pnpm - uses: pnpm/action-setup@v6 - - name: Setup Node.js - uses: actions/setup-node@v7 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'pnpm' - cache-dependency-path: pnpm-lock.yaml - - - name: Setup Java - uses: actions/setup-java@v6 - with: - distribution: 'temurin' - java-version: '17' - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Build web app - run: pnpm build - - - name: Sync Capacitor - working-directory: frontend/platforms/capacitor - run: | - pnpm install - npx cap sync android --no-build - - - name: Build Android (Debug) - working-directory: frontend/platforms/capacitor/android - run: ./gradlew assembleDebug - - build-desktop: - name: Desktop Build Check - runs-on: ubuntu-latest - needs: [changes] - if: needs.changes.outputs.desktop == 'true' - defaults: - run: - working-directory: frontend - steps: - - name: Checkout - uses: actions/checkout@v7 - - - name: Setup pnpm - uses: pnpm/action-setup@v6 - - name: Setup Node.js - uses: actions/setup-node@v7 - with: - node-version: ${{ env.NODE_VERSION }} - cache: 'pnpm' - cache-dependency-path: pnpm-lock.yaml - - - name: Install dependencies - run: pnpm install --frozen-lockfile - - - name: Check Electron build - if: needs.changes.outputs.desktop == 'true' - working-directory: frontend/platforms/electron - run: | - pnpm install - pnpm build - security: name: Security Scan runs-on: ubuntu-latest From 26aa0d35f8776d127c79a24b5b43a8efcbb3614b Mon Sep 17 00:00:00 2001 From: Aric Camarata Date: Mon, 14 Sep 2026 16:02:08 -0400 Subject: [PATCH 2/2] ci: cover root packages/ in ci.yml's filter too ci.yml runs on push to main and gates its jobs with the same paths-filter shape as pr-checks.yml, including the same 'packages:' entry that only matched frontend/. A push touching only the shared packages/ directory skipped lint, type-check, test and build on main as well as on PRs. frontend/pnpm-workspace.yaml does not exist; the workspace manifest is at the repo root. --- .github/workflows/ci.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2a776075..df8d6fc0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,7 +63,8 @@ jobs: - 'frontend/src/**' - 'frontend/package.json' - 'pnpm-lock.yaml' - - 'frontend/pnpm-workspace.yaml' + - 'packages/**' + - 'pnpm-workspace.yaml' config: - 'frontend/tsconfig.json' - 'frontend/jest.config.js'