5.1.0 (2026-11-15)
Bug Fixes
- annotate: keep an image target's place through an update (f1e254a)
- annotate: track only the elements this render tagged (c3645e6)
- find: drop two schema edits that made the PR diff too large (19e7701)
- find: fail
elementImageon an app surface beside a native selector (48f8821) - find: fail only the step when matching errors, and retry a failed load (d2a90fa)
- find: free a size's reference and mask when an allocation fails (7556f4a)
- find: free the gray surface when the color one can't be made (ed5d22e)
- find: install sharp as a core package when a step uses elementImage (ee237e0)
- find: keep a reason's own question or exclamation mark (03fba61)
- find: keep an out-of-scope neighbor from hiding a match (036f457)
- find: keep one-time listeners one-time when restoring them (07cb0d0)
- find: keep the other regions when one element goes stale (052ca5a)
- find: leave elements with no size out of an image search's scope (705f383)
- find: make elementImage do what its page promises (208a40c)
- find: name the
thresholdan author wrote when an image misses (c545f8a) - find: print a score below 0 as 0 in a failed step (2925322)
- find: read the other criteria's elements one at a time (a62d0a9)
- find: retry a look when the page replaces an element mid-look (9c72cd5)
- find: scope to the boxes an element and its overflow cover (b6a85d8)
- find: scope to what an element contains, and keep live image targets (24a3242)
- find: skip a size that resizing blurs into one color (2952ec5)
- find: stop wrong colors passing at another size, and fix multi-color scores (51fbe52)
- find: take turns capturing, so a recording's cursor stays hidden (b68065d)
- find: three matching fixes from the third verification round (00a2354)
- find: use an example image in the schema that works when copied (cbb6443)
- find: word image failures like every other failure (2e17e3e)
- goTo: name every criterion a waitUntil.find looked for (4b32a11)
- runtime: fail a load when the install lock never frees (6d22950), closes #896
- runtime: give SIGKILL its own grace before releasing the lock (42c22b9), closes #896
- runtime: hold the install lock until a timed-out npm exits (e2a1ae7), closes #896
- runtime: resolve a relative cache dir to an absolute path (b751f3a), closes #897
- runtime: serialize installs into one cache through the runtime lock (a0df91b), closes #896
- runtime: wait for an install in progress before loading a cache hit (c0304d0), closes #896
- runtime: wait for an install in progress with autoInstall false too (f493e2a), closes #896
- schema: reject
elementImageinsidefind.type(bab15fe) - screenshot: blur where a tracked blur was during the capture (e5d7a65)
- screenshot: burn live annotate blurs into the capture (c7ed6c6)
- screenshot: center crop targets so fixed headers don't cover them (47c3fcd), closes #145
- screenshot: crop same-scale size mismatches instead of resampling (39b9d0d), closes #719
- screenshot: fail when the page changes between capture and blur read (66a81c9)
- screenshot: keep the stronger live blur where blurs overlap (9788976)
- screenshot: note every frame a live blur is drawn in during a capture (e28a0f2)
- screenshot: say plainly which live blurs couldn't be read (0c2ef93)
- security: bound the inline-attribute regex and hash temp names with SHA-256 (2fba60c), closes #948