Security + polish release from a deep multi-axis audit.
Security
- Placeholder exclusion is now case-insensitive and broader. A real secret could previously be written into
.env.Sample/.env.Template/.env.EXAMPLE(case variants) or.env.dist/.env.tmpl/.env.defaults(conventions that were not on the denylist) — files that are typically git-tracked, so the next commit would publish the secret. Discovery now applies an authoritative case-insensitive filter. - New values containing an embedded newline/CR are now refused (prevented a
.envline-injection; the JSON path was already safe). - Backups use
install -m 600(no brief looser-mode window).
Fixed
- Docs: "symlinks"→"copies", full exclusion list documented, "git worktrees" reworded,
awkdocumented as required, em-dashes removed from--help/log output. - CI: ShellCheck action pinned to a tag.
Install
brew install yangsi7/tap/rotate
# or
curl -fsSL https://raw.githubusercontent.com/yangsi7/rotate-env/v0.1.3/install.sh | bash