Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions .github/workflows/pr-closer.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
name: pr-closer

on:
schedule:
- cron: "0 0 * * *" # daily at midnight
workflow_dispatch:

jobs:
close-stale-prs:
runs-on: ubuntu-latest
steps:
- name: Close stale PRs
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
gh pr list -R jdx/mise --state open --json number,author,labels,createdAt --limit 100 | \
jq -r '.[] | select(
(.createdAt | fromdateiso8601) < (now - 30*24*60*60) and
.author.login != "jdx" and
([.labels[].name] | index("keep-open") | not)
) | .number' | \
while read -r pr; do
echo "Closing PR #$pr"
gh pr close "$pr" -R jdx/mise -c "This PR has been open for more than 30 days without activity. Please reopen if you'd like to continue working on it."
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Closing message claims no activity but code only checks creation date

The workflow filters PRs based on createdAt (when the PR was first opened) but the closing message states the PR had no "activity". A PR created more than 30 days ago could have had recent commits or comments, yet would still be closed with a misleading message claiming lack of activity. Either the filter needs to use updatedAt to actually check for recent activity, or the closing message needs to accurately reflect that closure is based on creation date, not activity.

Fix in Cursor Fix in Web

done
Loading