=== Speedix === Contributors: wpcoretools Tags: profiler, performance, debugging, optimization, hooks Requires at least: 6.3 Tested up to: 6.9 Requires PHP: 7.4 Stable tag: 1.8.3 License: GPLv2 or later License URI: https://www.gnu.org/licenses/gpl-2.0.html Pinpoint exactly which plugins and hooks slow your site. Real-time PHP profiling with visual dashboard, health scores, and zero guesswork. == Description == Speedix helps you identify exactly what's slowing down your WordPress site. Unlike generic speed tests that only show page load time, Speedix reveals the *why* behind slow performance - down to individual hooks and the plugins responsible. = Profiling & Analysis = * **Hook-Level Timing** - Microsecond precision for every WordPress hook * **Plugin Attribution** - Trace slow hooks to exact plugins using PHP Reflection * **Source Breakdown** - See Core vs Theme vs Plugin time split * **WooCommerce Integration** - Dedicated tab with checkout/cart/product categorization = Visual Dashboard = * **Health Score (0-100)** - At-a-glance site health rating * **Hotspots Detection** - Top 5 slowest hooks highlighted * **Timeline Charts** - Performance trends over time * **Pie Chart Breakdown** - Visual plugin impact comparison = Smart Controls = * **Sample Rate** - Profile 10-100% of requests * **Threshold Filtering** - Only log hooks exceeding X ms * **Auto-Calibration** - Smart threshold detection for your server * **Quick Presets** - Safe, Balanced, Detailed one-click modes = Production-Ready = * **Minimal Overhead** - Nanosecond timing, reflection caching * **Overload Protection** - Auto-pauses if overhead spikes, resumes after 1 hour * **Per-Page Profiling** - Whitelist specific pages to monitor * **Auto-Cleanup** - Data retention from 1 hour to 7 days = WooCommerce Compatible = * **HPOS Support** - Works with High-Performance Order Storage (Custom Order Tables) * **Cart & Checkout Blocks** - Compatible with new block-based checkout * **Dedicated WooCommerce Tab** - Hook categories: Checkout, Cart, Products, Orders, Shipping, Payment * **Checkout Metrics** - Payment gateways, shipping methods, coupons, session size = Export & Reporting = * **CSV Export** - Hook and plugin data for spreadsheets * **JSON Export** - Structured data for developers * **Markdown Export** - Ready-to-share performance reports = Why Speedix? = * **Not Another Speed Test** - Unlike GTmetrix or PageSpeed, Speedix profiles PHP execution on your server, showing exactly which code is slow * **Production Safe** - Sample rate and overload protection let you monitor live sites without risk * **Modern PHP Support** - Works with PHP 7.4 through 8.4 * **100% Free** - All features included, no pro version, no upsells = Privacy First = * **Local Only** - All data stored in your WordPress database * **No External Calls** - Zero data sent to third-party servers * **No Tracking** - No analytics, telemetry, or usage collection * **GDPR Compliant** - No personal data collected == Installation == 1. Upload the plugin files to `/wp-content/plugins/speedix/` 2. Activate the plugin through the 'Plugins' menu in WordPress 3. Go to Tools > Speedix 4. Complete the Quick Setup wizard (recommended) or configure manually 5. Enable profiling and visit your site to start collecting data == Frequently Asked Questions == = Will this slow down my site? = Minimal impact when configured properly. Use "Safe Mode" preset (10% sampling, 2ms threshold) for production sites. The plugin includes overload protection that automatically pauses profiling if overhead exceeds safe limits. = Will this break my site? = No. Speedix uses read-only profiling with built-in safety limits. If overhead gets too high, it automatically pauses for 1 hour. You can also disable at any time from Settings. = How is this different from debugging plugins? = Debugging plugins show detailed info about the current request. Speedix takes a different approach - it aggregates performance data over time to identify persistent slow spots and trends across many page loads. = Why am I seeing 0 hooks collected? = Check in order: 1. **Profiling enabled?** - Toggle must be ON in Settings 2. **Page whitelisted?** - Only pages in "Pages to Profile" are tracked 3. **Sample rate?** - At 25%, only 1 in 4 requests profile. Set to 100% for testing 4. **Threshold too high?** - Set to 0ms temporarily to capture all hooks 5. **Correct page?** - Ensure you're visiting a whitelisted page = Why is the plugin breakdown empty? = Enable "Identify plugin sources" in Settings. Without this, hooks are captured but not attributed to specific plugins. = What does "unknown" plugin mean? = Appears when callbacks can't be traced to source files. Common causes: anonymous closures, dynamically generated functions, or code outside plugin/theme directories. = Can I leave it running on production? = Yes, especially in Safe Mode. Sample rate ensures only 10-25% of requests are profiled, and overload protection prevents performance impact. = How long is data kept? = Default: 24 hours. Configurable from 1 hour to 7 days. Data is automatically cleaned up via WordPress cron. = Does it work with page caching? = The profiler measures uncached PHP execution. Cached pages bypass PHP entirely and won't appear in profiles - this is expected behavior since cached pages are already optimized. = Can I use this on multisite? = Yes. Each site maintains its own profiling data. Network admins can access the dashboard on any site. == Screenshots == 1. Dashboard Simple View - Health Score, Response Time, and Top Time Consumers at a glance 2. Dashboard Advanced View - Full metrics with plugin breakdown and trend charts 3. By Hook tab - Hook timing table with plugin attribution badges and expandable callbacks 4. WooCommerce tab - Hook categories for Checkout, Cart, Products with page timing cards 5. Per-Page tab - Individual page performance with response time history 6. Settings page - Quick Presets, profiling controls, and auto-calibration 7. Response Time History - Click any metric to view historical trends 8. External API History - Track slow external HTTP calls with detailed breakdown == Changelog == = 1.8.3 = * Added: WooCommerce checkout complexity metrics (payment gateways, shipping methods, coupons, session size) * Added: Clickable Assets stat opens modal showing all enqueued JS/CSS files with sizes * Improved: Autoload options modal shows "By Source" tab grouping options by plugin * Improved: Health score penalty for excessive assets (>25, >40, >60 files) = 1.8.2 = * Added: Asset tracking - counts enqueued JS/CSS files per page * Added: Assets metric in System Status showing JS/CSS file counts = 1.8.1 = * Added: OPcache status history tracking (hit rate, memory usage, script count) * Added: External API call logging with host/path breakdown * Added: Clickable API rows open history graph * Fixed: Dashboard shows average HTTP time per request = 1.8.0 = * Added: WordPress admin dashboard widget with health score and slowest plugins * Added: Color-coded metrics based on performance thresholds * Fixed: Plugin Check warnings for direct database queries = 1.7.3 = * Fixed: WooCommerce page timing cards now show response times * Optimized: Database schema reduced storage by ~70% * Improved: Faster queries with composite primary keys = 1.7.2 = * Added: Incomplete request detection - tracks timed out or interrupted requests * Added: Warning indicator shown on pages with incomplete requests * Added: Responses data included in JSON/Markdown exports = 1.7.0 = * Added: Smart calibration with Apply and Apply & Save buttons * Added: Calibration suggests sample rate based on hook count * Added: DB and HTTP time breakdown in Response Time card * Improved: Quick Presets in Sampling section * Improved: Response Time card centered layout = 1.6.0 = * Changed: Dashboard is default view when opening plugin * Added: Copy to clipboard for hook names * Added: Plugin file path on hover over badges * Added: Dark mode support (follows system preference) * Fixed: All PHPCS security warnings = 1.5.9 = * Fixed: By Hook tab shows each hook once (aggregates all plugins) * Fixed: Hotspots only shows hooks with avg >= 1ms * Improved: Cleaner hook list without duplicates = 1.5.8 = * Improved: Simplified dashboard with 3 summary cards * Improved: Timeline uses 5-minute intervals * Improved: Only render active tab data * Added: Tooltip help icons on cards * Added: Overload Protection status in Settings [See full changelog in plugin folder] == Upgrade Notice == = 1.8.3 = New WooCommerce checkout metrics and clickable Assets modal. Recommended for WooCommerce sites. = 1.8.0 = New dashboard widget shows health score and slowest plugins at a glance. = 1.7.3 = Important fix for WooCommerce tab page timing. Database optimization reduces storage. = 1.7.0 = Smart calibration, DB/HTTP breakdown, improved dashboard. Recommended update.