Files
Felipe Prado fa1128e6b3 Feat(Issues): added triage forms and automatic labels (#1010)
## EN

### Summary

Issue forms now collect what triage needs. The answers turn into labels automatically, old-version bug reports get a retest request, and issues without a collaborator reply are flagged after 48h. `needs-triage` is no longer part of the flow.

### Changes

- Added: required **Category** dropdown to the bug and feature request forms, mapped to `crash`, `infinite-loading`, `area:graphics`, `performance`, `area:audio`, `gameplay`, `area:input`, `area:launcher`, `saves` and `platform-support`.
- Added: operating system, game build, location in the game, regression and settings fields, plus required checks for existing issues and the latest release.
- Updated: the launch template only covers failures before the main menu and adds `startup`; it now asks for OS and GPU/driver.
- Added: `issue-opened.yml`, which applies the category and `platform:*` labels. For bugs older than the previous minor line of the newest stable release (today 2.6.0), it posts a bilingual retest comment and adds `question`. The issue is never closed. The reference version is read from the releases API, so no edit is needed on new releases.
- Added: `issue-awaiting-response.yml`, which adds `awaiting-response` when the last human message is from a non-collaborator and is older than 48h. The workflow runs every 6h, and a collaborator comment removes the label at once. It skips `question`, `awaiting-test` and `awaiting-confirmation`, and only issues created from 2026-10-23 on are considered.
- Updated: `docs/agents/triage-labels.md`.

### Validation

- Executed: `node --test .github/scripts/issue-triage.test.js`. Result: 10/10 passed. The first 8 tests were written before the implementation and failed without it; the API and option-mapping tests were added later.
- Executed: a handler simulation with a fake GitHub API. Result: 14 scenarios passed. It exposed a fragile return path, where the result of a log call could be read as a label, now made explicit and covered by a test.
- Executed: `actionlint` 1.7.7, a YAML parse and a check that every dropdown option has a label. Result: OK.
- Executed: end-to-end test in a private sandbox repository with stable releases 2.5.0–2.7.0 and the pre-release 2.8.0-test1. Result: correct labels and comments on 6 test issues (old/supported/unreadable version, pre-release, feature, launch). `awaiting-response` was added, skipped with `question`, and removed both by the sweep and by a collaborator comment. The forced 0h window used a sandbox-only patch, since reverted.
- Executed: manual check of the forms in the sandbox chooser. Result: OK.

### Risks and pending items

- The workflows only run after merge into `main`.
- The 7 new labels already exist in this repository, and the `awaiting-response` description was updated.
- The 96 open issues that still have `needs-triage` were not reclassified.

---

## PT-BR

### Resumo

Os formulários de issue agora coletam o que a triagem precisa. As respostas viram labels automaticamente, relatos de versões antigas recebem pedido de reteste, e issues sem resposta de colaborador são sinalizadas depois de 48h. O `needs-triage` saiu do fluxo.

### Alterações
2026-10-23 15:43:45 -03:00
..