๐ Bug Fixes
- cache:
wp_cache_infohandler now races a 5 ssetTimeoutso a stalledgetCacheStats()call can never block the MCP response indefinitely; throws/timeouts are caught and return{ caching_enabled: false, status: "unavailable", error: "โฆ" }instead of hanging. - performance:
wp_performance_benchmarkhandler now races a 5 ssetTimeout; any exception frombenchmarkPerformance()is caught and returns a graceful{ success: false, status: "unavailable", โฆ }payload instead of hanging. - encoding:
ComposedRequestManager.makeRequestnow usesnew TextDecoder('utf-8').decode(await response.arrayBuffer())for non-JSON response bodies, completing the D8 UTF-8 fix across all HTTP client paths (previously onlyWordPressClienterror and fallback paths were covered).
๐งช Tests
- cache: added 3 regression tests for
wp_cache_infoโ graceful error response ongetCacheStatsthrow, timing guard with no backend, timing guard with successful stats. - performance: fixed
toolWrappermock to use a plain function (immune tomockReset: true) and added 2 regression tests forwp_performance_benchmarkโ never-hang timing guard and graceful error onbenchmarkPerformancethrow.