=== SpeeSeek ===
Contributors: danialpg
Tags: performance, speed, database, optimization, diagnostics
Requires at least: 6.2
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Advise-only speed diagnostic scanner that finds the hidden, server-side things slowing your WordPress site and explains exactly how to fix each one.

== Description ==

**SpeeSeek looks at your site from the inside** and surfaces the hidden, server-side
things that hurt real-world user experience — the things external tools like
Lighthouse or PageSpeed can't see. It explains every finding in plain language as
**What &rarr; Why it hurts &rarr; How to fix**, with a copy-paste-ready snippet.

SpeeSeek is **advise-only**. It is *not* an optimizer and it never changes your data
or your settings. It diagnoses; you decide. There is **zero front-end footprint** —
nothing is added to your site's public pages, nothing is added to autoload, and scans
run on demand from the admin only.

= Why it's different =

* Reads what external tools can't: autoloaded options bloat, cron backlog, database
  overhead, object cache / OPcache / page-cache configuration, page-builder weight.
* Its own transparent **Site Weight** grade across four categories — Server Response,
  Database Weight, Request Load, and Maintenance Health — instead of a single opaque
  Google score.
* Lightweight by design: read-only, on-demand, and it refuses to be the bloat it detects.

= It remembers, so it's a keeper — not a one-time scan =

* **History &amp; regression alerts** — every completed scan is snapshotted, so SpeeSeek
  can tell you *what changed since last time* and which plugin or update caused it.
* **Per-plugin cost attribution** — the "who's the culprit" finder attributes autoloaded
  weight back to the plugins that created it.
* **Consequence translator** — not "1.2 MB of autoload" but "~16 ms added to every page
  load," with the math shown under an Advanced toggle. Never fake precision.
* A "✓ what we verified is healthy" panel, so you can trust the verdict.

= Scanners included =

* Environment (PHP version / EOL, memory limit)
* Autoloaded Options — size + top offenders loaded on every request *(signature finding)*
* Cost by Plugin, Plugin Footprint
* Database Weight (expired transients, orphaned metadata, table overhead)
* Post Revisions (page-builder aware), Media Library, Comment Hygiene
* Scheduled Tasks (overdue / duplicate cron, cron-on-page-load)
* Caching (persistent object cache, OPcache, page cache)
* WooCommerce (Action Scheduler backlog, stale sessions — when active)
* Page builders: generic builder weight plus a dedicated Elementor scanner
* Jet / Crocoblock (custom-table weight, SmartFilters indexer, widget packs)

= Optional deep profiler =

On demand, SpeeSeek can install a temporary, removable must-use drop-in to *measure*
(rather than estimate) real server render time, database time, query count, peak memory,
front-end asset weight, and outbound HTTP during a single anonymous loopback request to
your own home page. It is removed when you're done.

= Translations =

Ships ready in English, German (de_DE), and Persian (fa_IR), with full RTL support for
Persian. The German and Persian translations are AI-drafted and welcome a native-speaker
review pass.

== External services ==

SpeeSeek connects to external services in two clearly-scoped cases. No personal data and
no content from your site is ever transmitted.

1. **WordPress.org API (api.wordpress.org)** — The "External HTTP" scanner performs a
   single test request to `https://api.wordpress.org/core/stable-check/1.0/` to measure
   your server's real outbound latency to a known-good endpoint. Only a standard HTTP GET
   is made; no data about your site is sent. This request only happens while you run a
   scan in the admin, and it respects the `WP_HTTP_BLOCK_EXTERNAL` constant.
   WordPress.org terms: https://wordpress.org/about/privacy/ .

2. **SpeeSeek Benchmark service (opt-in, OFF by default)** — If — and only if — you
   explicitly enable "Compare against other sites" in SpeeSeek's settings, the plugin
   sends a small set of **anonymous numeric "weight" metrics** (for example: total
   autoloaded bytes, query count, database overhead size) to the SpeeSeek Benchmark API
   so it can show you where your site sits relative to aggregate percentile bands of
   other sites. No URLs, no site identity, no personal data, and no content are sent —
   only whitelisted numbers. This happens at most once per day, and never while the
   setting is disabled.
   Endpoint: `https://benchmark-backend-cf.leoworking96.workers.dev` (hosted on
   Cloudflare Workers). Service privacy &amp; terms:
   https://benchmark-backend-cf.leoworking96.workers.dev/privacy .
   Cloudflare's terms: https://www.cloudflare.com/website-terms/ .

== Source code and build ==

SpeeSeek ships its full, human-readable source. The admin dashboard is written in
React/JSX and lives in the `src/` directory, bundled inside the plugin alongside
the compiled assets in `build/`. The PHP in `includes/` has no build step.

The compiled `build/` assets are generated with the official WordPress build
tooling (`@wordpress/scripts`, which wraps webpack/Babel). To regenerate them
from source:

`npm install`
`npm run build:assets`

That compiles `src/` into `build/`. No other build step is required.

== Installation ==

1. In your WordPress admin, go to **Plugins &rarr; Add New &rarr; Upload Plugin** and
   upload the SpeeSeek zip, or install it directly from the Plugin Directory.
2. Activate the plugin through the **Plugins** screen.
3. Open **SpeeSeek** in the admin menu and click **Run scan**.

No configuration is required. Scheduled scans, an email digest, report export (HTML/CSV),
and the optional benchmark comparison can be enabled from SpeeSeek's Settings tab.

== Frequently Asked Questions ==

= Does SpeeSeek change my site or my settings? =

No. SpeeSeek is strictly advise-only and read-only. It reports issues and gives you the
snippet to fix them yourself — it never edits your data, options, or files.

= Will it slow down my site? =

No. SpeeSeek adds nothing to your public front end and nothing to autoload. Scans run on
demand in the admin. It is built to never become the bloat it detects.

= Does it send my data anywhere? =

Only if you opt in to the benchmark comparison, and even then only anonymous numbers
(never URLs, content, or personal data). See the "External services" section above.

= How is this different from PageSpeed / Lighthouse? =

Those measure your site from the outside (the browser). SpeeSeek measures from the
inside — autoload bloat, cron, database overhead, cache config, plugin cost — which is
exactly where most server-side slowness actually comes from.

= Does it support page builders like Elementor or Jet/Crocoblock? =

Yes. There are dedicated scanners for Elementor settings and for Jet/Crocoblock custom
tables, SmartFilters, and widget packs, plus generic page-builder weight detection.

== Screenshots ==

1. The Site Weight grade with a plain-language headline, how your site compares to sites your size, the Site Weight trend across scans, and one-click PDF/CSV export.
2. Category gauges, "nothing got worse since your last scan" regression check, and findings filterable by severity — each explaining why it hurts and how to fix it.
3. Findings with copy-paste-ready fix snippets: emoji script, wp-embed, asset optimization, slow outbound calls, and page-builder weight.
4. The "verified healthy" panel and the Deep Profile: one real measured page load — server render time, database time per plugin, and measured front-end weight.

== Changelog ==

= 1.0.0 =
* First stable release in the WordPress.org Plugin Directory.

= 0.9.2 =
* The profiler now resolves root-relative asset URLs through `site_url()` (the
  same way WordPress prints them) instead of concatenating onto `ABSPATH`, so
  measured asset weights are correct on subdirectory installs.

= 0.9.1 =
* The printable report export now routes its stylesheet through the WordPress
  styles API (`wp_add_inline_style`) and its print button through
  `wp_print_inline_script_tag()` instead of raw `<style>`/`onclick` markup.

= 0.9.0 =
* Reports now lead with a "Start here" recommendation that highlights your single
  highest-impact fix and groups related issues. When a deep profile has been run,
  a banner reconciles the resting score against the measured render time. Page-builder
  layout weight is now split into live page layout vs. duplicate copies stored in
  post revisions, so the number reflects what's really there.

= 0.8.0 =
* Internationalization: English, German (de_DE), and Persian (fa_IR, full RTL).

= 0.7.0 =
* New Jet / Crocoblock scanner: custom-table weight, SmartFilters indexer status,
  widget-pack footprint, and listing-grid query cost. Added a Jet summary card.

= 0.6.0 =
* Dedicated Elementor scanner (CSS print method, asset-loading experiments, saved
  templates, Font Awesome 4 shim). Profiler panel now shows measured asset weight and
  outbound calls. Benchmark client ships with a hosted endpoint (opt-in).

= 0.5.0 =
* Fixed autoload measurement for WordPress 6.6+ autoload values. Measured loopback audit
  of front-end assets and outbound HTTP. Benchmark backend scaffolded.

= 0.4.0 =
* Report export (HTML / CSV), scheduled scans with an email digest, new Assets / External
  HTTP / Page Builder scanners, and a live benchmark client.

= 0.3.0 =
* Deep profiler (measured render/DB/query/memory), host awareness, "what you fixed" loop,
  and percentile benchmarking.

= 0.2.0 =
* History snapshots, regression detection, per-plugin cost attribution, the consequence
  translator, breadth scanners, and a "what's healthy" panel.

= 0.1.0 =
* Initial release: Site Weight grade and the core diagnostic scanners.

== Upgrade Notice ==

= 0.9.0 =
Reports now lead with a "Start here" fix, reconcile the score against a measured profile, and split page-builder weight into live vs. revision copies.

= 0.8.0 =
SpeeSeek is now available in English, German, and Persian (RTL).
