Files
PowerToys/.github/workflows/pr-intake.yml
Niels Laute e5a19c4ac5 fix(ci): correct issue and PR triage automation (#50052)
## Summary

- skip AI issue triage when the latest issue state is closed and recheck
state before publishing
- restrict duplicate searches and digest canonical candidates to live
open issues
- add deterministic, additive `Product-*` labels from changed paths for
draft and non-draft PRs
- map Window Hopper, Cursor Wrap, and all Mouse Jump project paths to
their specific product labels before generic fallbacks
- preserve manually applied product labels while managing only intake
lifecycle labels and trusted comments
- collect the PowerToys version and release channel in one required
bug/localization field
- add Window Hopper to the bug report area dropdown and preserve parsing
of both old and combined version headings

This consolidates and supersedes #49961 and #49804.

## Validation

- `node --test .github\scripts\pr-intake\tests\pr-intake.test.mjs` - 39
passing
- `python -m unittest discover .github\scripts\issue-triage\tests -v` -
55 passing
- parsed all modified issue-form and workflow YAML files with PyYAML
- verified every current `src/modules/*` root maps to a product label
- verified the Window Hopper path maps to `Product-Window Hopper`
- `git diff --check`

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Copilot-Session: b313a270-e6e8-4c4a-89b2-880c1d79027c
Copilot-Session: 498721d4-1098-4298-ac8a-147066fbfea3
2026-08-26 12:13:16 -07:00

53 lines
1.6 KiB
YAML

# PR intake
#
# Deterministic pull request intake. Applies additive Product-* labels from
# changed path roots, posts a single canonical comment when there is something
# for the author to act on or consider, keeps the Ready for review /
# Needs-Author-Feedback lifecycle labels in sync, and nudges for visual evidence
# on product UI changes.
#
# This workflow does not run any code from the pull request head. The Node
# script reads all pull request data through the GitHub API, so the trusted
# default branch is checked out only to run the script itself. 3rd-party
# actions are pinned to a commit hash per Microsoft's security guidelines.
name: PR intake
on:
pull_request_target:
types:
- opened
- edited
- synchronize
- reopened
- ready_for_review
- converted_to_draft
permissions:
contents: read
issues: write
pull-requests: write
concurrency:
group: pr-intake-${{ github.event.pull_request.number }}
cancel-in-progress: true
jobs:
pr-intake:
runs-on: ubuntu-latest
steps:
- name: Checkout trusted workflow source
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.repository.default_branch }}
persist-credentials: false
- name: Set up Node.js
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: "22"
- name: Run PR intake
env:
GITHUB_TOKEN: ${{ github.token }}
run: node .github/scripts/pr-intake/pr-intake.mjs "$GITHUB_EVENT_PATH"