Skip to content

v3.8.0 — EMCP Cloud

Choose a tag to compare

@wpacademy wpacademy released this 03 Aug 19:59
· 218 commits to main since this release

Added

  • EMCP Cloud. Connect your site to an EMCP Cloud account (OAuth) to back up your Sandbox blocks, widgets, and PHP snippets, sync them across every connected site, and publish them to a community/Pro Marketplace. A new Marketplace admin tab browses published artifacts — with search and type/category/access filters and each listing's author (avatar, name, and Verified badge, linking to the author's public profile) — and installs them as drafts to review. One-click Save to Cloud buttons on the Sandbox back up an artifact, and a Publish to Marketplace button — enabled only after an artifact is backed up — opens the website's submission page for it in a new tab.
  • Settings Sync (paid Cloud). Copy your EMCP settings — tool toggles, active modules, compact-tool mode, and behaviour preferences — between connected sites from the Connection tab. Secrets, API keys, and this site's own connection are never synced.
  • Live Sandbox ↔ Cloud sync controls. Each Sandbox artifact now shows its real cloud state at a glance — Save to Cloud, Update cloud (when you've edited it locally since the last backup), or Saved — plus Publish to Marketplace, View on Marketplace, and Push update to re-publish an already-listed artifact for re-review. A page-level Refresh cloud status button resyncs every artifact against the cloud and clears a stale "Saved" if an artifact was deleted from the cloud elsewhere.
  • Forminator integration (Pro). Two dispatcher tools (forminator-read / forminator-write) list forms with their shortcodes, read fields and submissions, and delete a submission (confirm-gated). Verified live against Forminator 1.56.2.
  • MCP Log admin tab. Records recent MCP requests (tool, status, duration, request id) so a connector failure can be matched to a server-side outcome; with WP_DEBUG on it also captures the underlying error.
  • get-page-structure summary / max_depth. Return a shallow, workable tree (containers + child counts) for very large pages instead of timing out.
  • build-page dry_run. Validate a declarative structure and report the element count and any coerced/skipped widgets without writing a page. Pages over ~150 elements now include an explicit split/timeout warning.
  • sideload-image / add-stock-image convert_webp. Set false to skip the synchronous WebP conversion when it is timing out on shared hosting (via a new emcp_tools_optimize_attachment filter).

Changed

  • Connection page reorganised into MCP / Cloud / 3rd Party Services tabs. The EMCP Cloud connect + settings-sync section moved into its own Cloud tab; History moved to the app bar next to Changelog.
  • Sandbox storage consolidated into wp-content/emcp-sandbox. Compiled Sandbox artifacts — PHP snippets, custom widgets, custom blocks, and PHP theme templates — now live in one dedicated wp-content/emcp-sandbox directory instead of being scattered under wp-content/uploads/emcp-widgets. Existing sites are migrated automatically and safely on update: active artifacts keep working with no rebuild (the move preserves each file's integrity hash). Still isolated from your theme, core, and other plugins, and guarded from direct web access.
  • Dashboard promo banners + tidy-up. The dashboard gains Cloud and Pro promo banners (the Pro banner shows a "You're on the Pro plan" note when your site is licensed) and a permanent full-width top strip. The MCP Log moved into the app bar next to History, and "Affiliate Program" is now just "Affiliate".
  • Marketplace card thumbnails now show the artifact's full 1200×630 screenshot, uncropped, on both the website and the plugin's Marketplace page, and the screenshot is used as the listing's social/OG image.

Fixed

  • Spurious "Reconnect needed" for EMCP Cloud. Two site requests refreshing the Cloud OAuth token at the same moment could poison the connection — the provider rotates the refresh token on every refresh, so the losing request got an invalid-grant and overwrote the freshly-rotated token — forcing a manual reconnect roughly every hour. Token refresh is now serialized and rotation-race-safe, and a transient network blip no longer flips the connection to "Reconnect needed".
  • OAuth-connected MCP clients disconnecting mid-chat. When an OAuth access token was refreshed during a busy chat, the plugin immediately revoked the previous access token, so any in-flight tool call still carrying it got a 401 and the client dropped the connection. The previous access token is now left to expire on its own short lifetime (standard OAuth behaviour), so refreshes are seamless. App Password connections were never affected.
  • Stale-domain connectors now fail loudly. If an MCP connector is left pointed at an old domain after a site URL change, the endpoint returns an explicit Site URL mismatch error (HTTP 421) with the correct URL instead of a generic "tool execution error".
  • Intermittent "connector isn't responding" on shared LiteSpeed hosting. The MCP route now sends Cache-Control: no-store + X-LiteSpeed-Cache-Control: no-cache + X-Accel-Buffering: no so LiteSpeed/QUIC never caches or buffers MCP responses. A new readme FAQ + docs/LITESPEED_MCP.md cover cache-exclusion and PHP-limit tuning, and an opt-in EMCP_TOOLS_PROFILE_REGISTRATION constant logs per-request registration timing.