fix: release confirm dialog pointer lock #817
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] | |
| paths: | |
| - 'src/**' | |
| - 'src-tauri/**' | |
| - 'cli/**' | |
| - 'index.html' | |
| - 'package.json' | |
| - 'pnpm-lock.yaml' | |
| - 'vite.config.ts' | |
| - 'tsconfig.json' | |
| - 'tsconfig.node.json' | |
| - 'tailwind.config.js' | |
| - '.github/workflows/ci.yml' | |
| pull_request: | |
| branches: [main] | |
| # Cancel in-flight runs for the same branch/PR when a newer commit arrives | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # ── Frontend: TypeScript + i18n ──────────────────────────────────── | |
| frontend: | |
| name: Frontend (TypeScript + i18n) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: '20' | |
| - uses: pnpm/action-setup@v6 | |
| with: | |
| version: 9 | |
| - name: Install dependencies | |
| run: pnpm install --frozen-lockfile | |
| - name: TypeScript type check | |
| run: npx tsc --noEmit | |
| - name: i18n completeness check | |
| run: node scripts/check-i18n.cjs | |
| - name: Run tests | |
| run: pnpm test | |
| # ── Rust: check + fmt + deny ──────────────────────────────────────── | |
| rust: | |
| name: Rust (check + fmt) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: dtolnay/rust-toolchain@stable | |
| with: | |
| components: rustfmt | |
| - uses: swatinem/rust-cache@v2 | |
| with: | |
| workspaces: | | |
| ./src-tauri -> target | |
| ./cli -> target | |
| cache-on-failure: false | |
| - name: Install Linux system dependencies | |
| run: | | |
| sudo apt-get update | |
| # serialport links against libudev on Linux. | |
| sudo apt-get install -y \ | |
| libgtk-3-dev \ | |
| libwebkit2gtk-4.1-dev \ | |
| libjavascriptcoregtk-4.1-dev \ | |
| libsoup-3.0-dev \ | |
| libayatana-appindicator3-dev \ | |
| librsvg2-dev \ | |
| libssl-dev \ | |
| libudev-dev \ | |
| pkg-config \ | |
| build-essential | |
| - name: Ensure bundled resource directories exist | |
| run: | | |
| mkdir -p src-tauri/cli-bin | |
| - name: cargo check (src-tauri) | |
| run: cd src-tauri && cargo check --all-features | |
| - name: cargo fmt (src-tauri) | |
| run: cd src-tauri && cargo fmt --check | |
| - name: cargo check (cli) | |
| run: cd cli && cargo check | |
| - name: cargo fmt (cli) | |
| run: cd cli && cargo fmt --check | |
| - name: cargo test (src-tauri) | |
| run: cd src-tauri && cargo test --lib | |
| - name: cargo test (cli) | |
| run: cd cli && cargo test | |
| # ── License & duplicate dependency audit ──────────────────────────── | |
| # cargo deny reads the dependency graph only — no compilation, no Linux | |
| # graphics libs needed. Runs in parallel with the rust job. | |
| cargo-deny: | |
| name: License & dependency audit (cargo deny) | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - name: cargo deny (src-tauri) | |
| uses: EmbarkStudios/cargo-deny-action@v2 | |
| with: | |
| manifest-path: src-tauri/Cargo.toml | |
| # Advisory checks are intentionally not a CI gate: Tauri/WebKitGTK | |
| # transitive advisories churn faster than we can action upstream fixes. | |
| # Keep licenses and duplicate-crate bans as hard gates. | |
| command: check | |
| command-arguments: licenses bans | |
| - name: cargo deny (cli) | |
| uses: EmbarkStudios/cargo-deny-action@v2 | |
| with: | |
| manifest-path: cli/Cargo.toml | |
| command: check | |
| command-arguments: --config src-tauri/deny.toml licenses bans |