CHANGELOG.md is now automatically generated using @semantic-release/changelog plugin. The changelog is updated automatically when semantic-release creates a new version based on conventional commit messages.
- Conventional Commits: Developers make commits following the Conventional Commits specification
- Semantic Release: On push to
mainbranch, semantic-release:- Analyzes commit messages
- Determines version bump (patch/minor/major)
- Generates CHANGELOG.md from commits
- Creates GitHub release
- Commits CHANGELOG.md back to repository
The changelog is generated from commit messages:
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
Types that appear in changelog:
feat:→ New Features sectionfix:→ Bug Fixes sectionperf:→ Performance Improvements sectionrefactor:→ Code Refactoring sectiondocs:→ Documentation section (if significant)BREAKING CHANGE:→ Breaking Changes section
The automatically generated changelog includes:
- New Features - From
feat:commits - Bug Fixes - From
fix:commits - Performance Improvements - From
perf:commits - Code Refactoring - From
refactor:commits - Breaking Changes - From commits with
BREAKING CHANGE:footer
{
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
[
"@semantic-release/changelog",
{
"changelogFile": "CHANGELOG.md",
"changelogTitle": "# Changelog\n\n..."
}
],
"@semantic-release/github",
[
"@semantic-release/git",
{
"assets": ["CHANGELOG.md", "package.json", "package-lock.json"],
"message": "chore(release): ${nextRelease.version} [skip ci]\n\n${nextRelease.notes}"
}
]
]
}To preview the changelog without creating a release:
npm run changelogThis uses conventional-changelog to generate/update CHANGELOG.md from existing commits.
-
Make commits with conventional commit format:
git commit -m "feat(api): add new endpoint for equipment status" git commit -m "fix(ui): resolve rendering issue in dashboard"
-
Push to main branch:
git push origin main
-
GitHub Actions automatically:
- Runs semantic-release
- Generates CHANGELOG.md
- Creates GitHub release
- Commits CHANGELOG.md back to repo
To create a release manually (for testing or dry-run):
# Dry run (preview what would be released)
npx semantic-release --dry-run
# Actual release
npm run releaseThe generated changelog follows this format:
# Changelog
All notable changes to this project will be documented in this file.
## [1.2.0] - 2025-11-16
### Added
- New feature description from commit message
### Changed
- Change description from commit message
### Fixed
- Bug fix description from commit message
### Breaking Changes
- Breaking change description from commit message
## [1.1.0] - 2025-11-15
### Added
- Previous release featuresGood commit messages:
feat(api): add equipment status endpoint
fix(ui): resolve dashboard rendering issue
perf(db): optimize inventory query performance
docs: update API documentationBetter commit messages (with body):
feat(api): add equipment status endpoint
Adds new GET /api/v1/equipment/{id}/status endpoint
that returns real-time equipment status including
battery level, location, and maintenance schedule.
Closes #123Breaking changes:
feat(api): change equipment endpoint response format
BREAKING CHANGE: Equipment status endpoint now returns
nested object structure instead of flat structure.
Migration guide available in docs/migration.md.- Use present tense: "add feature" not "added feature"
- Use imperative mood: "fix bug" not "fixes bug"
- First line should be concise: 50-72 characters
- Add body for context: Explain what and why
- Reference issues: "Closes #123" or "Fixes #456"
The existing CHANGELOG.md with manual format:
## Warehouse Operational Assistant 0.1.0 (16 Nov 2025)
### New Features
- Feature descriptionThe changelog will be automatically generated in standard format:
## [0.1.0] - 2025-11-16
### Added
- Feature descriptionNote: The existing manual changelog entries will be preserved. New entries will be automatically added above them.
- Check commit format: Ensure commits follow conventional format
- Check semantic-release logs: Review GitHub Actions logs
- Verify plugin configuration: Ensure
@semantic-release/changelogis in.releaserc.json - Check branch: Semantic-release only runs on
mainbranch
To see what would be generated:
# Install conventional-changelog-cli if needed
npm install -g conventional-changelog-cli
# Generate changelog from commits
conventional-changelog -p conventionalcommits -i CHANGELOG.md -sIf you need to manually update the changelog:
- Edit
CHANGELOG.mddirectly - Commit with
docs: update changelogmessage - Note: Manual edits may be overwritten on next release
The changelog is automatically generated in the release workflow:
- name: Run semantic-release
run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}This will:
- Analyze commits since last release
- Determine version bump
- Generate CHANGELOG.md
- Create GitHub release
- Commit CHANGELOG.md back to repository
- ✅ No manual changelog maintenance
- ✅ Consistent format across all releases
- ✅ Based on actual commit messages
- ✅ Always up-to-date
- ✅ Standardized commit format
- ✅ Automatic version bumping
- ✅ Clear release notes
- ✅ Better project history
- ✅ Works with GitHub releases
- ✅ CI/CD automation
- ✅ Version tagging
- ✅ Release notes generation