mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-06-21 15:40:43 +00:00
b56e9438d1
## Description: ## Summary Adds a GitHub Action that auto-closes PRs which don't follow the contribution workflow, so maintainer review time goes to legitimate contributions instead of off-roadmap or AI-generated submissions. Triggered on `pull_request_target: [opened, reopened]` and **defaults to dry-run** so it's safe to merge before flipping live. ## Gate logic (first match wins) 1. **Maintainer bypass** — PR carries `bypass-pr-check` label → pass. 2. **Org/repo member** — `author_association` is `OWNER` / `MEMBER` / `COLLABORATOR` → pass. 3. **Approved work** — PR body links an issue (`Closes/Fixes/Resolves #N`) that carries the `approved` label and the PR author is in the issue's assignees → pass. 4. **Small fix** — `additions + deletions ≤ 50` → pass + apply `small-fix` label. 5. **Otherwise** — apply `auto-closed-needs-issue` label, post rejection comment, close. ## Please complete the following: - [x] I have added screenshots for all UI updates - [x] I process any text displayed to the user through translateText() and I've added it to the en.json file - [x] I have added relevant tests to the test directory - [x] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced ## Please put your Discord username so you can be contacted if a bug or regression is found: evan
48 lines
2.1 KiB
TypeScript
48 lines
2.1 KiB
TypeScript
export const REPO = { owner: "openfrontio", repo: "OpenFrontIO" } as const;
|
|
|
|
export const TRUSTED_AUTHOR_ASSOCIATIONS = [
|
|
"OWNER",
|
|
"MEMBER",
|
|
"COLLABORATOR",
|
|
] as const;
|
|
|
|
export const SMALL_FIX_LINE_THRESHOLD = 50;
|
|
|
|
export const APPROVED_ISSUE_LABEL = "approved";
|
|
|
|
export const LABELS = {
|
|
BYPASS: "bypass-pr-check",
|
|
SMALL_FIX: "small-fix",
|
|
AUTO_CLOSED: "auto-closed-needs-issue",
|
|
} as const;
|
|
|
|
export const LABEL_COLORS: Record<string, string> = {
|
|
[LABELS.SMALL_FIX]: "0E8A16",
|
|
[LABELS.AUTO_CLOSED]: "B60205",
|
|
};
|
|
|
|
export const LABEL_DESCRIPTIONS: Record<string, string> = {
|
|
[LABELS.SMALL_FIX]: `Small fix (≤ ${SMALL_FIX_LINE_THRESHOLD} lines) — auto-applied by PR gate`,
|
|
[LABELS.AUTO_CLOSED]: "PR closed by gate — see comment for next steps",
|
|
};
|
|
|
|
export const CLOSE_COMMENT = (author: string): string =>
|
|
`Hi @${author}, thanks for the contribution.
|
|
|
|
This PR was automatically closed because it doesn't fit our contribution workflow:
|
|
|
|
- You aren't currently assigned to an issue labelled \`${APPROVED_ISSUE_LABEL}\`, **and**
|
|
- The change is larger than ${SMALL_FIX_LINE_THRESHOLD} lines (our cap for unsolicited contributions).
|
|
|
|
**To contribute to OpenFront:**
|
|
|
|
1. **For bugs or small quality-of-life improvements:** open an [issue](https://github.com/${REPO.owner}/${REPO.repo}/issues/new/choose). A maintainer will label it \`${APPROVED_ISSUE_LABEL}\` if it's something we'll work on.
|
|
2. **For feature ideas:** discuss in the [dev Discord](https://discord.gg/K9zernJB5z) first. We don't accept unsolicited feature PRs — even if they're good ideas, every merged feature is a permanent maintenance burden.
|
|
3. **Once an issue is labelled \`${APPROVED_ISSUE_LABEL}\`**, comment asking to be assigned. After you're assigned, you can open a PR referencing that issue.
|
|
|
|
If you believe this was closed in error, please reach out on our [Discord](https://discord.gg/K9zernJB5z) or comment below.
|
|
|
|
See [CONTRIBUTING.md](https://github.com/${REPO.owner}/${REPO.repo}/blob/main/CONTRIBUTING.md) for the full contribution process.
|
|
|
|
— *Automated PR gate. [Source](https://github.com/${REPO.owner}/${REPO.repo}/tree/main/scripts/pr-gate).*`;
|