Skip to content
Open
Show file tree
Hide file tree
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
26 changes: 2 additions & 24 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,32 +1,10 @@
## Description of Changes

<!-- Clearly and concisely describe the changes introduced by this Pull Request.
What problem does it solve? What new content or improvements does it bring? -->

<!-- Briefly describe what you're adding/fixing and why -->

## Related Issue

<!-- Link this Pull Request to the relevant GitHub Issue.
Use keywords like `Closes #<issue-number>`, `Fixes #<issue-number>`, or `Resolves #<issue-number>`
to automatically close the issue when the PR is merged.
[Learn more](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue). -->


## Type of Change

Please check the appropriate box that describes your PR:

- [ ] 🐛 Bug Fix — Fixes a documented issue or incorrect behavior
- [ ] ✨ Content Enhancement — Updates or improves existing content
- [ ] ✍️ New Content — Adds new chapters, examples, or significant sections
- [ ] 🛠️ Other — Please describe in the *Description of Changes* section


## Additional Notes (Optional)

<!-- Add any other relevant context or information about the changes here.
Include screenshots or references if helpful. -->

<!-- Link using: Closes #123, Fixes #456, or Resolves #789 -->

## Checklist

Expand Down
17 changes: 14 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,18 @@ updates:
day: "monday"
time: "09:00"

reviewers:
- "username"
labels:
- "dependencies"
- "CI"
- "Dependencies"

# Python dependencies
- package-ecosystem: "pip"
directory: "/"
schedule:
interval: "monthly"
day: "monday"
time: "09:00"

labels:
- "Dependencies"
- "Python"
26 changes: 26 additions & 0 deletions .github/mlc_config.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"ignorePatterns": [
{
"pattern": "^\\.git/"
},
{
"pattern": "^http://localhost"
},
{
"pattern": "^https://translatewiki\\.net"
}
],
"httpHeaders": [
{
"urls": ["^https?://"],
"headers": {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36"
}
}
],
"timeout": "40s",
"retryOn429": true,
"aliveStatusCodes": [0, 200, 206, 403, 429],
"retryCount": 5,
"fallbackRetryDelay": "30s"
}
26 changes: 0 additions & 26 deletions .github/workflows/auto_assign.yml

This file was deleted.

112 changes: 112 additions & 0 deletions .github/workflows/auto_comment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
name: Auto-comment on issues from PR

on:
pull_request_target:
types: [opened, edited]

permissions:
issues: write
pull-requests: read

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
cancel-in-progress: true

jobs:
comment-on-issue:
runs-on: ubuntu-latest
steps:
- name: Comment on and label linked issue
uses: actions/github-script@v7
with:
token: ${{ secrets.GITHUB_TOKEN }}
script: |
const owner = context.repo.owner;
const repo = context.repo.repo;
const prNumber = context.payload.pull_request.number;
const prAuthor = context.payload.pull_request.user.login;
const prLink = context.payload.pull_request.html_url;
const prTitle = context.payload.pull_request.title || '';

const pattern = /(?:closes|fixes|resolves)\s+#(\d+)|#(\d+)/gi;
const issueNumbers = new Set();

const findIssues = (text) => {
if (!text) return;
for (const match of text.matchAll(pattern)) {
issueNumbers.add(match[1] || match[2]);
}
};

findIssues(context.payload.pull_request.body);
findIssues(prTitle);

const { data: commits } = await github.rest.pulls.listCommits({
owner,
repo,
pull_number: prNumber,
});

for (const commit of commits) {
findIssues(commit.commit.message);
}

if (issueNumbers.size === 0) {
return;
}

const ISSUE_PROCESSING_LIMIT = 10;
const issuesToProcess = Array.from(issueNumbers).slice(0, ISSUE_PROCESSING_LIMIT);

for (const issueNumber of issuesToProcess) {
try {
let issue;
try {
const { data: issueData } = await github.rest.issues.get({
owner, repo, issue_number: issueNumber,
});
issue = issueData;
} catch (error) {
console.log(`Issue #${issueNumber} not found, skipping.`);
continue;
}

if (issue.state !== 'open') {
console.log(`Issue #${issueNumber} is closed, skipping.`);
continue;
}

const { data: comments } = await github.rest.issues.listComments({
owner, repo, issue_number: issueNumber,
});

const botCommentIdentifier = "This issue has been claimed by";
const alreadyCommented = comments.some(comment => comment.body && comment.body.includes(botCommentIdentifier));

if (alreadyCommented) {
continue;
}

const commentBody = `**Issue Claimed**\n\nThis issue has been claimed by @${prAuthor} via pull request ${prLink}.\n\n**Note for other contributors:**\n\nTo avoid duplicate effort, please coordinate with the contributor or a project maintainer before submitting a new pull request for this issue.`;

await github.rest.issues.createComment({
owner, repo, issue_number: issueNumber, body: commentBody,
});

const labelToAdd = 'in progress';
try {
await github.rest.issues.addLabels({
owner,
repo,
issue_number: issueNumber,
labels: [labelToAdd]
});
} catch (error) {
console.log(`Could not add label "${labelToAdd}" to issue #${issueNumber}.`);
}

} catch (error) {
console.log(`Failed to process issue #${issueNumber}: ${error.message}`);
}
}

20 changes: 14 additions & 6 deletions .github/workflows/checklink.yml
Original file line number Diff line number Diff line change
@@ -1,14 +1,22 @@
name: Check Markdown links

on: workflow_dispatch
# on: [pull_request]
on:
pull_request:
branches: [ "main" ]
schedule:
- cron: '0 0 1 * *' # Monthly
workflow_dispatch:

jobs:
markdown-link-check:
name: Check for broken links
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@master
- uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
use-quiet-mode: 'yes'
- name: Checkout repository
uses: actions/checkout@v4

- name: Run link checker
uses: gaurav-nelson/github-action-markdown-link-check@v1
with:
config-file: '.github/mlc_config.json'
use-verbose-mode: 'yes'
19 changes: 15 additions & 4 deletions .github/workflows/stale-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,16 +22,27 @@ jobs:

days-before-pr-stale: 30
days-before-pr-close: -1
stale-pr-message: 'This pull request has been inactive for 30 days. It will be closed in 14 days if no further activity occurs.'
stale-pr-message: |
⚠️ **Stale Pull Request Notice**

This pull request has been automatically marked as stale because it has not had recent activity for 30 days.

**Next Steps:**
- Add a comment to keep this PR active
- Push new commits to continue development
- Request review if ready for merge
- Close if no longer needed

**Need Help?** Feel free to ask questions or request assistance from maintainers.

Thank you for your contribution!
stale-pr-label: '⌛ stale'
exempt-pr-labels: ✨ content enhancement,✍️ new content'
exempt-pr-labels: '✨ content enhancement,✍️ new content'
exempt-draft-pr: true
delete-branch: false

only-pr-labels: '' # Process all PRs


operations-per-run: 30
enable-statistics: true

exempt-all-pr-milestones: true
2 changes: 1 addition & 1 deletion DISCOVER/01_about.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ It focuses specifically on plans, decisions, and actions organizers can take to
_Funding to produce this cookbook was made possible by a generous grant from the_ **Moore Foundation** _._

**Further Reading:**
- [DISCOVER Cookbook Checklist](/13_inclusive-checklist.md) — A practical checklist for conference organizers to implement inclusive measures effectively.
- [DISCOVER Cookbook Checklist](13_inclusive-checklist.md) — A practical checklist for conference organizers to implement inclusive measures effectively.

## What this Cookbook Is Not

Expand Down
4 changes: 2 additions & 2 deletions DISCOVER/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The NumFOCUS DISCOVER Cookbook (Diverse & Inclusive Spaces and Conferences: Over

This cookbook is intended as a resource for **organizers of conferences and events** to **support and encourage diversity and inclusion** at those events. This cookbook is **not** intended to provide **general instructions** on how to run a successful conference or event.

Read more about this cookbook [here](/01_about.md).
Read more about this cookbook [here](01_about.md).

For a full statement of the NumFOCUS DISC Program mission and the NumFOCUS position on diversity and inclusion, please see [NumFOCUS Diversity and Inclusion Program](https://www.numfocus.org/programs/diversity-and-inclusion/).

Expand All @@ -31,6 +31,6 @@ We also encourage you to do **at least one thing** in the &quot;High Impact, Hig
| **High Impact** | 🍎 Quick Wins | ✅ Do These |
| **Low Impact** | 🗓️ Schedule (Chores) | 🛑 Stop Doing |

The "high impact, low effort" and "high impact, high effort" suggestions are summarized on the [Summary page](/02_minimal_measures.md).
The "high impact, low effort" and "high impact, high effort" suggestions are summarized on the [Summary page](02_minimal_measures.md).

Please see the [NumFOCUS Privacy Policy](https://numfocus.org/privacy-policy) for more information about how we collect data.