=== PerformanceWP ===
Contributors: ini software
Tags: performance, cache, redis, object cache, image optimization
Requires at least: 5.7
Tested up to: 6.5
Requires PHP: 7.4
Stable tag: 1.0.1
License: GPLv3 or later

Lightweight WordPress performance — object cache, page cache, and image optimization.

== Description ==

PerformanceWP is a focused, no-bloat performance plugin for WordPress. It works
fully on its own and integrates with the INI WP control panel when its connector
is present.

**Object cache (Redis)**

* Installs and manages the proven Redis object-cache drop-in for you — enable,
  disable, flush, status. Detects whether Redis + the PHP redis extension are
  available; shows a wp-config snippet when the server needs connection details.
  Never overwrites another plugin's drop-in.

**Page cache**

* File-based full-page cache for anonymous visitors, served before WordPress
  loads. Logged-in users, the cart/checkout, form submissions, REST and admin are
  never cached. Sets WP_CACHE for you (with a manual fallback). Smart purge on
  content changes.
* Exclusions: by URL/path (prefix + wildcard), by post type, and by taxonomy.

**Image optimization**

* Compresses JPEG/PNG and strips metadata (EXIF/GPS/colour profiles) — typically
  30–60% smaller — with no change to how images are served. Originals are backed
  up, so it is fully reversible. New uploads are optimized automatically; a bulk
  tool (with progress + cancel) processes the existing library.
* Advanced compression (optional): offloads the heavy work to the INI WP platform
  for stronger, faster results on connected sites. Falls back to local
  compression automatically if the platform is unavailable — an upload is never
  blocked.

**INI WP platform**

* Exposes a read-only, HMAC-signed REST endpoint (`perfwp/v1/state`) so the
  control panel can show object-cache, page-cache and image-optimization status.
  Registers with the family namespace registry. Works standalone without it.

== Installation ==

1. Activate **PerformanceWP** from Plugins.
2. Open **PerformanceWP** and enable the features you want. Object caching needs a
   Redis server (provided by your host); page caching and image optimization work
   anywhere.

== Changelog ==

= 1.0.1 =
* Page cache: never cache the login / register / lost-password screens. These
  carry a per-request, single-use token (e.g. SecurityWP's ALTCHA challenge, login
  nonces); freezing one in a cache file made verification fail for every later
  visitor ("Please complete the verification challenge"). The skip keys off WP's
  login screen, so it also covers a relocated login URL set by a "hide login"
  plugin — no matter the custom slug. Added a content-level backstop too: a page
  whose HTML contains an ALTCHA widget is never stored, covering a captcha placed
  on any other form.

= 1.0.0 =
* Initial release: Redis object cache, file-based page cache with exclusions,
  image compression (upload + bulk + revert + metadata strip), and the INI WP
  platform state endpoint with the advanced-compression seam.
