name: Bug Report
description: Report a bug or unexpected behavior
title: "[bug] "
labels: ["type:bug"]
assignees: []
body:
  - type: markdown
    attributes:
      value: |
        ## Bug Report
        Provide enough detail for reproduction. AI agents will use this to write a failing test first (TDD).

  - type: textarea
    id: description
    attributes:
      label: Bug Description
      description: "What happened? What did you expect?"
      placeholder: "API returns 500 when sending requests to Claude model endpoint. Expected 200 with streamed response."
    validations:
      required: true

  - type: textarea
    id: reproduction
    attributes:
      label: Steps to Reproduce
      description: "Exact steps, curl commands, or test code to trigger the bug."
      placeholder: |
        1. curl -X POST /v1/chat/completions -d '{"model":"claude-4","messages":[...]}'
        2. Observe 500 response
        3. Check logs: KeyError in router.py line 142
    validations:
      required: true

  - type: textarea
    id: expected
    attributes:
      label: Expected Behavior
      description: "What should happen instead?"
    validations:
      required: true

  - type: textarea
    id: doctor
    attributes:
      label: "Doctor output (run: llmhosts doctor)"
      description: "Paste the output of `llmhosts doctor` — this captures your hardware, engines, models, connectivity, and config."
      render: shell
      placeholder: |
        $ llmhosts doctor
        LLMHosts v0.5.0 — Diagnostics
        Hardware: NVIDIA RTX 4090 (24.0GB), 64GB RAM
        Engine: Ollama v0.6.1 at localhost:11434
        Models: llama3.1:8b, codestral:latest
        Tunnel: LLMHosts Relay (connected)
        ...

  - type: textarea
    id: environment
    attributes:
      label: Environment
      description: "OS, Python version, install method (pip/pipx/uvx), any relevant config."
      placeholder: "Ubuntu 24.04, Python 3.12, pipx install, ~/.llmhosts/config.toml default"

  - type: dropdown
    id: severity
    attributes:
      label: Severity
      options:
        - "priority:critical (service down)"
        - "priority:high (major feature broken)"
        - "priority:medium (workaround exists)"
        - "priority:low (cosmetic / edge case)"
    validations:
      required: true
