From e2770b239470daf0eabd6feb07508551bd54b0b7 Mon Sep 17 00:00:00 2001 From: Matthew Ball Date: Tue, 2 Jun 2026 14:48:57 -0700 Subject: [PATCH 1/7] compact first-time contributor welcome and stop issue-link pollution --- .../welcome-first-time-contributor.yml | 38 +++---------------- 1 file changed, 5 insertions(+), 33 deletions(-) diff --git a/.github/workflows/welcome-first-time-contributor.yml b/.github/workflows/welcome-first-time-contributor.yml index df67bebce0c..dd3e613971b 100644 --- a/.github/workflows/welcome-first-time-contributor.yml +++ b/.github/workflows/welcome-first-time-contributor.yml @@ -108,41 +108,13 @@ jobs: MARKER, `👋 Thanks for your first contribution to Texera, @${author}!`, ``, - `You can drive common housekeeping tasks just by leaving a comment. Type the command on its own line.`, + `Drive common housekeeping by commenting a command on its own line:`, ``, - `### On issues`, + `- **Issues:** \`/take\` (self-assign), \`/untake\`. Find unclaimed work via \`is:issue is:open no:assignee\`.`, + `- **Sub-issues:** on the parent, \`/sub-issue #5166 #5222\` / \`/unsub-issue #5166 #5222\`; on the child, \`/parent-issue #5166\` / \`/unparent-issue\` (parent auto-detected). Refs can be \`#5166\` or bare \`5166\`; cross-repo refs aren't supported.`, + `- **PRs (author only):** \`/request-review @user\` (or bare \`/request-review\` to auto-assign a reviewer) / \`/unrequest-review @user\`. Teams (\`@org/team\`) and \`@copilot\` work too.`, ``, - `| Command | What it does |`, - `|---|---|`, - `| \`/take\` | Assign the issue to yourself (self-claim it) |`, - `| \`/untake\` | Remove yourself as assignee |`, - ``, - `To find unclaimed work, search \`is:issue is:open no:assignee\` — there's no "triage" label; the search filter *is* the triage state.`, - ``, - `### Linking sub-issues`, - ``, - `| Command | Where to run it | What it does |`, - `|---|---|---|`, - `| \`/sub-issue #12 #13\` | On the **parent** | Links #12 and #13 as children of this issue |`, - `| \`/unsub-issue #12 #13\` | On the **parent** | Unlinks those children |`, - `| \`/parent-issue #5\` | On the **child** | Sets #5 as this issue's parent |`, - `| \`/unparent-issue\` | On the **child** | Removes this issue's parent (auto-detected) |`, - `| \`/unparent-issue #5\` | On the **child** | Removes parent #5 explicitly |`, - ``, - `You can write references as \`#12\` or bare \`12\`. Cross-repo references like \`owner/repo#12\` aren't supported and are ignored.`, - ``, - `### On pull requests (author only)`, - ``, - `| Command | What it does |`, - `|---|---|`, - `| \`/request-review @user [@user ...]\` | Request reviews from those users |`, - `| \`/unrequest-review @user [@user ...]\` | Cancel those review requests |`, - ``, - `You can mention teams as \`@org/team\`, and \`@copilot\` works too. Only the PR **author** can use these commands.`, - ``, - `> **Note:** Commands must match exactly — \`/take this\` won't work, only \`/take\`. Bots are ignored, and you can't self-link an issue or set an issue as its own parent.`, - ``, - `For the full contribution flow, see [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md).`, + `Commands must match exactly — \`/take this\` won't work, only \`/take\`. For the full flow, see [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md).`, ].join('\n'); try { From 459b8a34c468109e7ea2e4811b12a6988f71f896 Mon Sep 17 00:00:00 2001 From: Matthew Ball Date: Thu, 4 Jun 2026 14:46:56 -0700 Subject: [PATCH 2/7] applied suggestion to remove teams and copilot from pr --- .github/workflows/welcome-first-time-contributor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/welcome-first-time-contributor.yml b/.github/workflows/welcome-first-time-contributor.yml index dd3e613971b..c25788b6f6c 100644 --- a/.github/workflows/welcome-first-time-contributor.yml +++ b/.github/workflows/welcome-first-time-contributor.yml @@ -112,7 +112,7 @@ jobs: ``, `- **Issues:** \`/take\` (self-assign), \`/untake\`. Find unclaimed work via \`is:issue is:open no:assignee\`.`, `- **Sub-issues:** on the parent, \`/sub-issue #5166 #5222\` / \`/unsub-issue #5166 #5222\`; on the child, \`/parent-issue #5166\` / \`/unparent-issue\` (parent auto-detected). Refs can be \`#5166\` or bare \`5166\`; cross-repo refs aren't supported.`, - `- **PRs (author only):** \`/request-review @user\` (or bare \`/request-review\` to auto-assign a reviewer) / \`/unrequest-review @user\`. Teams (\`@org/team\`) and \`@copilot\` work too.`, + `- **PRs (author only):** \`/request-review @user\` (or bare \`/request-review\` to auto-assign a reviewer) / \`/unrequest-review @user\`.`, ``, `Commands must match exactly — \`/take this\` won't work, only \`/take\`. For the full flow, see [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md).`, ].join('\n'); From 49eb66be5147e6564d16b14a228c044265f1eaba Mon Sep 17 00:00:00 2001 From: Matthew Ball Date: Tue, 9 Jun 2026 13:24:51 -0700 Subject: [PATCH 3/7] removed auto reviewer selected feature from the message --- .github/workflows/welcome-first-time-contributor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/welcome-first-time-contributor.yml b/.github/workflows/welcome-first-time-contributor.yml index c25788b6f6c..9702bf8a39a 100644 --- a/.github/workflows/welcome-first-time-contributor.yml +++ b/.github/workflows/welcome-first-time-contributor.yml @@ -112,7 +112,7 @@ jobs: ``, `- **Issues:** \`/take\` (self-assign), \`/untake\`. Find unclaimed work via \`is:issue is:open no:assignee\`.`, `- **Sub-issues:** on the parent, \`/sub-issue #5166 #5222\` / \`/unsub-issue #5166 #5222\`; on the child, \`/parent-issue #5166\` / \`/unparent-issue\` (parent auto-detected). Refs can be \`#5166\` or bare \`5166\`; cross-repo refs aren't supported.`, - `- **PRs (author only):** \`/request-review @user\` (or bare \`/request-review\` to auto-assign a reviewer) / \`/unrequest-review @user\`.`, + `- **PRs (author only):** \`/request-review @user\` / \`/unrequest-review @user\`.`, ``, `Commands must match exactly — \`/take this\` won't work, only \`/take\`. For the full flow, see [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md).`, ].join('\n'); From cd383e04f00be83ffdb9a8f66cefe056cc5c1806 Mon Sep 17 00:00:00 2001 From: Matthew Ball Date: Tue, 9 Jun 2026 18:10:04 -0700 Subject: [PATCH 4/7] addressed comments --- .github/workflows/welcome-first-time-contributor.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/welcome-first-time-contributor.yml b/.github/workflows/welcome-first-time-contributor.yml index 9702bf8a39a..1cfd33d1de2 100644 --- a/.github/workflows/welcome-first-time-contributor.yml +++ b/.github/workflows/welcome-first-time-contributor.yml @@ -108,13 +108,15 @@ jobs: MARKER, `👋 Thanks for your first contribution to Texera, @${author}!`, ``, - `Drive common housekeeping by commenting a command on its own line:`, + `If you're looking for a good place to start, browse issues labeled [\`starter-task\`](https://github.com/${owner}/${repo}/issues?q=is%3Aissue+is%3Aopen+label%3Astarter-task); they're scoped to be approachable for newcomers.`, ``, - `- **Issues:** \`/take\` (self-assign), \`/untake\`. Find unclaimed work via \`is:issue is:open no:assignee\`.`, - `- **Sub-issues:** on the parent, \`/sub-issue #5166 #5222\` / \`/unsub-issue #5166 #5222\`; on the child, \`/parent-issue #5166\` / \`/unparent-issue\` (parent auto-detected). Refs can be \`#5166\` or bare \`5166\`; cross-repo refs aren't supported.`, - `- **PRs (author only):** \`/request-review @user\` / \`/unrequest-review @user\`.`, + `You can drive common housekeeping yourself by commenting one of these commands on its own line:`, ``, - `Commands must match exactly — \`/take this\` won't work, only \`/take\`. For the full flow, see [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md).`, + `- **Issues.** Comment \`/take\` to assign an open issue to yourself, or \`/untake\` to release it. You can find unclaimed work with the search filter \`is:issue is:open no:assignee\`.`, + `- **Sub-issues.** To link issues into a parent/child hierarchy, comment \`/sub-issue #5166 #5222\` on the parent to attach those children (or \`/unsub-issue #5166 #5222\` to detach them). From a child issue, comment \`/parent-issue #5166\` to set its parent, or \`/unparent-issue\` to clear it (the current parent is detected automatically). References may be written as \`#5166\` or as a bare \`5166\`; cross-repository references are not supported.`, + `- **Pull requests (author only).** Comment \`/request-review @user\` to request a review from someone, or \`/unrequest-review @user\` to withdraw that request.`, + ``, + `Each command must match exactly: \`/take this\` will not work, only \`/take\` does. For the full contribution flow, see [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md).`, ].join('\n'); try { From 2de0347f7855191a35229e34410bc117aeef169d Mon Sep 17 00:00:00 2001 From: Matthew Ball Date: Tue, 9 Jun 2026 18:20:30 -0700 Subject: [PATCH 5/7] move first-time-contributor welcome message to a .txt file and exclude it from CI labeling --- .github/labeler.yml | 3 +- .github/welcome-first-time-contributor.txt | 11 ++++++ .../welcome-first-time-contributor.yml | 35 +++++++++++-------- 3 files changed, 34 insertions(+), 15 deletions(-) create mode 100644 .github/welcome-first-time-contributor.txt diff --git a/.github/labeler.yml b/.github/labeler.yml index 75f20d2c330..8311e3f4867 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -106,7 +106,8 @@ ci: - any-glob-to-any-file: - '.github/**' - '.asf.yaml' - - 'codecov.yml' + - all-globs-to-all-files: + - '!.github/welcome-first-time-contributor.txt' dev: - changed-files: diff --git a/.github/welcome-first-time-contributor.txt b/.github/welcome-first-time-contributor.txt new file mode 100644 index 00000000000..e7e01d6462b --- /dev/null +++ b/.github/welcome-first-time-contributor.txt @@ -0,0 +1,11 @@ +👋 Thanks for your first contribution to Texera, @{{author}}! + +If you're looking for a good place to start, browse issues labeled [`starter-task`](https://github.com/{{owner}}/{{repo}}/issues?q=is%3Aissue+is%3Aopen+label%3Astarter-task); they're scoped to be approachable for newcomers. + +You can drive common housekeeping yourself by commenting one of these commands on its own line: + +- **Issues.** Comment `/take` to assign an open issue to yourself, or `/untake` to release it. You can find unclaimed work with the search filter `is:issue is:open no:assignee`. +- **Sub-issues.** To link issues into a parent/child hierarchy, comment `/sub-issue #5166 #5222` on the parent to attach those children (or `/unsub-issue #5166 #5222` to detach them). From a child issue, comment `/parent-issue #5166` to set its parent, or `/unparent-issue` to clear it (the current parent is detected automatically). References may be written as `#5166` or as a bare `5166`; cross-repository references are not supported. +- **Pull requests (author only).** Comment `/request-review @user` to request a review from someone, or `/unrequest-review @user` to withdraw that request. + +Each command must match exactly: `/take this` will not work, only `/take` does. For the full contribution flow, see [CONTRIBUTING.md](https://github.com/{{owner}}/{{repo}}/blob/main/CONTRIBUTING.md). diff --git a/.github/workflows/welcome-first-time-contributor.yml b/.github/workflows/welcome-first-time-contributor.yml index 1cfd33d1de2..5e85ff30b37 100644 --- a/.github/workflows/welcome-first-time-contributor.yml +++ b/.github/workflows/welcome-first-time-contributor.yml @@ -44,6 +44,16 @@ jobs: if: github.event.sender.type != 'Bot' runs-on: ubuntu-latest steps: + # Check out the base ref (pull_request_target / issues both resolve to + # the trusted base branch, never the fork head) so we can read the + # welcome message template below. The template lives in its own .txt + # file so editing the wording does not trigger a full CI run; see the + # `ci` label exclusion in .github/labeler.yml. + - uses: actions/checkout@v5 + with: + persist-credentials: false + sparse-checkout: .github/welcome-first-time-contributor.txt + sparse-checkout-cone-mode: false - uses: actions/github-script@v8 with: github-token: ${{ secrets.GITHUB_TOKEN }} @@ -104,20 +114,17 @@ jobs: return; } - const body = [ - MARKER, - `👋 Thanks for your first contribution to Texera, @${author}!`, - ``, - `If you're looking for a good place to start, browse issues labeled [\`starter-task\`](https://github.com/${owner}/${repo}/issues?q=is%3Aissue+is%3Aopen+label%3Astarter-task); they're scoped to be approachable for newcomers.`, - ``, - `You can drive common housekeeping yourself by commenting one of these commands on its own line:`, - ``, - `- **Issues.** Comment \`/take\` to assign an open issue to yourself, or \`/untake\` to release it. You can find unclaimed work with the search filter \`is:issue is:open no:assignee\`.`, - `- **Sub-issues.** To link issues into a parent/child hierarchy, comment \`/sub-issue #5166 #5222\` on the parent to attach those children (or \`/unsub-issue #5166 #5222\` to detach them). From a child issue, comment \`/parent-issue #5166\` to set its parent, or \`/unparent-issue\` to clear it (the current parent is detected automatically). References may be written as \`#5166\` or as a bare \`5166\`; cross-repository references are not supported.`, - `- **Pull requests (author only).** Comment \`/request-review @user\` to request a review from someone, or \`/unrequest-review @user\` to withdraw that request.`, - ``, - `Each command must match exactly: \`/take this\` will not work, only \`/take\` does. For the full contribution flow, see [CONTRIBUTING.md](https://github.com/${owner}/${repo}/blob/main/CONTRIBUTING.md).`, - ].join('\n'); + // Message body lives in .github/welcome-first-time-contributor.txt + // so wording edits skip CI. Substitute the runtime placeholders + // and prepend the idempotency marker. + const fs = require('fs'); + const template = fs.readFileSync( + '.github/welcome-first-time-contributor.txt', 'utf8', + ); + const body = MARKER + '\n' + template + .replaceAll('{{author}}', author) + .replaceAll('{{owner}}', owner) + .replaceAll('{{repo}}', repo); try { await github.rest.issues.createComment({ From 463165e78e466b1bc83646b94a04506ad70c050e Mon Sep 17 00:00:00 2001 From: Matthew Ball Date: Tue, 9 Jun 2026 18:22:47 -0700 Subject: [PATCH 6/7] remove comment --- .github/labeler.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/labeler.yml b/.github/labeler.yml index 8311e3f4867..dce6e6eba6e 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -106,6 +106,11 @@ ci: - any-glob-to-any-file: - '.github/**' - '.asf.yaml' + - 'codecov.yml' + # The first-time-contributor welcome message is plain prose read at + # runtime, not workflow logic, so a wording-only edit should not pay + # for a full CI run. Excluding it means a PR that touches only this + # file gets no `ci` label and skips every build stack. - all-globs-to-all-files: - '!.github/welcome-first-time-contributor.txt' From 1c66cd40449c2c776a2b3f963ae9169f0e0a5a1a Mon Sep 17 00:00:00 2001 From: Matthew Ball Date: Tue, 9 Jun 2026 19:17:22 -0700 Subject: [PATCH 7/7] removed labeler change --- .github/labeler.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/labeler.yml b/.github/labeler.yml index dce6e6eba6e..75f20d2c330 100644 --- a/.github/labeler.yml +++ b/.github/labeler.yml @@ -107,12 +107,6 @@ ci: - '.github/**' - '.asf.yaml' - 'codecov.yml' - # The first-time-contributor welcome message is plain prose read at - # runtime, not workflow logic, so a wording-only edit should not pay - # for a full CI run. Excluding it means a PR that touches only this - # file gets no `ci` label and skips every build stack. - - all-globs-to-all-files: - - '!.github/welcome-first-time-contributor.txt' dev: - changed-files: