cuke-dedup 0.4.0 → 0.5.0

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
@@ -5,6 +5,44 @@ All notable changes to CukeDedup are documented in this file. The project follow
5
5
 
6
6
  ## [Unreleased]
7
7
 
8
+ ## [0.5.0] - 2026-09-16
9
+
10
+ ### Added
11
+
12
+ - Interactive terminal reports show the tool version, selective color, a finding-count footer, and detection time. `NO_COLOR` disables ANSI styling; redirected output remains plain text.
13
+
14
+ ### Changed
15
+
16
+ - Terminal findings have a blank line after each rule heading and between findings instead of divider lines.
17
+ - `obj['name']` and `obj.name` read the same property, so two handlers that differ only in that
18
+ spelling are now recognised as the same handler. This applies to every property access in a
19
+ handler, not only assertions: `page['locator']('x')` matches `page.locator('x')`. Only a static
20
+ string literal whose decoded value is a valid identifier is folded — a dynamic key, a template
21
+ literal, or a name with no dot spelling such as `['not.resolves']` keeps its own identity.
22
+ Optional access is preserved, so `a?.['b']` matches `a?.b` and neither matches `a.b`.
23
+ **Reports can gain findings on upgrade**, because pairs that were previously distinguished only
24
+ by access spelling are now duplicates.
25
+
26
+ ### Fixed
27
+
28
+ - The regular-expression `v` flag is part of a matcher's identity. It enables Unicode set notation
29
+ and changes character-class semantics, so `/^a gauge$/v` and `/^a gauge$/` match different inputs
30
+ and are no longer reported as `normalized-matcher`. Flags that only affect how a match is executed
31
+ — `g`, `y` and `d` — are still ignored for identity, and two matchers carrying `v` still compare
32
+ as the same matcher.
33
+ - Replacing the assertion factory through a second `require()` of the same module now revokes
34
+ assertion trust. Two `require()` calls for one module return the same cached object, so
35
+ `other.expect = replacement` replaces the factory that a separate `api.expect(...)` call uses.
36
+ Previously only a local alias (`const other = api`) propagated, so handlers relying on a factory
37
+ replaced through the second binding were still reported as duplicates.
38
+ - A `for (const x of xs)` or `for (const x in xs)` head binds `x` for the loop, so a reference to
39
+ `x` in the body is the loop variable rather than an outer constant of the same name. The binding
40
+ was not registered, so the outer constant's value was substituted into the loop body. This was
41
+ wrong in both directions: identical loop handlers with different unrelated outer constants were
42
+ reported as distinct, and different loop bodies sharing an outer constant could be reported as
43
+ duplicates. `class`, `function`, `catch` and classic `for (let i = …)` bindings were already
44
+ handled.
45
+
8
46
  ## [0.4.0] - 2026-09-15
9
47
 
10
48
  ### Changed
@@ -185,6 +223,7 @@ Initial public release.
185
223
  - Native Cargo and npm distributions for eight supported targets.
186
224
  - A checksum-verified GitHub Action and an agent-oriented CukeDedup skill.
187
225
 
226
+ [0.5.0]: https://github.com/figueiredoluiz/cuke-dedup/compare/v0.4.0...v0.5.0
188
227
  [0.4.0]: https://github.com/figueiredoluiz/cuke-dedup/compare/v0.3.0...v0.4.0
189
228
  [0.3.0]: https://github.com/figueiredoluiz/cuke-dedup/compare/v0.2.1...v0.3.0
190
229
  [0.2.1]: https://github.com/figueiredoluiz/cuke-dedup/compare/v0.2.0...v0.2.1
package/README.md CHANGED
@@ -136,7 +136,7 @@ steps:
136
136
  with:
137
137
  fetch-depth: 0
138
138
  persist-credentials: false
139
- - uses: figueiredoluiz/cuke-dedup@v0.4.0
139
+ - uses: figueiredoluiz/cuke-dedup@v0.5.0
140
140
  with:
141
141
  path: .
142
142
  threshold: 5
@@ -18,7 +18,7 @@ steps:
18
18
  fetch-depth: 0
19
19
  persist-credentials: false
20
20
 
21
- - uses: figueiredoluiz/cuke-dedup@v0.4.0
21
+ - uses: figueiredoluiz/cuke-dedup@v0.5.0
22
22
  id: cuke-dedup
23
23
  with:
24
24
  path: .
package/docs/reports.md CHANGED
@@ -17,6 +17,10 @@ file-only run prints the generated paths to stdout.
17
17
  Terminal and JSONL both own stdout and cannot be selected together. JSONL can be combined with
18
18
  file reporters without contaminating the stream.
19
19
 
20
+ The terminal report shows the tool version, leaves a blank line after each rule heading and between findings, and ends with the total number of active findings and detection time. Timing covers discovery, parsing, and analysis; `--no-metrics` omits it.
21
+
22
+ Rule headings are bold cyan, paths are blue, error/warning labels are red/yellow, and footer details are gray only when stdout is a terminal. Set `NO_COLOR` to a nonempty value to disable color. Piped output and the other report formats contain no ANSI color codes.
23
+
20
24
  ## JSON and HTML
21
25
 
22
26
  JSON schema version `2` contains:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cuke-dedup",
3
- "version": "0.4.0",
3
+ "version": "0.5.0",
4
4
  "description": "Static analysis for duplicate and reusable Cucumber step definitions",
5
5
  "type": "module",
6
6
  "bin": {
@@ -47,13 +47,13 @@
47
47
  "npm/platforms/*"
48
48
  ],
49
49
  "optionalDependencies": {
50
- "cuke-dedup-darwin-arm64": "0.4.0",
51
- "cuke-dedup-darwin-x64": "0.4.0",
52
- "cuke-dedup-linux-arm64-gnu": "0.4.0",
53
- "cuke-dedup-linux-arm64-musl": "0.4.0",
54
- "cuke-dedup-linux-x64-gnu": "0.4.0",
55
- "cuke-dedup-linux-x64-musl": "0.4.0",
56
- "cuke-dedup-windows-arm64-msvc": "0.4.0",
57
- "cuke-dedup-windows-x64-msvc": "0.4.0"
50
+ "cuke-dedup-darwin-arm64": "0.5.0",
51
+ "cuke-dedup-darwin-x64": "0.5.0",
52
+ "cuke-dedup-linux-arm64-gnu": "0.5.0",
53
+ "cuke-dedup-linux-arm64-musl": "0.5.0",
54
+ "cuke-dedup-linux-x64-gnu": "0.5.0",
55
+ "cuke-dedup-linux-x64-musl": "0.5.0",
56
+ "cuke-dedup-windows-arm64-msvc": "0.5.0",
57
+ "cuke-dedup-windows-x64-msvc": "0.5.0"
58
58
  }
59
59
  }