Releases: dcadolph/preen
Release list
v0.12.0
v0.11.1
Release pipeline: binaries for macOS, Linux, and Windows are built on every
tag and a Homebrew cask is published to dcadolph/homebrew-tap. Install with
brew install --cask dcadolph/tap/preen. README gains badges and install docs
for the new channels.
v0.11.0
New --punctuation always|auto|never message style option controls terminal
punctuation in commit messages. always ends the subject and every body
sentence with a period, never adds none and drops trailing periods, and auto,
the default, matches the repository's convention. Replaces --no-period, which
only covered the subject.
The eval suite checks the setting holds: the style flags case now runs with
--punctuation always and asserts every subject ends with a period.
v0.10.0
Content conservation check: preen now records the full content tree before it
touches anything and verifies at the end that committed plus still-uncommitted
content is unchanged, so a run that lost or invented a change is caught instead
of trusted. The only allowed differences are paths a sweep or drop removed or a
commit hook reformatted. On a mismatch, preen stops and restores from the
backup ref.
The eval harness asserts conservation on every case: the content tree (HEAD
plus all uncommitted changes) must be identical before and after the run.
v0.9.0
- Go CLI wrapper:
go install github.com/dcadolph/preen@latestgives a
preencommand that launches Claude Code with the skill from any
terminal. Interactive by default;--headlessrunsclaude -pwith
--yesand scoped permissions for CI and scripts. Flags after--pass
to the claude CLI verbatim. - The binary embeds the release's SKILL.md and pins the run to that exact
text, overriding any installed plugin or user-level skill copy, the same
pinning the eval harness uses. - Preflight checks fail fast before a session starts: claude on PATH,
inside a git repository, no rebase, merge, or cherry-pick in progress.
v0.8.0
- New eval cases: c7 fixup targeting (fixes land in the commits that
introduced them, messages preserved), c8 allow-no-verify standing consent,
c9 hook rejection without consent stops cleanly. - Standing consent clarified:
allow-no-verify = truein.preen.tomlis
the user's explicit permission, granted ahead of time; a hook rejection is
retried with--no-verifyand the bypass is noted in the report. - Demo: third scenario shows
--fixupfolding review fixes into the commits
that introduced them;assets/demo.gifregenerated. - Eval harness pins the skill under test: the prompt names the fixture's own
SKILL.md and declares it overriding, so a user-level skill copy or an
installed preen plugin can no longer shadow the version being evaluated.
v0.7.0
- Plan edit grammar:
merge N into M,split N,move <path> to N,
reword N: <subject>,drop <path>,reorder N,M,..., with the plan
reshown after each move. - Backup pruning:
--prune-backupslists and deletes oldpreen-backup/
refs behind a confirmation, and clean runs offer the same cleanup when old
backups exist. - Merge guard refined after eval findings: foreign merges (second parent
remote-reachable, e.g. pull merges) are never flattened and re-anchor the
base; the user's own local topic-branch merges may be linearized with
notice. The check is bound to the plan: every absorb or rewrite plan
carries aMerge check:line quoting the command output, and a plan
without one is invalid. - Eval harness fixes: skill install and agent log no longer dirty the
fixture, untracked-directory assertions use-uall, c5 now constructs
a genuinely foreign merge, logs capture the full agent trace
(stream-json), and passing cases remove their logs. - DESIGN.md added.
v0.6.0
- Fixup mode:
--fixupfolds dirty changes into the unpushed commits that
introduced them, autosquash under the hood, conflict-safe with abort and
restore. --yesskips the approval prompt for scripted and headless runs.- Eval harness:
hack/eval.shruns the skill headless against fixture repos
and asserts on git state, style conformance, and the merge and scope guards. - Limitations section in the README.
v0.5.0
- Hardened git mechanics: merge commits in an absorb range are never
flattened, diffs regenerate after every commit, mid-rebase and mid-merge
states refuse cleanly, binary files stay whole, rename pairs stay together,
empty stages stop the run, pre-staged files count as a grouping hint. - Run options:
--scope,--gate,--dry-run, with[run]and[protect]
config in.preen.tomland anallow-no-verifystanding-consent switch for
hook-blocked repos. - Undo guidance now uses
git reset --keepso work done after a run survives. - Timestamp spacing constraints: monotonic, never future, never before base.
- New banner and logo.
v0.4.0
gus is now preen.
Same tool, better name. Preening is what a bird does to put every feather back in place, which is exactly what this does to your commit history. The old repo URL redirects here automatically.
Reinstall under the new name:
/plugin marketplace add dcadolph/preen
/plugin install preen@preen