Releases

Release notes

Generated from the plugin’s own changelog, so this page and the plugin can never disagree. Newest first.

0.54.0-0.54.1
  • Set Yoast's site identity without a code snippet. The new update_yoast_global tool sets who publishes the site (company or person, name, logo, contact details), the website name, the social profiles and the default schema type for each content type. Yoast builds its Organization and WebSite schema from these settings.
  • Only those settings can be changed. Archive and indexing switches, such as author archives, are refused by name and stay in Yoast's own settings. If one field in a request is refused, nothing is written.
  • No silent replacements. Values Yoast would quietly replace (an unknown schema type, an empty company name, a malformed social link) are refused up front, and every write is read back so anything Yoast stored differently is reported.
  • get_yoast_global returns more: the website name, the organization details and the schema types, plus the list of fields that can be written.
  • New documentation pages for Integrations, Design Systems and Quick Edit, and the AI's help answers now link to them.
0.53.0
  • Pages land at the address you asked for. When a slug is already taken (often by an image you just uploaded under the same title), create_page and update_post now stop and say what holds it. Before, the page was published at an address like /sleep-apnea-3/ and nothing was said. Pass reclaim_slug: true to move an image off the slug (the image file keeps its address), or allow_slug_change: true to accept the new address.
  • Embeds in posts are kept. YouTube, Vimeo, Visme, Google Maps and similar embeds in post content survive the save, and administrators can embed any address. Lazy-loaded embeds are saved with their real address, and anything still removed, such as a script, is listed in a warning.
  • Bylines never show a login name. An author with no name set shows the business name, or the site name.
  • File names with special characters. An image whose file name contains an en dash or another non-English character is no longer reported as an invalid address, and its responsive versions now display.
  • Fewer false alarms from compare_to_source. Lazy-loaded embeds are read from their real address, the same embed with different settings counts as present, and small decorative images (empty alt text, 160px or smaller) are skipped.
  • Compact tool mode as the site default. Set mcp_tool_mode: "compact" with update_plugin_settings and every connection gets the three small tools without changing its address; ?tools=full still gets the full list. The MCP Config screen mentions it.
  • Importing a design system now tells you its template pages are hidden from visitors and search engines, so no SEO setting needs changing for them.
0.52.0-0.52.1
  • Upload images from your own computer. import_image takes the file itself (base64, with a file name), so local images no longer need a web server first. import_images takes up to 25 at once and reports each one, so one bad file never stops the rest. Uploading the same file twice reuses the first copy.
  • SVG logos work. An SVG is cleaned (scripts, event handlers and outside links removed) and accepted, even where WordPress normally refuses SVG. An inline SVG in an html_ field is kept, cleaned, instead of disappearing.
  • Set a post's date. create_page and update_post take date (or date_gmt) and modified, so a migrated post keeps its original dates. A future date schedules the post.
  • Compact tool mode. Add ?tools=compact to the MCP address and the AI sees three tools (find, describe, run) instead of about 170, saving around 50,000 tokens at the start of a conversation.
  • Menus can show a third level. {{wp_menu:ppd_header}} still shows two levels; write {{wp_menu:ppd_header:3}} for three (0 shows every level). set_menu warns when a menu is deeper than the page shows.
  • Headings no longer go blank. A paragraph inside an html_ field placed in a heading used to leave an empty H1; it now renders as the heading text. The page check warns about block markup in a heading and about markup an html_ field drops.
  • Form plugins are recognised before they have forms, and the project briefing says whether their form tools are on.
  • Posts print their own structured data as well as the template's.
  • Blog templates: the post title is no longer inside a <header> (some crawlers skip it), the table of contents leaves out card titles such as related posts, and the byline shows the author's name instead of their login. The page check warns when an author has no public name.
  • Template pages stay out of search. Design system template pages (single post, category, search) are left out of WordPress, Yoast and Rank Math sitemaps and carry noindex.
  • Fixed: a design system's booking form now builds in JetFormBuilder. Dropdown choices were not passed on, so JetFormBuilder refused Bright Dental's booking form. Design systems are now checked for a dropdown with no choices.
  • Smaller fixes: setting a featured image a post already has is reported as unchanged; delete_page can trash any page or post you can delete (the homepage asks first); turning on an integration tells connected AI apps to reload their tools; compare_to_source matches images that changed format, treats map embeds as maps and checks posts shown through a template; the site health check ignores empty optional images.
  • Calm Clinic 1.14.0 is bundled.
0.51.1-0.51.5
  • Twelve new sections in every design system, for the blocks real sites use most (found by rebuilding ten real sites). They are on each design system's Procedure page and the AI can place any of them on any page:
    • Hero on a photo or video: a full-width photo or silent looping video behind the heading and two buttons, on a dark overlay so any photo works. The video stops for visitors who turn motion off.
    • Banner slider: one banner is a promo band; two or more slide with arrows and dots and never move on their own.
    • Logo strip: partner, insurer, award or press logos in grey that take their colour on hover, or the name as a word mark.
    • Locations: any number of locations with address, phone, hours and directions, a search box that filters as you type, and an optional map.
    • Form beside copy: a heading, a checklist and an optional photo next to a form, or call and email buttons without a form plugin.
    • Gallery: a photo grid of any length with optional captions; with five or six photos the first is shown large.
    • Photo cards with up to two buttons each, a strip of figures (years, patients, ratings), and testimonials with a portrait (a single one is shown large).
    • Long text with subheadings, lists and links, for articles and policies; a team grid of any size with portrait, name, role and optional profile link; and a list of rooms, packages or visit options with prices and a button each, with a booking bar under it.
  • The board takes you to the section you change. Pick a different layout for a section and the board glides to it on the page nearest where you were looking, and outlines it for a moment.
  • The rebuild check sees more of the source page: quotes, text inside testimonial widgets, background photos and video files. Text printed twice and slider copies count once, and a missing paragraph is shown in full.
  • Page check: a YouTube watch or share link, or a Vimeo page link, in a video frame (which shows a blank box) is flagged with the embed address to use, and a design system's stock sample photo is named as such.
  • For the AI: page details list each section's position, type and title, with a warning that positions shift when sections move, and placing a section in a look that has no layout of its own for it says which layout was used.
  • Bright Dental 1.13.0 and Calm Clinic 1.13.0 are bundled.
0.51.0
  • New: WPCode snippets from chat. Switch WPCode on under Settings → Integrations. The AI can then list, read, create and edit your code snippets, switch them on and off, copy them and delete them.
  • PHP needs a second switch. CSS, JavaScript, HTML and text snippets work as soon as WPCode is on. PHP and Universal snippets run as code on your server, so writing or switching one on needs the "Allow PHP / Universal snippets" box on the same card, which only a person in wp-admin can tick. Switching a snippet off or deleting one always works, so a snippet that breaks the site can be stopped either way.
  • Every change can be undone. Each snippet change is recorded and the AI can put it back. Deleted snippets are kept in that record too, because WPCode keeps no revisions. Deleting asks first.
  • Same tools as Vision Builder Control, with the same names and answers in both plugins.
0.50.0-0.50.1
  • Design systems: start a site from a finished design and make it yours. Design Pages → Design Systems shows each design system's pages on one canvas, desktop and phone side by side (drag to move, Ctrl + scroll to zoom). Pick a colour preset or your own colours, then buttons, corners, shadows, spacing, page width and heading font, and every page updates as you click. Under Layouts pick the hero, a header (standard, centred logo or minimal, each with a phone menu), a footer and a blog list. Choices are saved for the site, so every admin sees the same ones.
  • One design, several looks. A design system can come in several looks; Clinic has Coastal, Editorial and Modern. Pick a look, then any colour set from any look, and give any section the layout of another look (a ★ marks the ones made for your look) or leave it out. Your text is kept when you switch. Sites that imported Clinic Coastal, Editorial or Modern keep working.
  • Mix and match components. Swap buttons, cards, links, eyebrow labels, question-and-answer lists, tabs, review carousels, post cards, the blog filter bar and page numbers for other styles, each shown as a sample in your colours. Buttons can be set one at a time (a filled main button, an outlined second one). The board warns when button text gets hard to read, and a light main colour gets dark button text automatically. Pick a style and the board moves to the first page that uses it.
  • A blog that works out of the box. Topic chips from your own categories and a search box filter the list in place; every article gets a table of contents from its headings (in a rail beside the text on wide screens); long blogs get Load more and category and search pages get page numbers.
  • Import the way that fits the site. Whole site builds every page (as normal WordPress pages under Pages), the header, footer, menus with dropdowns, homepage and blog templates. Only add what is missing never replaces anything. Preview changes shows the plan first, including any header, footer or homepage it would replace. Restyle only changes just colours and components. Photos are copied into your Media Library. Empty phone and email in Business Info get obvious stand-ins, (000) 000-0000 and [email protected], with a note on each page; they never reach your search engine business details and undo removes them.
  • You decide about pages you edited. If an import would replace a page you changed, the board asks: keep your version, or use the new design. Pages from another page builder are never touched.
  • Undo. Every import can be undone from the board or by the AI, newest first: pages it made go to the trash and everything else goes back. Before undoing, the board lists other pages that use the import's buttons and cards and would lose their styling.
  • Forms in a design system are created in Gravity Forms, JetFormBuilder or Contact Form 7, styled to match, with every field in the notification email and Reply-To set to the visitor. With no form plugin, the section shows call and email buttons.
  • More sections in every design system: a timeline (numbered steps or a dated history, in a row on wide screens), a video beside text, a full-width picture with a caption, icon cards that can show a photo, a comparison table, a header logo image, and up to three footer menus in Calm Clinic and Bright Dental.
  • Catalogue. New design systems appear under Catalogue with a thumbnail and colour swatches. Install, update or remove them there; each download is checked against our signature, and installing changes no page.
  • Make your own. Ask the AI to save your site as a design system, add your site's look to Clinic, keep a section for reuse, or design a new button or card style from a description. Your own design systems stay on your site, marked "Made on this site", and are never published.
  • Rebuild an existing page without losing anything. Any design system section can be placed on any page, with as many cards, steps or rows as you need; parts left empty disappear. When the AI fills a section, sample text it didn't replace is cleared and extra sample cards are removed, and the reply lists what was cleared. compare_to_source then checks the new page against the original, item by item.
  • See what a design change touches before you save it. The Design Tokens screen counts the pages a new colour or font will change (and those it won't, because a value is typed in), and Preview on real pages shows up to three pages before and after, on desktop and phone. Every token change is recorded and can be restored, and there are new tokens for corners, shadow, border width, heading weight and case, eyebrow style and button padding. Existing sites look the same.
  • Site health. A card on the Design Systems screen shows how many pages use each component and lists pages using a missing component, pages off the design system, typed-in colours that should be tokens, images without alt text, placeholder forms, published pages nothing links to, and which design system version each page came from. Your pages never update by themselves. Mark a page Bespoke to keep it out of these checks.
  • Header and footer history. The global header and footer keep their last 15 versions, and Recent design changes lists every change to tokens, header, footer, components, shared sections and imports, with who made it, and can put any of them back.
  • The AI asks where a new page goes: a regular page (under Pages) or a Design Page. It can also build the header menu and three footer menus from chat, and get the old menu back in one step. New installs have Pages switched on next to Design Pages.
  • Also new: section anchors such as #watch that survive reordering; icon search across all 1,500 Phosphor icons; italic accent fonts that load the real italic; a warning when a section types in a colour or font a token already holds.
  • Fixed: the page check failing on a large scaled image; quick edit not starting on drafts; sections added to an empty regular page not showing; regular pages created by the AI not being checked; empty archive page titles on block themes; the admin's Space Grotesk font not loading; missing space under Calm Clinic section headings (and darker review stars); empty buttons, star rows and notes drawing empty boxes in Clinic, Bright Dental and Calm Clinic; Coastal blog photos cropping off faces.
  • Forgiving argument names for the AI: page_id and post_id, slug and kit, section_index and index are read as each other.
0.49.10-0.49.13
  • New: Rank Math and Yoast SEO from chat. Switch them on under Settings → Integrations → SEO. The AI can then read and set a page's SEO title, meta description, focus keyword, robots, canonical address and social previews, and the same for category and tag archives. With Rank Math it can also edit the site-wide schema settings (organization, website name, homepage meta) and add, list or remove redirects; removing a redirect asks first. With Yoast it can read the site-wide defaults.
  • Same SEO tools as Vision Builder Control, with the same names and answers. With Rank Math and Yoast both installed, you pick which one is written to and both plugins follow that choice.
  • Every SEO reply says which plugin it read or wrote. With no SEO plugin active, a change is refused instead of being saved where nothing reads it, and a field the SEO plugin can't store is named in the reply.
  • Fixed: business info sent in the wrong shape was lost without a word. Flat fields such as name, phone or email reported success and saved nothing, so pages showed an empty phone number. They are now saved where they belong, anything that isn't business info is listed back, and a request that would save nothing is refused with the shape to use.
  • The Claude Desktop extension says why it can't connect. When something in front of your site answers instead of the plugin (a host captcha such as SiteGround's, a Cloudflare challenge, a firewall page, a sign-in error), Claude Desktop now shows what it was instead of "Request timed out". Download a new extension from MCP Config to get this.
  • Fixed: regular pages created by the AI were not checked. Warnings such as a contact form that sends nowhere never reached a WordPress page with sections, only Design Pages. They run on every page type now.
0.49.8-0.49.9
  • New: connections explain why they fail. A refused request now names the cause: an expired or revoked token, a token from a different plugin, a revoked connector link, or a server that removes credentials before WordPress sees them.
  • New: Connection check at the top of Settings → MCP Config. It tests HTTPS, permalinks, whether AI apps can find the sign-in and whether the server passes credentials through, and lists connections that have never worked.
  • Changed: tokens only work on this plugin's own endpoints. A token or sign-in no longer logs its user into the rest of the site's API, and a token made for a config file can't be pasted into a connector link (create a connector link for that).
  • Improved: saving a token can no longer lose another token created at the same moment, and the browser sign-in also answers on the address ChatGPT and Claude try on SiteGround-style hosts. Connections now work the same way as in Vision Builder Control.
  • Changed: Claude Desktop is no longer listed as required. Any AI app that supports MCP works (Claude, ChatGPT, Claude Code, Codex, Cursor), and Node.js is marked as needed only for some apps.
  • The plugin download no longer includes developer audit tools.
0.49.7
  • Fixed: a Design Page converted to a regular page lost its design tokens, fonts and page CSS when Pages was not ticked under allowed post types. Converting now ticks it for you and says so. Every page-level setting comes across (page CSS and JavaScript, stylesheets, schema, header and footer overrides, featured image, SEO fields), the page keeps its layout mode, and the result reports whether the styles really print, checking the live page when it is published.
  • Fixed: the tools refused to read or edit a converted page if its post type was later unticked. Any page that carries sections from this plugin can now be read and edited.
  • New: the conversion result tells you when Vision Builder Control prints its own styles on the page, since those load site-wide and can affect how sections look.
  • Fixed: a JetFormBuilder email with an empty body failed every submission without warning. Saving one is now refused. A new email with no body gets a table of the form's fields, a subject and a Reply-To from the form's email field. Forms already saved with an empty body are flagged when read, and the email preview says whether each email can send.
  • Fixed: the JetFormBuilder tools could disappear on sites also running Vision Builder Control with its JetFormBuilder integration switched off. This plugin now hides its copy only when the other one really offers the same tools.
0.49.5-0.49.6
  • New: connector links, for hosting that blocks the browser sign-in. Settings → MCP Config can create a private link that you paste into Claude or ChatGPT as the server address. That is the whole setup: no sign-in screen, no token field, no config file. Each link is listed under Live connections and can be revoked there.
  • New: MCP Config checks whether the browser sign-in can work on your hosting. Some hosts block the addresses Claude and ChatGPT use to find the sign-in, and the apps then show only "Couldn't register with the sign-in service". The screen now says so in plain words, recommends the connector link, and locks the sign-in option so nobody picks one that can't finish. "Check again" reruns the test after your host changes something.
  • Fixed: the ChatGPT setup steps connected Codex, not ChatGPT chats. Step 3 now lists ChatGPT (a custom app made in ChatGPT's settings, for chats) and Codex (app or CLI) separately, and says where each one's tools show up.
0.49.4
  • New: failed JetFormBuilder submissions explain themselves. Reading a form lists its recent failed submissions: which step failed (the email, the record save), the error code, the mail error, and whether the submission was still saved. What the visitor typed is never shown, and email addresses in errors are partly hidden.
  • Fixed: the health check showed no mail error right after an email failed. It read the log of one mail plugin only; it now catches every failed email on the site, JetFormBuilder's included.
  • New: switch a form between AJAX and page-reload submits from chat, without opening the JetFormBuilder editor.
  • Page check: a page with two or more forms that submit by page reload gets a warning, because a message can show under the wrong form.
0.49.3
  • Fixed: a page with an in-page link like #contact could not be saved or published. Link fields in the Content editor only accepted full web addresses, so anchors, /page paths and tel: links blocked Update and Publish, often with no message. They are all accepted now.
  • New: a link that won't work is named on the field. Update or Publish opens the section, scrolls to the field and says what is wrong, for example "needs https:// in front". AI tools get the same warning when they write such a link.
  • Fixed: number fields could lose their value on save. A value such as 12px or a {{placeholder}} was cleared the next time the page was saved.
0.49.2
  • Browser sign-in connections (ChatGPT, claude.ai) stay connected on more hosts.
  • Fixed: ChatGPT lost its connection after about an hour. When a connection renewed itself and the reply got lost on the way, the retry was refused and you had to sign in again. A retry within two minutes now works.
  • Fixed: two AI apps on the same site could knock each other off when they renewed at the same moment. They now take turns.
  • Fixed: some hosts told apps to reuse sign-in answers for two days. Sign-in responses are now always marked "do not cache".
0.49.1
  • JetFormBuilder forms can be edited safely from chat, one email at a time.
  • See what a form does. Reading a form shows each action's real settings: recipient, subject, From and Reply-To, and the message. Passwords and API keys show as [masked] and are kept as they are when the form is saved back.
  • Change one email without touching the rest. An update can change a single action, such as just the subject, and leave every other action, field, step, validation rule, reCAPTCHA setting and message as it was.
  • Save submissions to WordPress. Record saving can be switched on or off, and it runs first so a submission is kept even if the email after it fails.
  • Backups and undo. Every change stores a snapshot first; a form can be exported and put back to any snapshot.
  • Is there a verified sender? The health check reports which mail plugin sends the site's email, its From address, whether it is forced, and the domain's SPF, DMARC and DKIM records, ending in one verified sender (or none, with the reason).
  • Every field in the email, automatically. %NI::AllFields% puts a table of every submitted field into the email using the form's labels, and picks up fields added later. Also %NI::AllFieldsText%, %NI::SubmittedAt%, %NI::FormTitle% and %NI::RecordId%.
  • Preview an email without sending it, filled with sample answers.
  • No overwriting someone else's edit. An update stops if the form changed since it was read or is open in the editor, unless told to go ahead.
  • Fixed: duplicating a form lost its emails, and a quote in a field label broke the field.
  • Page check: a multi-step form embedded without enable_progress gets a warning that visitors will see no step indicator.
0.49.0
  • New: quick edit, right on the page. Turn on Quick edit in the admin bar while viewing a design page and type straight into the text, including text written into a section's layout such as a hand-built menu or footer. Rich-text fields get a small bold, italic and link bar, and clicking an image opens the Media Library. A floating panel you can drag anywhere lists your unsaved changes: save them together, undo one, or undo the whole save.
  • A clean page while you edit. Nothing is outlined until you point at a section; then that section gets one frame with its name, and only its editable parts are marked. Hold Alt, or tick Show all outlines (the way to do it on a phone), to see everything.
  • History. Every save is listed with the time, who made it and each change as before and after. Go back here returns the page to that point, and that can be undone too.
  • Menus and links. WordPress menu labels can be renamed in place after a one-time warning. Click a link's text to see where it goes and change the address.
  • Asks before changing other pages. Text in the global header, footer or a shared section needs a one-time "I understand this changes N pages", and the Save button says how many pages will change.
  • Explains what it can't edit. Business info, loops, custom fields, WooCommerce data, icons, shortcodes and animated sections are marked as locked; clicking one says where it comes from and links to where it is edited.
  • No silent overwrites. If someone changes the same section in wp-admin while you edit, the save stops and asks which version to keep. Open section editor opens the page editor scrolled to that section.
  • Fixed: the section editor broke on pages with responsive images: later sections went missing and the mode switches did nothing. That image data now shows as a read-only row.
  • Visitors never see any of it. The panel and outlines exist only for logged-in editors with quick edit on, and never enter the page cache.
0.48.0-0.48.3
  • Fixed: editing a JetFormBuilder form turned its fields into text boxes. Fields sent back in the shape they were read were all saved as plain text inputs, the submit button included (which then got a second one). They now keep their type, and a field type that can't be written is refused instead of being turned into a text box.
  • Fixed: multi-step form step names. The progress bar shows each step's name instead of "Next, Next, Last Page", the Previous button and label are honoured, and the first page no longer asks for a Back button. The last step can be named too: give the submit field a progress_label.
  • Fixed: the preview now loads what the live page loads. Plugin and theme styles and scripts (JetFormBuilder's step logic among them) and the page's own JavaScript run inside the preview, so a multi-step form can be tested there.
  • Fixed: Google Fonts loaded the same family more than once when sections asked for different weights. Each family is now requested once with every weight the page needs.
  • Site components: a description can include HTML usage examples, and a description can be changed on its own without resending the component's CSS and JavaScript.
  • Licence first on a fresh install (0.48.3). Activating the plugin goes straight to licence activation instead of a setup wizard. Connection setup lives in Settings → MCP Config.
0.47.0
  • New: site components. Define a button, a marker or a small script once and use it on any page by adding its class, for example nad-btn ("nad" stands for NoLeemits AI Design, so the class tells you where it comes from). A component's CSS and JavaScript load only on pages that use it, including sections embedded with [ppd_section] in another page builder. Every rule must use the component's own class, so a component can never restyle your theme, and page and section CSS still override it. Each change keeps the previous five versions, and exported pages carry the components they use (an import never overwrites a different component already on the site).
  • Preview links open without a WordPress login. A preview link is a private share link for a client, a phone or a screenshot tool. It lasts 24 hours, is never cached or indexed, and can be cancelled early with revoke_preview_url.
  • Fixed: preview links stopped working after the next edit. The same link now stays valid until it expires or is revoked.
0.46.0
  • Fixed: every edit reported failure on FlyingPress sites, even though it had saved. The cache-clearing call FlyingPress no longer allows made the response an error, which invited a retry. It now uses FlyingPress's supported call, and a misbehaving cache plugin can never again turn a saved edit into an error: the response says the edit was saved and which cache to clear by hand.
  • Fixed: dry runs cleared the page cache. Looking before you change something now touches nothing.
  • New: the global header and footer on pages built by your theme or another page builder. Settings → General → Global Header & Footer. Each page keeps its body and gets the Design Pages header and footer. It can be limited to certain post types, and on Divi it can hide Divi's own header and footer, including the empty space Divi keeps for its header.
  • New: group long content forms. Sections with many fields (a mega menu, a large card grid) can put fields into named groups that the Content editor shows as collapsible blocks.
  • Fixed: an image marked high priority was also told to load late. An image with fetchpriority="high", such as a header logo, no longer gets loading="lazy" added.
  • A clearer error when the header and footer tool is called without saying which one.
0.45.0
  • Fixed: clicking a category filter quietly showed everything. Filtering a product or post grid by a category, product category or custom taxonomy worked when the filter was already in the address, but clicking a filter button showed the whole catalogue again with no error. Those buttons now narrow the grid in place, without a reload, like the other filters.
  • Switching from one category to another replaces the first, instead of asking for both and finding nothing.
0.44.0
  • Fixes from a real homepage rebuild.
  • Fixed: JetFormBuilder forms could be read but not created or edited. Every call was refused with "fields must be an array". Both tools are now fully described, multi-step forms included.
  • Fixed: section Google Fonts never loaded on the live page, so headings asking for weight 800 or 900 came out thin. Section fonts now load at the weights you ask for.
  • Fixed: clone_page reported an error after making the copy, leaving a clone behind.
  • Fixed: a CSS fix aimed at one @media block replaced the whole block, deleting every other rule in it. It now merges rule by rule.
  • Fixed: resized image addresses (-1024x399.png, -scaled.jpg) were treated as unknown and rendered without responsive sizes.
  • Fixed: theme heading colours showed through on dark sections. Headings now take their section's colour unless you style them.
  • export_page_html includes page CSS, page JavaScript and section fonts, so an offline copy matches the live page.
  • get_style_guide describes your saved design tokens instead of a generic style.
0.42.0-0.43.1
  • New: review comments pin to the exact spot you click, not just the section. Pins are attached to the element you clicked, so they stay on the right word or button on a phone as well as a desktop. Comments saved earlier, or added by an AI assistant, still show as a marker at the top of their section.
  • New: a Notes panel lists every open comment on the page, numbered to match the pins, with author, time and a preview. Clicking a row scrolls to its pin. You can drag the panel anywhere by its header; its position is remembered, it always stays on screen after a rotate or resize, and double-clicking the header puts it back in its corner.
  • New: comment on the nav bar. Review mode now accepts clicks anywhere on the page, including a theme's header.
  • Fixed: the review banner covered the panel's reopen tab on narrow screens (it now sits at the top); a comment popover near the bottom of the screen could open partly off-screen (it now flips above); and some themes restyled the panel's own buttons.
  • 0.43.1: the AI is told, on every connection, to build pages with these tools rather than writing theme files or custom PHP. If you ask it to edit a specific theme or plugin file, it still does.
0.41.0
  • Fixed: an edit could save correctly while the live page kept showing the old version. Editing a section didn't trigger the event caching plugins listen for, so WP Rocket, FlyingPress, LiteSpeed, W3 Total Cache and others kept serving the old page. Saving a section now clears the page from all of them.
  • New: every write says what it cleared and what it couldn't. Responses list each cache purged and each one found but unreachable. A CDN in front of the site is still yours to purge, and the response says so.
  • New: a page is rebuilt on the server as soon as you publish or edit it, so the first visitor (or a CDN) never stores a half-built version.
  • bust_cache clears every layer instead of one, reports what it couldn't reach, and takes warm=true to rebuild the page and confirm the result.
  • New: a dry run for replacing the global header or footer. set_global_sections with dry_run=true writes nothing and reports how many pages it reaches, what is there now, what would replace it, and which pages would end up with two navs or footers.
  • Fixed: the actor label (the real person behind a change, shown in revision history) worked everywhere but was only advertised on twenty tools. Every tool that writes now lists it.
  • Fixed: update_post with nothing to change now says which arguments were attribution rather than content, instead of reading like a rejected parameter.
  • Fixed: saving business info or design tokens in the admin left page caches untouched, and the plugin's own cache clean-up left expired rows behind.
0.40.0
  • A redesigned admin, built to match its sibling plugin, Vision Builder Control: a branded header strip, a colour-coded tab bar and a short introduction on every tab. If you run both, they look and work like one product.
  • New: connect by signing in instead of pasting a secret. Settings → MCP Config now offers a browser sign-in (OAuth) beside API tokens. There is nothing to copy, it expires on its own and you can revoke it. Tokens remain, and are still the better choice for scripts.
  • New: read-only connections, enforced. When an app asks for permission you choose "Design and edit" or "Read only". A read-only connection can't even see the tools that write, so the assistant never offers something it would then be blocked from.
  • MCP Config is a four-step setup guide for Claude Desktop, Claude Code, Claude.ai, Cursor, the ChatGPT app, Codex CLI and the npx bridge, with the exact configuration for each.
  • New: one-click Claude Desktop bundle. Generate a token, download a .mcpb file and double-click it. No config file, no JSON, nothing to install first.
  • New: a "merge into my existing config" block for every configuration file, so people who already run other MCP servers paste the entry in the right place.
  • One connection screen. The menu's MCP Connection and Settings → MCP Config were two different screens; the menu now opens the full guide. Team members who aren't administrators get their own copy listing only their connections.
  • Every live connection is listed in one place, token or sign-in, with its owner and what it may do. A new token appears straight away, and revoking is immediate.
  • New: white label and agency attribution. Point Docs, Support and the plugin author at your agency, or hide the developer entirely, from Settings → Advanced or with constants in wp-config.php. White label now also removes Account, Pricing and Documentation from the sidebar (Account stays reachable by its link, since licences are managed there). Billing screens are administrator-only on every site.
  • Settings → Integrations is a grid of cards with each plugin's logo, a switch, and whether its tools are actually live.
  • Accessibility pass on every admin screen: controls announce what they toggle, low-contrast text was raised, and small Resolve and Delete buttons on the Comments dashboard are now full size.
  • Fixed: "Test connection" on the welcome screen always failed, even on healthy sites. It now reports whether the MCP server responded, and announces it to screen readers. The welcome screen also no longer writes to your PHP error log on every load.
  • Fixed: the AI could build a contact form that looked real and sent nothing. A hand-written form reloads the page with the visitor's details in the address bar, which looks like it worked. Now the AI is told before it builds whether the site has a form plugin, and gets a contact section that embeds your form plugin or uses your real phone, email and address. If a dead form is written anyway, the AI is told what it will do to a visitor; on the page its Send button does nothing, and editors (never visitors) see it outlined with "Placeholder form, not connected". To keep a decorative form, add data-ppd-decorative="1" to the <form> tag.
0.39.0
  • New: Gravity Forms, JetFormBuilder and Contact Form 7 from chat. List forms, read one, create, edit, duplicate or delete it, and get the shortcode that embeds it. Each form plugin has its own switch under Settings → Integrations → Forms, so a site running one of them doesn't load tools for the other two.
  • Submitted entries are never readable through any AI tool. Only the number of submissions a form holds is returned. This is not a setting and can't be turned on.
  • Fixed: the form list was incomplete in three ways. Contact Form 7 drafts were missing and only the first 50 forms were listed; Gravity Forms listed only active forms. The list now returns every form and says, per plugin, what it counted and whether anything was left out.
  • Fixed: deleted forms vanished from the list. Trashed forms now appear with their status, and asking for trashed forms works.
  • Fixed: Contact Form 7 shortcodes now come from Contact Form 7 itself, so they match what the plugin writes.
  • New: JetFormBuilder forms appear in the form list.
  • Settings → Tools is now Settings → Integrations, with related integrations grouped. Nothing you had switched on changed.
0.38.0
  • New: make an AI-built page editable in one step. Copy baked into a section's HTML can be pulled out into labelled fields, so the Content view can edit it without touching code. It previews what it will do first, saves a version so you can revert, skips anything already done, and never touches scripts, styles or code blocks.
  • New: formatted text is extracted correctly. A heading with bold or italic in it becomes a rich-text field instead of printing the tags on the page.
  • New: a warning when a field would print its markup as text. Only fields whose name starts with html_ render HTML. A field holding <strong> or &#8482; without that prefix is now flagged when the page is checked, not on the live site.
  • New: Revision History records status changes. Trashing, publishing and restoring are logged with who did it, when, and whether it came from the admin, the API or an AI assistant (with the assistant's real user).
  • Docs: previewing a page returns the sections only, so fonts and stylesheets loaded in the page head look missing from the preview when they are not.
0.37.0
  • Fixed: moving a page between sites lost most of it. Exporting and importing dropped the page CSS, render mode, global header and footer switches, page JavaScript, external stylesheets, structured data, and each section's JavaScript and Google Fonts. Nothing reported a problem. Export now carries all of it and import accepts all of it.
  • Fixed: an imported page always arrived as a draft, even when you asked for it to be published.
  • Fixed: importing an SVG told you to install a plugin you already had. It now tries the upload and reports what WordPress said.
  • New: create a page with its render mode, page template and global header and footer switches set from the start, instead of needing a second edit.
0.36.0
  • A redesigned section editor. Same fields, same data, easier to work in.
  • Two columns. Short fields share a line, so a section with eight fields is about half as tall. Descriptions, rich text and images still span the full width.
  • An icon on every field label for the kind of field it is (heading, button, link, price), in one aligned column so you can scan for the field you want. The field you are typing in lights its icon up.
  • Labels in sentence case instead of capitals, like the rest of WordPress.
  • The Title field is three rows instead of six, and its toolbar fades back until you click in.
  • Advanced mode rows are readable: labelled buttons instead of six identical links, shortcodes in their own column, and Delete set apart in grey until you hover it.
  • Fixed: Revision History showed the wrong time, often by several hours. Times are now stored in UTC and shown in your site's timezone with the zone named. Rows saved before this update keep their old stamp.
  • AI edits stand out in Revision History with their own mark and tint.
0.34.0
  • Fixes from a full client site build. Most of these went wrong without saying so: the page looked built and was quietly incorrect.
  • Fixed: filtering a list by a custom category did nothing. A list set to show only the clinical team returned everyone. It now filters as asked.
  • Fixed: asking a list for more than 50 items quietly gave you 50. The limit stays for speed, but a shortened list is now marked as shortened, so a category tab can't report 18 articles in a category that holds 60. To show more, use several lists with a starting offset, or a developer can raise the limit deliberately.
  • Fixed: setting a regular WordPress page as the homepage reported success and changed nothing. It now works, keeps the page's own layout mode, and removing it puts your Reading settings back.
  • Fixed: a list passed into a single text slot printed the word "Array" on the page. It is now refused on save, with a message saying what to do instead.
  • Fixed: an SVG logo was rejected as "not a recognised image". The message now explains that WordPress blocks SVG uploads unless a plugin allows them, and the import works on sites that allow them.
  • New: data-ppd-raw on an image turns off all automatic image handling for that one image, for a hero or hand-cropped photo where automatic sizing fights the layout.
  • Fixed: some new AI sessions refused to load the tool list because one custom-fields tool described its inputs incorrectly.
  • Better guidance for AI assistants on how list layouts nest, what section JavaScript receives, how to make an image load first, and two CSS traps that push text off the side of a phone screen.
0.33.0
  • Two NoLeemits plugins no longer offer you the same tool twice. With this plugin and Vision Builder Control both installed, both could drive Advanced Custom Fields, and an AI assistant picked one at random. One plugin now presents those tools and the other steps back. The tools that step back still run if something asks for them by name. With only this plugin installed, nothing changes.
  • Only true duplicates are affected. Page-building tools are never hidden, because the two plugins build different things. This applies only to tools that pass straight through to another plugin.
  • check_health reports which plugin presents which tools, so a tool that stepped back is visible.
0.32.0
  • Render Mode explains when it is locked. Choosing an Elementor or theme page template locks a page to Content Only, because that template owns the header and footer. The lock used to be silent: Full Template was greyed out with no reason and Default snapped back. The box now says it is locked, names the template, and tells you where to change it.
  • Your global header and footer stay switched on. Switching a page to Content Only used to clear its "Use global header/footer" boxes for good, so after switching back the header never appeared again. Those choices are now kept.
  • The per-page header and footer switches are easier to find. The sidebar box is now called Global Header & Footer, sits under Render Mode above Publish, says it affects this page only, links to the site-wide editor, and tells you when no global header or footer exists yet.
0.31.0
  • Product cards show the real discount. A shop card said "Sale!" while the product page for the same item said "-31%". Sale badges in product grids now show the percentage too, worked out the same way, including across the options of a variable product.
0.30.0
  • New: the AI asks which page builder you meant. If you also run NoLeemits Vision Builder Control, both plugins offered tools with the same names (create_page, append_section, set_design_tokens and nineteen more). The AI picked one at random and never failed: it could build a whole page in the wrong plugin and report success. Creating a page or changing site-wide colours now asks whether you want a standalone HTML page or an Elementor page, and remembers the answer for the site.
  • New: one builder can't quietly write over the other's page. Editing a page the other builder owns is refused, with the reason. Taking it over has to be asked for explicitly, the other builder's version is never deleted, and the takeover is recorded on the page: which tool, who, when and who owned it before.
  • New: Settings → Builders shows each NoLeemits builder on the site, which tool names clash, and how many of your pages are already marked by both.
  • Nothing changes if this is your only builder. No extra questions and no new arguments. A switch turns the asking off if every page on your site belongs to one builder.
  • Reading is never blocked. Viewing, listing, checking and exporting a page always work, whoever built it.
0.29.0
  • New: the AI can build your content structure, not only your pages. Ask for a custom post type such as "Case Studies" and it is created with all its admin labels, an archive if you want one, and its own taxonomies. It is registered through Advanced Custom Fields, so you can edit it under ACF, export it, and keep it if this plugin is switched off.
  • New: custom field groups from chat, including repeaters, flexible content, galleries and relationships, and the exact placeholder for every field.
  • New: custom field values in your designs. {{acf:client_name}} for a value, {{acf_img:hero}} for a full image, {{acf_repeater:services}} ... {{/acf_repeater}} to lay out a repeater as cards, and {{acf_if:field}} to leave a wrapper out when the field is empty. Repeaters can sit inside repeaters with no extra syntax.
  • New: site-wide content anyone can edit. An ACF options page holds things that appear everywhere (a support number, opening hours, a banner line), read with {{acf_option:name}} from any section, the global header and footer included.
  • New: custom fields on categories, tags and authors, shown on their archive pages.
  • New: the AI can fill in real values after building a template, so you see the finished page instead of an empty skeleton.
  • Fixed: searching and filtering a card list keeps custom fields, so a filtered list of case studies no longer loses its client names.
  • Optional. All of this sits behind one switch in Settings, off by default, because it adds about 25 tools most sites don't need. Turning it off never breaks a page: fields already on your pages keep showing.
0.28.0
  • New: video sections that play. A YouTube embed can look perfect and never play when a site's privacy header hides where the visitor came from; YouTube then refuses without showing an error. Three ready-made video sections handle that: click-to-play (a still image until someone presses play, so the page stays fast), a standard embed, and one for videos hosted on your own site. All three work with a keyboard and screen readers and keep their shape on every screen.
  • Fixed: the page check passed broken videos. It now flags an embed from another site that is missing that setting, a description for screen readers, or fullscreen.
  • New: the health check reports what your site does to embeds: its privacy header, any content policy that blocks embedded frames, and whether a service like Cloudflare sits in front of the site.
  • New: import images from a web address. The AI can pull an image from a URL into your Media Library, name it, give it alt text and set it as the featured image in one step. Importing the same address twice reuses the file.
  • New: structured data for search engines, so a page can carry what Google reads for video thumbnails, FAQ dropdowns or recipe cards.
  • Fixed: preview links for blog posts returned "not found". Previews now work for posts, pages and custom post types, in the real theme.
0.27.0
  • New: WooCommerce product pages that can sell. {{product_add_to_cart}} places the real Add to Cart form and adapts to the product: quantity and button for a simple product, option dropdowns with live price and stock for a variable one, the child list for a grouped one. Before, only the small shop-listing button was available, so variable products could not be bought from a designed page.
  • New: every product detail to design around: price, sale badge with the percentage off, gallery, short and long description, rating, review count, stock, SKU, categories, tags, attributes and breadcrumbs. Two gallery styles: WooCommerce's own with zoom and lightbox, or a plain one you can style freely.
  • New: a live cart in your header. Cart count and total update as soon as something is added, without a reload, and the badge hides when the cart is empty.
  • New: designed cart, checkout and account pages. Build the page around WooCommerce's working cart, checkout or account area. Payments and security stay WooCommerce's; only the styling is yours.
  • New: product rows that pick the right products: featured, on sale, best selling, top rated, newest, related, upsells, cross-sells, any category or tag, or a hand-picked list. Hidden products are left out and your "hide out of stock" setting is respected.
  • New: ready-made product and cart page designs for the AI to start from.
0.26.0
  • Fixed: Export HTML, Export JSON, Set as Homepage and Convert to Page are back on the Design Pages list. They disappeared from the hover links when Design Pages became nestable in 0.25.0.
  • New: featured images from your own Media Library. The AI could only set a featured image through PixelVault. It can now use any image you already have, on Design Pages, posts, pages and custom post types, set its alt text, title and caption at the same time, and clear it again.
  • New: the AI can search your Media Library by file name, title or caption and reuse a picture instead of importing another copy.
  • New: Design Pages have a Featured Image box next to Page Attributes, so you can see and change what archives, blog templates and social previews use.
0.25.0-0.25.2
  • New: Design Pages can be nested. Set a parent in Page Attributes and the address follows it, so /vision-builder-control/features/ and /ai-design/features/ can both exist. Before, WordPress redirected the nested address back to a flat one on every click. Pages with no parent keep the address they have today.
  • New: navigation that knows which page it is on. Write {{is_current:/features/}} into a link's class and the section highlights the current link itself. {{is_current:/product/*}} keeps a parent item lit on every page below it, and {{current_path}} and {{current_url}} are available too. No more passing the active tab in by hand on every page.
  • Fixed: the logo was loaded first instead of the main image. On any page with a global header, the 32px logo got the high loading priority and the real hero image was told to load lazily. The header, footer and anything under 200px wide are now skipped. To pick the image yourself, add data-ppd-lcp="1".
  • Fixed: images with a site-relative address (/wp-content/uploads/...) lost their responsive sizes, width and height. They now match your Media Library.
  • New: Validate page reports image problems you can't see by looking: images it can't match to your Media Library, and images WordPress quietly shrank (a 2880px screenshot served at 657px). It no longer reports correct image IDs as broken links.
  • Fixed: deleting a shared section refused the ID the list gave you. Both id and shared_section_id work now.
  • Fixed (0.25.1): the in-plugin trial offer said no credit card was needed, then checkout asked for one. It now says what happens: 14 days, payment method required up front.
  • Fixed (0.25.2): post and product cards printed raw placeholder text after a search, filter or Load more. Categories, tags, custom fields and every WooCommerce detail (prices included) broke on the first keystroke. Cards now render the same way however they are loaded.
0.24.8
  • Fixed: every documentation link in the plugin pointed at a page that does not exist. The Settings header, the onboarding wizard, the MCP Connection tab, the plugin action links, and the docs URLs the AI receives in start_project and get_best_practices all resolved to noleemits.com/docs/…, which has never been published — so every attempt to reach the documentation, by a human or by the AI, landed on a 404. The documentation now lives under the product at noleemits.com/ai-design/documentation/ and all of those links follow it. The ppd_docs_base_url and ppd_docs_url filters are unchanged, so self-hosted deployments pointing at an internal docs site are unaffected.
  • Fixed: the third-party-widgets best-practices response bypassed the docs helper. Its docs_url was hardcoded, so it kept returning the old address even on sites that had filtered the docs base URL to somewhere else.
  • Fixed: Stable tag in readme.txt had drifted five releases behind the plugin header.
0.24.7
  • Fixed: icons ballooned to 300px in previews, embeds and exports. Previewing a library section or a global header/footer blew every icon up to a huge block that shoved the rest of the layout aside, making a perfectly good section look broken. Icons only had a default size on Design Page templates, so anywhere else — the "View" preview windows, sections embedded in a normal post with / , content-only mode, and downloaded HTML exports — they fell back to the browser's placeholder size instead. The default now travels with the section itself, so an icon is the same size everywhere it appears. Sections that set their own icon size are unaffected.
0.24.6
  • Fixed: "Save Overrides" on a shared section always failed with "section is required and must be an object." Per-page overrides on a library section could not be saved at all — the editor sent the section in the wrong shape and the save was rejected every time. Nothing was lost, the values simply never got written. Open the panel again and save, and they will stick.
  • Fixed: saving a section to the library left the page still using its own private copy. The follow-up step that turns the section on the page into a reference to the new library item was rejected by the same bug, silently. The library item was created, but the page never linked to it — so later edits to the library item did not reach that page. Re-run "Save to Library" on any section where this happened, or insert it from the library.
  • Fixed: hardcoded icons using data-icon-style emitted an invalid style attribute. An icon written as data-icon-style="fill" rendered as style="fill" in the page HTML. The icon itself still looked right, so nothing appeared broken, but the markup was invalid on every icon that used it.
0.24.5
  • Fixed: the "One command (recommended)" box on the Claude Code tab was always empty. The command was being built correctly on the server but never sent to the page, so the box came up blank and "Copy to Clipboard" copied nothing — leaving the recommended setup path as the only one that could not be followed. The other two tabs (Full config / Add to existing config) were unaffected. Generate a token again and the command will be there.
0.24.4
  • Fixed: the Design Pages logo sprawling across the WordPress admin menu. The menu icon was drawn at its full size instead of icon size, so on every admin screen it spilled out of its slot and sat behind the menu items below it.
  • New: a proper Design Pages menu icon. The menu now uses its own crisp line-art mark instead of a shrunken copy of the full-colour logo, so it stays sharp on high-resolution screens and matches the weight of the icons above and below it. It also picks up your admin colour scheme and lights up on hover and when the section is open, exactly like WordPress's own menu icons.
0.24.3
  • Fixed: the generated MCP config used an address that does not exist on every site. The config always pointed at /wp-json/…. That address only works when your permalinks are set to something other than "Plain" — on a Plain-permalink site WordPress serves its API from index.php?rest_route=… instead, so /wp-json/… is a flat 404 and the connection can never succeed. Claude Desktop reports only "Server disconnected", with the 404 buried in a log file, which makes this very hard to spot: the config looks perfect. The address is now taken from WordPress itself, so it matches whichever form your site actually answers on. This also fixes sites where WordPress is installed in a subdirectory. If your Claude app shows "Server disconnected", re-copy the config — your token is unaffected.
  • New: the MCP Connection screen now warns when permalinks are set to "Plain", explains why the address looks longer, and warns against "tidying" it into /wp-json/ by hand — the one edit guaranteed to break it.
  • Two new Troubleshooting entries. A 404 in the MCP log now has its own row, including a quick way to tell a site-wide permalink problem from an MCP one (if /feed/ and /wp-sitemap.xml also 404, no pretty URL on the site works). A 401 that persists with a freshly generated token is also covered: some servers strip the Authorization header before PHP can read it, which makes every request look anonymous no matter how valid the token is — the row gives the two standard server-side fixes.
0.24.2
  • Fixed: embedded pages rendered unstyled. A page's custom CSS and external stylesheet links now travel with it when it is embedded via or , or rendered in content mode on a host post. Previously they only appeared on the page's own URL, so an embedded page lost all page-level styling. Emitted once per request, so nothing is duplicated.
  • Fixed: backslashes stripped from shared sections and variants. Saving a shared section or a section variant silently ate backslashes, breaking CSS unicode escapes (content:"\2192"), escaped class selectors, and regular expressions in section JavaScript. Design Pages were already protected; the library and variant paths now match.
  • Fixed: the CSS isolation reset overpowering your own CSS. The reset's element rules (links, images, lists, headings, form controls) no longer out-specify hand-written page CSS, so .my-headshot { height: 100% } works without having to be rewritten as .ppd-section .my-headshot. Most visibly, images no longer collapse and link underlines and list spacing survive. The section wrapper itself keeps its full-strength theme shield.
  • Fixed: targeted CSS fixes clobbering mobile styles. A new rule added via css_overrides is now placed ahead of the section's responsive blocks instead of after them, so breakpoint styles still apply at their breakpoints.
  • Section box-sizing is now consistent in embeds. Border-box sizing ships with the sections themselves rather than only on the Design Page template.
  • Clearer AI tool responses. Cache clearing now explains a zero result and warns that page caches and CDNs must be purged separately; page previews warn when auto-paragraph formatting is an artifact of the preview rather than the real page; bulk section adds return a compact summary by default instead of echoing the whole page back (pass verbose for the full payload); and the AI is told that page and post can be enabled for PicPilot in settings.
0.24.1
  • New NoLeemits AI Design product icon. Added branded icon assets for the WordPress admin, Freemius, and other private product surfaces.
  • Updated product metadata. The plugin author is now Stephen Lee and the plugin homepage points to https://noleemits.com/noleemits-ai-design.
0.24.0
  • MCP protocol revision 2025-06-18 is now supported. The server previously implemented only 2025-03-26 and 2024-11-05, so every modern client negotiated down two revisions to talk to it. It now advertises 2025-06-18 and still accepts 2025-03-26 and 2024-11-05, picking the newest revision each client understands — a client asking for 2025-11-25 settles on 2025-06-18, and older clients are unaffected. Two conformance fixes came with it: JSON-RPC batching (removed from the spec in 2025-06-18) is rejected for clients on that revision but still honoured for clients on older ones, and a GET to the MCP endpoint now returns 405 Method Not Allowed as the spec requires instead of WordPress's 404, which some clients read as a wrong endpoint and retry against the legacy transport.
  • New: connect Claude Code with a single command. The MCP Connection screen now offers a ready-made claude mcp add command as the first option for Claude Code / VS Code. The CLI writes the entry into .mcp.json itself, so there is no file to locate, no braces to balance, and no way to land the entry outside mcpServers — the mistake that produces no error message and a server that simply never appears. The two JSON snippets are still there for anyone who prefers to edit the file directly.
  • Tested up to WordPress 7.0.
  • Fix: the generated Claude Code / VS Code config now loads. The snippet declared "type": "url", which is not a valid MCP server type — Claude Code accepts only stdio, sse and http. The entry was rejected at config-load time with a warning that never appears in the UI, so the server silently never showed up and no amount of restarting helped. The snippet now correctly declares "type": "http". If you set up Claude Code or VS Code before this version, re-copy the config (or just change "url" to "http" on that line) — your token is unaffected.
  • Fix: the generated token and config no longer vanish while you are setting up. The MCP Connection screen reloaded itself 60 seconds after you generated a token. Because the plaintext token exists only in that one response and is stored hashed, the reload wiped the token and blanked every config snippet — so if you were mid-way through pasting into Claude Desktop, your token disappeared and you had to generate a new one. The auto-reload is gone; the token now stays on screen until you navigate away yourself.
  • Fix: the generated Claude Desktop config now connects on Windows without hand-editing. The snippet on the MCP Connection screen had two faults that together made Claude Desktop fail to connect. It launched the bridge as a bare mcp-remote, which Claude Desktop cannot spawn on Windows (it starts processes without a shell, so the real mcp-remote.cmd is never resolved — you got spawn mcp-remote ENOENT). It also inlined the token as Authorization: Bearer <token>; that space inside a single argument gets mangled by Windows argument handling and arrives as a failed login. Both configs now launch via npx -y mcp-remote and pass the token through an env block as ${PPD_AUTH_HEADER}, which is space-free and works on every platform. If you set up Claude Desktop before this version, re-copy the config — your token is still valid and does not need regenerating. Copy the whole entry, env block included: it holds the token the ${PPD_AUTH_HEADER} reference stands in for, and dropping it sends an empty login. Troubleshooting now lists that case too.
  • Setup instructions corrected. The old "Verify" step told you to run mcp-remote --help and expect usage output. That command always fails with Invalid URL, because mcp-remote treats its first argument as the server URL — so a working install looked broken. Verification is now node --version, and the global npm install -g mcp-remote is correctly described as optional (npx fetches it on demand).
  • Clearer warning about where the config goes. Pasting the entry outside the mcpServers object leaves the file as valid JSON, so Claude Desktop shows no error and the server simply never appears — the easiest mistake to make and the hardest to spot. The "Add to existing config" snippet now flags this directly, and it is listed first in Troubleshooting along with the reminder to fully quit Claude Desktop from the tray rather than just closing the window.
0.23.4
  • Fix: admin JS now logs a clear console warning when ppd_admin config is missing. When a caching or JS-optimization plugin (FlyingPress, WP Rocket, etc.) strips the inline script generated by wp_localize_script, the editor-mode switch and the comments sidebar would silently do nothing. Both scripts now emit a console.warn that names the cause and the fix (exclude ppd-admin from JS optimization).
0.23.2
  • Fix: Content mode on WooCommerce single products now works on all themes. The 0.23.0 content/hybrid mode relied on WooCommerce's classic product template, so on themes that render the product body their own way (X/Pro, Divi, and most page-builder themes) the PPD sections never appeared — you got the theme header/footer but an empty/native product body. Content mode now renders a hybrid template (theme header/footer + your PPD sections as the body) that works regardless of how the theme builds its product pages. Full mode is unchanged.
0.23.1
  • Fix: critical error when rendering some pages/products. Pages or products whose sections were stored with object-shaped data (from certain import or transport paths) could trigger a "critical error" on the front end. The renderer now normalizes section data before rendering, so these pages display correctly instead of crashing. Most visible on WooCommerce single products in Full mode (added in 0.23.0).
0.23.0
  • WooCommerce single products now support both render modes. You can design a product page the same way you design a regular page. Choose Full mode to let the plugin own the whole product page (your Design Pages global header and footer included), or Content mode to keep your theme's header and footer and replace just the product body with your PPD sections. Previously WooCommerce always took over single-product pages, so neither the global header/footer (Full mode) nor theme-wrapped section content (Content mode) appeared — because WooCommerce builds product pages from its own hooks instead of the normal content area. To use it, add Products to the allowed post types in Settings, enable a product, and pick its render mode. (Shop and product-category archives are unchanged for now.)
0.22.0
  • Grant Design Page access to other roles. A new Settings → Access tab lets administrators choose exactly which user roles can create, edit, and delete Design Pages — for example, giving Editors (or any custom role) full access. The permission is independent of regular post/page editing: a granted role gets Design Page management and nothing more. It applies everywhere — the admin UI, the REST API, and MCP connections — so chat- and dashboard-driven editing respect the same rule. Administrators always retain access; the Settings and JS/CSS Libraries pages stay administrator-only. Existing sites keep working: Administrators and Editors are granted access automatically on update.
  • Self-service MCP connection for granted roles. Anyone allowed to manage Design Pages now gets a Design Pages → MCP Connection page where they can generate and copy their own Claude Desktop / Claude Code connection token — no administrator hand-off required. Non-admins see and revoke only their own tokens; administrators still manage every token from Settings → MCP Connection.
0.21.1
  • New "low editability" warning when creating or editing pages. When the AI saves a section that's mostly hardcoded text with few or no editable content fields, the plugin now warns that basic-view (Content mode) users won't be able to edit it — nudging the AI to extract the copy into editable fields instead of baking it into the HTML. This makes generated pages friendlier for non-technical editors, not just power users.
  • The section editor now shows a short notice on any section that has no editable content fields, explaining that its content is hardcoded and pointing to the Code Editor.
0.21.0
  • Front-end review mode. Logged-in editors now get a single 💬 Comments menu in the admin bar that groups all comment tools together — View all comments (the central dashboard, with the site-wide open count) and Enable review mode on this page. Turn review mode on and a banner confirms it's active; click any section to leave feedback pinned right to it — questions, assumptions, notes, or warnings. Each section with feedback shows a numbered marker; click it to read the thread and resolve or delete comments in place. Everything flows into the Design Pages → Comments dashboard, so review and triage stay in one place. Comments whose section was later deleted collect in an "orphaned" tray instead of disappearing. Not visible to public visitors — the overlay loads only for users who can edit, only while review mode is on.
0.20.3
  • Section Library previews are now high-fidelity. Sections that rely on page-level CSS (custom properties like --brand-* and shared utility classes like .btn) previously previewed unstyled — buttons rendered as plain links, brand colors disappeared. Saving a section to the library now snapshots the source page's CSS with it, so previews (and the section itself) keep their styling. Existing library items were backfilled.
  • Page previews now include the page's own custom CSS (_ppd_page_css), which the preview iframe was not emitting.
0.20.2
  • Fixed the section & global-section preview screens: the "Live Preview Mode" banner no longer overlaps a sticky/fixed navigation, and wide headers (e.g. a nav with a right-aligned "Book a call" button) are no longer clipped. Previews now render inside a sandboxed iframe, so they match the real front end.
0.20.1
  • calc(), clamp(), min(), max(), and var() now survive CSS minification — spacing around + / - inside these functions is preserved, so calc(100% + 20px) no longer breaks.
  • Page CSS save now shows a one-time admin notice when --ppd-* variable overrides are stripped, pointing to Settings → Design Tokens.
  • New per-page Sticky nav offset setting — adds scroll-margin-top so in-page anchor links clear a fixed header (0 / empty = off).
  • REST POST /pages accepts use_global_header / use_global_footer so a page can be created with globals disabled in one request.
  • Page imports honor an optional page.status field (draft, publish, private); publishing requires the publish_pages capability.
  • Blocked direct writes to PPD page meta are no longer silent — with WP_DEBUG on they log to error_log, and the new ppd_meta_write_blocked action lets integrations hook them.
  • New WP-CLI command: wp ppd page create --file=page.json.
0.20.0
  • Documentation URL system — canonical docs URLs surfaced via PPD_Docs helper, wired into MCP responses (start_project, get_best_practices), admin settings header, onboarding wizard, and plugin action links. Base URL filterable via ppd_docs_base_url for self-hosted deployments.
  • readme.txt for WordPress.org submission.
0.19.1
  • Strip --ppd-* token overrides from page_css on save and render (token hygiene).
  • REST API: create_page / update_page now accept render_mode and page_template.
0.18.3
  • Preserve backslashes in section_js, page_css, page_js across all 34 meta write sites.
0.18.2
  • Render PPD globals (design tokens, fonts, page CSS/JS) correctly on converted pages.
0.18.1
  • Accept PPD-enabled regular pages in get_homepage / set_homepage.
0.18.0
  • Archive template support — assign Design Pages to category, tag, taxonomy, search, date, and CPT archives. 14 new placeholders ({{archive_*}}, {{term_*}}, {{post_type_archive_*}}, , {{paged_*}}).
0.17.0
  • MCP fixes — generate_image propagates PixelVault error details, check_health HTML-decodes site name, find_images always returns metadata.
0.16.0
  • Proper /shop/ archive integration via template_include (priority 1000). WooCommerce pre_get_posts, Yoast/Rank Math wp_head, and pagination all intact.
0.15.0
  • WooCommerce shop page + URL filters + loop helpers. {{main_query}} block, seven {{loop_wc_*}} placeholders, price/category/sort filters.
0.14.0
  • Section-level optimistic concurrency via if_version parameter. Prevents silent overwrites between human and AI edits.
0.13.0
  • Real-actor attribution on every revision — actor, client name/version, user agent, IP address. Revisions UI shows "Who" column.
0.12.0
  • MCP writes honor WordPress post locks. 409 post_locked response with force=true override.
0.11.0
  • Comments / feedback system. Per-page sidebar, per-section badges, per-field inline buttons, central dashboard with admin bar indicator.
0.10.0
  • Content Mode — friendly editor for non-technical users with labelled inputs (text, WYSIWYG, image, icon, color, select).
0.9.0
  • content_fields_schema foundation — declare type / label / description per field.