Files
Evil0ctal ab0829da9d chore: the community files a 20k-star repository should already have had
GitHub scored this repository's community profile at 42%: a licence and a README
and nothing else. The gap is not cosmetic - CONTRIBUTING and SECURITY are what
GitHub links to from the issue and pull-request pages, so their absence means a
first-time contributor is shown nothing.

Pull request template, bilingual. GitHub has no chooser for pull requests the way
it has for issues, so the default is both languages in one file and single
-language variants sit in .github/PULL_REQUEST_TEMPLATE/ behind ?template=.
Its checklist is the one already in the contributing guide - make fmt, lint,
type, test, npm run verify, both documentation languages, the six hygiene rules -
plus one the guide did not have: no credentials in the diff or the description.
The guide's line saying there is no template is now false, and is updated.

CONTRIBUTING.md is short on purpose. The real guide is 500 lines in
documents/{en,zh}/16-contributing.md and duplicating it here would produce two
that disagree within a month. What it does carry is the three things people
actually trip on: source is English, documentation moves in both languages, and
never a credential - the last one because v4 shipped a live session in a tracked
config file.

SECURITY.md says what is in scope and, more usefully, what is not. Platform rate
limiting and risk control are not vulnerabilities, and neither is binding to
0.0.0.0 on a public host after the documentation told you what that costs.

Code of conduct is Contributor Covenant 2.1, verbatim in both languages from the
upstream texts rather than paraphrased - the point of a standard one is that a
contributor already knows what it says.

Dependabot is monthly and grouped, not weekly and per-package. One maintainer
drowns in the defaults, and a stack of ignored bot pull requests teaches you to
skim past the security ones too.

.gitattributes normalises line endings. Nothing tracked has CRLF today; this
keeps it that way, because a \r on the end of an entrypoint shebang fails as
"not found" and names the file rather than the character.
2026-09-10 09:28:23 -07:00

2.8 KiB

What changed / 改了什么

Why / 为什么

How you verified it / 你怎么验证的

Checklist / 自查

  • make fmt — 格式化先跑,免得 CI 挂在空白字符上 / run first, so the gate does not fail on whitespace
  • make lint && make type — ruff and mypy
  • make test — unit, replay and integration
  • (cd web && npm run verify) — 动过 web/ 才需要 / only if you touched web/
  • 文档 documents/en/ 和 documents/zh/ 一起更新了 / user documentation updated in both, if a reader would act on the change (a setting, a CLI command, an endpoint, a console page, a default)
  • 没有:源码里的中日韩字符、tokens 之外的十六进制颜色、JSX 里的字面文案、TODO、.env、带真实 Cookie 的 fixture / none of: CJK in source, a hex colour outside the tokens file, literal prose in JSX, a TODO, a .env, a fixture with a real cookie
  • 没有在 diff 或描述里贴出密钥、口令、Cookie 或 API Key / no key, password, cookie or API key in the diff or in this description