@rmyndharis/aimhooman 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/CHANGELOG.md +69 -0
- package/README.md +1 -1
- package/bin/aimhooman.mjs +318 -236
- package/package.json +1 -1
- package/rules/paths.json +65 -16
- package/rules/secrets.json +3 -3
- package/src/githooks.mjs +51 -6
- package/src/gitx.mjs +10 -0
- package/src/hook.mjs +79 -4
- package/src/report.mjs +27 -2
- package/src/scan-session.mjs +77 -1
- package/src/scan.mjs +40 -7
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,75 @@ All notable changes to this project are documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.1.8] - 2026-07-18
|
|
9
|
+
|
|
10
|
+
This release works through the findings of the real-world scenario report
|
|
11
|
+
(191 scenarios across 11 repos, 8 languages). The headline: a read-only
|
|
12
|
+
command copied from `gh`'s own docs no longer gets denied, and editing an
|
|
13
|
+
unrelated line in a file that carries a private-key header elsewhere no
|
|
14
|
+
longer blocks the commit.
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Read-only commands with unquoted braces (`gh api repos/{owner}/{repo}/pulls`,
|
|
19
|
+
`ls {owner}`, `cp x.{js,ts}`) are no longer denied as opaque commit-hiding
|
|
20
|
+
pipelines. Brace expansion is argument-level and cannot feed code into a pipe
|
|
21
|
+
sink; brace groups (`{ list; }`) and PowerShell script blocks remain opaque.
|
|
22
|
+
The opaque-deny message also no longer names a pipe when the command has none.
|
|
23
|
+
- Editing an unrelated line in a file that contains a private-key header
|
|
24
|
+
elsewhere (e.g. a PEM fixture inside a Go test string) no longer blocks the
|
|
25
|
+
commit. Content scanning is now narrowed to the changed hunks; a header added
|
|
26
|
+
in the diff still blocks, a header carried outside the diff stays silent.
|
|
27
|
+
Binary blobs keep their whole-blob secret scan.
|
|
28
|
+
- AWS's documented example secret access key (`wJalrXUtnFEMI/...EXAMPLEKEY`)
|
|
29
|
+
no longer blocks commits. Its access-key-ID pair was already excepted; the
|
|
30
|
+
secret-key half now is too. Real keys — including ones containing `EXAMPLEKEY`
|
|
31
|
+
as a substring — still block.
|
|
32
|
+
- `aimhooman <subcommand> --help` now prints usage and exits 0 instead of
|
|
33
|
+
erroring on the unknown `--help` option.
|
|
34
|
+
- The human finding report renders every remediation entry (a rule's second
|
|
35
|
+
line, e.g. "rotate the key if it was ever exposed", was silently dropped), and
|
|
36
|
+
its summary line agrees on number (`1 finding`, not `1 findings`). A scan
|
|
37
|
+
firing many findings (a vendored OpenSSL corpus can produce 99) now caps the
|
|
38
|
+
printed blocks at 20 and collapses the rest into one truncation line; the JSON
|
|
39
|
+
report stays uncapped.
|
|
40
|
+
- The `secret.private-key` message now states the match is by filename, not by
|
|
41
|
+
content, and offers renaming the file when the name is coincidental.
|
|
42
|
+
- A chained hook predecessor that resolves sibling scripts via `$(dirname "$0")`
|
|
43
|
+
— the dominant husky and vanilla `.githooks` pattern — no longer breaks after
|
|
44
|
+
`aimhooman init`. The dispatcher now sources the predecessor in a subshell,
|
|
45
|
+
which preserves the original `$0`. (Bash-only predecessors remain out of
|
|
46
|
+
scope.)
|
|
47
|
+
|
|
48
|
+
### Changed
|
|
49
|
+
|
|
50
|
+
- **Breaking:** an untracked `core.hooksPath` inside the worktree (a freshly
|
|
51
|
+
created `.husky` before its first commit, a team-local `.team-hooks`) is now
|
|
52
|
+
treated as repository content and refuses to receive a dispatcher — the next
|
|
53
|
+
`git add` would otherwise stage the dispatcher's machine-local absolute CLI,
|
|
54
|
+
Node, and PATH into history. Add the path to `.gitignore` or
|
|
55
|
+
`.git/info/exclude` to keep it local; the refusal message names this and
|
|
56
|
+
points at `aimhooman uninstall`. A `.git/hooks/` path and a tracked `.husky`
|
|
57
|
+
are unaffected.
|
|
58
|
+
- `aimhooman review` advisories now persist per path across edits on the
|
|
59
|
+
`clean` and `compliance` profiles, so editing a reviewed agent-instruction
|
|
60
|
+
file (CLAUDE.md, AGENTS.md, `.github/copilot-instructions.md`) no longer
|
|
61
|
+
re-surfaces the review message on every edit. The `strict` profile keeps the
|
|
62
|
+
exact-blob binding unchanged; reviewed deletions (tombstones) keep it in every
|
|
63
|
+
profile.
|
|
64
|
+
- The `aimhooman init` refusal message names the two remedies (unset
|
|
65
|
+
`core.hooksPath`, or exclude the worktree path) and points at
|
|
66
|
+
`aimhooman uninstall`, so a refused init is no longer a dead end.
|
|
67
|
+
|
|
68
|
+
### Performance
|
|
69
|
+
|
|
70
|
+
- A commit no longer pays a duplicate tree scan in `commit-msg` for the staged
|
|
71
|
+
tree that `pre-commit` just verified. `pre-commit` records the staged tree sha
|
|
72
|
+
after a clean, complete scan; `commit-msg` skips its ~170 ms tree scan when the
|
|
73
|
+
sha matches. The marker is self-invalidating (any index mutation changes the
|
|
74
|
+
sha) and a missing/stale/mismatched marker falls back to the full scan, so
|
|
75
|
+
this is purely an optimization. Net ~150 ms saved per commit.
|
|
76
|
+
|
|
8
77
|
## [0.1.7] - 2026-07-18
|
|
9
78
|
|
|
10
79
|
### Fixed
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
|
|
10
10
|
<p align="center">
|
|
11
11
|
<img src="https://img.shields.io/github/actions/workflow/status/rmyndharis/aimhooman/test.yml?branch=main&label=CI" alt="CI">
|
|
12
|
-
<img src="https://img.shields.io/badge/version-v0.1.
|
|
12
|
+
<img src="https://img.shields.io/badge/version-v0.1.8-blue" alt="v0.1.8">
|
|
13
13
|
<img src="https://img.shields.io/badge/node-%E2%89%A522.8-339933?logo=node.js&logoColor=white" alt="Node 22.8+">
|
|
14
14
|
<img src="https://img.shields.io/badge/dependencies-0-brightgreen" alt="Zero dependencies">
|
|
15
15
|
<img src="https://img.shields.io/badge/license-MIT-111111" alt="MIT">
|