- Status
- Pre-launch, development mode
- Last shipped
- The stretch to 2026-07-23 (
v2.3.335 → v2.3.796) closed no numbered phase but reshaped much of the product; Phase 16 (library upgrade pass) was well advanced by then, and is now closed. Shipped in that window: the pricing reshape (comparison-table and pricing-cards replacing three legacy pricing blocks, deleted outright at v2.3.503); the scoped-styling engine, which lets an author style one column, row or cell rather than only the whole block; a wave of roughly two dozen new controls on the shared Look sidebar, and Gillish Core’s Dynamic Tags resolving in every author-typed field; all six state+interaction blocks (Accordion, Tabs, Counter, Reveal, Carousel, Modal), each server-rendered first and usable with no JavaScript; four further new blocks (Button, Table, Code Snippet, and a twice-rebuilt Modal, stripped on purpose to a bare composable surface); a block-by-block review pass over eleven existing blocks, including the Trust Badges → Logo Row rename and a six-layout Testimonial redesign; the two-editor rule, under which a saved block placed in an ordinary post is fully editable there while the Cairnstone Look sidebar stays exclusive to the designer; and the per-block CSS split, replacing a 380 KB stylesheet loaded on every page with one file per block, roughly 13 KB on a single-block page and nothing at all on a block-free one; the Callout block (note / tip / warning / success / info boxes), which took the icon picker out of two blocks into one shared control on the way in, and whose close control is an author-placed Button rather than a built-in corner X, with an optional per-reader memory of a dismissal; the Read More block, which folds a long stretch of content behind a button while keeping it in the page, clipped rather than hidden, so search engines and a JavaScript-off reader still see all of it, and whose button became the first single control a designer can style on its own, apart from the box around it, soon joined by the tab strip, the accordion headers and the carousel arrows and dots (each drawn for real in the editor rather than as a stand-in), and by a style panel that now measures what a part really draws instead of reporting zero for it; and the clearing of the last hard blocker to a wp.org submission, 27 Plugin Check errors that two disarmed lint rules had been hiding, down to zero. A shared visitor-state fix, invisible to users but foundational, made saved visitor signals actually survive a page load for a logged-in user. Twenty-nine library blocks live in the inserter, twenty-seven free plus two Pro. Newest is a trio for editorial reviews: a Score Box (a score on a scale of your choosing, drawn as symbols with the number beside it), a Pros and Cons pair, and a Review Box that composes both together with a Button and publishes the score as structured data about the product reviewed, never about the site doing the reviewing. The score and the lists are separate blocks precisely so they can be used without the review frame, and the days after the split went on finishing them: one shared type scale and one rhythm across the three, so a reader sees one box rather than three; a choice of whether the number or the symbols leads; icons from the shared set in place of typed characters; a percentage option that finally asks for a percentage; and a pass on a themeless dark site that caught three separate ways the set fell apart there, each one measured on the rendered page rather than reasoned about. The days since have been a hunt for one kind of bug: the sort that ships broken while every automated check stays green. A run of them was found and fixed on the real page rather than in the source, and each class now has a guard that fails loudly instead: a block whose icons or font it borrowed from a neighbour rather than supplying itself; the “HTML anchor” field that never reached the page, and the block-to-block reactions that were quietly hitting the wrong element because of it; a block that could sit in every internal list yet never start; and an editor tag that vanished from Reveal because it was tucked where the editor rebuilds its content. The stretch to 2026-07-25 (v2.3.797 → v2.3.818) gave the rating symbols real filled-and-hollow pairs across three blocks, and then turned into a structured-data and storage pass: every piece of search data a page sends now carries an address saying which thing it describes, worked out fresh per page view rather than saved, because a reused block is a pointer to its design and not a copy of it. Underneath that sat a fault that had nothing to do with search data: blocks created by an import file or by an AI were storing quote marks, apostrophes and ampersands mangled, so a product name came out as gibberish. Blocks written and saved in the editor were never affected, which is why it went unseen; the same fault was found and fixed in Gillish Node, where a tool that rewrites links inside published articles had been damaging them a little more on every run. Phase 16 was closed on 2026-08-31 at v2.4.24, by decision rather than by finishing a list: it had never been defined by one, so nothing built could complete it. The Video embed Pro block and the two image-effect blocks (Kinematic and Cinematic) remain unbuilt and carry on as ordinary planned work. The sidebar transplants were overtaken rather than completed, because the styling sidebar became shared: one part of the plugin now supplies it for every block, and only seven of thirty-one add a panel of their own. That leaves Phase 18, the licence plumbing, as the only phase remaining. Before it, Phases 13–15 closed the AI-integration arc on 2026-05-31 (the cairnstone/* Abilities API: discovery, draft-only mutation behind an “AI assistants” opt-in, richer introspection, server-side preview-as, and a batch ability). The stretch to 2026-07-26 (v2.3.819 → v2.3.822) was a test-quality pass that kept turning up real ones. Checking whether the previous days’ automatic checks could actually FAIL (by deliberately breaking the code each one guards) found one that could not, and then found four faults in the product itself, none of them on any list beforehand. A rule meant to show a block only to iPhone visitors was showing it to everyone, because the way the rule was written could not be read and an unreadable rule counted as “show to all”; it now shows to the visitors it names, and a rule that still cannot be read shows to nobody rather than to all. A promotional banner was reading its own formatting tags aloud to screen readers. A block’s “HTML anchor” could attach to an invisible element instead of the block, so links to it went nowhere. And two separate places that turn a title into a web address were deleting Norwegian and other accented letters instead of converting them, so a heading came out as a stub. The stretch to 2026-07-30 (v2.3.823 → v2.3.849) took the free layout out of the Table block, to be rebuilt on its own, and then spent a long day on the gap between what the editor draws and what the page ships. A box 45 pixels tall on the page was being drawn 120 in the editor, because a minimum height meant for an EMPTY box was applied to full ones too; the whole composition went from 217 pixels wrong to four. The in-canvas insert button became one shape in one place instead of four across the library, small enough to stop covering the words underneath it, and it no longer stacks two deep in a nested design. An image now takes its height from the box it sits in rather than deciding the box, which is what makes a picture beside a column of text line up without matching numbers on both sides by hand. A dialog gained a plain choice of where it opens and now really centres, which the browser had always intended and a WordPress layout rule had been overwriting. And the library gained its first real Field, the 29th block: until now there was no input of any kind, so a form could only be drawn as a bordered box with a line of text in it, which nobody can type in and a screen reader announces as body text. It sends nothing on its own, deliberately, because who runs the sending is a separate question. The dark test theme then caught two faults in that field which reasoning had missed, and the contrast floor under it is now a test that renders the field on black and on white rather than a number in a comment. The stretch to 2026-08-01 (v2.3.850 → v2.3.885) cleaned up the small name tags the editor draws over your work, and then built a real layout box: Frame, a container that holds things and decides how they sit, where spacing, width, height and free placement are all set by dragging rather than by typing numbers into a sidebar. It went from a hidden experiment to a block in the menu over two days of using it by hand, and most of what shipped answers something that broke while it was being used: a box that drew one width in the editor and another on the page, a design that came apart on a phone because its positions were frozen in pixels, an edge that ran at half the speed of the pointer dragging it, and a box sent behind its neighbours that disappeared under its own parent’s background instead. The stretch to 2026-08-03 (v2.3.886 → v2.3.910) carried the Frame arc forward by building with it and measuring every report on the running site, and almost every fault turned out to be two rules disagreeing, with the loser always the one the author had set. A frame given its own height was being stretched to match a taller neighbour because a hidden alignment rule outranked the author’s number; a box switched to free placement used to jump, because the surrounding box shrinks the instant a child leaves the flow and a position measured from the far wall followed that wall inward, so it now pins its leading corner and stays put. The strangest: eight copies of one saved modal gave one openable dialog and seven dead buttons, because the editor quietly renames things and had moved the dialog’s name while its button kept the old one; button and dialog now find each other by where they sit rather than by a shared name, and an already-published page corrects itself on its next view without being re-saved. The fifteen-width check that had been run by hand became a permanent automated test, the theme’s column-width rule stopped reaching inside a frame, and the editor’s preview stopped charging 56 pixels per side of its own chrome against a theme that charges 30, so the preview now draws what the page draws. The stretch to 2026-08-04 (v2.3.911 → v2.3.926) was a day of controls learning to tell the truth. A size box that said “px” was storing something else and quietly dividing by 16 on the way out, so a reader who raises their browser’s default text size, the most ordinary accessibility act there is, got sizes the author never chose; eleven stored settings now name their real unit, older work was converted on read and rendered exactly as before, and the spacing box now asks in whole pixels and prints the conversion under the field. Fixing that surfaced something worse: the spacing control had begun writing under the new name while still reading under the old one, so on an older block a single arrow-press took the padding from 14 pixels to 240 on all four sides; fixed, and that whole class of fault now has its own automated guard. The catalogue of style controls published to AI assistants was missing eight real controls and now names all 46 (48 once the unit arc below added the two inner-width controls), and the ability that serves that catalogue could not be called at all, every empty call rejected on a technicality; fixed, and the eight newest controls were then proven end to end through the AI path rather than merely listed. And a long-dead Style panel, 509 lines reachable only through a switch that was permanently off, was removed under a new standing rule: code that leaves a source file is moved to a visible archive and kept, never destroyed, so a wrong removal is found by looking rather than by archaeology. The stretch to 2026-08-05 (v2.3.927 → v2.3.933) closed two arcs. Untouched sidebar fields stopped lying: a padding box used to show zero while the block on the canvas was drawing 14 pixels, and one nudge wrote 1 pixel over that reality; every unset numeric field now shows the value the block is actually drawing, in grey, as a ghost that stores nothing and never marks the panel as changed, and the arrows step from that truth, which also killed the worst case, a minimum-height field showing 31.25 whose first nudge jumped the block to 701 pixels. The colour swatches gained the same honesty, a dashed ring meaning inherited reality and stripes meaning truly empty, and the behaviour was verified across all 36 library blocks. And the Contrast colour role finally earned its name: it used to store one fixed near-black pair, which on a dark page is the opposite of contrast, and it now takes its ink from the page around it, so the badge, the section divider and the FAQ block that carry the role stay legible everywhere; the divider that was invisible on the dark test theme now measures 21:1 there, the same as on light. The stretch of 2026-08-06 (v2.3.934 → v2.3.941) is the unit arc, a one-day rebuild of how every size in the product is stored, shown and typed. Every stored size now carries its own unit as data, and the render path does no arithmetic at all: it validates and concatenates, identically in PHP and in the editor’s twin. Every length control gained a small, always-visible blue unit button showing em, rem, px or %, replacing a built-in dropdown so small the product’s own designer had never seen it. Authors now type plain whole numbers (type 35, see 35, while the plugin stores the reader-friendly form that grows with a visitor’s own text-size setting), type a unit to switch on the spot, use a decimal comma, or paste a CSS size straight in; anything unreadable is refused visibly instead of silently replaced. A “Work in” choice on the plugin’s own Settings page picks the working unit once for the whole site, defaulting to the reader-friendly rem, and never converts anything already set. The editor also stopped assuming every screen draws text at 16 pixels: it reads the canvas’s real base size, says so at the top of the panel when it differs, and text set to scale with screen width now lands on exactly the same sizes as fixed text at every base setting, which it measurably did not before. The stretch that followed, to 2026-08-07 (v2.3.942 → v2.3.945), moved several decisions to where they belong. The working-unit choice left the style panel for the Settings page, beside the other site-wide defaults, and became one setting for the whole site rather than one per person. A sweep then took the Norwegian shape out of the product: the currency examples used a Scandinavian symbol as the archetype, the one-click region scaffold offered a “Nordic” zone that put three different currencies under one symbol (so two of its three countries got wrong prices), the built-in preview visitors were the Americas, Europe and Norway, the language pickers listed Nordic ahead of everything else, and the plugin and author links pointed at a domain that does not resolve at all. All corrected, and one editor script’s 152 translatable lines turned out to carry a sibling plugin’s name, so they could never have been translated. Finally the Settings screen learned to save properly: it had two differently named buttons doing the same thing, so every label is now the same and each tab has one within reach of what it saves, while the three tabs that hold only on/off switches save the instant a switch is flipped and show no button at all. The switch that lets AI assistants draft blocks saves instantly too, but behind a stricter door than the rest, since it is the one setting that opens a write surface. Then a single reported gap re-scoped itself by a factor of twenty-five (v2.3.946 → v2.3.947): the Conditional Content editor’s text had been correctly labelled but never connected to the translation system, and sweeping for that same shape found that every block’s editing panel was in the same state – all thirty-seven of them, 1487 pieces of text, plus the shared controls for picking an image, reordering rows and choosing an icon. The English had always rendered perfectly and no check had ever gone red, so the only symptom was that a site in any other language would have stayed in English forever. All of it is editor-side, so nothing a visitor downloads changed, and the thirty-seven took one line because every block registers its editor through one loop. Proven by placing a real translation file on a running site before the change, watching the text stay English, and watching it turn over after. Connecting that text was half the job: nothing in the project produced the file a translator opens (v2.3.948), so the plumbing was live and the tap unreachable. The plugin now ships the standard translation template, built by a step written into the project, and kept from falling behind by an automatic check. Building it surfaced two sets of text that no collector could ever have read, including the image viewer’s Close, Next and Previous labels that a screen reader announces to visitors; both were repaired in the source rather than skipped in the tooling. An adversarial review of that collector the same day (v2.3.949) found the list itself right – not one of 3119 pieces of text missing – and the short explanations that tell a translator what a number in a sentence stands for wrong in both directions: half were never captured, and six were attached to a different sentence than the one they described. Fixed, along with five faults that were not yet firing, and the plugin's own name and description, which live in a header rather than in the code. Asking the same question of the styling sidebar then found 103 more (v2.3.950): it does not use the normal mechanism at all, but reads its labels from a list the server sends and falls back to English written into the script, and 103 of the 324 labels it asks for were missing from that list, so the fallback was all anyone could ever see. Every check written this week was blind to it by being correct. All 103 published, a new check now compares the two sides, and a wrong reason given earlier for hand-writing the collector (that the standard command-line tool was unavailable; it is not, it is simply reached through another command) is corrected where it was written. Both tools were then run against the same code and produced identical lists, 2366 entries against 2366 (v2.3.951). The one check the standard tool did better is now built into ours and runs automatically (v2.3.952); it found eleven pieces of text that reached the translation file and were still impossible to translate correctly, including two carrying contradictory guidance and several half-sentences glued to a value. The stretch to 2026-08-16 (v2.3.995 → v2.4.7) turned the accessibility record from a procedure with almost nothing in it into four blocks measured properly – the container, the image, the accordion and the tabs – each against seventeen questions at two screen widths, on specimens built the way real ones are and taken from real products rather than invented. Four defects were fixed on the way: two blocks whose columns and rows could only be reordered by dragging, which no keyboard can do and which is not the single-pointer alternative the standard asks for; an accordion whose questions were styled as headings and not marked as any, so a screen-reader user could not jump between them; a tab row that folds on a phone into something that looks like a list of questions and said nothing about opening; and the one stylesheet of fourteen whose animation a visitor asking for less motion could not switch off. The image block’s equivalent was decided the other way on purpose: the only sign a picture opens is the pointer turning into a magnifier, which a touch screen does not have, so a setting now exists and the default stays bare, recorded as a decision with the condition that would reopen it rather than as a fix. The checklist itself grew a seventeenth question, because a real defect had passed all sixteen: none of them asked whether a person can see that a control does what it does. Verification runs on the local Studio matrix; the wp.org build path is unchanged.
- Launch version
- v3.0.0, reserved for wp.org