diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 000000000..dec4867cc --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,127 @@ +name: Bug Report +description: Report a reproducible MeshCore bug +title: "[BUG] " +labels: ["bug", "needs-triage"] +body: + - type: markdown + attributes: + value: | + ## Before submitting + + Please search existing issues first: + https://github.com/meshcore-dev/MeshCore/issues + + If your issue matches an existing one, please comment on the existing issue instead of creating a duplicate. + + This repository is for MeshCore Community Firmware and Client App and Ripple Firmware. + + - type: checkboxes + id: precheck + attributes: + label: Pre-flight checklist + options: + - label: I have searched existing issues and this is not a duplicate + required: true + - label: I understand this repository is for MeshCore Community Firmware and Client App and Ripple Firmware + required: true + + - type: dropdown + id: bug_type + attributes: + label: Bug Type + description: Which part of MeshCore is affected? + options: + - Firmware - Community + - Firmware - Ripple + - Client - MeshCore App + - UI - TDeck / Ripple GUI + - CLI / Tooling + - Documentation + - Unsure + validations: + required: true + + - type: dropdown + id: platform + attributes: + label: Platform + description: MCU family, not board model. + options: + - Not platform specific + - ESP32 + - nRF52 + - Unsure + validations: + required: true + + - type: input + id: version + attributes: + label: MeshCore Version + placeholder: "e.g. v1.14, release name, or commit hash" + validations: + required: true + + - type: input + id: radio_settings + attributes: + label: Radio Settings + description: Frequency plan, bandwidth, spreading factor, coding rate, and region if relevant. + placeholder: "e.g. AU915 / 62.5kHz / SF9 / CR4/5" + + - type: textarea + id: summary + attributes: + label: Summary + description: Briefly describe the problem. + placeholder: "e.g. Repeater appears as Unknown in hop path" + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected Behaviour + description: What should have happened? + validations: + required: true + + - type: textarea + id: actual + attributes: + label: Actual Behaviour + description: What actually happened? + validations: + required: true + + - type: textarea + id: reproduce + attributes: + label: Steps to Reproduce + description: Provide the clearest reproduction steps possible. + placeholder: | + 1. Flash firmware version ... + 2. Configure radio as ... + 3. Send message via ... + 4. Observe ... + validations: + required: true + + - type: textarea + id: logs + attributes: + label: Logs / Serial Output / Screenshots + description: Paste logs or attach screenshots where possible. + render: shell + + - type: textarea + id: topology + attributes: + label: Network / Topology Context + description: Number of nodes, repeaters, hops, client used, and any relevant setup details. + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Anything else that may help triage the issue. diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..0ffc77784 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: false +contact_links: + - name: MeshCore Discussions + url: https://github.com/meshcore-dev/MeshCore/discussions + about: Ask questions, request help, or discuss ideas before opening an issue. diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 000000000..07c613a64 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,85 @@ +name: Feature Request +description: Suggest a MeshCore improvement or new capability +title: "[FEATURE] " +labels: ["enhancement", "needs-triage"] +body: + - type: markdown + attributes: + value: | + ## Before submitting + + Please search existing issues first: + https://github.com/meshcore-dev/MeshCore/issues + + If a similar feature request already exists, please comment on the existing issue instead of creating a duplicate. + + This repository is for MeshCore Community Firmware and Client App and Ripple Firmware + + - type: checkboxes + id: precheck + attributes: + label: Pre-flight checklist + options: + - label: I have searched existing issues and feature requests + required: true + - label: I understand this repository is for MeshCore Community Firmware and Client App and Ripple Firmware + required: true + + - type: dropdown + id: feature_type + attributes: + label: Feature Type + description: Which part of MeshCore would this feature affect? + options: + - Firmware - Community + - Firmware - Ripple + - Client - MeshCore App + - UI - TDeck / Ripple GUI + - CLI / Tooling + - New Hardware Support + - Protocol / Routing + - Documentation + - Unsure + validations: + required: true + + - type: dropdown + id: platform + attributes: + label: Target Platform + description: MCU family, if relevant. + options: + - Not platform specific + - ESP32 + - nRF52 + - Unsure + validations: + required: true + + - type: textarea + id: problem + attributes: + label: Problem / Use Case + description: What problem does this feature solve? + validations: + required: true + + - type: textarea + id: proposed_solution + attributes: + label: Proposed Solution + description: Describe the behaviour or change you would like. + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives Considered + description: Any other approaches or workarounds? + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Links, diagrams, examples, screenshots, or related issues. diff --git a/.github/workflows/auto-label-issues.yml b/.github/workflows/auto-label-issues.yml new file mode 100644 index 000000000..281ef1ea7 --- /dev/null +++ b/.github/workflows/auto-label-issues.yml @@ -0,0 +1,84 @@ +name: Auto Label Issues + +on: + issues: + types: + - opened + - edited + +permissions: + issues: write + contents: read + +jobs: + auto-label: + runs-on: ubuntu-latest + + steps: + - name: Apply labels from issue form selections + uses: actions/github-script@v7 + with: + script: | + const issue = context.payload.issue; + const body = issue.body || ""; + + const labels = new Set(); + + labels.add("needs-triage"); + + // Area / component labels + if (body.includes("Firmware - Community")) { + labels.add("area:firmware"); + labels.add("firmware:community"); + } + + if (body.includes("Firmware - Ripple")) { + labels.add("area:firmware"); + labels.add("firmware:ripple"); + } + + if (body.includes("Client - MeshCore App")) { + labels.add("area:client"); + } + + if (body.includes("UI - TDeck / Ripple GUI")) { + labels.add("area:ui"); + } + + if (body.includes("CLI / Tooling")) { + labels.add("area:tooling"); + } + + if (body.includes("New Hardware Support")) { + labels.add("area:hardware"); + } + + if (body.includes("Protocol / Routing")) { + labels.add("area:protocol"); + labels.add("area:routing"); + } + + if (body.includes("Documentation")) { + labels.add("area:documentation"); + } + + if (body.includes("Unsure")) { + labels.add("needs-review"); + } + + // Platform labels + if (body.includes("ESP32")) { + labels.add("platform:esp32"); + } + + if (body.includes("nRF52")) { + labels.add("platform:nrf52"); + } + + // Apply labels + await github.rest.issues.addLabels({ + owner: context.repo.owner, + repo: context.repo.repo, + issue_number: issue.number, + labels: Array.from(labels) + });