Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 116 additions & 0 deletions .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
name: "🐛 Bug Report"
description: Report a reproducible bug or unexpected behavior in Heimdall.
title: "[BUG] <short description>"
labels: ["bug", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for taking the time to file a bug report. Please fill out all required fields so we can reproduce and fix the issue quickly.

- type: dropdown
id: component
attributes:
label: Affected Component
description: Which part of Heimdall is affected?
options:
- Dashboard (Request List)
- Request Inspector
- Collections / Blueprints
- Authentication (LDAP/SSO)
- API Routes (backend)
- Database / Prisma
- Docker / Deployment
- Other
validations:
required: true

- type: textarea
id: description
attributes:
label: Bug Description
description: A clear and concise description of what the bug is.
placeholder: "When I click 'Execute' on an approved request, the response is not displayed in the Inspector."
validations:
required: true

- type: textarea
id: reproduction
attributes:
label: Steps to Reproduce
description: Exact steps to reproduce the behavior.
placeholder: |
1. Log in as a REQUESTER
2. Create a new request to https://example.com
3. Log in as an APPROVER and approve the request
4. Log back in as REQUESTER and click "Execute"
5. Open the Inspector — response tab is blank
validations:
required: true

- type: textarea
id: expected
attributes:
label: Expected Behavior
description: What did you expect to happen?
validations:
required: true

- type: textarea
id: actual
attributes:
label: Actual Behavior
description: What actually happened? Include any error messages or screenshots.
validations:
required: true

- type: dropdown
id: auth-mode
attributes:
label: Authentication Mode
options:
- LDAP (with MOCK_LDAP=true)
- LDAP (real server)
- SSO (OIDC)
- Not applicable
validations:
required: true

- type: dropdown
id: database
attributes:
label: Database Backend
options:
- SQLite (default)
- MySQL
- PostgreSQL
validations:
required: true

- type: input
id: node-version
attributes:
label: Node.js Version
placeholder: "e.g. 20.11.0"
validations:
required: true

- type: textarea
id: logs
attributes:
label: Relevant Logs
description: Paste any relevant browser console errors, server logs (structured JSON output), or network errors.
render: shell

- type: checkboxes
id: checklist
attributes:
label: Pre-submission Checklist
options:
- label: I have searched existing issues and this is not a duplicate.
required: true
- label: I have tested this on the latest `main` branch.
required: true
- label: I have included all reproduction steps.
required: true
8 changes: 8 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
blank_issues_enabled: false
contact_links:
- name: 💬 General Discussion
url: https://github.com/LERUfic/Heimdall/discussions
about: For questions, ideas, and general conversation about Heimdall.
- name: 📖 Documentation
url: https://github.com/LERUfic/Heimdall/blob/main/README.md
about: Read the README before filing an issue — your answer may already be there.
93 changes: 93 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
name: "✨ Feature Request"
description: Propose a new feature or enhancement to Heimdall.
title: "[FEAT] <short description>"
labels: ["enhancement", "needs-triage"]
assignees: []
body:
- type: markdown
attributes:
value: |
Thank you for suggesting an improvement to Heimdall. Please be as specific as possible so we can evaluate and prioritize your request.

- type: dropdown
id: component
attributes:
label: Target Component
description: Which area of Heimdall would this feature affect?
options:
- Dashboard (Request List)
- Request Inspector (Detail Panel)
- Collections / Blueprints
- Authentication (LDAP/SSO)
- API Routes (backend)
- Audit Logging
- Database / Prisma Schema
- Docker / Deployment
- Developer Tooling (tests, CI)
- New Feature / Standalone
validations:
required: true

- type: textarea
id: problem
attributes:
label: Problem Statement
description: |
What problem does this feature solve? Describe the current limitation or pain point.
placeholder: "Currently, there is no way to add comments or notes to a request. As an APPROVER, I want to leave feedback when rejecting a request so that the REQUESTER understands why it was denied."
validations:
required: true

- type: textarea
id: solution
attributes:
label: Proposed Solution
description: Describe the feature or change you'd like to see.
placeholder: |
Add a "Rejection Reason" text field to the approval/rejection flow.
The reason should be:
- Stored in the database (new `rejectionReason` column on `HttpRequest`)
- Displayed in the Request Inspector under a new "Feedback" tab
- Included in the structured audit log output
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
description: Have you considered any alternative approaches?
placeholder: "Alternatively, we could use the existing `response` field to store rejection notes, but that would pollute execution data."

- type: dropdown
id: priority
attributes:
label: Priority (your estimate)
options:
- Low — Nice to have
- Medium — Meaningfully improves UX or security
- High — Blocking significant use cases
validations:
required: true

- type: textarea
id: acceptance
attributes:
label: Acceptance Criteria
description: How would we know this feature is complete? List measurable outcomes.
placeholder: |
- [ ] APPROVER can type a reason when rejecting a request
- [ ] Reason is persisted to the database
- [ ] REQUESTER sees the reason in the Inspector's "Feedback" tab
- [ ] Reason is included in the structured JSON audit log
- [ ] Unit tests cover the new API endpoint

- type: checkboxes
id: checklist
attributes:
label: Pre-submission Checklist
options:
- label: I have searched existing issues and this is not a duplicate.
required: true
- label: This feature aligns with Heimdall's role as a security governance layer.
required: true
78 changes: 78 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
## Summary

<!-- A concise description of what this PR does. -->

## Motivation

<!-- Why is this change needed? Link the related issue. -->

Closes #<!-- issue number -->

## Type of Change

<!-- Mark the relevant option with an [x]. -->

- [ ] 🐛 Bug fix (non-breaking change that fixes an issue)
- [ ] ✨ New feature (non-breaking change that adds functionality)
- [ ] 💥 Breaking change (fix or feature that would cause existing functionality to change unexpectedly)
- [ ] ♻️ Refactor (no behavior change, code restructuring)
- [ ] 🧪 Test coverage improvement
- [ ] 📖 Documentation update
- [ ] 🔧 Chore / tooling

---

## Changes Made

<!-- List the specific files and changes at a high level. -->

**Backend / API:**
-

**Frontend / UI:**
-

**Tests:**
-

**Other:**
-

---

## Testing

### Automated Checks

- [ ] `npm run lint` passes with **0 errors**
- [ ] `npm run test:coverage` passes — **all tests passing**
- [ ] Coverage has **not decreased** from baseline (≥90% statements, ≥80% branches)

### Manual Verification

<!-- Describe manual steps you took to verify the changes work as expected. -->

1.
2.

### Screenshots (if UI changes)

<!-- Attach before/after screenshots for any visual changes. -->

---

## Checklist

- [ ] My branch name follows the project convention (e.g., `feat/`, `fix/`, `test/`)
- [ ] My commits follow the **Conventional Commits** format (`feat:`, `fix:`, etc.)
- [ ] I have added/updated tests for any new or changed behavior
- [ ] I have added/updated documentation where applicable
- [ ] I have not introduced any `as any` type assertions (use `as unknown as T`)
- [ ] I have not committed `.env` or secrets
- [ ] I have linked the relevant issue in the "Closes #" section above

---

## Notes for Reviewers

<!-- Anything specific you'd like the reviewer to pay attention to? -->
Loading
Loading