Contributing¶
Contribution guidelines live in CONTRIBUTING.md at the repo root.
In short:
uv sync --group devto set up.uv run pytest -qmust stay green.arxiv_digest.pystays a single file (it's pasteable into ChatGPT, a load-bearing property).- Use conventional-commit types (
fix:,feat:, ...) andBREAKING CHANGE:trailers, since GitHub release notes are generated from commits.
Commit conventions¶
Commit subjects start with a type prefix that decides where the change lands in the release notes:
feat:→ Featuresfix:→ Bug Fixesdocs:/chore:/ci:/refactor:/test:/perf:/style:/build:/release:→ Other (or omitted)
Trailers at the end of the commit body carry extra metadata:
BREAKING CHANGE:marks a breaking change (surfaced prominently, signals a major bump)Co-authored-by:credits a co-authorCloses #N/Fixes #Nlinks and auto-closes an issueSigned-off-by:certifies the DCO
See CONTRIBUTING.md for the full guide with examples.
Releases¶
Releases are automated: bump version in pyproject.toml, merge to main,
and CI tags v<version> and publishes the release. The release page combines
your curated notes (the matching ## [<version>] section of
CHANGELOG.md, with ## [Unreleased] as a fallback) with GitHub's
auto-generated full changelog (every merged PR, closed issue, and
contributor).
See CONTRIBUTING.md for the full flow and the curated-notes template.
To cut a release manually (no automation):