Removed the bundled Google SDK; the GA4 Data API is now called directly over REST.
Hybrid fetch model: recent posts fetched live with a narrow publish-date window and fail-fast timeout; older posts refreshed in the background via WP-Cron. Page loads never block on the slow API.
Added a full settings page (credentials, property ID, live-fetch window, cache duration, label, metric, event, post types, display mode).
Added nonce protection to the editor meta box and escaped all output.
Added a Diagnostics screen (Settings → GA Views Diagnostics) and an optional debug-logging setting to troubleshoot unexpected counts.
Clamp the GA4 query start date to the API’s minimum so posts published before GA4 existed no longer fail.
Prefixed all functions/classes/meta and added internationalization.