Refuse to build a macOS bundle with no engine - #244
Merged
Conversation
The `if [ -f "$BUILD_DIR/ZoomObsEngine" ]` had no `else`, so a build dir
without the engine silently produced a plugin-only bundle. It looks correct --
it loads into OBS, the dock appears, the sources appear -- and then cannot join
a meeting, because the process that links the Zoom SDK is not in it.
Caught 2026-09-05 the obvious way: a bundle configured without
BUILD_ZOOM_ENGINE came out at 2.3 MB instead of 613 MB and was installed
before anyone noticed the difference. The requirement was already written down
in this script's own comments and in release-macos.yml ("a release bundle
without the engine would..."); it had simply never been enforced, which is the
entire failure. A requirement stated only in prose is not a requirement.
Missing engine is now exit 3 with the cause and the fix. --no-engine is the
explicit opt-out for the rare plugin-only case, so the escape hatch has to be
asked for rather than being the silent default.
Verified both paths against a build dir with no ZoomObsEngine: exit 3 without
the flag, success with it. (The first attempt at this test was invalid -- it
ran against a build dir that turned out to HAVE an engine, so it could not have
failed either way.)
Co-Authored-By: Claude Opus 5 (1M context) <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.
The defect
if [ -f "$BUILD_DIR/ZoomObsEngine" ]inscripts/make-macos-bundle.shhad noelse. A build directory without the engine silently produced a plugin-only bundle.That bundle looks correct in every way that is easy to check — it loads into OBS, the dock appears, the sources appear — and then cannot join a meeting, because the process that links the Zoom SDK isn't in it.
How it surfaced
Building a macOS test bundle on 2026-09-05 with
BUILD_ZOOM_ENGINEaccidentally omitted. The result came out at 2.3 MB instead of 613 MB and was installed before the size difference was noticed. Had it not been caught, it would have burned a live-meeting test session on a build that could never have worked.The requirement was already written down — in this script's own comments, and in
release-macos.yml("a release bundle without the engine would…"). It had simply never been enforced anywhere. A requirement stated only in prose is not a requirement.The change
exit 3, naming both the cause and the fix.--no-engineis the explicit opt-out for the genuine plugin-only case, so the escape hatch must be asked for rather than being the silent default.Verification
Tested against a build dir containing no
ZoomObsEngine: exit 3 without the flag, success with it. Help text lists the flag.Worth recording that the first attempt at this test was invalid — it ran against a build dir that turned out to have an engine, so it could not have failed either way. The guard was only actually proven once a genuine no-engine directory was constructed.
🤖 Generated with Claude Code