v0.41.0
Redis Object Cache (v1)
WPMgr 0.41.0 ships a full per-site Redis object cache: the persistent-cache layer that accelerates everything the page cache cannot serve (logged-in users, admin, carts and checkout, REST responses, repeated database queries).
Highlights
- Per-site connection config from the dashboard — TCP host/port, unix socket, database number, ACL username/password, TLS, and a key prefix that scopes all keys on a shared Redis instance.
- Test-before-enable handshake — the agent dials the candidate config without persisting it, probes phpredis version and extension capabilities (igbinary, lzf/lz4/zstd, TLS), reads the eviction policy with guidance, and returns a structured result. Enable is blocked until a test passes for the current config.
- Credential security by design — the password is age-encrypted (X25519) at rest in the control plane, delivered over the signed command channel, and stored only in a 0600 private PHP file on the site. It never appears in API responses, logs, SSE payloads, test results, heartbeats, or backups (the config file is excluded from file archives by name, with a regression test).
- Two-level safe degradation — a boot failure swaps in a pure in-memory array cache so the site never goes down; mid-request Redis errors become misses with one reconnect attempt, then degrade for the rest of the request.
- Live status + analytics — connected/degraded/down pill streaming over SSE, plus 7-day charts for hit ratio, used memory, command latency, and ops/sec with a 90-day daily downsample.
- Shared-Redis safety — flush operations scope to the site's own prefixed keys only; persistent connections use an explicit identity to prevent pooled-socket database confusion.
- Full WP cache API — add/get/set/replace/delete, multi-key variants, flush_group, flush_runtime, wp_cache_supports, and switch_to_blog for multisite.
v1 topology is single instance or unix socket (with TLS); Sentinel and Cluster are reserved in the config schema for a later release.
Also in this release
- Test-suite integrity fix — the agent phpunit suite had been silently truncating in CI (a drop-in ABSPATH guard killed the process with exit 0 mid-suite); the full 1414-test suite now runs in CI, and the repair surfaced and fixed a hidden bug where the page-cache URL purge reported 0 removed files.
- Object-cache stats ingest hardening: attacker-controlled gauge fields are clamped to their column ranges so forged values cannot drop a site's own stats rows.
Migration m68 applies automatically on API boot. Requires agent 0.41.0.
What's Changed
- feat: Redis object cache v1 — clean-room phpredis engine + live status + analytics (v0.41.0) by @mosamlife in #35
Full Changelog: v0.40.0...v0.41.0