Thank you for your interest in contributing to FineTune!
-
Clone the repository:
git clone https://github.com/ronitsingh10/FineTune.git cd FineTune -
Open in Xcode:
open FineTune.xcodeproj
-
Set your development team in Xcode:
- Select the FineTune target
- Go to Signing & Capabilities
- Select your team from the dropdown
-
Build and run (Cmd+R)
- Check existing issues before creating a new one
- Include macOS version and steps to reproduce
- For audio issues, include which apps were playing audio
- Fork the repository
- Create a feature branch (
git checkout -b feature/my-feature) - Make your changes
- Test with multiple audio sources and output devices
- Commit your changes
- Push to your fork and open a pull request
- Follow existing patterns in the codebase
- Use
@Observableand@MainActorfor state management - Audio callback code must be real-time safe (no allocations, locks, or ObjC)
- Views: props first, callbacks for mutations,
@Stateonly for local UI state
Code running in processAudio() must be real-time safe:
- No memory allocations (
malloc,new,Array.append) - No locks (
NSLock,DispatchSemaphore,os_unfair_lock) - No Objective-C messaging
- No file I/O or logging
- No Swift
print()statements
Before submitting:
- Test with 2+ output devices
- Test device hot-plug (disconnect during playback)
- Test with 5+ apps playing audio simultaneously