From 653f25b70b20bb22036e4eaf1411a981d8a7f6d3 Mon Sep 17 00:00:00 2001 From: HueByte Date: Thu, 19 Feb 2026 09:52:57 +0100 Subject: [PATCH] feat: Add issue templates for bug reports and feature requests, and update PR template --- .github/ISSUE_TEMPLATE/bug_report.yml | 79 ++++++++++++++++++++++ .github/ISSUE_TEMPLATE/config.yml | 5 ++ .github/ISSUE_TEMPLATE/feature_request.yml | 51 ++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 28 ++++++++ .github/workflows/ci-release.yml | 12 +--- .github/workflows/pr-check.yml | 12 +--- 6 files changed, 167 insertions(+), 20 deletions(-) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/config.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..a847452 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,79 @@ +name: Bug report +description: Report a reproducible bug +title: "bug: " +labels: [bug] +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report a bug. + + If this is a security issue (auth bypass, token leak, file upload exploit, etc.), please follow SECURITY.md instead of filing a public issue. + + - type: dropdown + id: component + attributes: + label: Affected component + options: + - Client (EchoHub.Client) + - Server (EchoHub.Server) + - Core/shared (EchoHub.Core) + - Docs + - CI + validations: + required: true + + - type: textarea + id: description + attributes: + label: What happened? + description: Describe the bug and what you expected to happen. + placeholder: "When I..., I expected..., but ..." + validations: + required: true + + - type: textarea + id: repro + attributes: + label: Steps to reproduce + description: Include minimal, numbered steps. + placeholder: | + 1. ... + 2. ... + 3. ... + validations: + required: true + + - type: textarea + id: logs + attributes: + label: Logs / stack traces + description: Paste relevant logs (redact tokens/secrets). + render: text + + - type: input + id: version + attributes: + label: Version + description: App version, commit SHA, or release tag. + placeholder: v0.1.0 + + - type: textarea + id: environment + attributes: + label: Environment + description: OS, terminal, .NET SDK version. + placeholder: | + OS: Windows 11 + Terminal: Windows Terminal + .NET SDK: 10.0.x + + - type: checkboxes + id: confirmations + attributes: + label: Confirmations + options: + - label: I searched existing issues and this is not a duplicate + required: true + - label: I removed sensitive info (tokens/keys) from logs + required: true diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..6037323 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Security policy + url: https://github.com/HueByte/EchoHub/security/policy + about: Please report security vulnerabilities here (or see SECURITY.md). diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..38d51b4 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,51 @@ +name: Feature request +description: Suggest an idea or improvement +title: "feat: " +labels: [enhancement] +body: + - type: markdown + attributes: + value: | + Thanks for suggesting an improvement. + + EchoHub tries to stay lightweight: terminal-first, self-hosted, and no upsells. + + - type: dropdown + id: area + attributes: + label: Area + options: + - Client (TUI) + - Server (API/SignalR) + - Auth/security + - Files/uploads + - Docs + - Build/CI + validations: + required: true + + - type: textarea + id: problem + attributes: + label: What problem are you trying to solve? + placeholder: "It’s hard to..., because ..." + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposed solution + placeholder: "Add/Change ..., so that ..." + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Any other approaches you’ve thought about. + + - type: textarea + id: extra + attributes: + label: Additional context + description: Mockups, examples, links, etc. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..9df8eac --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,28 @@ +# Summary + + + +## Changes + +- Describe the changes here + +## Screenshots / recordings (optional) + + + +## How to test + +- [ ] `dotnet build src/EchoHub.slnx` +- [ ] `dotnet test src/EchoHub.slnx` + +## Checklist + +- [ ] I ran tests locally (or explained why not) +- [ ] I kept changes focused and easy to review +- [ ] I updated docs where needed (README/docs) +- [ ] I verified no secrets/keys are committed +- [ ] If this touches files/uploads/auth, I considered security implications + +## Related issues + +- Closes # diff --git a/.github/workflows/ci-release.yml b/.github/workflows/ci-release.yml index 8c9ae00..d205b29 100644 --- a/.github/workflows/ci-release.yml +++ b/.github/workflows/ci-release.yml @@ -14,16 +14,8 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Run markdownlint-cli2 - uses: DavidAnson/markdownlint-cli2-action@v19 - with: - globs: | - **/*.md - !.dev/** - !docs/api/** - !**/node_modules/** - !**/bin/** - !**/obj/** + - name: Run markdownlint + run: bash scripts/lint-markdown.sh detect-changes: name: Detect Changes diff --git a/.github/workflows/pr-check.yml b/.github/workflows/pr-check.yml index c1a4b93..33b6b4b 100644 --- a/.github/workflows/pr-check.yml +++ b/.github/workflows/pr-check.yml @@ -11,16 +11,8 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Run markdownlint-cli2 - uses: DavidAnson/markdownlint-cli2-action@v19 - with: - globs: | - **/*.md - !.dev/** - !docs/api/** - !**/node_modules/** - !**/bin/** - !**/obj/** + - name: Run markdownlint + run: bash scripts/lint-markdown.sh test: name: Build & Test