v1.1.2
Canonical source: ad6fee3; Canonical dist/commitlore.mjs SHA-256: 96141692eaeff0d8a711fe5e54c2d26dadf9c96045847db2d8e65ed245cee62f
Upgrading no longer reports a version it did not install.
If you upgraded to 1.1.0 or 1.1.1, check this first
install.sh printed current -> v1.1.1 and left <data-root>/current pointing at the previous release. commitlore init records the hook's interpreter as <data-root>/current/dist/commitlore.mjs precisely so hooks follow upgrades — so every repository on that machine kept validating commits with the old build while the CLI reported the new one.
readlink ~/.local/share/commitlore/currentIf that names an older version than commitlore --version reports, you are affected. Re-running the installer at 1.1.2 repairs it, and commitlore doctor reports the same split in its own words:
warn commit-msg hook — commitlore.bin is version 1.0.2, but this CLI is 1.1.1 —
the hook validates every commit with 1.0.2, so anything fixed since then does not apply here
Nothing was lost and no record was corrupted. What was wrong is which build was checking them.
The cause
BSD mv follows a destination that is a symlink to a directory and moves the source into it, returning zero. The && held, the success line printed, and the temporary link sat inside the old release directory where the rename had actually gone:
~/.local/share/commitlore/current -> v1.0.2 (untouched)
~/.local/share/commitlore/v1.0.2/current.commitlore-install.53786 -> v1.1.1 (where mv put it)
A first install creates the link and cannot reach this, which is why it shipped in 1.0.2 and survived two releases. Reproducing it needs two installs, and the tests now do that.
The fix
The rename says it means rename — -h on BSD, -T on GNU, falling back to unlink-and-rename, which is not atomic but fails visibly rather than silently keeping the old build.
And the success line is printed only after reading the link back. That is the half that matters: every mechanism available here can return zero without moving anything, and that line is the only thing an operator reads before trusting an upgrade.
Also in this release
Windows CI exercises the host-detection branches that only a comment was holding. A GitHub runner has no coding agents, so those branches never ran there. A planted claude.cmd and codex.cmd make them run, and a leftover .claude.json with no executable is now required to stay notDetected — the rule 1.1.1 documented and nothing enforced.
The README lines saying host wiring needs 1.1.1 or later do not move with this release. They name the version that fixed it.
Full notes: CHANGELOG.md. Upgrading from 1.1.x is a drop-in; nothing about capture, policy or records changed.