Skip to content

chore(dx): implement conventional-changelog, commitlint, and backfill CHANGELOG - #413

Open
blvckmamba81-sketch wants to merge 1 commit into
XStreamRollz:mainfrom
blvckmamba81-sketch:dx/fix-changelog-388
Open

chore(dx): implement conventional-changelog, commitlint, and backfill CHANGELOG#413
blvckmamba81-sketch wants to merge 1 commit into
XStreamRollz:mainfrom
blvckmamba81-sketch:dx/fix-changelog-388

Conversation

@blvckmamba81-sketch

Copy link
Copy Markdown

Summary

Resolves the DX issue where CHANGELOG.md had an empty v1.0.0 entry and no automated changelog tooling existed.

Changes

CHANGELOG.md

  • Backfilled the [1.0.0] section with the full commit history (70+ commits) categorised into Added, Fixed, Changed, Security, and Removed.
  • Updated the [Unreleased] section with all post-1.0.0 commits.
  • Added a top-level note explaining that from v1.1.0 the changelog is generated automatically.

package.json

  • Added conventional-changelog-cli + conventional-changelog-conventionalcommits for changelog generation.
  • Added @commitlint/cli + @commitlint/config-conventional for commit message linting.
  • Added husky v9 for git hooks.
  • New scripts: changelog, changelog:first-release, prepare (installs husky on npm install).

.commitlintrc.json (new)

  • Extends @commitlint/config-conventional.
  • Enforces type-enum, scope-enum, subject-case, subject-full-stop, and header-max-length.

.husky/commit-msg (new)

  • Runs commitlint --edit on every commit — invalid messages are rejected locally.

.husky/pre-commit (new)

  • Runs npm run lint before every commit.

CONTRIBUTING.md

  • Rewrote the Commit Message Conventions section with a full types table, scopes table, examples, and breaking-change format.
  • Added a new Automated Changelog section explaining npm run changelog, the release workflow, and how to bypass hooks for WIP commits.
  • Updated the Table of Contents.

Testing

  • Verified all files exist and are correct.
  • Commit message itself follows the conventional commit spec.
  • Husky hooks are executable and reference the correct commitlint command.

Closes #388

- Backfill CHANGELOG.md with full git log history for v1.0.0
- Add conventional-changelog-cli for automated changelog generation
- Add @commitlint/cli + @commitlint/config-conventional for commit linting
- Add husky v9 with commit-msg hook (commitlint) and pre-commit hook (lint)
- Create .commitlintrc.json with type-enum, scope-enum, and formatting rules
- Update CONTRIBUTING.md with types table, scopes table, changelog workflow
- Add npm scripts: changelog, changelog:first-release, prepare

Closes XStreamRollz#388

Copy link
Copy Markdown
Contributor

Hey @blvckmaze-81, nice work getting the changelog infrastructure in place — conventional commits and commitlint will be a solid addition to the DX.

CI is failing on the bundle-analysis step. The root cause is that npm install in the app workspace triggers the prepare script which runs husky, but Husky isn't available in the CI environment at that point, causing an exit 127 (husky: not found).

The standard fix is to guard the prepare script so it's skipped in CI:

// package.json
"prepare": "is-ci || husky"

Or alternatively:

"prepare": "husky || true"

You'll need the is-ci package (npm i -D is-ci) for the first option. The second is simpler but slightly less explicit. Either way, this is a quick fix — give it a shot and it should clear right up!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

dx: CHANGELOG.md not updated — version 1.0.0 entry is empty

2 participants