Skip to content

Commit 02a7e8f

Browse files
author
Nitin Kumar
committed
Add CI build workflow and community files
GitHub Actions builds every push and PR with ESP-IDF v5.5.4 for esp32c3 and uploads the firmware artifact. Add CONTRIBUTING, CODE_OF_ CONDUCT (Contributor Covenant 2.1), SECURITY (private reporting, stated threat model), and issue/PR templates.
1 parent 913eafe commit 02a7e8f

7 files changed

Lines changed: 194 additions & 0 deletions

File tree

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
---
2+
name: Bug report
3+
about: Something is broken or behaves unexpectedly
4+
labels: bug
5+
---
6+
7+
**What happened**
8+
9+
A clear description of the problem.
10+
11+
**What you expected**
12+
13+
**Setup**
14+
15+
- Board: ESP32-C3 Super Mini
16+
- Firmware version (Firmware section of the config UI, or `version.h`):
17+
- Radio and OS (e.g. FrSky X20S, EthOS 1.x):
18+
- ESP-IDF version (if you built from source):
19+
20+
**Steps to reproduce**
21+
22+
1.
23+
2.
24+
25+
**Serial log**
26+
27+
If you can, paste output from `idf.py monitor` around the failure.
28+
29+
```
30+
(log here)
31+
```
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
name: Feature request
3+
about: Suggest an improvement or new capability
4+
labels: enhancement
5+
---
6+
7+
**What problem would this solve**
8+
9+
**Proposed solution**
10+
11+
**Notes**
12+
13+
v1 is deliberately minimal (one board, one IMU, PARA BLE output). Ideas
14+
outside that scope are welcome but may be scheduled for v2.

.github/PULL_REQUEST_TEMPLATE.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
## What this changes
2+
3+
## Why
4+
5+
## Checklist
6+
7+
- [ ] `idf.py build` passes
8+
- [ ] Tested on real hardware (board + radio), or not flight-relevant
9+
- [ ] New files carry the SPDX Apache-2.0 header
10+
- [ ] README/docs updated if behavior or wiring changed

.github/workflows/build.yml

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Build the firmware on every push and PR so main always compiles.
2+
name: build
3+
4+
on:
5+
push:
6+
branches: [main]
7+
tags: ['v*']
8+
pull_request:
9+
10+
jobs:
11+
build:
12+
runs-on: ubuntu-latest
13+
steps:
14+
- uses: actions/checkout@v4
15+
16+
- name: Build with ESP-IDF
17+
uses: espressif/esp-idf-ci-action@v1
18+
with:
19+
esp_idf_version: v5.5.4
20+
target: esp32c3
21+
22+
- name: Upload firmware artifact
23+
uses: actions/upload-artifact@v4
24+
with:
25+
name: crowmotion-firmware
26+
path: build/crowmotion.bin

CODE_OF_CONDUCT.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Code of Conduct
2+
3+
## Our pledge
4+
5+
We as members, contributors, and maintainers pledge to make participation in
6+
this project a harassment-free experience for everyone, regardless of age,
7+
body size, visible or invisible disability, ethnicity, sex characteristics,
8+
gender identity and expression, level of experience, education,
9+
socio-economic status, nationality, personal appearance, race, religion, or
10+
sexual identity and orientation.
11+
12+
## Our standards
13+
14+
Examples of behavior that contributes to a positive environment:
15+
16+
- Being respectful of differing opinions, viewpoints, and experiences
17+
- Giving and gracefully accepting constructive feedback
18+
- Focusing on what is best for the community and the project
19+
- Showing empathy towards other community members
20+
21+
Examples of unacceptable behavior:
22+
23+
- Trolling, insulting or derogatory comments, and personal attacks
24+
- Public or private harassment
25+
- Publishing others' private information without explicit permission
26+
- Other conduct which could reasonably be considered inappropriate in a
27+
professional setting
28+
29+
## Enforcement
30+
31+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
32+
reported to the maintainer at **me@ni-t.in**. All complaints will be reviewed
33+
and investigated promptly and fairly. The maintainer is obligated to respect
34+
the privacy and security of the reporter of any incident.
35+
36+
Maintainers who do not follow or enforce this Code of Conduct may be
37+
permanently removed from the project.
38+
39+
## Attribution
40+
41+
This Code of Conduct is adapted from the
42+
[Contributor Covenant](https://www.contributor-covenant.org), version 2.1.

CONTRIBUTING.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Contributing to CrowMotion
2+
3+
Thanks for your interest. CrowMotion is a small, focused project: a $5
4+
wireless FPV head tracker. Contributions that keep it small, cheap, and
5+
reliable are very welcome.
6+
7+
## Getting set up
8+
9+
Build instructions (ESP-IDF v5.5.4, ESP32-C3) are in
10+
[docs/BUILD.md](docs/BUILD.md). The only supported v1 hardware is the
11+
ESP32-C3 Super Mini plus an MPU6500 module.
12+
13+
## Making changes
14+
15+
- Match the existing code style: plain C, 4-space indent, concise comments
16+
that explain why, not what.
17+
- Every source file carries an `SPDX-License-Identifier: Apache-2.0` header;
18+
keep it in new files.
19+
- Keep the firmware self-contained: no new external dependencies without a
20+
strong reason.
21+
- `idf.py build` must pass. CI builds every PR.
22+
- If a change affects flight-relevant behavior (fusion, mapping, the PARA
23+
link, taps), say in the PR whether you tested it on real hardware and
24+
against which radio.
25+
26+
## Reporting bugs
27+
28+
Open a GitHub issue using the bug template. Include your board, ESP-IDF
29+
version, radio and firmware (e.g. X20S / EthOS 1.x), and serial log output
30+
where possible.
31+
32+
## Scope notes
33+
34+
- v1 is deliberately minimal: one board, one IMU, PARA BLE trainer output.
35+
- Feature ideas beyond that (other boards, other output protocols, battery
36+
operation) are v2 territory; feel free to open a discussion first so we
37+
can align before you write code.
38+
39+
## License
40+
41+
By contributing you agree that your contributions are licensed under the
42+
Apache License 2.0, the same license as the project.

SECURITY.md

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# Security Policy
2+
3+
## Reporting a vulnerability
4+
5+
Please report security issues privately to **me@ni-t.in** rather than opening
6+
a public issue. You should get a reply within a few days. Coordinated
7+
disclosure is appreciated; a fix will be prioritized and credited unless you
8+
prefer otherwise.
9+
10+
## Scope and threat model
11+
12+
CrowMotion is a hobbyist head tracker, not a hardened product. Current stance:
13+
14+
- The config web UI and OTA endpoints are only served to clients on the
15+
device's own WiFi hotspot (WPA2, per-device SSID, password changeable in
16+
the UI). They are intentionally not reachable from the home network the
17+
device may join for update downloads.
18+
- OTA images are not cryptographically signed and secure boot is not
19+
enabled. Anyone who can join the hotspot can flash the device. Mitigations:
20+
the hotspot only runs when explicitly enabled (quad-tap, radio
21+
disconnected), and bootloader rollback restores the previous firmware if a
22+
new image fails to boot.
23+
- The BLE PARA trainer link is unencrypted and unauthenticated by protocol
24+
design (FrSky PARA); anyone in radio range could pose as a trainer source.
25+
This matches every other PARA implementation.
26+
27+
Reports about weaknesses within this stated model (e.g. bypassing the
28+
hotspot-only restriction, crashing the device with crafted HTTP/BLE input)
29+
are very much in scope.

0 commit comments

Comments
 (0)