Current section
Files
Jump to
Current section
Files
CHANGELOG.md
# Changelog
## [0.2.0]
### Added
- **A README install-snippet check**, run as a gate before anything is written. A
README naming `~> 0.1.1` when you publish `0.2.0` sends everyone following it to
the old release, and nothing else catches that: the code compiles, the tests
pass, the docs build.
- Two modes, configured with `plumb: [readme: ...]` in `project/0` and off by
default. `:satisfies` requires the new version to satisfy the stated requirement
and imposes no style; `:exact` requires the README to name `~> MAJOR.MINOR` of
the new version, which is what a 0.x project wants, since a minor bump there is
a breaking change. `:readme_path` defaults to `README.md`.
- `readme` joins `format`, `test` and `docs` as a value `--skip` accepts.
- **`--allow-untracked`**, which lets untracked files through the clean-tree
check. Tracked changes still block it, and untracked files are still not
committed — only `mix.exs` is. The failure message names the flag.
The check reads the version **being released**, not the one in `mix.exs`, so a
release that would leave the install instructions wrong fails before the bump
rather than after the upload.
## [0.1.0]
First release.
- **`mix publish (major | minor | patch | VERSION)`** — verifies, bumps `mix.exs`,
commits, tags, pushes, and runs `mix hex.publish`.
- **Every check runs before anything is written**, so a failed run leaves the
repository untouched: clean working tree, tag free locally, tag free on the
remote, then `mix format --check-formatted`, `mix test` and `mix docs`.
- **The tag is pushed before the upload**, so `source_ref` in the published docs
resolves as soon as they are live.
- **The version is read from a `@version` attribute or a literal `version:`** in
the project config. A version that is not a literal string is refused rather
than guessed at.
- **`--dry-run`, `--remote NAME`, `--skip CHECKS`.**