Thanks for taking an interest in Chorus. Bug reports, fixes, and new features are all welcome.
You will need macOS 14 or later, Xcode 16 or newer, and XcodeGen
(brew install xcodegen). Xcode 15 cannot open the project: the file is in the
format Xcode 16 introduced, and older versions refuse it outright rather than
warning you.
xcodegen generate
xcodebuild test -project Chorus.xcodeproj -scheme Chorus -destination 'platform=macOS'You can also open Chorus.xcodeproj in Xcode and run the Chorus scheme.
- Add a test for any logic you can exercise on its own. The tests in
ChorusTests/cover pure logic such as badge parsing, input validation, and reordering. - Match the surrounding style: small files, immutable data, clear names.
- A new
AppPreferencesfield should beOptionalwith a nil-means-default accessor. Chorus ships to people who already have saved data, and that pattern lets SwiftData migrate an old store in place instead of wiping it. Copy the shape of a field that is already there. - The Xcode project comes from
project.yml. Change a version or a build setting in bothproject.ymland the.pbxproj, or the nextxcodegen generatewill undo it. - Run the test suite before you open a pull request.
- Branch off
mainand keep each pull request to a single change. - If two pull requests touch the same type or view, they can each look clean
against
mainand still collide once the first one lands. Say so in the description when your change editsAppPreferencesor a settings view. - Write commit messages as
type: summary, for examplefix: ...orfeat: ..., with a short body that says why. - Say what you changed and how you checked it.
Anything a user or the public reads, such as the README, release notes, or these
docs, should be plain and direct. CLAUDE.md has the full standard.