WPPilot 1.9.0 — A design that can describe a composition
A design direction could always name a palette, two typefaces and a set of rules. It could not name a shape. grammars.php has described the compositions a page can be built from since the beginning — a panel crossing a section boundary, layers on a common ground, a column that stays put while its neighbour scrolls, an element escaping the page edge — and wppilot/list-layout-grammars has always returned them. Nothing could ask for one.
So every page came out as a stack of full-width bands, including the grammar that module describes as "the one thing a stack of bands can never do". This release closes that.
New
- Four layouts:
bleed,layer,index-detail,overlap. Splits can also name their own ratio — a page measured off a real reference lands on 46:54 rather than on anything worth naming. - Items can hold blocks. A pricing tier is a ribbon, a name, a price row sharing one baseline across two sizes, a feature list and a button. None of that was expressible as four strings, which is most of why generated cards looked alike. The flat keys stay for the sets that really are a mark and two lines.
- Sets can declare variants, so one member reads as the chosen one. No variant names ship with the plugin — an undeclared one is refused rather than silently ignored.
- Hover and focus states on blocks and items, stored as real Elementor style variants.
- New ability
wppilot/check-composition— validate a block subtree on its own, so a shape worth keeping can be captured from a page you measured rather than shipped as a template nobody chose. - The instructions sent on every request now carry the ladders, the permitted compositions and the standards a finished page owes. All of it was already derived and none of it was being sent. A site with no direction is now told to derive one rather than left to invent the average.
Fixed
- A card grid of one, or of five or more, losing its grid entirely and stacking in a bare container.
- A block layout accepted at save and quietly degraded to a stack at build, so a misspelling had no visible cause.
- The structural signature used for distinctiveness walking only the top level, so two pages differing entirely inside their groups reduced to the same string.
- A generated design declaring three type roles where a spec needs eight, leaving every scale rule with almost nothing to measure against.
- Card padding, inner gap and button insets written into the plugin rather than derived — two designs agreeing about nothing else still produced identically inset cards.
- The type role deciding the heading tag, which put two
h1s on any page with a hero and a loud closing band. Blocks can now name atagseparately; without one the role still decides. wppilot/check-designreporting rules as checked that never ran, turning "there was nothing to check against" into "we checked and it was fine".
Upgrading
No permission changes and no re-authorisation. Every spec written before this behaves exactly as it did.
Install: download wppilot.zip below, not the auto-generated source archive.