refactor(v11.0.0): drop pinchtab, single browser surface (chrome-devt… #55
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 | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| typecheck: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ">=1.1.30" | |
| - run: bun install --frozen-lockfile | |
| - run: bun run typecheck | |
| test: | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest, windows-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ">=1.1.30" | |
| - run: bun install --frozen-lockfile | |
| - run: bun test | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ">=1.1.30" | |
| - run: bun install --frozen-lockfile | |
| - run: bun run lint | |
| schemas: | |
| # Fails if `bun run schemas:emit` would produce a diff — enforces that the | |
| # committed JSON Schemas match the zod sources. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ">=1.1.30" | |
| - run: bun install --frozen-lockfile | |
| - run: bun run schemas:emit | |
| - run: git diff --exit-code schemas/ | |
| upstream-scan: | |
| # Dry-run in CI so any drift shows up in the PR. This is not a gate — | |
| # the scheduled upstream-sync workflow proposes fixes. | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ">=1.1.30" | |
| - run: bun install --frozen-lockfile | |
| - run: bun run upstream:scan | |
| bench: | |
| # Re-run the baseline on macOS and assert no hook p95 regressed > 20% | |
| # vs the committed bench/baseline-bash.json. macOS-only because the | |
| # baseline itself was taken on macOS; Linux/Windows numbers would trip | |
| # the gate with platform-derived noise. | |
| runs-on: macos-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ">=1.1.30" | |
| - run: bun install --frozen-lockfile | |
| - run: bun run bench:check -- --iters=20 --max=0.20 | |
| install-e2e: | |
| # Dedicated job for the E2E install tests so install failures are | |
| # surfaced as their own PR check (otherwise they're buried in the | |
| # `test` job among 240+ other tests). Runs the same tests as `test` | |
| # but only the install-e2e file, with the same matrix. | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ">=1.1.30" | |
| - run: bun install --frozen-lockfile | |
| - name: Run install E2E tests (HOME=tmpdir, CC_SKIP_DEPS=1) | |
| run: bun test tests/install-e2e.test.ts tests/golden-migrations.test.ts | |
| install-bash-bootstrap: | |
| # Smoke test setup.sh's bootstrap path (the bash wrapper that ensures | |
| # Bun is installed before exec'ing bun src/setup.ts). --dry-run prints | |
| # the planned actions without writing — enough to validate setup.sh | |
| # parses and dispatches correctly. | |
| # | |
| # Linux + macOS only. Windows users go through setup.ps1, which has | |
| # its own (currently untested) bootstrap; that gap is documented in | |
| # docs/migration-coexistence.md. | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ubuntu-latest, macos-latest] | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: oven-sh/setup-bun@v2 | |
| with: | |
| bun-version: ">=1.1.30" | |
| - run: bun install --frozen-lockfile | |
| - name: bash setup.sh --dry-run | |
| run: bash setup.sh --dry-run | |
| env: | |
| # Use the runner's HOME so we don't accidentally pollute it with | |
| # cc-settings artifacts (--dry-run wouldn't, but defense-in-depth). | |
| CC_SKIP_DEPS: "1" |