Skip to content
Open
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
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"sessionId":"19f52d59-7d48-41cc-91fb-c81af53d251a","pid":89965,"acquiredAt":1776005010875}
16 changes: 16 additions & 0 deletions third_party/Gentleman-Programming/gentle-ai/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# Ignore Git metadata
.git
.gitignore

# Ignore editor/IDE artifacts
.idea
.vscode
*.swp
*.swo
*~

# Ignore macOS artifacts
.DS_Store

# Ignore Go build cache (rebuilt inside container)
bin/
Original file line number Diff line number Diff line change
@@ -0,0 +1,140 @@
name: Bug Report
description: File a bug report for Gentle AI
labels: ["bug", "status:needs-review"]

body:
- type: markdown
attributes:
value: |
## 📋 How this works

1. **Submit** this bug report → it gets the `status:needs-review` label automatically
2. A **maintainer reviews** it and adds `status:approved` (or closes it as invalid/duplicate)
3. **Only then** should you (or anyone) open a PR to fix it

PRs that fix issues without `status:approved` will be automatically rejected.

- type: checkboxes
id: preflight
attributes:
label: Pre-flight Checklist
options:
- label: I have searched [existing issues](https://github.com/Gentleman-Programming/gentle-ai/issues) and this is not a duplicate
required: true
- label: I understand that PRs will be rejected if the linked issue does not have `status:approved`
required: true

- type: textarea
id: description
attributes:
label: 📝 Bug Description
description: A clear and concise description of what the bug is.
placeholder: Describe the bug...
validations:
required: true

- type: textarea
id: steps
attributes:
label: 🔄 Steps to Reproduce
description: Steps to reproduce the behavior.
value: |
1.
2.
3.
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?
validations:
required: true

- type: markdown
attributes:
value: |
---
## 🖥️ Environment

- type: input
id: version
attributes:
label: Gentle AI Version
description: Run `gga version` to get this
placeholder: "e.g. v0.1.0"
validations:
required: true

- type: dropdown
id: os
attributes:
label: Operating System
options:
- macOS
- Linux (Ubuntu/Debian)
- Linux (Arch/Manjaro)
- Linux (Fedora/RHEL)
- Linux (Other)
- Windows
- Windows (WSL)
validations:
required: true

- type: dropdown
id: agent
attributes:
label: AI Agent / Client
description: Which AI agent or client are you using?
options:
- Claude Code
- OpenCode
- Gemini CLI
- Cursor
- Windsurf
- Other
validations:
required: true

- type: dropdown
id: area
attributes:
label: 📋 Affected Area
options:
- CLI (commands, flags)
- TUI (terminal UI)
- Installation Pipeline
- Agent Detection
- System Detection
- Catalog/Steps
- Documentation
- Other
validations:
required: true

- type: textarea
id: logs
attributes:
label: 💡 Logs / Error Output
description: Paste any relevant log output. This will be auto-formatted as code.
render: shell
validations:
required: false

- type: textarea
id: context
attributes:
label: Additional Context
description: Add any other context about the problem here (screenshots, config files, etc.)
validations:
required: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Questions & Discussions
url: https://github.com/Gentleman-Programming/gentle-ai/discussions
about: Use discussions for questions, not issues
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
name: Feature Request
description: Suggest a new feature or enhancement for Gentle AI
labels: ["enhancement", "status:needs-review"]

body:
- type: markdown
attributes:
value: |
## 📋 How this works

1. **Submit** this feature request → it gets the `status:needs-review` label automatically
2. A **maintainer reviews** it and adds `status:approved` (or closes it as out-of-scope/duplicate)
3. **Only then** should you (or anyone) open a PR to implement it

PRs that implement features without `status:approved` on the linked issue will be automatically rejected.

- type: checkboxes
id: preflight
attributes:
label: Pre-flight Checklist
options:
- label: I have searched [existing issues](https://github.com/Gentleman-Programming/gentle-ai/issues) and this is not a duplicate
required: true
- label: I understand that PRs will be rejected if the linked issue does not have `status:approved`
required: true

- type: dropdown
id: area
attributes:
label: 🔍 Affected Area
description: Which area of Gentle AI would this feature affect?
options:
- CLI (commands, flags)
- TUI (terminal UI)
- Installation Pipeline
- Agent Detection
- System Detection
- Catalog/Steps
- Documentation
- Other
validations:
required: true

- type: textarea
id: problem
attributes:
label: 💡 Problem Statement
description: Is your feature request related to a problem? Describe it clearly.
placeholder: |
I'm always frustrated when...
It's currently not possible to...
Every time I need to X, I have to manually...
validations:
required: true

- type: textarea
id: solution
attributes:
label: 📦 Proposed Solution
description: Describe the solution you'd like. Be as specific as possible.
placeholder: |
Example usage:
gga <command> <flags>

Expected output:
...
validations:
required: true

- type: textarea
id: alternatives
attributes:
label: 🔄 Alternatives Considered
description: Describe any alternative solutions or features you've considered.
validations:
required: false

- type: textarea
id: context
attributes:
label: 📎 Additional Context
description: Add any other context, screenshots, or examples about the feature request here.
validations:
required: false
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
<!-- ⚠️ READ BEFORE SUBMITTING
Every PR must be linked to an issue that has the "status:approved" label.
PRs without a linked approved issue will be automatically rejected by CI.
See CONTRIBUTING.md for the full contribution workflow.
-->

## 🔗 Linked Issue

Closes #

<!-- Replace the # above with the issue number, e.g.: Closes #42 -->

---

## 🏷️ PR Type

What kind of change does this PR introduce?

- [ ] `type:bug` — Bug fix (non-breaking change that fixes an issue)
- [ ] `type:feature` — New feature (non-breaking change that adds functionality)
- [ ] `type:docs` — Documentation only
- [ ] `type:refactor` — Code refactoring (no functional changes)
- [ ] `type:chore` — Build, CI, or tooling changes
- [ ] `type:breaking-change` — Breaking change (fix or feature that changes existing behavior)

---

## 📝 Summary

<!-- Provide a clear and concise description of what this PR does and why. -->

---

## 📂 Changes

| File / Area | What Changed |
|-------------|-------------|
| `path/to/file` | Brief description |

---

## 🧪 Test Plan

**Unit Tests**
```bash
go test ./...
```

**E2E Tests** (Docker required)
```bash
cd e2e && ./docker-test.sh
```

- [ ] Unit tests pass (`go test ./...`)
- [ ] E2E tests pass (`cd e2e && ./docker-test.sh`)
- [ ] Manually tested locally

<!-- Describe any additional manual testing steps if needed. -->

---

## 🤖 Automated Checks

The following checks run automatically on this PR:

| Check | Status | Description |
|-------|--------|-------------|
| Check Issue Reference | ⏳ | PR body must contain `Closes/Fixes/Resolves #N` |
| Check Issue Has `status:approved` | ⏳ | Linked issue must have been approved before work began |
| Check PR Has `type:*` Label | ⏳ | Exactly one `type:*` label must be applied |
| Unit Tests | ⏳ | `go test ./...` must pass |
| E2E Tests | ⏳ | `cd e2e && ./docker-test.sh` must pass |

---

## ✅ Contributor Checklist

- [ ] PR is linked to an issue with `status:approved`
- [ ] I have added the appropriate `type:*` label to this PR
- [ ] Unit tests pass (`go test ./...`)
- [ ] E2E tests pass (`cd e2e && ./docker-test.sh`)
- [ ] I have updated documentation if necessary
- [ ] My commits follow [Conventional Commits](https://www.conventionalcommits.org/) format
- [ ] My commits do not include `Co-Authored-By` trailers

---

## 💬 Notes for Reviewers

<!-- Optional: anything you want reviewers to pay special attention to. -->
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: CI

on:
pull_request:
push:
branches:
- main

jobs:
unit-tests:
name: Unit Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"

- name: Run unit tests
run: go test ./...

e2e-tests:
name: E2E Tests
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Set up Go
uses: actions/setup-go@v5
with:
go-version: "1.24"

- name: Run E2E tests
env:
RUN_FULL_E2E: "1"
RUN_BACKUP_TESTS: "1"
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
cd e2e
chmod +x docker-test.sh
./docker-test.sh
Loading