Skip to content

fix: make protected paste lint clean across platforms #2

fix: make protected paste lint clean across platforms

fix: make protected paste lint clean across platforms #2

name: Cross-Platform CI
# Triggered explicitly by the owner: either by submitting an approving PR
# review (the natural "I looked at this, run the heavy matrix" signal), by
# the post-merge push to main, or by manual dispatch.
#
# The Linux-only quality + corpus jobs in ci.yml stay automatic on every PR;
# this workflow exists so the expensive 3-OS matrix doesn't run on every
# routine PR (especially Renovate's), only when the maintainer signs off.
on:
pull_request_review:
types: [submitted]
push:
branches: [main]
workflow_dispatch:
concurrency:
group: xp-${{ github.event.pull_request.head.sha || github.sha }}
cancel-in-progress: true
env:
CARGO_TERM_COLOR: always
RUSTFLAGS: "-D warnings"
jobs:
cross_platform:
name: Cross-Platform Build & Functional Tests (${{ matrix.os }})
# On pull_request_review, only an `approved` review opens the gate.
# `commented` / `changes_requested` / `dismissed` are no-ops.
if: |
github.event_name == 'push' ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request_review'
&& github.event.review.state == 'approved')
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-2025-vs2026]
steps:
- uses: actions/checkout@v6
with:
# pull_request_review's default checkout is the base branch; pin to
# the PR's HEAD so we test what the reviewer actually approved.
ref: ${{ github.event.pull_request.head.sha || github.sha }}
- name: Install Linux system dependencies
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y \
libxcb1-dev \
libxcb-shape0-dev \
libxcb-xfixes0-dev \
libxkbcommon-dev \
libdbus-1-dev \
libwebkit2gtk-4.1-dev \
libgtk-3-dev \
libayatana-appindicator3-dev \
librsvg2-dev \
patchelf
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Cache cargo registry and target dir
uses: Swatinem/rust-cache@v2
- name: Install just
uses: taiki-e/install-action@just
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 22
cache: npm
cache-dependency-path: desktop/package-lock.json
- name: Build (smoke)
run: just build
- name: Functional integration tests (filesystem seam)
env:
BEFOREPASTE_NO_OS_SIDE_EFFECTS: "1"
run: just test-fs
- name: Install desktop dependencies
working-directory: desktop
run: npm ci
- name: Desktop build (no bundle)
working-directory: desktop
run: npm run build:no-bundle