diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..8116780 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,23 @@ +# CODEOWNERS +# +# Team slugs are case-insensitive on GitHub but typically use lowercase/hyphens. +# If any team name here doesn't match your actual @TheCodeVerseHub/, +# update the slug accordingly. +# +# Per request: ignoring teams Miku/Web Dev. + +# Default owners for everything +* @TheCodeVerseHub/eigen-maintainers @TheCodeVerseHub/security + +# Documentation +/docs/ @TheCodeVerseHub/documentation + +# Bot feature code +/cogs/ @TheCodeVerseHub/eigen-contributors + +# Repo/admin metadata +/.github/ @TheCodeVerseHub/eigen-maintainers + +# General ownership (optional extra teams) +# / @TheCodeVerseHub/eigen +# / @TheCodeVerseHub/external-contributors diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..b03e5c5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,78 @@ +name: Bug report +description: Report something that isn't working +title: "[Bug]: " +body: + - type: markdown + attributes: + value: | + Thanks for taking the time to report a bug. + + - type: textarea + id: what-happened + attributes: + label: What happened? + description: A clear and concise description of the bug. + placeholder: Tell us what you saw. + validations: + required: true + + - type: textarea + id: steps + attributes: + label: Steps to reproduce + description: How can we reproduce the problem? + placeholder: | + 1. Go to ... + 2. Run ... + 3. See error ... + 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: textarea + id: logs + attributes: + label: Logs / screenshots + description: Paste any relevant logs or screenshots. + render: shell + validations: + required: false + + - type: textarea + id: environment + attributes: + label: Environment + description: Relevant versions and deployment details. + placeholder: | + - OS: + - Python: + - discord.py: + - Bot version/commit: + - Hosting (Docker/VM/etc): + validations: + required: false + + - type: checkboxes + id: checks + attributes: + label: Checklist + options: + - label: I searched existing issues before opening this. + required: true + - label: I can reproduce this issue consistently. + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..cf561c8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Security issue + url: https://github.com/TheCodeVerseHub/Eigen-Bot/security/advisories/new + about: Please report security vulnerabilities privately. diff --git a/.github/ISSUE_TEMPLATE/enhancement.yml b/.github/ISSUE_TEMPLATE/enhancement.yml new file mode 100644 index 0000000..fd7d393 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/enhancement.yml @@ -0,0 +1,48 @@ +name: Enhancement +description: Improve an existing feature or behavior +title: "[Enhancement]: " +body: + - type: markdown + attributes: + value: | + Use this for improvements to existing functionality (not brand-new features). + + - type: textarea + id: current + attributes: + label: Current behavior + description: What does Eigen-Bot do today? + validations: + required: true + + - type: textarea + id: improvement + attributes: + label: Desired improvement + description: What should change? + validations: + required: true + + - type: textarea + id: impact + attributes: + label: Impact + description: Why is this improvement valuable? Who benefits? + validations: + required: false + + - type: textarea + id: context + attributes: + label: Additional context + description: Links, screenshots, or related issues/PRs. + validations: + required: false + + - type: checkboxes + id: checks + attributes: + label: Checklist + options: + - label: I searched existing issues before opening this. + required: true diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..1434865 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,49 @@ +name: Feature request +description: Suggest a new feature or capability +title: "[Feature]: " +body: + - type: markdown + attributes: + value: | + Thanks for proposing a feature. + + - type: textarea + id: problem + attributes: + label: Problem / use case + description: What problem are you trying to solve? + placeholder: As a ..., I want ..., so that ... + validations: + required: true + + - type: textarea + id: proposal + attributes: + label: Proposed solution + description: What would you like to happen? + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives considered + description: Other approaches you considered. + validations: + required: false + + - type: textarea + id: context + attributes: + label: Additional context + description: Links, screenshots, or related issues/PRs. + validations: + required: false + + - type: checkboxes + id: checks + attributes: + label: Checklist + options: + - label: I searched existing issues before opening this. + required: true diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 0000000..f11b78f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1,41 @@ +name: Question +description: Ask a question about setup, usage, or behavior +title: "[Question]: " +body: + - type: markdown + attributes: + value: | + Have a question? Ask here. + + - type: textarea + id: question + attributes: + label: Your question + description: What would you like to know? + validations: + required: true + + - type: textarea + id: context + attributes: + label: Context + description: What are you trying to do, and what have you tried? + validations: + required: false + + - type: textarea + id: logs + attributes: + label: Logs / screenshots (optional) + description: Paste any relevant output. + render: shell + validations: + required: false + + - type: checkboxes + id: checks + attributes: + label: Checklist + options: + - label: I searched existing issues before opening this. + required: true diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ecf1f42..560c5d9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -11,11 +11,12 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Set up Python - uses: actions/setup-python@v4 + uses: actions/setup-python@v5 with: python-version: '3.11' + cache: 'pip' - name: Install dependencies run: | python -m pip install --upgrade pip @@ -27,5 +28,9 @@ jobs: flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics - name: Test with pytest run: | - pip install pytest pytest-asyncio - pytest + python -m pip install pytest pytest-asyncio + if find . -type f \( -name "test_*.py" -o -name "*_test.py" \) | grep -q .; then + pytest + else + echo "No tests found; skipping pytest." + fi