This file describes how to report problems and propose changes. The README describes the repository layout.
- Report security problems privately, as described in SECURITY.md. Do not open a public issue or pull request for them.
- For other bugs, open an issue with the controller firmware version (shown on the web page and in Home Assistant), what happened and what you expected.
- Before starting a large change, open an issue to agree on the approach.
- Base pull requests on
mainand keep each one to a single topic. - Write commit messages and pull request titles as
Conventional Commits:
type(scope): subject, for examplefix(controller): ...ordocs: .... release-please reads the types to choose each component's next version and to write its changelog. Usefeatfor new behavior,fixfor a bug fix, anddocs,test,ci,refactororchorefor changes that do not alter a released component. - Use US English spelling in code, comments, docs and commit messages.
- Update the documentation in the same pull request as the change it describes (see Documentation).
Build and test instructions are in each firmware's README and developer docs:
- Controller (RP2350) and Building
- Charger module (STM32G071)
Before opening a pull request, run the host tests from the directory of the firmware you changed:
cmake -S test -B test/build && cmake --build test/build
ctest --test-dir test/build --output-on-failureCI builds the firmware and runs these tests on every pull request that
changes firmware/controller/, firmware/charger-module/ or
firmware/tools/.
- Match the style of the surrounding code. Comments are plain, complete sentences.
- A change to the controller's HTTP API updates
firmware/controller/docs/openapi.yamlin the same pull request. Theopenapihost test fails when the description and the web server disagree. - Local builds trust the release signing keys in
firmware/controller/keys/, so a network update refuses them. Install a local build over SWD, with picotool, or withupdate --unsignedon the console, as described in Flash layout and updates. - Never commit private keys.
Report a hardware problem or suggestion in an issue.
docs/README.md explains where each page comes from: the
user guide is written in docs/src/content/docs/, and the firmware developer
pages in firmware/*/docs/.
- Write in a plain, neutral register.
- Describe the product as it is. Do not describe planned work.
- Owner pages cover only what an owner can reach: the web page, the HTTP API, MQTT and Home Assistant, and the front-panel button. They do not mention the serial console, SWD or BOOTSEL, and they never tell an owner to reseat a blade. Developer pages can cover all of these.
- Check electrical values against the schematics in
hardware/.
By contributing, you agree that your contribution is licensed under the license of the files it changes, as listed in the README: MIT for code, CC BY 4.0 for documentation and CERN-OHL-P-2.0 for hardware.
When you add a third-party file, such as a library, state its source and license in the pull request.