Fix: Rate-limit backoff — when a provider returns HTTP 429, requests to that same endpoint are blocked for 60 seconds (or the Retry-After value) without making further network calls
Fix: Cache key normalisation — symbol arrays are now sorted before hashing, preventing duplicate cache entries when the same symbols arrive in a different order
Fix: Custom provider API key now saves correctly to plugin settings
Fix: Markets shortcode returning no data resolved (provider probe loop removed)
Fix: API key lookup now searches across all categories as a fallback
Fix: Documentation page layout — WordPress footer was appearing in the middle of the page