ci: native Intel/Apple Silicon macOS builds + AU/GUI validation; bump v0.1.3 - #7
Merged
Conversation
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>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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)
.component(auval on recent macOS rejects unsigned units; the zipped artifact is the same signed bundle).auval -v aufx Pico BoCoafter clearing quarantine + the AudioUnit cache.pluginval --strictness-level 5opens/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
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
auvalandpluginvalon both architectures.🤖 Generated with Claude Code