Skip to content

ci: native Intel/Apple Silicon macOS builds + AU/GUI validation; bump v0.1.3 - #7

Merged
filipeborato merged 4 commits into
masterfrom
ci/macos-intel-arm
May 30, 2026
Merged

ci: native Intel/Apple Silicon macOS builds + AU/GUI validation; bump v0.1.3#7
filipeborato merged 4 commits into
masterfrom
ci/macos-intel-arm

Conversation

@filipeborato

Copy link
Copy Markdown
Owner

Summary

Builds separate Intel and Apple Silicon macOS artifacts and adds AU + GUI validation so macOS load/GUI failures are caught in CI without a Mac on hand. Mirrors the borato-224 validation approach.

macOS build matrix (native runners, no Rosetta)

  • macos-15 → arm64 (deployment target 11.0)
  • macos-15-intel → x86_64 (deployment target 10.15)

Validation (hard gate on both arches)

  • Ad-hoc codesign + verify the .component (auval on recent macOS rejects unsigned units; the zipped artifact is the same signed bundle).
  • auval -v aufx Pico BoCo after clearing quarantine + the AudioUnit cache.
  • pluginval --strictness-level 5 opens/closes the editor and sweeps parameters for AU and VST3 — exercises the JUCE WebView UI to surface a GUI that fails to load on macOS.

Release

  • Version bumped to 0.1.3 (CMake project version drives JUCE_PRODUCT_VERSION, so the in-UI version follows automatically).

CI status

All jobs green on the latest commit: macOS arm64, macOS Intel, and Linux — including auval and pluginval on both architectures.

🤖 Generated with Claude Code

Your Name and others added 4 commits May 30, 2026 13:29
Adds two validation steps to the macOS job so plugin load/GUI failures
are caught in CI without a Mac on hand:

- auval -v aufx Pcto Bort: Apple's authoritative Audio Unit validator,
  run after installing the freshly built .component and refreshing the
  AudioComponent registry.
- pluginval --strictness-level 5: opens/closes the editor and sweeps
  parameters for both AU and VST3, which exercises the WebView
  (WebBrowserComponent) UI and surfaces a GUI that fails to load.

The native arm64 leg is a hard gate; the cross-compiled x86_64 slice is
validated through Rosetta as best-effort (continue-on-error) so a Rosetta
quirk cannot block a release.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Mirror the borato-224 validation approach so macOS load/GUI failures are
caught in CI without a Mac on hand:

- Build each slice on a NATIVE runner (macos-15 arm64, macos-15-intel
  x86_64) with a matching CMAKE_OSX_DEPLOYMENT_TARGET, so auval loads the
  component natively (no Rosetta) and both arches are hard gates.
- Ad-hoc codesign + verify the .component before validating; auval on
  recent macOS rejects unsigned components, and the zipped artifact is the
  same signed bundle.
- auval -v aufx Pico BoCo (codes from juce_add_plugin) as the AU gate,
  after clearing quarantine and the AudioUnit cache.
- pluginval --strictness-level 5 opens/closes the editor and sweeps
  parameters, exercising the JUCE WebView UI to surface a GUI that fails
  to load on macOS.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Bump the version across the build/release sources. The plugin UI reads
JUCE_PRODUCT_VERSION (= PROJECT_VERSION from plugin/CMakeLists.txt), so
the bump there updates the in-UI version automatically.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…arness)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@filipeborato
filipeborato merged commit b045092 into master May 30, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant