cruise 0.1.78

YAML-driven coding agent workflow orchestrator
Documentation
name: PR Auto-merge

on:
  pull_request:
    branches: [ main ]

jobs:
  test:
    strategy:
      matrix:
        os: [ubuntu-latest, macos-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - name: Checkout repository
        uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7

      - name: Install taplo
        if: matrix.os == 'ubuntu-latest'
        uses: taiki-e/install-action@bffeee26d4db9be238a4ea78d8826604ebcb594d # v2
        with:
          tool: taplo-cli

      - name: Lint Cargo.toml
        if: matrix.os == 'ubuntu-latest'
        run: taplo lint Cargo.toml

      - name: Check Cargo.toml formatting
        if: matrix.os == 'ubuntu-latest'
        run: taplo fmt --check --option reorder_keys=true Cargo.toml

      - name: Update Rust toolchain
        run: rustup update stable

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2

      - name: Run cargo check
        run: cargo check --all-features

      - name: Run tests
        run: cargo test --all-features

      - name: Run clippy
        if: matrix.os == 'ubuntu-latest'
        run: cargo clippy --all-targets --all-features -- -D warnings

      - name: Check formatting
        if: matrix.os == 'ubuntu-latest'
        run: cargo fmt -- --check

      - name: Test GitHub Action step scripts
        if: matrix.os == 'ubuntu-latest'
        run: |
          status=0
          log="$RUNNER_TEMP/action-suite.log"
          for suite in scripts/test_action_*.sh; do
            echo "== $suite"
            bash "$suite" > "$log" 2>&1 || status=1
            cat "$log"
            # A suite that dies mid-run (parse error, unset variable) never
            # reaches its `finish` call, so the tally line is the only proof
            # that every case actually executed.
            if ! grep -q '^Results:' "$log"; then
              echo "::error::$suite exited without a Results line -- it aborted before finishing"
              status=1
            fi
          done
          exit "$status"

  test-tauri:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7

      - name: Install system dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y libgtk-3-dev libwebkit2gtk-4.1-dev libappindicator3-dev librsvg2-dev

      - uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7
        with:
          node-version: 24

      - name: Install pnpm and frontend deps
        run: corepack enable && corepack prepare pnpm@latest --activate && pnpm --dir ui install --frozen-lockfile

      - name: Build frontend
        run: pnpm --dir ui run build

      - name: Update Rust toolchain
        run: rustup update stable

      - name: Cache Rust dependencies
        uses: Swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2

      - name: Check Tauri compilation
        run: cargo check -p cruise-gui