Changelog Generator
About Changelog Generator
The Changelog Generator transforms your Git commit messages into professional, well-organized release notes. By following the Conventional Commits format, you can automate the creation of changelogs that clearly communicate what changed in each release.
Why Maintain a Changelog?
- Communicate changes: Help users understand what's new, fixed, or broken
- Track history: Maintain a human-readable record of all notable changes
- Aid migration: Document breaking changes and upgrade paths
- Build trust: Show users you care about transparency and documentation
- Save time: Generate changelogs automatically instead of writing them manually
How It Works
The tool parses commit messages and automatically categorizes them:
Automatic Categories
- Breaking Changes: Commits with ! or BREAKING CHANGE (highest priority)
- Features: Commits starting with feat:
- Bug Fixes: Commits starting with fix:
- Documentation: Commits starting with docs:
- Performance: Commits starting with perf:
- Refactoring: Commits starting with refactor:
- Testing: Commits starting with test:
- Build: Commits starting with build:
- CI/CD: Commits starting with ci:
- Other: Any commits that don't match conventional format
Input Format
Enter one commit message per line in Conventional Commits format:
feat(auth): add social login support
fix(api): handle timeout errors gracefully
docs: update installation guide
perf: reduce database queries in dashboard
feat!: remove support for Node 12
Output Format
The tool generates a markdown changelog entry:
# [1.2.0] - 2024-01-15
## Breaking Changes
- (auth): remove support for Node 12
## Features
- (auth): add social login support
## Bug Fixes
- (api): handle timeout errors gracefully
## Documentation
- update installation guide
## Performance
- reduce database queries in dashboard
Getting Commit Messages
You can extract commit messages from Git using these commands:
All commits since last tag:
git log $(git describe --tags --abbrev=0)..HEAD --oneline --pretty=format:"%s"
All commits between two tags:
git log v1.0.0..v1.1.0 --oneline --pretty=format:"%s"
All commits since a specific date:
git log --since="2024-01-01" --oneline --pretty=format:"%s"
Using GitHub CLI:
gh pr list --state merged --limit 100 --json title --jq '.[].title'
Best Practices
- One changelog per project: Keep all versions in a single CHANGELOG.md file
- Newest first: Put the latest version at the top
- Keep a version: Never delete old changelog entries
- Date format: Use YYYY-MM-DD format (ISO 8601)
- Group by type: Organize changes by category (Features, Bug Fixes, etc.)
- Link to commits: Include links to GitHub commits or PRs when possible
- Highlight breaking changes: Always put breaking changes first
- Be concise: Use clear, simple language that users can understand
Example Complete CHANGELOG.md
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [1.2.0] - 2024-01-15
### Breaking Changes
- remove support for Node 12 and below
### Features
- (auth): add OAuth2 social login
- (api): implement GraphQL endpoint
- (ui): add dark mode support
### Bug Fixes
- (api): fix memory leak in WebSocket connections
- (auth): correct token expiration handling
### Performance
- (database): optimize user query with indexes
## [1.1.0] - 2023-12-01
### Features
- (api): add pagination to user list endpoint
- (docs): add interactive API playground
### Bug Fixes
- (ui): fix responsive layout on mobile devices
## [1.0.0] - 2023-10-15
### Features
- Initial release
- User authentication
- RESTful API
- Admin dashboard
Keep a Changelog Principles
This tool follows the Keep a Changelog principles:
- Changelogs are for humans, not machines
- One entry per version
- Group similar changes
- Versions and sections are linkable
- Latest version comes first
- Release date of each version is displayed
Automation Ideas
- CI/CD Integration: Generate changelog automatically on release
- Git Hooks: Update changelog in pre-release hooks
- GitHub Actions: Auto-generate and commit changelog on version tags
- Release Notes: Use generated changelog for GitHub/GitLab releases
Tools That Work With This
- standard-version: Automated versioning and changelog generation
- semantic-release: Fully automated version management and package publishing
- conventional-changelog: Generate changelogs from git metadata
- commitizen: Help developers write conventional commits
Related Tools
- Commit Message Linter - Validate commit format before generating changelog
- Semantic Version Calculator - Determine version numbers
- Git Command Generator - Extract commits from Git
- Markdown Converter - Convert changelog to other formats
- Documentation Outline Generator - Organize documentation