Thanks for considering contributing to CommitPyramid. Here's how to get involved — whether you're fixing a bug, suggesting a feature, or dropping in some pixel art.
Be kind, assume good intent. That's it.
- Bug reports — open an Issue with steps to reproduce and your macOS/Xcode versions
- Feature requests — open an Issue tagged
[FEATURE]and describe the problem you want solved - Code — fix bugs, add features, improve tests, refactor
- Art / assets — sprites, textures, UI icons; see CONTRIBUTING-ASSETS.md for the full guide
- Read
docs/concept.mdanddocs/architecture.mdto understand what CommitPyramid is and how it's structured. - Look at open Issues — your idea or bug might already be tracked.
- For anything non-trivial (new subsystem, significant refactor, new game mechanic), open a feature request Issue first. A quick discussion about approach can save everyone time.
git clone https://github.com/Kvazemorda/CommitPyramid.git
cd CommitPyramid
swift build
swift run CommitPyramidRequirements: macOS 14+, Xcode 15+. No external dependencies — everything is in the Swift package.
CommitPyramid follows standard Swift conventions with a few project-specific preferences:
- 4-space indentation (no tabs)
final classby default — open it up only if subclassing is intentional- Prefer value types (
struct,enum) over reference types where it makes sense async/awaitfor all IO — no callbacks or semaphores- No force-unwrap in production code; use
guardor optional chaining
Tests live in Tests/CommitPyramidTests/. Add a test for any non-trivial logic you introduce.
-
Fork the repo and create a branch:
feature/short-namefor new featuresfix/issue-Nfor bug fixes (where N is the Issue number)art/<unit-name>for asset contributions
-
Commit messages:
- Short subject line, 50 characters or fewer
- Body (if needed) explains why, not just what
-
Before pushing, make sure everything builds and tests pass:
swift build && swift test
-
Open a PR using the template in
.github/PULL_REQUEST_TEMPLATE.md. Fill in the relevant sections. -
Keep commits focused. Squash merge is the default, but clean history in the branch makes review easier.
Here's what to expect after opening a PR:
- A reviewer will check that the build and tests pass, there are no new compiler warnings, the code follows existing patterns, and no personal data ended up in the diff.
- Expect feedback and iteration — that's normal and welcome.
- Response time is best-effort; this is a small open-source project.
Sources/CommitPyramid/ # Main app source
App/ # AppDelegate, window controllers
Data/ # Models, persistence, file watchers
Game/ # SpriteKit scene, engine loop
UI/ # SwiftUI views, SpriteKit bridges
World/ # Map generation logic
Theme/ # Color palette, visual constants
Tests/CommitPyramidTests/ # Unit and integration tests
concept/ # Russian working docs (maintainer-internal)
docs/ # English public documentation
.github/ # Issue/PR templates, CI workflows
CommitPyramid uses a structured PM/lead/run workflow internally (documented under concept/) to track planned work across cycles. Contributors don't need to follow any of that — just open Issues and PRs naturally. The maintainer will pick up your contribution and integrate it into the planning flow.