## Changelog

When the reflow CLI is executed, it will compare its version against the API server running. It will warn upon any minor version increases, and fail on any major version increases.

This tool generally follows [semantic versioning](https://semver.org/). Given a version number [MAJOR.MINOR.PATCH]: 

1. A MAJOR version increase is made when the API has changed in such a way that the CLI is now incompatible
2. A MINOR version increase is made when a backwards compatible functionality is added
3. A PATCH version increase is made when a backwards compatible fix is made.

For stability, it is always recommended to always run the latest version of the reflow CLI.

This file is also available at [https://reflow.io/changelog.html](https://reflow.io/changelog.html)

### [2.0.0] - October 29
 - [FEATURE] Nodes now register/heartbeat against a manager process that points them towards things to execute.
             Avoids run contention and enables higher parallelism, usage based pricing. Breaking change, as polling for 
             runs now unsupported
 - [FEATURE] Screenshot stability now powered by SSIM. Custom Mix of SSIM and pixeldiff used for visualistation of diff.
 - [FIX] Playwright version now pinned to avoid playwright screenshot bug  
 - [FIX] First / last actions now show post/prior screenshot respectively (previously were just a blank screenshot)  
 - [FIX] Retry loops added to page stability functions
 - [FIX] Frame injection ensured before executing findElement calls; fixing failure caused by frame too slow.
 - [FIX] Fix capturing click/drag events when viewport is scrolled
 - [PERF] Screenshots of selected nodes are only done when the custom action form is open.

### [1.4.0] - October 20
 - [FEATURE] Assertions can now be raised as either warnings or errors (previously, only errors).
             Assertions configured as warnings do not block the flow, but are highlighted when viewing results. 

### [1.3.1] - October 16
 - [FIX] Dark mode now default

### [1.3.0] - October 15
 - [FEATURE] Highlight the elements that reflow interacts with in UI
 - [FEATURE] Highlight mouse coordinates on selector / page images for mouse click or drag events
 - [FEATURE] Dark mode
 - [FIX] Completed elements now link appropriately to old test actions
 - [FIX] Exponential-Backoff retry loops around element node screenshotting to improve reliability
 - [FIX] Consolidation between `<component>:has-text(<text>)` and `<component>=<text>` selector scores.

### [1.2.0] - October 12
 - [FIX] Better support for refreshing devtools by creating a cdp session per connected one, instead of sharing a global cdp session
 - [FIX] Better support for iframe actions where frame url doesn't exactly match 
 - [FIX] Better support for click/drag by tracking mouse location statefully.
         CDP event for mouse release could, under some conditions, have incorrect X/Y params so instead "most recent" 
         mouse move event is now used
 - [FIX] Add a backup method to CDP screencast frame/frame acks. CDP only has frame/frame-ack as a best-effort API. This 
         adds an interval check so that if we know about DOM updates but haven't had a new frame since before DOM updates
         and a timeout (2.5s) the CDP screencast session is refreshed via stop/start APIs.   
 - [FEATURE] Show visual comparisons of elements after assert step.
 - [FEATURE] Never show again option for action delete confirmations.
 - [SECURITY] Enable chromium sandbox when run on local machines to reduce untrusted test execution risk.

### [1.0.9, 1.1.0, 1.1.1] - October 4
 - [PERF] Only use S3 to store non-draft images
 - [FEATURE] Visual screenshot assert: capability to asserts a given element matches the exact screenshot of an element when the test was first recorded
 - [FEATURE] In custom action selector form UI, the selected element will now show a screenshot of the captured element just below the preferred selector.  
 - [FIX] Find typescript more reliably when invoked in a non-npm directory.  

### [1.0.5, 1.0.6, 1.0.7, 1.0.8] - September 31
 - [FIX] Remove browser event memoization layer; recalculate selectors just before supplementing action details.  
 - [PERF] Ensure reflow only gets evaluated once per frame via stripping the magic symbol and replacing it with a hardcoded text constant on document root.
 - [PERF] Increase performance inside browser by memoizing events and only recalculating selectors once per event.
 - [PERF] Increase performance by only sending mouse move events when mouse is down.

### [1.0.4] - September 30
 - [FEATURE] Fill actions with a selector containing `input[type="password"]` get their text title replaced with '*'s.
 - [FEATURE] Show number of found elements and associated score for each selector in selector layout UI.
 - [FEATURE] Support for clicking / dragging elements.