Skip to content

Latest commit

 

History

History
63 lines (47 loc) · 2.24 KB

File metadata and controls

63 lines (47 loc) · 2.24 KB

Contributing

Thanks for your interest in mado!

Development

The toolchain is pinned by rust-toolchain.toml, so a rustup installation picks up the right version on its own. just runs the same checks CI does:

just        # fmt, test and lint
just test
just lint

Changelog

CHANGELOG.md follows Keep a Changelog. A pull request that changes something a user can observe adds its entry under ## [Unreleased] in the same pull request, under Added, Changed, Fixed, Deprecated, Removed or Security.

Observable means one of:

  • what mado check reports — a new rule, a fixed false positive or negative, a changed default
  • the command line or the configuration file
  • how mado is installed or distributed
  • the Markdown parser (comrak) version, which decides how documents are parsed and therefore what gets reported

Everything else is left to the commit history: dependency updates, CI, packaging internals, refactors and tests. If a change has no entry, that is the answer to "was this observable?", not an omission.

Write entries for someone reading the release notes, not for someone reading the diff. Name the rule, say what changed about its behaviour, and reference the pull request:

- MD007: measure indentation from the end of the blockquote prefix instead of
  the start of the line (#369)

Mark a breaking change with a **Breaking:** prefix under Changed.

Releasing

  1. Rename ## [Unreleased] to ## [x.y.z] - YYYY-MM-DD, add a fresh empty ## [Unreleased] above it, and update the link definitions at the bottom of the file.
  2. Bump version in Cargo.toml and version / prev_version in the justfile, then refresh the package manifests with just update-homebrew, just update-scoop, just update-winget and just update-flake.
  3. Tag the merged commit vx.y.z and push the tag.

CD then builds the binaries and opens a draft release whose body is that version's changelog section, extracted by scripts/release/extract-changelog.sh. Review the draft and publish it.

CI checks that the section for the version in Cargo.toml exists, so a bump without a changelog section fails before it reaches the tag.