name: Issue Labeler

on:
  issues:
    types: [opened]

permissions:
  issues: write

jobs:
  label-bug-reports:
    runs-on: ubuntu-latest
    steps:
      - name: Add "bug" label to unlabeled bug reports
        uses: actions/github-script@v7
        with:
          script: |
            const issue = context.payload.issue;

            // Web-form submissions already carry the label from the issue template
            if (issue.labels.some((label) => label.name === 'bug')) {
              return;
            }

            const title = issue.title ?? '';
            const body = issue.body ?? '';

            // Freeform bug reports: "issue: ...", "bug: ...", "fix: ...", "[Bug] ...", "issue/UX: ..."
            const bugLikeTitle = /^\s*\[?(bug|issue|fix)\]?\s*[:/\-]/i.test(title);

            // API/CLI-created issues that reproduce the bug report form structure.
            // Only headings distinctive to the bug form (both are required fields there) —
            // generic headings like "Expected Behavior" also appear in freeform feature requests.
            const bugFormBody = /###\s*(Installation Method|Open WebUI Version)/i.test(body);

            if (bugLikeTitle || bugFormBody) {
              await github.rest.issues.addLabels({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: issue.number,
                labels: ['bug']
              });
            }
