Contributing¶
Building from Source¶
Requires:
- Xcode 15+ (for Swift 6.0 toolchain)
- macOS 14+ on Apple Silicon
Project Layout¶
BurnCycle/— Swift Package Manager projectBurnCycle/BurnCycle/— Source filesbuild.sh— Build script that createsBurnCycle.appbundledocs/— MkDocs documentationmkdocs.yml— MkDocs configuration
Development Workflow¶
- Make changes to source files in
BurnCycle/BurnCycle/ - Build:
./build.sh - Test:
open BurnCycle.app - Install:
cp -r BurnCycle.app /Applications/
Key Design Decisions¶
- SwiftPM over Xcode project — simpler, no xcodeproj to maintain
- Bundled xmrig — zero external dependencies for mining
- IOReport for GPU — matches mactop's accuracy, no sudo needed
- Reactive battery monitoring — Combine observers for immediate threshold response
- 2-second polling — fast enough for responsive UI, light enough to not drain battery
- Safety-first — multiple layers prevent battery death
Filing Issues¶
Report bugs at github.com/wu-hongjun/BurnCycle/issues