Close stale issues and PRs (dry-run) #20
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Close stale issues and PRs (dry-run) | |
| on: | |
| schedule: | |
| - cron: '30 1 * * *' # Runs daily at 01:30 UTC | |
| workflow_dispatch: # Allow manual runs from the Actions tab | |
| permissions: | |
| issues: write | |
| pull-requests: write | |
| jobs: | |
| stale: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/stale@v10 | |
| with: | |
| # ────────────────────────────────────────────────────────────────────── | |
| # OVERVIEW — HOW THIS WORKS | |
| # 1) The job scans issues/PRs once per run. | |
| # 2) If an item has had no activity for `days-before-stale`, it’s labeled `Stale` | |
| # and receives the relevant “stale” comment. | |
| # 3) If there’s still no activity for `days-before-close` AFTER being marked | |
| # stale, the item is closed and receives a closing comment. | |
| # 4) Any new activity (comment, label change, commit, edit) clears `Stale` | |
| # and resets the timers if `remove-stale-when-updated` is true. | |
| # ────────────────────────────────────────────────────────────────────── | |
| # ── TIMING / BEHAVIOR ──────────────────────────────────────────────── | |
| # Number of idle days before applying the `Stale` label + stale comment. | |
| days-before-stale: 60 | |
| # Number of days AFTER staling with no activity before auto-closing. | |
| # (Measured from when `Stale` was added.) Set to -1 to never auto-close. | |
| days-before-close: 14 | |
| # If someone comments/updates, automatically remove `Stale` and reset timers. | |
| remove-stale-when-updated: true | |
| # Don’t nag draft PRs; they are explicitly a work-in-progress stage. | |
| exempt-draft-pr: true | |
| # Fetch ordering when scanning items. `updated` helps focus on the most recently touched. | |
| sort-by: updated | |
| # ── MESSAGES (markdown) ────────────────────────────────────────────── | |
| stale-issue-message: | | |
| **This issue has been inactive for 60 days and is now marked as stale.** | |
| To keep the tracker focused, older inactive issues are flagged. | |
| If this still applies: | |
| - Add a comment with **reproduction steps**, **environment details**, and **JetKVM version**. | |
| - Verify whether it still occurs with the current build: see [OTA / Updates](https://jetkvm.com/docs/advanced-usage/ota-updates). | |
| - Any new comment or update will remove the *Stale* label automatically. | |
| Issues not updated within 14 days after being marked stale may be closed. | |
| stale-pr-message: | | |
| **This pull request has been inactive for 60 days and is now marked as stale.** | |
| To continue: | |
| - Push a commit or add a comment about next steps — this removes the *Stale* label automatically. | |
| - Ensure the changes work with the current build: see [OTA / Updates](https://jetkvm.com/docs/advanced-usage/ota-updates). | |
| - If this is blocked or awaiting review, mention that for visibility. | |
| PRs not updated within 14 days after being marked stale may be closed. | |
| close-issue-message: | | |
| **Closing this issue due to extended inactivity.** | |
| It has been 14 days since it was marked as stale without further updates. | |
| If the problem persists: | |
| - Reopen this issue, or open a new one with **reproduction steps**, **logs**, **environment**, and **JetKVM version**. | |
| - Confirm behavior with the current build: [OTA / Updates](https://jetkvm.com/docs/advanced-usage/ota-updates). | |
| close-pr-message: | | |
| **Closing this pull request due to extended inactivity.** | |
| It has been 14 days since it was marked as stale with no updates or commits. | |
| If the changes are still relevant: | |
| - Reopen this PR or submit a refreshed PR rebased on the latest code. | |
| - Confirm that it builds and works with the current build: [OTA / Updates](https://jetkvm.com/docs/advanced-usage/ota-updates). | |
| # ── SAFETY / ROLLOUT ──────────────────────────────────────────────── | |
| # DRY-RUN: log what would happen, but do NOT write labels/comments/close. | |
| debug-only: true | |
| # Print a summary of how many items were staled/closed (or would be, in dry-run). | |
| enable-statistics: true | |
| # Limit GitHub API operations per run (gentle start for large repos). | |
| # Increase later (e.g., 200–1000) once you’re confident with behavior. | |
| operations-per-run: 50 | |
| # ── LABELS ─────────────────────────────────────────────────────────── | |
| # Names of the labels applied when staling items. Defaults shown for clarity. | |
| stale-issue-label: 'Stale' | |
| stale-pr-label: 'Stale' |