Thanks for your interest in improving Auricle. This is a small, dependency-free Swift/SwiftUI menu bar app built on macOS 14.4+ Core Audio process taps.
-
macOS 14.4 or later.
-
Full Xcode (not just the Command Line Tools). SwiftPM linking of an executable target can fail against the bare CLT toolchain, so point at Xcode:
export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
# Build the package
swift build
# Run the unit tests (pure logic — no audio hardware needed)
swift test
# Headless diagnostics (dumps devices/defaults/processes as JSON, creates no taps)
swift run Auricle --probe
# Package a signed .app bundle into dist/
./scripts/build-app.sh- Formatting follows
.editorconfig: UTF-8, LF, 4-space indent, final newline, no trailing whitespace, 120-column soft limit for Swift. - SwiftLint is an optional local aid,
configured in
.swiftlint.yml. It does not gate CI. - Keep the app dependency-free. No third-party packages.
- New logic that can be tested without audio hardware should get a unit test in
Tests/AuricleTests. To reach package-internal symbols from tests, use@testable import Auricle. - CI runs
swift build -c releaseandswift teston macOS 14. Keep it green.
VERSIONis the single source of truth for the release number.AppInfo.versionmust match it — a unit test and a CI step both enforce this. When bumping the version, updateVERSION,AppInfo.version, andCHANGELOG.mdtogether.
- Write focused commits with clear messages. Update
CHANGELOG.mdunder[Unreleased]for user-facing changes. - Match the existing language and style of the file you are editing.