@vizzly-testing/honeydiff 0.14.0 → 0.15.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
@@ -7,6 +7,14 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.15.0] - 2026-08-03
11
+
12
+ ### Changed
13
+
14
+ - ✨ Improve diffs for single-block height shifts (#39)
15
+
16
+ **Full Changelog**: https://github.com/vizzly-testing/honeydiff/compare/v0.14.0...v0.15.0
17
+
10
18
  ## [0.14.0] - 2026-07-24
11
19
 
12
20
  ### Added
package/README.md CHANGED
@@ -154,6 +154,23 @@ console.log(result.perceptualScore);
154
154
  console.log(result.gmsdScore);
155
155
  ```
156
156
 
157
+ ### Align One Added Or Removed Block
158
+
159
+ ```js
160
+ let result = await compare('baseline.png', 'current.png', {
161
+ alignHeightChanges: true,
162
+ maskPath: 'artifacts/mask.png',
163
+ });
164
+ ```
165
+
166
+ This opt-in handles one exact added or removed block of rows, such as a banner,
167
+ while keeping separate changes below it visible. Ambiguous matches,
168
+ bottom-only growth, and comparisons using `maxDiffs` use the normal comparison.
169
+ It does not handle multiple blocks, partial-width movement, or fuzzy matching.
170
+ An accepted comparison temporarily uses one additional RGBA frame. SSIM and
171
+ GMSD compare the unaligned overlapping portions, and the side-by-side overlay
172
+ uses the original images.
173
+
157
174
  ### Screenshot Contrast
158
175
 
159
176
  ```js
@@ -186,6 +203,7 @@ await saveColorBlindnessSimulation(
186
203
  | --- | --- | --- |
187
204
  | `threshold` | `2.0` | CIEDE2000 Delta E threshold. Use `0` for zero perceptual tolerance. |
188
205
  | `antialiasing` | `true` | Ignore likely anti-aliased pixels. |
206
+ | `alignHeightChanges` | `false` | Align one conservatively detected added or removed block of rows. |
189
207
  | `maxDiffs` | unlimited | Stop after a maximum number of differing pixels. Capped results classify from the pixels observed before early exit, without cluster filtering. |
190
208
  | `includeDiffPixels` | `false` | Return individual differing pixel positions and intensities. |
191
209
  | `includeClusters` | `false` | Return connected regions of visual change. |
package/index.d.ts CHANGED
@@ -219,6 +219,14 @@ export interface CompareOptions {
219
219
  */
220
220
  antialiasing?: boolean;
221
221
 
222
+ /**
223
+ * Align one conservatively detected added or removed block of rows.
224
+ * Falls back to the normal same-coordinate comparison when the match is
225
+ * ambiguous or maxDiffs is set.
226
+ * @default false
227
+ */
228
+ alignHeightChanges?: boolean;
229
+
222
230
  /**
223
231
  * Maximum number of differences to detect before stopping
224
232
  * Capped comparisons classify from observed pixel evidence because early
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vizzly-testing/honeydiff",
3
- "version": "0.14.0",
3
+ "version": "0.15.0",
4
4
  "description": "High-performance image diffing for Node.js - Native bindings to Honeydiff Rust library",
5
5
  "type": "module",
6
6
  "main": "index.js",