# Changelog

## [0.2.7]

### Added

- **`mix hex.build` is a check**, so a package that will not build — a git
  dependency, a `files:` entry that is missing — fails before the bump, commit,
  tag and push. `build` joins the values `--skip` accepts.

## [0.2.5]

### Fixed

- Hex prompts reach the terminal.

## [0.2.3]

### Added

- **`mix publish current`** — uploads the version already in `mix.exs`, without
  bumping, committing or tagging. It requires the tag to exist locally, to be on
  the remote, to point at the same commit in both, and `HEAD` to still be on it;
  the tarball is built from the working tree, so a `HEAD` past the tag would
  upload code the tag does not point at.
- **`--yes`** skips the confirmation prompt.

### Changed

- **Confirmation is asked once the checks have passed and before anything is
  written.** Declining leaves the repository untouched.

### Fixed

- A release completes its upload.

## [0.2.0]

### Added

- **A README install-snippet check**, run as a gate before anything is written.
  Configured with `plumb: [readme: ...]` in `project/0`, off by default.
  `:satisfies` requires the version being released to satisfy the requirement the
  README names; `:exact` requires the README to name `~> MAJOR.MINOR` of it.
  `:readme_path` defaults to `README.md`. The version compared against is the one
  being released, not the one in `mix.exs`.
- `readme` joins `format`, `test` and `docs` as a value `--skip` accepts.
- **`--allow-untracked`** — untracked files pass the clean-tree check. Tracked
  changes still block it; untracked files are never committed.

## [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`.**
