Jump to content

Recommended Posts

Posted

PromptWire is now at v1.9 and includes a few new features and fixes.

The list below is AI-generated...

Diagnostics can run against production
The eight read tools (pw_health, the four pw_db_* ones, pw_logs, pw_last_error, pw_clear_cache) now accept site: local | remote | both. Previously site: remote was silently ignored and queried the local database instead.

Bulk page push to remote or both
pw_pages_push accepts targets: local | remote | both. Pages go in parent-first order so newly-created parents exist before their children try to attach.

Pull pages back from production
pw_page_pull source: remote fetches a page that was edited directly in the production admin and writes it into your local sync tree, so you can re-edit and push back without touching the live admin.

Phantom diffs eliminated from pw_site_compare
Page content is now hashed deterministically across environments. Identical content produces identical hashes regardless of timezone, page-array storage order, or whether a date field has an output format set.

pw_modules_list
Lists installed modules with version, file path, and install state. Pass site: both to compare local vs production install state in one call.

pw_users_list
Lists users with id, name, email, roles, and any member_* fields. Pass includeAll: true for every non-system field on the user template.

pw_resolve
Bulk name-to-id lookup for fields, templates, pages, roles, permissions, users, or modules. Translates names into the equivalent IDs on the target site without one round trip per name.

pw_inspect_template
Like pw_get_template but each field comes back as {name, type, label}. Designed for spotting fieldgroup differences before pushing changes.

File inventories include .module files and symlinked module directories
Previously the file sync silently skipped any modules developed in symlinked sibling repos.

pw_modules_list bugfix (v1.9.1)
The default call with no classes filter was returning null class names. Caught during release validation and patched the same day.

 

  • Like 2
  • 3 months later...
Posted

Hey everyone

It's been a while since I posted an update, but PromptWire is now at v1.12.7.

That's 47 MCP tools to help you build and maintain ProcessWire sites from Cursor — pull content, edit locally, push to production, and keep local and live in sync, all in plain language with dry-run previews first.

Since the v1.9 update in April, the focus has been cross-environment reliability, schema-aware fieldgroup edits, page-asset sync, and closing workflow gaps that only show up during real deploys.

Full docs: https://www.peterknight.digital/docs/promptwire/v1/
GitHub: https://github.com/PeterKnightDigital/PromptWire-MCP

The list below is AI-generated from the changelog...

v1.10 — Page assets and cross-environment IDs

pw_page_assets
Syncs all files stored in a page's on-disk asset folder between your local dev site and production.

What this means for you:
You can push and pull page files — including MediaHub uploads and anything else stored outside a normal File/Image field — without SFTP or manual file copying. If a download page or blog post has attachments managed by a module rather than a standard field, this tool still finds them. You can compare, inventory, upload, download, or delete, in either direction, with a dry-run preview first.

Try it:
"Sync the assets for the About page to production, including any MediaHub files. Dry-run first."


Per-environment ids block in page.meta.json
Each page's sync metadata now remembers the page ID on local and on remote separately, instead of one ID that gets overwritten every time you pull.

What this means for you:
You can pull from production, edit locally, and push back without the sync system accidentally targeting the wrong page because the ID in the meta file changed. Local and remote IDs often differ between environments — PromptWire now tracks both side by side.

Try it:
"Pull the About page from production, rewrite the body to be more concise, then push the changes to both local and production."


Path-first push with ID verification
When pushing a page, PromptWire looks up the page by its URL path first, then checks that the ID still matches what the meta file expects.

What this means for you: If someone deleted and recreated a page at the same URL, or your meta file is from a different site, the push stops with a clear error instead of silently updating the wrong page. You get told exactly what went wrong and how to fix it.

Try it:
"Push the About page to production. If there's an ID mismatch, explain the error and tell me whether I should re-pull or force push."


idDriftPages in compare results
Site compare now lists every page where local and remote have different page IDs, not just a count.

What this means for you:
When comparing local vs production, you can see which pages have diverged — useful for deciding whether the difference is harmless (two fresh installs with different ID sequences) or a sign something needs fixing.

Try it:
"Compare my local site against production and list every page with ID drift between the two environments."


v1.11 — Template fieldgroup push

pw_template_fields_push
Adds, removes, or reorders fields on a template's fieldgroup, and sets per-template overrides like labels, required flags, and column widths — without changing the field definitions themselves.

What this means for you:
You can ask Cursor to add, remove, or reorder fields on a template with a dry-run preview — no clicking through the ProcessWire admin fieldgroup editor. Field definitions (type changes, new fields from scratch) are planned for a future release.

Try it:
"Add a summary field to the blog_post template on both sites. Dry-run first."


Three-tier conflict classifier
Every planned fieldgroup change is rated safe, warning, or danger before anything is written. Dangerous changes are blocked unless you explicitly force them.

What this means for you:
The agent won't accidentally remove title, break a FormBuilder template, or delete a required field without warning you first. You get a plain-language explanation of what could go wrong before you commit to the change.

Try it:
"Remove blog_date from the blog_post template. Dry-run first and flag anything dangerous before applying."


Cross-site fieldtype drift detection
When pushing fieldgroup changes to both local and production at once, PromptWire checks that each field has the same fieldtype on both sides.

What this means for you:
You won't accidentally push a change that looks fine locally but would break production because your local site uses CroppableImage3 and production still uses the standard Image fieldtype. The tool stops and tells you to fix the drift first.

Try it:
"Add an images field to the blog_post template on both local and production. Dry-run on both sites and stop if the fieldtypes don't match."


Frontend-usage scan (v1.11.1)
Before removing a field from a template, PromptWire scans your PHP templates for hardcoded references to that field name.

What this means for you:
If your contact form hardcodes a field in PHP, removing it from the fieldgroup won't silently break the form — you'll get a warning with the exact files and line numbers, so you can update the template first.

Try it:
"Remove your_email from the contact template's fieldgroup. Dry-run first and show me any template files that still reference it."


v1.12 — Deploy safety and workflow fixes

pw_site_sync no longer pushes modules by default
Full site sync now skips the site/modules folder unless you explicitly ask for it.

What this means for you: A routine "sync everything to production" deploy won't accidentally overwrite a module hotfix on the live site, or push half-finished module code from dev. When you do want to ship a plugin update, pass pushModules: true. Dry-run output tells you when module files are excluded.

Try it:
"Sync everything to production with backup and maintenance mode. Dry-run first."
Or, when shipping a module update:
"Sync everything to production including module files. Dry-run first."


pw_health.writesEnabled is now accurate
The health check no longer reports writes as disabled when they actually work.

What this means for you:
If you check site health and see writes enabled, you can trust it. The response also explains why (CLI, API key, IP allowlist, etc.).

Try it:
"Check the health of both local and production and confirm writes are enabled on each."


File sync metadata fixes (v1.12.1)
File sync now uses the correct local page ID, syncs file descriptions from YAML, and can update a description without re-uploading the file.

What this means for you:
Download page ZIPs sync reliably even when local and remote page IDs differ. You can change a file description in YAML and push just that metadata — no need to re-upload large binaries.

Try it:
"Pull the download page, update the ZIP file description in the YAML, and push the metadata change to production without re-uploading the file."


NEW* matrix placeholders (v1.12.2)
When creating a new page in YAML, repeater and matrix items can use placeholder IDs like NEW1 instead of needing real database IDs.

What this means for you:
You can scaffold a page with multiple matrix blocks in one publish-and-push pass — no more adding empty matrix items in the admin first, then pulling, then editing.

Try it:
"Create a landing page under /services/ with three page-builder matrix blocks — a hero, a text section, and a call to action. Use NEW placeholders so the items are created on publish. Dry-run first."


CLI remote-push guard (v1.12.3)
The PHP command-line tool now refuses remote targets with a clear error instead of pretending it worked.

What this means for you:
Running page:push --targets=remote from the CLI won't silently update only your local database. Use Cursor for production pushes instead.

Try it:
"Push the About page to production. Dry-run first, then apply."


pw_page_rename (v1.12.5)
Renames a page slug on local, remote, or both, and automatically moves your local sync folder to match.

What this means for you:
Change a page URL for SEO or docs restructuring by describing it in Cursor, with a dry-run preview first. If PagePathHistory is installed, old URLs redirect automatically. Your site/assets/pw-mcp/folder is renamed to match.

Try it:
"Rename /guides/old-slug/ to new-slug on both local and production. Dry-run first."


Remote API error clarity (v1.12.6)
Errors from production are now shown as the actual message — "Page not found", "Template not found" — instead of a generic connectivity error.

What this means for you:
When a push fails, you see the real reason and the agent can fix it. ProCache users also get a dedicated cache-clear target.

Try it:
"Push the new FAQ page to production. If it fails, show me the exact error and suggest a fix."
"Clear ProCache on production after deploying template changes."


Publish duplicate fix (v1.12.7)
Publishing to production now tries to update an existing page first, and only creates if the page doesn't exist.

What this means for you:
If a previous publish was interrupted, retrying won't create a duplicate pagename-1 orphan cluttering your site tree.

Try it:
"Publish the FAQ page to production. If it already exists from a failed attempt, update it instead of creating a duplicate."


Quick links

Happy to answer questions or walk through any of the workflows above.

Cheers,
P

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...