CONTRIBUTING.md step 7 has told contributors to open the PR "filling out the PR template" for as long as the file has existed, and .github/PULL_REQUEST_TEMPLATE.md has never existed. This adds it.
The four things step 7 names are four of the sections — summary, related issues, testing, screenshots. The fifth is Translations, which step 8 asks for separately and which is the one most easily skipped: a missing catalog key renders its English source rather than failing, so neither CI nor the screen says anything went wrong. The comment asks for the fallback count before and after, and says in as many words that "adds none" is an answer while silence is not.
The testing section deliberately does not ask for npm run typecheck / npm test / npm run build — CI runs all three on every PR, so asking a contributor to paste them back is noise. It asks for what CI cannot do: which flows were exercised by hand, and against what.
Also documents the fork CI approval gate. The repository's fork-pr-contributor-approval policy moved from first_time_contributors (GitHub's default, which gates a contributor once and then never again) to all_external_contributors, so every run on a fork branch now waits for a maintainer to start it. A contributor who does not know that reads a build check that never appears as an orphaned run and pushes again to shake it loose, which does nothing. The new paragraph sits with the other main protection notes.
Translations: adds none. No user-visible strings — the template and CONTRIBUTING.md are both contributor-facing English documents, not part of the app.
Testing: docs only, no code paths touched. The template renders as the PR body of this PR's successors, not this one — GitHub reads it from main, so it takes effect on merge.
`CONTRIBUTING.md` step 7 has told contributors to open the PR "filling out the PR template" for as long as the file has existed, and `.github/PULL_REQUEST_TEMPLATE.md` has never existed. This adds it.
The four things step 7 names are four of the sections — summary, related issues, testing, screenshots. The fifth is **Translations**, which step 8 asks for separately and which is the one most easily skipped: a missing catalog key renders its English source rather than failing, so neither CI nor the screen says anything went wrong. The comment asks for the fallback count before and after, and says in as many words that "adds none" is an answer while silence is not.
The testing section deliberately does not ask for `npm run typecheck` / `npm test` / `npm run build` — CI runs all three on every PR, so asking a contributor to paste them back is noise. It asks for what CI cannot do: which flows were exercised by hand, and against what.
**Also documents the fork CI approval gate.** The repository's `fork-pr-contributor-approval` policy moved from `first_time_contributors` (GitHub's default, which gates a contributor once and then never again) to `all_external_contributors`, so every run on a fork branch now waits for a maintainer to start it. A contributor who does not know that reads a **build** check that never appears as an orphaned run and pushes again to shake it loose, which does nothing. The new paragraph sits with the other `main` protection notes.
**Translations:** adds none. No user-visible strings — the template and `CONTRIBUTING.md` are both contributor-facing English documents, not part of the app.
**Testing:** docs only, no code paths touched. The template renders as the PR body of this PR's successors, not this one — GitHub reads it from `main`, so it takes effect on merge.
**Merged** 2026-09-15 as coffey-labs/ihasmail@df06b8ea0423
<sub>Rebuilt from: GH Archive, git history, session transcript.</sub>
This repo is archived. You cannot comment on issues.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
CONTRIBUTING.mdstep 7 has told contributors to open the PR "filling out the PR template" for as long as the file has existed, and.github/PULL_REQUEST_TEMPLATE.mdhas never existed. This adds it.The four things step 7 names are four of the sections — summary, related issues, testing, screenshots. The fifth is Translations, which step 8 asks for separately and which is the one most easily skipped: a missing catalog key renders its English source rather than failing, so neither CI nor the screen says anything went wrong. The comment asks for the fallback count before and after, and says in as many words that "adds none" is an answer while silence is not.
The testing section deliberately does not ask for
npm run typecheck/npm test/npm run build— CI runs all three on every PR, so asking a contributor to paste them back is noise. It asks for what CI cannot do: which flows were exercised by hand, and against what.Also documents the fork CI approval gate. The repository's
fork-pr-contributor-approvalpolicy moved fromfirst_time_contributors(GitHub's default, which gates a contributor once and then never again) toall_external_contributors, so every run on a fork branch now waits for a maintainer to start it. A contributor who does not know that reads a build check that never appears as an orphaned run and pushes again to shake it loose, which does nothing. The new paragraph sits with the othermainprotection notes.Translations: adds none. No user-visible strings — the template and
CONTRIBUTING.mdare both contributor-facing English documents, not part of the app.Testing: docs only, no code paths touched. The template renders as the PR body of this PR's successors, not this one — GitHub reads it from
main, so it takes effect on merge.Merged 2026-09-15 as coffey-labs/ihasmail@df06b8ea04
Rebuilt from: GH Archive, git history, session transcript.