Contributing
Thanks for helping. Small, focused pull requests are easiest to review.
Before you open a PR
Section titled “Before you open a PR”- Run the tests for what you touched (
make helplists them;make testruns all host/unit suites). If you changed the console, also runmake console-e2e. - If you changed firmware, make sure
make console firmwarebuilds. - If you changed a creature spec in
creatures/js/cute/, re-export withmake creaturesand commit the changed.moltyfiles. - Keep the three default relay URLs in sync if you change one (see docs/AGENT-LINK.md).
- Add a line under
## Unreleasedin CHANGELOG.md for user-visible changes. Don’t editVERSION; it is bumped when a release is cut (docs/RELEASING.md).
CI (.github/workflows/ci.yml) runs the same checks on
every pull request, plus make hygiene (no secrets or local paths committed) and a
firmware size gate (make firmware-size: the app must stay under 90% of its OTA slot).
Conventions
Section titled “Conventions”- Firmware: C11, ESP-IDF v5.5. Board drivers live in
firmware/main/hw/; anything per-frame stays allocation-free. New HTTP routes go in the matchingnet/or feature file and are registered fromhttp_server_start(). - The
.moltyformat is shared by the JS exporter and the C reader: changecreatures/MOLTY-FORMAT.md,creatures/tools/molty-export.mjsandfirmware/main/creature/cute_spec.ctogether. - The relay core (
relay/src/core) must not import Cloudflare APIs (a test enforces it). - New source files: add
SPDX-License-Identifier: MIT. Keep third-party notices intact and add new dependencies toTHIRD_PARTY_NOTICES.md.
Hardware
Section titled “Hardware”You need the board to test firmware behaviour, but not to build or to run the host tests. Flashing instructions: docs/HARDWARE.md.
By contributing you agree that your contributions are licensed under the MIT licence.