Skip to content

Feature: Implement structured GitHub Issue Templates for multi-platform support #54

@sfloess

Description

@sfloess

Overview

Implement structured GitHub Issue Templates to support JNexus's seven distinct user interfaces (Android, iOS, macOS, Swing, AWT, Terminal UI, CLI) with enforced validation and platform categorization.

1. Bug Report Template (YAML Form)

File: .github/ISSUE_TEMPLATE/bug_report.yml

name: Bug Report
description: Report a bug to help JNexus improve.
title: "[BUG]: <title>"
labels: ["bug"]
body:
  - type: markdown
    attributes:
      value: |
        > [!IMPORTANT]
        > **SECURITY WARNING:** If you have discovered a security vulnerability, please **DO NOT** report it publicly. Report it via email to: **sfloess@redhat.com**.
  - type: dropdown
    id: interface
    attributes:
      label: Target Interface
      description: Which JNexus interface is affected?
      options:
        - "Mobile: Android"
        - "Mobile: iOS"
        - "Desktop Native: macOS"
        - "Java GUI: Swing"
        - "Java GUI: AWT"
        - "Java GUI: Terminal UI (TUI)"
        - "Automation: CLI"
    validations:
      required: true
  - type: input
    id: version
    attributes:
      label: JNexus Version
      description: Enter the version in X.Y.Z format (e.g., 2.0.0).
      placeholder: "2.0.0"
    validations:
      required: true
  - type: textarea
    id: behavior
    attributes:
      label: Description
      description: Describe the Expected vs. Actual behavior.
      placeholder: |
        Expected: [What you expected to happen]
        Actual: [What actually happened]
    validations:
      required: true
  - type: textarea
    id: reproduction
    attributes:
      label: Steps to Reproduce
      description: List the sequence of events to trigger the bug.
      placeholder: |
        1. Open JNexus
        2. Navigate to...
        3. Execute...
    validations:
      required: true
  - type: dropdown
    id: dry_run
    attributes:
      label: Dry-Run Verification
      description: If this involves component deletion, did you run with --dry-run (or -n)?
      options:
        - "Yes: Results matched actual execution"
        - "Yes: Results differed from actual execution"
        - "No: Did not use dry-run"
        - "N/A: Issue does not involve deletion"
  - type: textarea
    id: logs
    attributes:
      label: Logs and Context
      description: Provide verbose output or error traces. For CLI issues, use the `--verbose` flag.
      render: shell

2. Feature Request Template (YAML Form)

File: .github/ISSUE_TEMPLATE/feature_request.yml

name: Feature Request
description: Propose a new idea for JNexus.
title: "[FEATURE]: <title>"
labels: ["enhancement"]
body:
  - type: textarea
    id: problem
    attributes:
      label: Problem Statement
      description: What limitation or problem does this feature solve?
    validations:
      required: true
  - type: textarea
    id: solution
    attributes:
      label: Proposed Solution
      description: Detailed description of the requested functionality.
    validations:
      required: true
  - type: checkboxes
    id: target_interfaces
    attributes:
      label: Target Interfaces
      description: Which interfaces should this feature be implemented in? (Select all that apply)
      options:
        - label: "Mobile (Android, iOS)"
        - label: "Desktop Native (macOS)"
        - label: "Java GUIs (Swing, AWT)"
        - label: "CLI / Terminal UI"
  - type: textarea
    id: alternatives
    attributes:
      label: Alternatives Considered
      description: Describe any workarounds you are currently using.

3. Documentation Update Template (Markdown)

File: .github/ISSUE_TEMPLATE/documentation_update.md

---
name: Documentation Update
about: Propose improvements to JNexus documentation or automation scripts.
title: '[DOCS]: '
labels: documentation
---

### Affected Component
Select the documentation or script requiring attention:
- [ ] README.md
- [ ] CI-CD.md
- [ ] SECURITY.md
- [ ] RUNNING.md
- [ ] VERSIONING.md
- [ ] CONTRIBUTING.md
- [ ] TEST_COVERAGE.md
- [ ] COMPARISON.md
- [ ] CLAUDE.md
- [ ] CODE_OF_CONDUCT.md
- [ ] CHANGELOG.md
- [ ] Automation: ci/rev-version.sh
- [ ] Other: 

### Issue Description
Describe the current issue (e.g., outdated CLI flag, typo, lack of clarity in setup).

### Suggested Correction
Provide the corrected text or the logic change required.

4. Template Configuration

File: .github/ISSUE_TEMPLATE/config.yml

blank_issues_enabled: false
contact_links:
  - name: Security Vulnerability
    url: mailto:sfloess@redhat.com
    about: Report security issues privately via email

Implementation Checklist

  • Create .github/ISSUE_TEMPLATE/ directory if it doesn't exist
  • Add bug_report.yml with version validation for X.Y.Z format (semver)
  • Add feature_request.yml with multi-platform checkboxes
  • Add documentation_update.md with comprehensive file list
  • Add config.yml to disable blank issues and add security contact
  • Verify labels exist in repository:
    • bug (red/orange color)
    • enhancement (blue/green color)
    • documentation (gray/blue color)
  • Update SECURITY.md to confirm sfloess@redhat.com as security contact
  • Test templates by creating test issues (one per template type)
  • Update CONTRIBUTING.md to reference new issue templates

Notes

Version Format Change: Original spec called for X.Y format with regex ^[0-9]+\\.[0-9]+$, but project now uses semantic versioning (X.Y.Z). Updated to match current version 2.0.0.

Platform Coverage: Templates cover all 7 JNexus interfaces:

  1. Android mobile
  2. iOS mobile
  3. macOS native
  4. Swing GUI
  5. AWT GUI
  6. Terminal UI
  7. CLI

Validation Benefits:

  • Enforces structured bug reports with platform identification
  • Prevents invalid version numbers
  • Requires reproduction steps
  • Highlights dry-run safety for delete operations
  • Disables blank issues to maintain data quality

Testing

After implementation, verify:

  1. Navigate to repository Issues → New Issue
  2. Confirm template chooser appears (no blank issue option)
  3. Test each template:
    • Bug Report: Try invalid version format (should block)
    • Feature Request: Verify multi-select checkboxes work
    • Documentation: Confirm markdown rendering
  4. Verify security warning displays prominently in Bug Report

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions