Add site health check to detect blocked REST API and short-circuit optimization when unavailable. (1762)
Allow extensions to opt in to using the web-vitals attribution build via the od_use_web_vitals_attribution_build filter. (1759)
Disambiguate XPaths for children of BODY with id, class, or role attributes. (1797)
Eliminate varying URL Metrics by logged-in state and discontinue disabling optimization by default for admins. (1788)
Improve test coverage for Optimization Detective. (1817)
Introduce OD_Tag_Visitor_Context::track_tag() method as alternative for returning true in tag visitor callback. (1821)
Omit element node index in XPaths up to children of BODY. (1790)
Skip visiting tags in the Admin Bar when optimizing a page. (1816)
Bug Fixes
Ensure optimization is performed in the wp-env local environment and log debug messages to console when disabled. (1822)
Skip visiting any tags inside of NOSCRIPT elements. (1783)
Documentation
Move Optimization Detective docs into README.md. (1763)
0.9.0
Enhancements
Add fetchpriority=high to IMG when it is the LCP element on desktop and mobile with other viewport groups empty. (1723)
Improve debugging stored URL Metrics in Optimization Detective. (1656)
Incorporate page state into ETag computation. (1722)
Mark existing URL Metrics as stale when a new tag visitor is registered. (1705)
Set development mode to ‘plugin’ in the dev environment and allow pages to be optimized when admin is logged-in (when in plugin dev mode). (1700)
Add get_xpath_elements_map() helper methods to OD_URL_Metric_Group_Collection and OD_URL_Metric_Group, and add get_all_element_max_intersection_ratios/get_element_max_intersection_ratio methods to OD_URL_Metric_Group. (1654)
Add get_breadcrumbs() method to OD_HTML_Tag_Processor. (1707)
Add get_sample_size() and get_freshness_ttl() methods to OD_URL_Metric_Group. (1697)
Expose onTTFB, onFCP, onLCP, onINP, and onCLS from web-vitals.js to extension JS modules via args their initialize functions. (1697)
Bug Fixes
Prevent submitting URL Metric if viewport size changed. (1712)
Fix construction of XPath expressions for implicitly closed paragraphs. (1707)
0.8.0
Enhancements
Serve unminified scripts when SCRIPT_DEBUG is enabled. (1643)
Send gathered URL Metric data when the page is hidden/unloaded as opposed to once the page has loaded; this enables the ability to track layout shifts and INP scores over the life of the page. (1373)
Introduce client-side extensions in the form of script modules which are loaded when the detection logic runs. (1373)
Add an od_init action for extensions to load their code. (1373)
Introduce OD_Element class and improve PHP API. (1585)
Add group collection helper methods to get the first/last groups. (1602)
Bug Fixes
Fix Optimization Detective compatibility with WooCommerce when Coming Soon page is served. (1565)
Fix storage of URL Metric when plain non-pretty permalinks are enabled. (1574)
Fix logic for seeking during optimization loop to prevent emitting seek() notices. (1376)
0.4.0
Enhancements
Avoid passing positional parameters in Optimization Detective. (1338)
Send preload links via HTTP Link headers in addition to LINK tags. (1323)
0.3.1
Enhancements
Log URL Metrics group collection to console when debugging is enabled (WP_DEBUG is true). (1295)
Bug Fixes
Include non-intersecting elements in URL Metrics to fix lazy-load optimization. (1293)
0.3.0
The image optimization features have been split out into a new dependent plugin called Image Prioritizer, which also now optimizes image lazy-loading. (1088)
0.2.0
Enhancements
Add optimization_detective_disabled query var to disable behavior. (1193)
Facilitate embedding Optimization Detective in other plugins/themes. (1185)
Use PHP 7.2 features in Optimization Detective. (1162)
Improve overall code quality with stricter static analysis checks. (775)