diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..1243f58 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,225 @@ +name: Bug report +description: Report reproducible incorrect behavior in a csi-rs project +title: "[Bug]: " +labels: + - bug + +body: + - type: markdown + attributes: + value: | + Thanks for reporting a bug. + + Please provide the smallest practical reproduction and enough environment + information for someone else to reproduce the problem. + + Do not publicly report security vulnerabilities here. Follow the + organization security policy instead. + + - type: checkboxes + id: preliminary-checks + attributes: + label: Before submitting + options: + - label: I searched the existing issues for the same problem. + required: true + - label: This report does not disclose a security vulnerability. + required: true + + - type: textarea + id: description + attributes: + label: Description + description: Clearly describe the incorrect behavior. + placeholder: What went wrong? + validations: + required: true + + - type: textarea + id: reproduction + attributes: + label: Reproduction + description: | + Provide the smallest program, configuration, input, and sequence of + commands that reproduces the problem. Link to a minimal repository when + multiple files are required. + placeholder: | + 1. Build with ... + 2. Flash or run ... + 3. Send or collect ... + 4. Observe ... + validations: + required: true + + - type: textarea + id: expected-behavior + attributes: + label: Expected behavior + description: What did you expect to happen? + validations: + required: true + + - type: textarea + id: actual-behavior + attributes: + label: Actual behavior + description: What happened instead? + validations: + required: true + + - type: input + id: version + attributes: + label: Version or commit + description: Provide the affected release, crate version, or commit SHA. + placeholder: v0.3.0, esp-csi-rs 0.3.0, or commit 0123abcd + validations: + required: true + + - type: input + id: rust-version + attributes: + label: Rust toolchain + description: Paste the output of `rustc --version --verbose` when possible. + placeholder: rustc 1.xx.x or esp toolchain version + validations: + required: true + + - type: input + id: operating-system + attributes: + label: Host operating system + placeholder: Fedora 44, Ubuntu 24.04, macOS 15, Windows 11, etc. + validations: + required: true + + - type: textarea + id: embedded-environment + attributes: + label: ESP hardware and embedded environment + description: Complete this section when the issue involves an ESP device. + placeholder: | + Chip: ESP32-C6 + Board: ESP32-C6-DevKitC-1 + Rust target: riscv32imac-unknown-none-elf + Framework/HAL: esp-hal ... + Enabled Cargo features: ... + Flashing tool: espflash ... + Wi-Fi mode and relevant configuration: ... + + - type: textarea + id: logs + attributes: + label: Logs and diagnostic output + description: | + Include relevant compiler output, panic messages, backtraces, serial + output, server logs, or packet/data details. Remove credentials and + sensitive information before submitting. + placeholder: Paste logs here or attach a log file. + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: | + Add anything else that may help, such as screenshots, traces, hardware + wiring, related issues, or whether the problem is a regression. +``` + +### `.github/ISSUE_TEMPLATE/feature_request.yml` + +```yaml +name: Feature request +description: Propose an improvement or new capability for a csi-rs project +title: "[Feature]: " +labels: + - enhancement + +body: + - type: markdown + attributes: + value: | + Thanks for proposing an improvement. + + Describe the underlying problem before describing a particular + implementation. This helps us consider alternative solutions and the + effect on the wider csi-rs ecosystem. + + - type: checkboxes + id: preliminary-checks + attributes: + label: Before submitting + options: + - label: I searched the existing issues and discussions for a similar proposal. + required: true + + - type: textarea + id: problem + attributes: + label: Problem + description: What limitation, use case, or developer problem should be addressed? + placeholder: Explain who encounters the problem and under what circumstances. + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposed change + description: Describe the behavior, API, protocol, or capability you are proposing. + validations: + required: true + + - type: dropdown + id: affected-areas + attributes: + label: Affected areas + description: Select every part of the ecosystem that may be affected. + multiple: true + options: + - Embedded library or driver + - ESP firmware or CLI + - Host-side library or application + - Device-to-host protocol + - CSI data format or storage + - Public Rust API + - Documentation or examples + - Build, CI, or development tooling + - Other + validations: + required: true + + - type: textarea + id: compatibility + attributes: + label: Compatibility impact + description: | + Describe any effect on existing APIs, firmware, clients, servers, + serialized data, supported chips, feature flags, or stored datasets. + placeholder: State "No expected compatibility impact" when appropriate. + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Describe other approaches, workarounds, or designs you considered. + + - type: dropdown + id: implementation + attributes: + label: Implementation interest + description: Would you be interested in implementing this change? + options: + - Yes, I can submit a pull request + - Yes, with design or implementation guidance + - No, I am only proposing the feature + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: | + Add relevant examples, research, protocol diagrams, API sketches, + hardware constraints, or links to related work. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..a27711d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,6 @@ +blank_issues_enabled: true + +contact_links: + - name: Security vulnerability + url: https://github.com/csi-rs/.github/security/policy + about: Read the private vulnerability reporting instructions. \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..50e5afa --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,94 @@ +name: Feature request +description: Propose an improvement or new capability for a csi-rs project +title: "[Feature]: " +labels: + - enhancement + +body: + - type: markdown + attributes: + value: | + Thanks for proposing an improvement. + + Describe the underlying problem before describing a particular + implementation. This helps us consider alternative solutions and the + effect on the wider csi-rs ecosystem. + + - type: checkboxes + id: preliminary-checks + attributes: + label: Before submitting + options: + - label: I searched the existing issues and discussions for a similar proposal. + required: true + + - type: textarea + id: problem + attributes: + label: Problem + description: What limitation, use case, or developer problem should be addressed? + placeholder: Explain who encounters the problem and under what circumstances. + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposed change + description: Describe the behavior, API, protocol, or capability you are proposing. + validations: + required: true + + - type: dropdown + id: affected-areas + attributes: + label: Affected areas + description: Select every part of the ecosystem that may be affected. + multiple: true + options: + - Embedded library or driver + - ESP firmware or CLI + - Host-side library or application + - Device-to-host protocol + - CSI data format or storage + - Public Rust API + - Documentation or examples + - Build, CI, or development tooling + - Other + validations: + required: true + + - type: textarea + id: compatibility + attributes: + label: Compatibility impact + description: | + Describe any effect on existing APIs, firmware, clients, servers, + serialized data, supported chips, feature flags, or stored datasets. + placeholder: State "No expected compatibility impact" when appropriate. + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Describe other approaches, workarounds, or designs you considered. + + - type: dropdown + id: implementation + attributes: + label: Implementation interest + description: Would you be interested in implementing this change? + options: + - Yes, I can submit a pull request + - Yes, with design or implementation guidance + - No, I am only proposing the feature + + - type: textarea + id: additional-context + attributes: + label: Additional context + description: | + Add relevant examples, research, protocol diagrams, API sketches, + hardware constraints, or links to related work. \ No newline at end of file diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..58b86bd --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,61 @@ +## Summary + +Describe what changed. + +## Motivation + +Explain the problem this change solves and why this approach was chosen. + +## Related issues + + + +## Compatibility impact + +Describe any effect on: + +- Public Rust APIs +- Supported ESP chips or boards +- Cargo features +- Device-to-host protocols +- Serialized CSI or configuration formats +- Firmware, server, or client compatibility + +Write "None" when there is no compatibility impact. + +## Testing + +List the exact commands, targets, features, and configurations used to verify +the change. + +```sh +# Examples — replace these with the commands you actually ran: +# cargo fmt --all -- --check +# cargo check --workspace +# cargo test --workspace +# cargo clippy --workspace --all-targets --all-features -- -D warnings +```` + +## Hardware validation + +For embedded or device-dependent changes, include: + +- ESP chip and board +- Rust target +- Enabled Cargo features +- Flashing method +- Test setup +- Observed result + +Write "Not applicable" when no hardware validation is required. + +## Checklist + +- [ ] The change is focused and contains no unrelated edits. +- [ ] `cargo fmt --all -- --check` passes. +- [ ] Relevant build, Clippy, and test commands pass for the affected targets and features. +- [ ] New behavior is covered by tests or a focused reproducer where practical. +- [ ] Relevant ESP hardware was tested, or hardware testing is not applicable. +- [ ] Public API, protocol, or data-format changes are documented, or this is not applicable. +- [ ] User-facing and contributor documentation was updated where necessary. +- [ ] Logs, examples, and fixtures contain no credentials or sensitive information.