Release · v3.2.0
Semantic version engine over the full commit history
feat(versioning): semantic version engine over the full commit history
Details
Assign a semantic version to every commit since inception, and compute
the next version for any new main production release, using
conventional-commits-parser (the parser behind the conventional-
changelog / semantic-release ecosystem) + semver:
- BREAKING CHANGE / type! -> major, feat -> minor, all else -> patch;
informal pre-conventional subjects classify via a documented keyword
heuristic, and merge subjects are unwrapped ("Merge PR #N: X",
"Merge pull request #N from user/type/branch").
- The first commit seeds 1.0.0; a curated overrides.json pins the two
redesign launches (v2 promoted to /, v3 shipped) to 2.0.0 / 3.0.0 so
the semver major matches the site's own v1/v2/v3 design eras.
Everything else is automatic. HEAD resolves to v3.0.4.
- npm scripts: version:next, version:check (invariants: unique,
strictly increasing), test:changelog.
- Complete node:test suite (51 tests): unit coverage of unwrapping,
classification, bump rules, batch releases, sequences, short titles,
plus integration tests replaying the real 647-commit history.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Mn7fa3Z4bpbSAj4edBnjXA
Files changed (11)
| package-lock.json | +49 | −3 |
| package.json | +6 | −0 |
| tools/changelog/README.md | +57 | −0 |
| tools/changelog/generate.mjs | +372 | −0 |
| tools/changelog/git-history.mjs | +78 | −0 |
| tools/changelog/next-version.mjs | +76 | −0 |
| tools/changelog/overrides.json | +5 | −0 |
| tools/changelog/test/generate.test.mjs | +107 | −0 |
| tools/changelog/test/integration.test.mjs | +91 | −0 |
| tools/changelog/test/version-lib.test.mjs | +207 | −0 |
| tools/changelog/version-lib.mjs | +200 | −0 |