M2 polish: find/save-as/about/dirty-confirm + Biome + tests + CI v5 #3
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| frontend: | |
| name: Frontend (typecheck + build) | |
| runs-on: macos-latest | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: pnpm/action-setup@v5 | |
| with: | |
| version: 10 | |
| - uses: actions/setup-node@v5 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - name: Install | |
| run: pnpm install --frozen-lockfile | |
| - name: Lint | |
| run: pnpm lint | |
| - name: Type-check | |
| run: pnpm tsc --noEmit | |
| - name: Build | |
| run: pnpm build | |
| - name: Run unit tests | |
| run: pnpm test --run | |
| if: hashFiles('vitest.config.ts') != '' | |
| rust: | |
| name: Rust (build + test) | |
| runs-on: macos-latest | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: pnpm/action-setup@v5 | |
| with: | |
| version: 10 | |
| - uses: actions/setup-node@v5 | |
| with: | |
| node-version: 22 | |
| cache: pnpm | |
| - name: Install frontend deps (needed for tauri build/dev resolution) | |
| run: pnpm install --frozen-lockfile | |
| - uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo registry + target | |
| uses: Swatinem/rust-cache@v2 | |
| with: | |
| workspaces: src-tauri | |
| # Unit + integration tests run in dev profile because the release | |
| # profile sets panic=abort, which is incompatible with test harnesses | |
| # that catch unwinds. Spike-0.3 bench is skipped in CI (run locally | |
| # via `pnpm bench:spike03`); it needs release-mode timings to be | |
| # meaningful and is too slow on macOS runners. | |
| - name: Cargo test | |
| working-directory: src-tauri | |
| run: cargo test | |
| - name: Cargo build --release (verifies the binary links) | |
| working-directory: src-tauri | |
| run: cargo build --release |