Releases: leeovery/mint
Releases · leeovery/mint
Release list
v0.0.11
✨ Added
--dry-run --autostashnow previews a release against a dirty working tree — the real stash is skipped entirely and the clean-tree gate is bypassed for that combination, so the repo remains byte-for-byte unchanged while the preview still completes.
🔧 Changed
- A dirty-tree dry run without
--autostashstill aborts at the clean-tree gate — the bypass is conditioned on--dry-runand--autostashtogether, never--dry-runalone.
v0.0.10
🐛 Fixed
- AI failure output now shows Claude's actual message (e.g. "Prompt is too long") in the failure block instead of a bare generic error.
- Notes failure messages collapse to a single concise phrase instead of rendering the full nested error chain.
v0.0.9
🔧 Changed
- Commits whose every changed file matches a
diff_excludeglob now open the editor for a human-written message instead of failing with "nothing to commit" — the excluded files still get committed. - The empty-staging preflight no longer consults
diff_exclude— it answers only whethergit commitwould create a commit, leaving exclusion logic solely to the AI diff step.
v0.0.8
🔧 Changed
.mint.tomltrimmed to active settings only, directing readers tomint setupfor the full key reference — removes the commented-out defaults that duplicated the built-in documentation.- Added a
pre_taghook that runs the full build/vet/test/lint suite before the irreversible tag-and-push, replacing the missing pre-release CI gate. diff_excludeupdated to also ignore.githubtrees in release-notes diffs.
v0.0.7
✨ Added
mint setupnow emits a self-contained overview of every mint command, the commit model, and the AI transport contract — the agent no longer needs to consult the README.
🔧 Changed
- The setup guide no longer refers the configuring agent to mint's README; step 2 of the procedure routes it to the guide's own sections, which are version-matched to the installed binary.
v0.0.6
✨ Added
mint setup— a new command that prints a version-matched AI-assisted configuration guide to stdout, usable from any directory without a git repo.- Config-metadata source of truth (
config.MetadataRows()) — a single in-binary, drift-tested table of every config key, its level, compiled default, and description, enforced against the schema by a bijection test that fails the build on any mismatch. internal/setupguidepackage — renders the setup guide from the config-metadata SoT, with stable section markers (<!-- mint:section:NAME -->) so structural tests key on anchors rather than prose.internal/configtestpackage — a shared test-support seam for indexing the config-metadata SoT by(level, key)pair, consumed by bothconfig_testandsetupguide_test.
🔧 Changed
mint initnow writes a minimal.mint.toml— an empty body plus a short header pointing to the GitHub docs andmint setup— instead of the previous commented template with every key shown at its default.- The README's Configuration section now documents every key in per-key reference tables and describes the minimal generated file rather than reproducing the old annotated template inline.
DefaultMaxDiffLinesis now an exported constant so the config-metadata SoT and other derivation sites can reference it without re-typing the literal.
v0.0.5
✨ Added
- New
--source releaseoption formint release regenerate— reads the existing published GitHub release body verbatim, making it easy to backfill aCHANGELOG.mdfrom releases you already have.
🔧 Changed
--reuseand--freshflags replaced by a single--source <fresh|tag|release>flag —--source tagis the equivalent of the old--reuse, andfreshremains the default.- Source and target axes are now fully independent — any source (
fresh,tag,release) can write any target (release,changelog,both); the old constraint that--reuseimplied--target releaseis removed. --targetis now required with-yfor every source, not justfresh; no source has a safe default surface to guess unattended.- A skipped version with no recorded changelog section is silently omitted from the rebuilt file rather than aborting the entire batch — fixes a bug where one body-less version in a
--allrun discarded every other regenerated section. - Post-push publish failure heal message updated to
regenerate --source tag.
v0.0.4
✨ Added
mint regeneratenow displays the generated notes before the review gate — previously the "Use these notes?" prompt could appear over a blank preview.
🔧 Changed
- The plan block no longer adds a double blank line when it follows the brand header directly — the extra gap is collapsed to a single blank.
🗑️ Removed
- Deleted the internal design handoff document and skills lock file, which were development artifacts no longer needed in the repository.
v0.0.3
✨ Added
- Per-verb
ai_commandandtimeoutoverrides — set[release].ai_command,[release].timeout,[commit].ai_command, or[commit].timeoutto repoint either key for one verb without affecting the other. timeoutconfig key (integer seconds) — sets the per-attempt AI deadline at the shared top level or per verb;0disables the deadline entirely for operators running slow or local models.
🔧 Changed
- Default
ai_commandis nowclaude -p --model sonnet— the model is pinned so zero-config behaviour is predictable regardless of which model your Claude CLI defaults to. - Per-attempt AI deadline defaults to 60 seconds and is now configurable; a timeout is fatal and never retried (the single retry covers bad content only).
- Setting
timeout = 0disables the per-attempt deadline entirely — the AI call runs unbounded, which is a deliberate operator choice that overrides mint's "fail loud, never hang" posture. diff_excludedefault in the scaffold is now shown as[]with a descriptive comment; mint's own workflow artifact directories are excluded in the project's own.mint.toml.
v0.0.2
✨ Added
- Confirm the version and bump before any work begins — a real release now opens with a "Release v1.3.2 → v1.4.0 (minor)?" gate that aborts cleanly with nothing to unwind.
- Single-keypress review gates — press y/n/e/r to decide with no Enter, Esc to decline, and Ctrl-C to abort cleanly.
- The release-notes cache is shared across runs and offers to reuse a matching note from a prior dry run, so an unchanged diff skips the AI on the next real run.
🔧 Changed
- The release notes prompt now asks for concise one-line bullets per change with no TL;DR, so changelogs read at a glance.
- Dry runs are pure previews — they show the version, plan, and notes, prompt for nothing, and end with a clear "no changes made" line.
- Review gates now spell out their consequence — accepting the final release gate reads "[y] release", not a vague "accept & proceed".
- Pretty output was redesigned flush-left with a dim gutter for notes, a one-line hotkey bar, animated activity spinners, and per-stage narration of what each step did.
- The note cache now lives under your user cache directory instead of a
.mint/cachefolder inside the repo, so no project is polluted with an in-repo cache. - A spinner now animates while the AI writes a commit message, with a clear note when it falls back to your editor.
🐛 Fixed
- Failures no longer print twice when stdout and stderr share a terminal.
- A first-time release with an empty cache no longer prints a misleading "diff changed since dry-run preview" notice.
- The AI prompt now repeats the output contract after the diff, stopping the model from prefacing notes or commit messages with stray narration.