Skip to content

Contributing

ManaBrew is GPL-3.0-or-later and developed in the open at github.com/witchesofthehill/manabrew. Read the repository’s CONTRIBUTING guide before opening a pull request.

AreaPathStack
Client UIsrc/React + TypeScript
Desktop shellsrc-tauri/Tauri (Rust)
Rules engineforge-engine/crates/Rust workspace
Java referenceforge/ (submodule)Forge, read-only
Parity harnessforge-parity/Rust + Java side-by-side
This websitewebsite/Astro + Starlight

The Rust engine is a port of Forge, not a reimplementation. Every engine change mirrors the corresponding Java code — same file names, same control flow — and is verified by a parity harness that runs both engines with identical decks, seeds, and choices, then compares the game traces. Most contributions are parity fixes: find a card that diverges, locate the rule the Rust port is missing, and port it.

ManaBrew is developed with substantial AI assistance, openly. The workflow suits it: Java Forge is an external oracle, so a model can propose an engine fix but the parity harness decides whether behavior actually matches. AI is never treated as a rules authority. If you use AI in a contribution, review the generated diff yourself, test it, and make sure every behavioral claim traces back to Forge or a documented convention — see AI_USAGE.md.

The wire protocol between frontends and engine backends is specified in PROTOCOL.md — message shapes, game-state snapshots, prompts, and actions. Unlike the GPL-licensed implementation, the spec itself is CC-BY-4.0, so independent clients and engines can implement it without license entanglement.

All project spaces follow the Code of Conduct. Security vulnerabilities go through private reporting, never public issues.