Build Plug.app with an Info.plist #6

Merged
erdoar merged 1 commit from claude/app-bundle into main 2026-10-10 01:54:40 +00:00
erdoar commented 2026-10-10 01:41:53 +00:00 (Migrated from github.com)

Summary

  • scripts/bundle.sh builds Plug and wraps it as build/Plug.app. The default is a release build. --debug builds debug instead and --open launches the app. PLUG_BUNDLE_ID sets the bundle identifier, defaulting to com.erdoar.plug.
  • Bundle/Info.plist is the template. It includes NSAudioCaptureUsageDescription (Core Audio process taps) and NSMicrophoneUsageDescription, so macOS can ask for permission. The unbundled swift run binary can't.
  • The bundle is signed ad hoc for local use. macOS may ask for permission again after each rebuild.
  • README and CLAUDE.md now say when to use the bundle.

Tested

  • Linux: bash -n passes, and the plist parses with the expected keys.

To test on the Mac

  1. Quit Plug, then run scripts/bundle.sh --open. Expect Built build/Plug.app (release, com.erdoar.plug), then the app opens.
  2. In the app: Start, add an effect, and switch the output. Everything should work as it does under swift run.
  3. Optional: run codesign -dv build/Plug.app and check it shows Signature=adhoc.

Not done

  • Nothing requests permission yet. That comes with audio capture (step 4).

🤖 Generated with Claude Code

https://claude.ai/code/session_011C96TJ2L7nzVMFTH7raNu5


Generated by Claude Code

## Summary - `scripts/bundle.sh` builds Plug and wraps it as `build/Plug.app`. The default is a release build. `--debug` builds debug instead and `--open` launches the app. `PLUG_BUNDLE_ID` sets the bundle identifier, defaulting to `com.erdoar.plug`. - `Bundle/Info.plist` is the template. It includes `NSAudioCaptureUsageDescription` (Core Audio process taps) and `NSMicrophoneUsageDescription`, so macOS can ask for permission. The unbundled `swift run` binary can't. - The bundle is signed ad hoc for local use. macOS may ask for permission again after each rebuild. - README and CLAUDE.md now say when to use the bundle. ## Tested - Linux: `bash -n` passes, and the plist parses with the expected keys. ## To test on the Mac 1. Quit Plug, then run `scripts/bundle.sh --open`. Expect `Built build/Plug.app (release, com.erdoar.plug)`, then the app opens. 2. In the app: Start, add an effect, and switch the output. Everything should work as it does under `swift run`. 3. Optional: run `codesign -dv build/Plug.app` and check it shows `Signature=adhoc`. ## Not done - Nothing requests permission yet. That comes with audio capture (step 4). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_011C96TJ2L7nzVMFTH7raNu5 --- _Generated by [Claude Code](https://claude.ai/code/session_011C96TJ2L7nzVMFTH7raNu5)_
Sign in to join this conversation.
No description provided.