https://github.com/barredterra/pretty_release_notes
Turn GitHub's auto-generated release notes into human-readable sentences.
https://github.com/barredterra/pretty_release_notes
ai github openai release-automation release-notes
Last synced: 5 months ago
JSON representation
Turn GitHub's auto-generated release notes into human-readable sentences.
- Host: GitHub
- URL: https://github.com/barredterra/pretty_release_notes
- Owner: barredterra
- License: mit
- Created: 2024-10-23T12:45:42.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-07-15T21:08:27.000Z (7 months ago)
- Last Synced: 2025-07-16T18:43:03.338Z (7 months ago)
- Topics: ai, github, openai, release-automation, release-notes
- Language: Python
- Homepage:
- Size: 269 KB
- Stars: 12
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Turn GitHub's auto-generated release notes into human-readable sentences.
Converts this:

Into this:

Notice that:
- Commits that are inconsequential to the user are excluded (chore, ci, refactor).
- Each PR is converted into a precise sentence, based on it's title, description, diff and any linked issue.
- Each sentence has a consistent style and tense.
- Human authors and reviewers are credited, not bots.
UX:
https://github.com/user-attachments/assets/5d1dd513-b643-4f02-aac9-ba9c3f16d043
> [!WARNING]
> The prompt is geared towards [ERPNext](https://github.com/frappe/erpnext) and the [Frappe Framework](https://github.com/frappe/frappe). If you want to use this for different projects, please fork and adjust to your liking.
## Configuration
Copy `.env.example` to `.env` and fill in your GitHub token and OpenAI API key.
You can choose a database type by setting the `DB_TYPE` environment variable. Currently supported are `csv` and `sqlite`.
## Usage
```bash
source env/bin/activate
python main.py --help
python main.py erpnext v15.38.4 # using DEFAULT_OWNER from .env
python main.py --owner alyf-de banking v0.0.1
```
Example output:
```markdown
---- Original ----
## What's Changed
* fix: list view and form status not same for purchase order (backport #43690) (backport #43692) by @mergify in https://github.com/frappe/erpnext/pull/43706
**Full Changelog**: https://github.com/frappe/erpnext/compare/v15.38.3...v15.38.4
---- Modified ----
## What's Changed
* Removes unnecessary decimal precision checks for _per_received_ and _per_billed_ fields in **Purchase Order**, so the list view status and form status remain consistent. https://github.com/frappe/erpnext/pull/43706
**Full Changelog**: https://github.com/frappe/erpnext/compare/v15.38.3...v15.38.4
**Authors**: @rohitwaghchaure
```
## Authors and Reviewers
The authors and reviewers of the PRs are added to the release notes.
- An author who reviewed or merged their own PR or backport is not a reviewer.
- A non-author who reviewed or merged someone else's PR is a reviewer.
- The author of the original PR is also the author of the backport.
## Backports
We try to use the same message for backports as for the original PR. For this, we look for `(backport #)` _at the end_ of the PR title and check if we have existing messages for that PR in our database. If we do, we use the message for the original PR. If we don't, we create a new message for the backport.
This means that backports of backports are currently not supported / will get a new message. To get the same message, PRs must be a direct backport of the original PR.
## Testing
```bash
pytest tests/*
```