---
myst:
html_meta:
"description": "Developer guide on how to track changes and contribute to the changelog using towncrier news fragments."
"keywords": "eOn changelog, towncrier, tracking changes, news fragments, pull request"
---
# Tracking changes
`towncrier` is used to automate the generation and maintenance of the
`CHANGELOG.md` file. This ensures that all changes are properly attributed and
formatted, creating a consistent and readable history of the project's
evolution.
## Usage
The core workflow revolves around creating small "news fragments" for each
change. These fragments are then collected by towncrier to build the final
changelog entry for a release.
## Creating News Fragments
For each pull request that introduces a user-facing or noteworthy change, you
must add a news fragment.
- Navigate to the fragments directory: All fragments are stored in `docs/newsfragments/`.
- Create a new file: The filename must follow the format `PR_NUMBER.KEY.TYPE`.
- PR_NUMBER: The number of the corresponding pull request. If the change doesn't
have a clear pull request, use a `+` symbol.
- TYPE: The category of the change. See the table below for available types.
- Write the fragment content: The file should contain a brief, past-tense
description of the change, formatted in Markdown. The content will be rendered
as a bullet point under the appropriate heading.
### Example
```
A fix for issue #456 is submitted in pull request #457. A new file would be
created at docs/newsfragments/457.fixed.md with the content:
Fixed a memory leak that occurred during long-running simulations.
```
## Fragment Types
The TYPE in the filename determines which section of the changelog the entry
will appear under. The following types are configured for this project:
| Type | Heading | Description |
|--------------|------------|----------------------------|
| `added` | Added | New feature |
| `changed` | Changed | Changes to features |
| `deprecated` | Deprecated | Soon to be removed |
| `removed` | Removed | Features which are gone |
| `fixed` | Fixed | Bug fixes |
| `security` | Security | Vulnerability |
| `dev` | Developer | Changes to the dev process |
## Generating the Changelog
When preparing for a new release, the towncrier command is used to assemble all
fragments into the `CHANGELOG.md` file.
Ensure your git working directory is clean before running the build command, as
`towncrier` will delete the fragment files it processes.
### Draft the Release
To preview the generated changelog notes without modifying any files, run the
build command with the `--draft` flag. This is useful for verifying that all
fragments are correctly formatted and included.
```
towncrier build --draft --version 0.1.0
```
### Build the Final Changelog
Once you are satisfied with the draft, run the command again without the `--draft`
flag. This will prepend the new release notes to `CHANGELOG.md` and delete the
consumed news fragment files.
```
towncrier build --version 0.1.0 --date "$(date -u +%Y-%m-%d)"
```