fixyoursecret 0.4.2 → 0.4.3

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/CHANGELOG.md CHANGED
@@ -2,6 +2,22 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file.
4
4
 
5
+ ## [0.4.3] - 2026-03-26
6
+
7
+ ### Improved
8
+ - Further reduced residual generic noise on 500 quick corpus runs.
9
+ - Better path-segment detection for `test/spec/examples/docs` style locations.
10
+ - Added targeted generic suppressions for tutorial/audio/base64 and known non-secret artifacts.
11
+ - Strengthened placeholder suppression in non-production contexts.
12
+ - 500 quick tuning snapshot improved from 51 findings to 38 findings.
13
+
14
+ ### CI/Release
15
+ - Release workflow now publishes a quality summary in job summary and uploads release-quality artifacts.
16
+ - Added release artifact bundle:
17
+ - `docs/tuning/report-500.json`
18
+ - `docs/tuning/false-positive-review-500.md`
19
+ - `docs/tuning/release-quality-summary.json`
20
+
5
21
  ## [0.4.2] - 2026-03-26
6
22
 
7
23
  ### Fixed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fixyoursecret",
3
- "version": "0.4.2",
3
+ "version": "0.4.3",
4
4
  "description": "CLI tool to detect leaked secrets, frontend exposure, and generate safe fixes.",
5
5
  "type": "module",
6
6
  "bin": {
package/utils/verifier.js CHANGED
@@ -75,8 +75,14 @@ export function shouldSkipAsNonSecret(match, snippet = "", filePath = "", hints
75
75
  const lowerPath = filePath.toLowerCase();
76
76
  const value = String(match.value || "");
77
77
  const isNonProdPath = (
78
- ["/test/", "/tests/", "/__tests__/", "/fixtures/", "/docs/", "/examples/", "/spec/"]
79
- .some((segment) => lowerPath.includes(segment)) ||
78
+ hasPathSegment(lowerPath, "test") ||
79
+ hasPathSegment(lowerPath, "tests") ||
80
+ hasPathSegment(lowerPath, "__tests__") ||
81
+ hasPathSegment(lowerPath, "fixtures") ||
82
+ hasPathSegment(lowerPath, "docs") ||
83
+ hasPathSegment(lowerPath, "examples") ||
84
+ hasPathSegment(lowerPath, "spec") ||
85
+ hasPathSegment(lowerPath, "specs") ||
80
86
  /\.test\.[a-z0-9]+$/i.test(lowerPath) ||
81
87
  /\.spec\.[a-z0-9]+$/i.test(lowerPath)
82
88
  );
@@ -98,21 +104,22 @@ export function shouldSkipAsNonSecret(match, snippet = "", filePath = "", hints
98
104
  if (
99
105
  match.rule === "generic-high-entropy" &&
100
106
  [
101
- "/test/",
102
- "/tests/",
103
- "/__tests__/",
104
- "/fixtures/",
105
- "/docs/",
106
- "/spec/",
107
- "/bench/",
108
- "/benchmark/",
109
- "/examples/",
110
- "/migrations/",
111
- "/generated/",
112
- "/api-client/",
113
- "/fonts/",
114
- "/vendor/"
115
- ].some((segment) => lowerPath.includes(segment))
107
+ "test",
108
+ "tests",
109
+ "__tests__",
110
+ "fixtures",
111
+ "docs",
112
+ "spec",
113
+ "specs",
114
+ "bench",
115
+ "benchmark",
116
+ "examples",
117
+ "migrations",
118
+ "generated",
119
+ "api-client",
120
+ "fonts",
121
+ "vendor"
122
+ ].some((segment) => hasPathSegment(lowerPath, segment))
116
123
  ) {
117
124
  return true;
118
125
  }
@@ -145,7 +152,11 @@ export function shouldSkipAsNonSecret(match, snippet = "", filePath = "", hints
145
152
  "apps.googleusercontent.com",
146
153
  "downloaded-logs-",
147
154
  "webkiformboundary",
148
- "gpt-4o-realtime-preview"
155
+ "gpt-4o-realtime-preview",
156
+ "audio-16khz-32kbitrate",
157
+ "toolchain-profile.zip",
158
+ "gocspx-",
159
+ "useandom-"
149
160
  ];
150
161
  if (genericNoiseHints.some((hint) => lowerSnippet.includes(hint))) return true;
151
162
  }
@@ -182,3 +193,9 @@ function hasDiversityScore(value, minClasses) {
182
193
  ].filter(Boolean).length;
183
194
  return classes >= minClasses;
184
195
  }
196
+
197
+ function hasPathSegment(filePath, segment) {
198
+ const escaped = segment.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
199
+ const re = new RegExp(`(?:^|/)${escaped}(?:/|$)`);
200
+ return re.test(filePath);
201
+ }