diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index c76b983..1b85e0f 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,9 +17,9 @@ jobs: strategy: fail-fast: false matrix: - # macos-26 carries the Xcode 27 toolchain (macOS 27 SDK): the - # newest-SKU check alongside the macos-15 floor. - os: [macos-15, macos-26, ubuntu-24.04, windows-2025] + # macOS 26 is the minimum supported system, so macos-26 (which + # carries the Xcode 27 toolchain) is the only macOS leg. + os: [macos-26, ubuntu-24.04, windows-2025] runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v7 @@ -33,7 +33,7 @@ jobs: sudo apt-get install -y build-essential g++ libxcb1-dev libxkbcommon-dev libxkbcommon-x11-dev - name: Format check - if: matrix.os == 'macos-15' + if: matrix.os == 'macos-26' run: cargo fmt --check - name: Clippy run: cargo clippy --all-targets -- -D warnings diff --git a/README.md b/README.md index 8cdff2f..649de92 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ To package locally: `scripts/package-macos.sh 0.1.0` produces | Platform | Status | | --- | --- | -| macOS (Apple silicon / Intel) | built, tested, and manually verified — including on macOS 27 (Xcode 27 SDK) | +| macOS 26+ (Apple silicon / Intel) | built, tested, and manually verified — including on macOS 27 (Xcode 27 SDK) | | Linux (X11 / Wayland) | compiles and unit-tested via CI; rendering uses Vulkan through blade-graphics, linking needs `libxcb`, `libxkbcommon`, `libxkbcommon-x11`, `libstdc++` | | Windows | compiles and unit-tested via CI (MSVC toolchain) | | FreeBSD | compiles via CI (GPUI gates its X11/Wayland backend to `linux` + `freebsd`); least-tested platform | @@ -61,7 +61,7 @@ cross-platform; only the final Linux binary link needs native X11 libraries. - Stable Rust toolchain - `git` on your `PATH` -- macOS: Xcode command line tools (`xcode-select --install`) for the Metal backend +- macOS 26 or newer: Xcode command line tools (`xcode-select --install`) for the Metal backend - Linux: the X11/xkbcommon dev packages above plus a Vulkan-capable driver stack ## Usage diff --git a/docs/BUILDING.md b/docs/BUILDING.md index a4d8fb4..4091b84 100644 --- a/docs/BUILDING.md +++ b/docs/BUILDING.md @@ -19,10 +19,11 @@ does and why, per target. ### macOS -Builds with Xcode 26 or 27 (macOS 26/27 SDK); the universal package is -built on the newest CI runner image so releases pick up the latest -SDK's platforms support while `LSMinimumSystemVersion` (13.0) keeps -older systems working. +Minimum supported system: **macOS 26**. Builds with Xcode 26 or 27 +(macOS 26/27 SDK); the universal package links with +`MACOSX_DEPLOYMENT_TARGET=26.0` and carries +`LSMinimumSystemVersion` 26.0, and CI builds/tests on the macos-26 +runner image. Requirements: stable Rust, Xcode command line tools (`xcode-select --install`). diff --git a/scripts/package-macos.sh b/scripts/package-macos.sh index a2edc6e..3e06a03 100755 --- a/scripts/package-macos.sh +++ b/scripts/package-macos.sh @@ -22,6 +22,10 @@ cd "$ROOT" echo "==> Building universal binary (aarch64 + x86_64 apple-darwin)" rustup target add aarch64-apple-darwin x86_64-apple-darwin +# Minimum supported macOS: both slices link with a 26.0 floor, matching +# LSMinimumSystemVersion below (Gatekeeper/LaunchServices enforce the +# plist; the Mach-O min version is what older systems actually read). +export MACOSX_DEPLOYMENT_TARGET=26.0 cargo build --release --target aarch64-apple-darwin --target x86_64-apple-darwin rm -rf "$DIST" @@ -52,7 +56,7 @@ cat > "$DIST/$APP_NAME.app/Contents/Info.plist" <CFBundleVersion${VERSION} CFBundleShortVersionString${VERSION} CFBundleInfoDictionaryVersion6.0 - LSMinimumSystemVersion13.0 + LSMinimumSystemVersion26.0 LSApplicationCategoryTypepublic.app-category.developer-tools NSHighResolutionCapable NSSupportsAutomaticGraphicsSwitching