Contributing
Heavymatica is developed in the open at github.com/Dirnei/heavymatica. Bug reports and ideas go into issues. What is built and what comes next is in ROADMAP.md.
How a change is made
Section titled “How a change is made”Features and behaviour changes are planned with OpenSpec before code is written:
openspec/specs/describes what the mod, the cloud and the websites do today, one capability per folder.openspec/changes/<name>/holds a change in progress: a proposal (why), spec deltas (what changes), a design (how) and tasks. A finished change is archived and its deltas are merged intoopenspec/specs/.
Small fixes don’t need a change.
Commits
Section titled “Commits”- Conventional Commits:
type(scope): subject, for examplefeat(placement): add remote overlayorfix(library): keep selection after refresh. Types:feat,fix,refactor,test,docs,build,chore. - A subject line only, at most 74 characters.
- Release notes are built from
featandfixcommits, so their subjects are written for players.
Code comments
Section titled “Code comments”- Comment only what the code can’t say itself: a non-obvious constraint, a workaround, an API quirk.
- No reasoning or history in comments, and no references to OpenSpec changes or requirements. That belongs in the change’s design.
Before a pull request
Section titled “Before a pull request”./gradlew buildfromsrc/mod(both jars and all mod tests).dotnet test src/cloud/Heavymatica.slnxwhen the cloud changed.npm run checkandnpm testinsrc/web/playerwhen the website changed.npm run buildindocswhen the documentation changed.
See Building and Local development.