name: CI on: push: branches: [main] pull_request: permissions: contents: read jobs: rust: name: rust (${{ matrix.os }}) strategy: fail-fast: false matrix: os: [namespace-profile-vig, macos-latest] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v7 with: persist-credentials: false - name: Install hidapi build deps (Linux) if: runner.os == 'Linux' run: sudo apt-get update && sudo apt-get install -y libudev-dev libhidapi-dev - uses: dtolnay/rust-toolchain@stable with: components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 - run: cargo fmt --all --check - run: cargo clippy --workspace --all-targets -- -D warnings - run: cargo test --workspace ui: name: ui runs-on: namespace-profile-vig defaults: run: working-directory: apps/microbridge-ui steps: - uses: actions/checkout@v7 with: persist-credentials: false - uses: actions/setup-node@v7 with: node-version: "22" cache: npm cache-dependency-path: apps/microbridge-ui/package-lock.json - run: npm ci - run: npm test - run: npm run build adapters: name: adapters runs-on: namespace-profile-vig steps: - uses: actions/checkout@v7 with: persist-credentials: false - uses: actions/setup-node@v7 with: node-version: "22" - run: node --test adapters/cursor/hooks/microbridge-event.test.mjs - run: node --test scripts/pr-review-fallback.test.mjs - run: node -e 'for (const file of ["adapters/cursor/.cursor-plugin/plugin.json", "adapters/cursor/hooks/hooks.json"]) JSON.parse(require("fs").readFileSync(file, "utf8"))' # Keep required-check names stable for the main branch ruleset. # Job names above are what GitHub shows as status contexts.