Keep a Changelog (CHANGELOG.md)
MarkdownBest for: Open source projects and versioned libraries
The de facto standard changelog template. A single CHANGELOG.md at the repo root, newest release first, changes grouped into six fixed categories.
# Changelog
All notable changes to this project are documented in this file.
The format follows Keep a Changelog (keepachangelog.com), and this
project adheres to Semantic Versioning (semver.org).
## [Unreleased]
### Added
- Work that has merged but is not yet in a tagged release.
## [2.4.0] - 2026-07-10
### Added
- Bulk invite: import teammates from a CSV file.
### Changed
- Search results now reflect edits within seconds.
### Deprecated
- The v1 export endpoint. It will be removed in 3.0.0.
### Fixed
- Webhook deliveries that timed out are now retried instead of
being dropped.
### Security
- Upgraded the session library to patch CVE-2026-1234.
## [2.3.1] - 2026-06-28
### Fixed
- Invite screen no longer shows placeholder copy for empty teams.
[Unreleased]: https://github.com/org/repo/compare/v2.4.0...HEAD
[2.4.0]: https://github.com/org/repo/compare/v2.3.1...v2.4.0
[2.3.1]: https://github.com/org/repo/compare/v2.3.0...v2.3.1How to use it well
- Keep an Unreleased section at the top so merged-but-unshipped work has a home and release day is a rename, not archaeology.
- Stick to the six standard categories (Added, Changed, Deprecated, Removed, Fixed, Security) and delete the ones a release does not use.
- Write one line per change for humans. A changelog is not a copy of git log; squash-merge noise does not belong here.
- Use YYYY-MM-DD dates and link each version heading to a compare view so readers can see the actual diff.