chore(main): release 0.15.2 (#274) #31
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: Engine macOS Floor | |
| # Proves the bundled engine actually LOADS on Thuki's minimum macOS. The bug this | |
| # guards against is a dyld load-time failure: a Metal symbol that exists only on | |
| # a newer macOS, hard-imported, aborts llama-server at launch on older systems. | |
| # | |
| # The static audit in scripts/ensure-llama-server.ts already checks the shipped | |
| # binary is built for the floor with a weak residency-set import. This goes one | |
| # step further: it builds the real shipped binary (on macos-15, the same SDK | |
| # releases use) and then *launches it on macos-14* — the oldest GitHub-hosted | |
| # macOS image (macOS 13 runners were removed at the end of 2025). macOS 14, like | |
| # our 13.4 floor, predates the macOS-15 residency-set API, so it exercises the | |
| # exact weak-import load path the floor uses; together with the static | |
| # weak-import audit (which covers the 13.4-to-14 gap), a clean launch proves the | |
| # engine loads on the floor. If a future llama.cpp bump hard-imports a symbol | |
| # from a macOS newer than the floor, `llama-server --version` aborts here with | |
| # "Symbol not found", failing the PR before it can ship. | |
| on: | |
| pull_request: | |
| push: | |
| branches: [main] | |
| permissions: | |
| contents: read | |
| jobs: | |
| build: | |
| name: Build shipped engine (release SDK) | |
| runs-on: macos-15 | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 | |
| - uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2.2.0 | |
| with: | |
| bun-version: 1.3.11 | |
| - run: bun install --frozen-lockfile | |
| - name: Cache llama.cpp sidecar | |
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | |
| with: | |
| path: src-tauri/binaries | |
| key: llama-cpp-${{ runner.os }}-b9781-51eae8cf-macos13.4 | |
| - name: Build llama-server sidecar | |
| run: bun run engine:ensure | |
| - name: Upload the built engine | |
| uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
| with: | |
| name: engine-binaries | |
| path: src-tauri/binaries | |
| retention-days: 1 | |
| loads-on-floor: | |
| name: Engine loads on macOS 14 | |
| needs: build | |
| runs-on: macos-14 | |
| timeout-minutes: 15 | |
| steps: | |
| - name: Download the built engine | |
| uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4.3.0 | |
| with: | |
| name: engine-binaries | |
| path: src-tauri/binaries | |
| - name: Launch the engine (must load, not dyld-fail) | |
| run: | | |
| set -euo pipefail | |
| chmod +x src-tauri/binaries/llama-server-aarch64-apple-darwin | |
| # --version forces the load-time dyld bind of libggml-metal (a hard | |
| # @rpath dependency), which is exactly where an incompatible Metal | |
| # symbol would abort. A clean exit proves the shipped binary loads. | |
| ./src-tauri/binaries/llama-server-aarch64-apple-darwin --version | |
| echo "engine loaded cleanly on macOS $(sw_vers -productVersion)" |