=== Awesome Connect ===
Contributors: awesomewebsiteguys
Tags: ai, mcp, claude, workflow, staging
Requires at least: 6.3
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Edit WordPress by prompt from Claude — with every change staged, previewed, and published only when you approve it.

== Description ==

Awesome Connect links your WordPress site to Claude (or any MCP-compatible AI
client) through the Awesome Connect service. You describe what you want in
plain language; the AI proposes the change; you look at it on a real preview of
your real site; and it goes live only when you say so.

The difference from letting an AI loose on your site is the **changeset**.
Every edit an AI proposes — post content, pages, settings, theme files,
categories — is staged into a named changeset instead of being written to your
live site. A changeset can be:

* **Previewed** on a shareable link that renders your actual site with all the
  changes applied. Visitors continue to see production.
* **Diffed**, so you can read exactly which lines of which files changed.
* **Approved**, which applies everything at once.
* **Rolled back** after the fact, because approval captures a snapshot of every
  value it overwrote.

= What the AI can and cannot do =

Can, once staged and approved: create and edit posts and pages, assign
categories and tags, edit the active theme's files, change site options, upload
media, trash posts.

Cannot, ever: write outside the active theme directory, read or write
authentication keys and salts, permanently delete a post, run arbitrary SQL
(reads only, single statement, capped), run arbitrary shell commands, or exceed
the WordPress capabilities of the administrator who connected the site.

= Security =

* No password or application password is shared. Pairing generates a signing
  key that the site hands to the service over a direct server-to-server call;
  the key never passes through a browser.
* Every request is HMAC-signed, timestamped, and single-use, so a captured
  request cannot be replayed.
* Requests act as the administrator who paired the site, so WordPress's own
  capability checks apply to everything.
* PHP files are syntax-checked before they can be staged. A theme edit that
  would white-screen your site is rejected rather than saved.
* Maintenance commands (plugin updates, cache flushes) are off until you turn
  them on, and are limited to an allowlist.
* Disconnecting deletes the signing key, which instantly invalidates any
  credential the service holds.

== Installation ==

1. Upload the `awesome-connect` folder to `/wp-content/plugins/`, or install
   the ZIP through Plugins → Add New → Upload.
2. Activate the plugin.
3. Go to **Settings → Awesome Connect** and press **Connect this site**.
4. Confirm the pairing in the Awesome Connect portal while signed in.
5. Add the connector in Claude, then start asking for changes.

== Frequently Asked Questions ==

= Does anything go live without my approval? =

No. Content edits are held as overlays, new posts are created as WordPress
drafts, and theme edits live in a preview copy of your theme. Production is
written only when a changeset is approved.

= What if an approved change was wrong? =

Roll it back. Approving captures the previous value of every field, option, and
file it touched, so a rollback restores the exact prior state.

= Does this work on managed hosting where exec() is disabled? =

Yes. WP-CLI commands and PHP syntax checking need process execution and are
reported as unavailable when the host forbids it. Everything else — content,
theme editing, changesets, previews, approvals — works normally.

= Where do previews live? =

In `wp-content/upgrade/awgc-previews/`, outside your themes directory, so a
preview copy never appears under Appearance → Themes. They are removed when a
changeset is approved or discarded.

== Changelog ==

= 1.0.0 =
* First release: changesets, previews, approvals, rollback, theme sandbox,
  allowlisted WP-CLI, read-only SQL, activity log.
