How the Changelog Generator Builds the File
AnyTool Changelog Generator models a CHANGELOG.md in the Keep a Changelog 1.1.0 convention: a title and intro, a persistent [Unreleased] section, and a list of released versions. Each version carries a semantic version number, an ISO 8601 date (defaulting to today, supplied by the page so the engine stays clock-free), an optional “yanked” flag, and the six canonical change groups — Added, Changed, Deprecated, Removed, Fixed and Security. A pure, unit-testable assembly function emits the header, the Unreleased block, then every version newest-first as “## [x.y.z] - YYYY-MM-DD”, rendering only the change groups that contain entries and appending “[YANKED]” to pulled releases. Empty groups and empty versions collapse cleanly, and the output is a single, valid Markdown document.
- Keep a Changelog 1.1.0 structure: header, [Unreleased], then dated releases newest-first
- Six change groups per version — Added, Changed, Deprecated, Removed, Fixed, Security
- Empty change groups are omitted; pulled releases get a [YANKED] marker
- The engine is clock-free — the page supplies every date (today by default)
- All assembly is pure client-side JavaScript — no server round-trip
