diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..e6e6c03 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,15 @@ +# Code owners — drives review routing and binds the repo ruleset's +# "require code owner review" rule (which is a no-op without this file). +# +# See: https://docs.github.com/articles/about-code-owners + +# Default owner for everything +* @prat96 + +# The two files the analyze.sh gate requires to stay pristine +# (any warning in either fails CI) — keep eyes on them explicitly. +/firmware/c/src/hackagotchi_dashboard.c @prat96 +/firmware/c/src/cdc1_control.c @prat96 + +# CI / repo configuration +/.github/ @prat96 diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..e6c28e3 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,70 @@ +name: 🐞 Bug report +description: Something on the probe, dashboard, recorder, or host CLI misbehaves +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thanks for filing a report. The fastest path to a fix is the **device's own status line** — + connect to the CDC1 control port and paste the output of `{"q":"status"}` below. + (Identify the control port by behavior: it's the one that answers with `"fw":"Hackagotchi"`.) + + - type: textarea + id: status + attributes: + label: '`{"q":"status"}` output' + description: 'Paste the full JSON line returned by the CDC1 control port. The `"ver"` field tells us the exact firmware build.' + render: json + validations: + required: true + + - type: textarea + id: what-happened + attributes: + label: What happened? + description: What did you do, what did you expect, and what actually happened? + validations: + required: true + + - type: textarea + id: lastfault + attributes: + label: '`{"q":"lastfault"}` crash dump (if any)' + description: 'If the probe faulted/reset, paste the crash-box dump from `{"q":"lastfault"}`. Leave blank if not applicable.' + render: text + validations: + required: false + + - type: dropdown + id: area + attributes: + label: Affected area + description: Best guess — optional. + options: + - "Not sure" + - "DAP / SWD probe (CDC0 + debug)" + - "OLED dashboard" + - "UART black-box recorder / microSD" + - "CDC1 JSON control channel" + - "Host CLI (hackagotchi_ctl.py)" + - "Build / toolchain" + validations: + required: false + + - type: input + id: host-os + attributes: + label: Host OS + placeholder: "e.g. macOS 15.5, Ubuntu 24.04, Windows 11" + validations: + required: false + + - type: checkboxes + id: checks + attributes: + label: Before submitting + options: + - label: I'm on the latest release (or `main`) and the issue still reproduces. + required: false + - label: I searched existing issues and didn't find a duplicate. + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..3ed1dea --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,8 @@ +blank_issues_enabled: true +contact_links: + - name: 💬 Questions, flashing help & ideas + url: https://github.com/GhostRoboticsLab/Hackagotchi/discussions + about: How do I flash it? Build/bench setup? General questions and ideas go in Discussions. + - name: 🔒 Report a security vulnerability + url: https://github.com/GhostRoboticsLab/Hackagotchi/security/advisories/new + about: Privately report a vulnerability. See SECURITY.md for scope and the trust model first. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..9ea4c5c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,29 @@ +# Dependabot version updates. +# +# Scope is deliberately narrow. The only manifest-managed dependencies in this +# repo are the GitHub Actions used by CI and the host-side Python tooling. +# The C firmware's upstream (debugprobe + FatFs + pico-sdk) is git-pinned by +# setup.sh into a gitignored upstream/ tree — that is intentional and is NOT a +# Dependabot ecosystem; do not add one for it. +# +# Dependabot SECURITY updates are enabled separately in repo settings; this file +# only adds scheduled VERSION-update PRs. +version: 2 +updates: + # CI actions (actions/checkout, upload-artifact, … pinned as floating tags today) + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + commit-message: + prefix: "ci" + + # Host tooling + HIL test suites (requirements.txt: pyserial, Pillow) + - package-ecosystem: "pip" + directory: "/" + schedule: + interval: "weekly" + commit-message: + prefix: "chore" + # pyserial==3.5 is exact-pinned for USB-CDC transport stability on the bench; + # review any bump against the macOS HIL gotchas before merging. diff --git a/CITATION.cff b/CITATION.cff new file mode 100644 index 0000000..3b1ae82 --- /dev/null +++ b/CITATION.cff @@ -0,0 +1,21 @@ +cff-version: 1.2.0 +message: "If you use or reference Hackagotchi, please cite it using this metadata." +title: "Hackagotchi" +abstract: >- + A supercharged, pocket debugger for microcontrollers: firmware for a Seeed + XIAO RP2040 that runs a CMSIS-DAP SWD debug probe, a UART-to-microSD black-box + recorder, and a reactive OLED companion from one image on a single-core MCU. +type: software +authors: + - family-names: Balakrishna + given-names: Pratheek +repository-code: "https://github.com/GhostRoboticsLab/Hackagotchi" +url: "https://github.com/GhostRoboticsLab/Hackagotchi" +license: GPL-3.0-or-later +keywords: + - debug-probe + - cmsis-dap + - rp2040 + - swd + - firmware + - freertos diff --git a/README.md b/README.md index 235d79f..031ff45 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ [![Firmware CI](https://github.com/GhostRoboticsLab/Hackagotchi/actions/workflows/firmware-c.yml/badge.svg)](https://github.com/GhostRoboticsLab/Hackagotchi/actions/workflows/firmware-c.yml) [![Firmware: MIT](https://img.shields.io/badge/firmware%2Fc-MIT-blue.svg)](firmware/c/LICENSE) [![Project: GPL-3.0-or-later](https://img.shields.io/badge/project-GPL--3.0--or--later-blue.svg)](LICENSE) -[![Release](https://img.shields.io/badge/firmware-v1.0-green.svg)](https://github.com/GhostRoboticsLab/Hackagotchi/releases) +[![Release](https://img.shields.io/github/v/release/GhostRoboticsLab/Hackagotchi?color=green)](https://github.com/GhostRoboticsLab/Hackagotchi/releases)