Changelog Format
Conventional Commits to structured CHANGELOG.md
Conventional Commits
Commit messages follow Conventional Commits specification:
<type>(<scope>): <description>
[optional body]
[optional footer(s)]Types
| Type | Description | Changelog Section |
|---|---|---|
feat | New feature | ### Added |
fix | Bug fix | ### Fixed |
docs | Documentation | ### Documentation |
style | Code style (formatting) | (no changelog entry) |
refactor | Code restructuring | ### Changed |
perf | Performance improvement | ### Performance |
test | Tests | ### Testing |
chore | Maintenance | (no changelog entry) |
build | Build system | ### Build |
ci | CI/CD changes | ### CI/CD |
Scope
Module name (required for Superloom):
feat(utils): add isValidEmail()
fix(sqlite): handle connection timeout
chore(docs): update READMEBreaking Changes
Indicated by ! or BREAKING CHANGE footer:
feat(utils)!: change validate() return type
BREAKING CHANGE: validate() now returns object {valid, errors}
instead of boolean. Update calls accordingly.CHANGELOG.md Structure
# 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).
## [Unreleased]
### Added
- New features since last release
### Fixed
- Bug fixes since last release
## [1.0.2] - 2024-01-15
### Fixed
- `isEmpty()` now handles null prototype objects (@username, #123)
- Edge case in `deepClone()` for circular references
## [1.0.1] - 2024-01-10
### Documentation
- Improved JSDoc examples for `toSlug()`
- Added usage examples to README
## [1.0.0] - 2024-01-01
### Added
- Initial stable release
- All utility functions documented in ROBOTS.md
- Complete test coverageSections
Added
New features, capabilities, or integrations.
### Added
- `isValidEmail(email)` - Validate email format
- Support for ISO 8601 date strings in `parseDate()`
- TypeScript type definitionsFixed
Bug fixes and corrections.
### Fixed
- `isEmpty()` returned false for objects with null prototype (#456)
- Memory leak in connection pooling (#789)
- Race condition in async batch operationsChanged
Changes to existing functionality (not breaking).
### Changed
- Improved error messages for validation failures
- Updated internal data structures for better performance
- Refactored database query builderDeprecated
Soon-to-be-removed features (warnings added).
### Deprecated
- `oldFunction()` - Use `newFunction()` instead (will be removed in 2.0.0)
- `legacyOption` config key - Use `modernOption` insteadRemoved
Removed features (breaking changes in major versions).
### Removed
- `deprecatedFunction()` (was deprecated in 1.2.0)
- Support for Node.js < 18Security
Security-related changes.
### Security
- Fixed regex DoS vulnerability in `sanitizeInput()`
- Updated dependency `lodash` to patched versionPerformance
Performance improvements.
### Performance
- Reduced memory usage by 40% in `deepClone()`
- Improved query execution time with connection poolingDocumentation
Documentation-only changes.
### Documentation
- Added examples for complex use cases
- Fixed typos in ROBOTS.md
- Clarified configuration optionsTesting
Test-related changes.
### Testing
- Added integration tests for Postgres adapter
- Increased coverage to 95%
- Added property-based tests for edge casesBuild
Build system changes.
### Build
- Migrated to ESBuild for faster compilation
- Updated ESLint configurationCI/CD
CI/CD pipeline changes.
### CI/CD
- Added automated security scanning
- Parallelized test executionVersion Headers
Format: ## [VERSION] - YYYY-MM-DD
## [1.2.3] - 2024-01-15
## [1.2.3-beta.1] - 2024-01-10
## [Unreleased]Linking References
Link to issues and PRs:
### Fixed
- Memory leak in connection pool (#456)
- Race condition in async operations (@username, PR #789)Unreleased Section
Keep an ## [Unreleased] section at the top for changes since last release:
## [Unreleased]
### Added
- New feature in development
### Fixed
- Bug fix pending release
## [1.0.2] - 2024-01-15
...Move entries from Unreleased to version section when releasing.
Commit to Changelog Mapping
| Commit Message | CHANGELOG Entry |
|---|---|
feat(utils): add isValidEmail() | ### Added - isValidEmail(email) - Validate email format |
fix(utils): handle null in isEmpty() | ### Fixed - isEmpty() now handles null values |
docs(utils): improve examples | ### Documentation - Improved usage examples |
perf(utils): optimize loop | ### Performance - Improved execution speed |
refactor(utils): simplify logic | ### Changed - Simplified internal implementation |
test(utils): add edge cases | ### Testing - Added edge case tests |
Automation
Future consideration: Use tools like:
For now: Manual changelog maintenance ensures accuracy.
File Location
Each module has its own changelog:
src/helper-modules-core/js-helper-utils/
├── utils.js
├── package.json
├── README.md
└── CHANGELOG.md ← Here