WordPress plugin v9.2.7 Patch October 15, 2026 Kadence Blocks, Spectra, GenerateBlocks and GreenShift pages get their own blocks
- add
Kadence Blocks, Spectra, GenerateBlocks and GreenShift pages get their own blocks. Until now, a new element on a block library site was a WordPress core block: ask for a Kadence row with two columns and you got a core group and core columns, with none of Kadence's controls. Now build_page, inject_builder_content and the add_* tools write the library's own blocks when you pass builder "kadence", "spectra", "generateblocks" or "greenshift", or when the page already has that library's blocks. Sections, rows and columns, headings and text, buttons, images, icons, spacers and dividers, lists, accordions and tabs each become the library's block, with the markup the library's own editor saves, its ids and the attributes it styles from (GenerateBlocks also gets the compiled CSS its front end prints, GreenShift the CSSRender flag it needs). Spectra Legacy pages get uagb/* blocks and Spectra Blocks pages spectra/* blocks; on GreenShift everything is its Advanced HTML Element, with sections laid out the way GreenShift's own guidance recommends. Anything a library has no block for is written as a WordPress core block and named in a library_core_fallback warning, and build_page says which elements are the library's in library_blocks. Without a builder on a new page you still get core blocks, plus a hint that names the builder value to pass, so a site that merely has a library installed is not switched over. Tested on a real WordPress 7.1 site with Kadence Blocks 3.8.0, Spectra Legacy 2.20.5, Spectra Blocks 1.0.11, GenerateBlocks 2.5.0 and GreenShift 13.2.1, one at a time: every block opens in the block editor without an "unexpected or invalid content" warning, the pages render with the library's styling, and existing content stays byte for byte when you add to a page.
- add
WordPress 7.1 accordions, tabs and icons in the block editor. A generic accordion, tabs, icon, video, spacer, divider or list sent to build_page on a block editor page used to be saved as an empty block. They are now the core blocks WordPress itself saves: the core accordion and tabs blocks with their items and panels (details blocks on WordPress versions without them), the core icon block, a video embed, and spacer, separator and list blocks with their markup.
- change
The browser door is on the screen a freshly linked site lands on. Of the people who linked a site from wp-admin in the 60 days to 15 October, 97 (29% of everyone who connected a site) never connected any agent, and most of them never opened the dashboard again. The only screen they saw after the link was Home in this plugin, and every door on it either opened respira.press in a new tab or asked for a desktop app; claude.ai and ChatGPT, which connect by address with no download and no key, were one sentence in the lede. Home's "Connect your AI assistant" card and Setup step 2 now show the site's own MCP address with a copy button and the three steps for claude.ai or ChatGPT, first. The one-click desktop installs, the copy-to-agent prompt, Respira AER and the offline key path are unchanged and follow below it. Pinned by
tests/standalone/activation-browser-door.php. - fix
SEO titles and descriptions reach All in One SEO again. On a site with All in One SEO 4 or later, the seo fields of update_page and update_post were saved where All in One SEO 3 kept them, years ago. The current All in One SEO keeps each post's SEO in its own table and never reads the old place, so the write said success while the page title, the meta description and All in One SEO's own editor stayed as they were. Title, description, canonical URL, robots, Open Graph and Twitter fields now go through All in One SEO's own save, only the fields you send change (a focus keyphrase or schema set in the editor stays), and reading a page's SEO back shows what All in One SEO shows. A draft duplicate starts with the live page's All in One SEO settings, and approving it carries the new ones to the live page. All in One SEO 3 sites keep the old behaviour. Tested on a real site with All in One SEO 5.0.3: the new title, description, noindex, canonical URL and Open Graph title appear in the page's head and in All in One SEO's editor.
- fix
A generic section on a Beaver Builder page shows its content. The shape agents send to every builder, a section holding a heading and text, was saved on Beaver with "section" and "text" as module names. Beaver has neither, so the page showed nothing but its title while the write said success. A generic section or container is now a Beaver row with the column group and column Beaver needs, columns sent without a width share the row, and generic types become Beaver's own modules (text and paragraph the Text Editor, image the Photo module, toggle the Accordion, divider the Separator), each named in a generic_type_mapped warning. A type the site has no module for, such as an accordion on Beaver Builder Lite or a spacer anywhere, now stops the write with respira_beaver_unknown_module_type and the list of modules the site has, and the page is left as it was.
- fix
Custom JavaScript on an Elementor page waits for approval. elementor_add_custom_js wrote its script straight to the live page, with no draft duplicate and no snapshot, so new JavaScript went live with no way back. It now works like every other page write: on a published page the script goes on a draft duplicate for a person to approve, a snapshot is taken first, and the answer says which post it wrote to and which snapshot to restore.
- fix
Editing the text of a library block keeps the block. Changing the text of a Kadence Advanced Heading, a Spectra button or another block library block with update_element saved the bare text in place of the block's markup, so the editor flagged it as invalid and the page lost its styling. The new text now goes inside the block's own markup, and an attribute that held the same text (Spectra's button label) changes with it.
- fix
The block catalogue lists what each library really ships. Spectra Legacy registers most of its blocks only in the editor, so the catalogue your AI reads was missing its container, heading and button blocks; they are listed now, as are Kadence's accordion panes and tabs. Kadence no longer lists an image overlay block that does not exist and spells its table of contents block correctly, GenerateBlocks lists its current Element, Media and Query blocks, and GreenShift lists its 31 free blocks instead of seven that exist nowhere. Pages built with Spectra Legacy are also no longer reported as full of unsupported blocks after a write.
- fix
GreenShift elements without styles open cleanly in the editor. An element written with a localId but no styles carried that id as a class, which GreenShift's editor does not save, so it flagged the block as invalid. The class is now written only on styled elements, as GreenShift does.
- fix
Two block editor slips that showed as invalid content. A heading sent with a tag setting (h1) saved an h1 while the block said level 2, and a section with an anchor saved its wrapper without the id. Both now save the way the block editor does. build_page also stopped reporting text with an ampersand as not saved, when it was on the page as "&".
- fix
Exhale on Flatsome writes Flatsome's own shortcodes. Converting HTML to Flatsome wrote the page as [container], [text], [heading], [image] and [leaf], none of which Flatsome registers, so the page showed them as text with curly quotes inside. The restyle path now writes [section], [row], [col], [row_inner], [col_inner], [ux_text], [ux_image], [button] and [divider], and keeps anything Flatsome has no element for (forms, tables, icons, an image that is not in the media library) as written in [ux_html]. Before anything is written, every tag is checked against the shortcodes Flatsome registers, and a page that would carry one it does not is refused instead of saved. Reported by M.T.
- fix
Fidelity mode runs on Flatsome. A designed page now converts in fidelity mode on Flatsome, as it does on Divi, Elementor, Bricks and the others: one root section carries the page, the source sections, rows and boxes become Flatsome rows and columns with their own classes and ids, each element keeps its markup and its classes in an HTML element, forms stay real forms, and the page's stylesheet travels with it, scoped to the page. Until now a fidelity request on Flatsome quietly fell back to the restyle path. Reported by M.T.
- fix
Approving a change says when a cache in front of the site may still show the old page. Approval clears the page caches it can reach, but a server or CDN cache (LiteSpeed, nginx, Varnish, Cloudflare) sits outside WordPress. When the request shows one, the approval now names it in Respira, Changes, on the approve bar of the preview, and in the approve response an agent reads, instead of reporting a bare success while the public page still serves the old copy. Reported by P.L.
- fix
The browser connection block on Home is readable. On the Respira Home screen a freshly linked site lands on, the claude.ai and ChatGPT address block showed without its styling: the "copy the address" button was dark text on the dark card, so it could not be seen, and the steps were centred. The block now carries its own styling, so it looks the same on Home as on Setup.
- fix
The approve bar finishes after an approval that names a cache. When an approval on the preview page said a cache in front of the site may still serve the old page, the bar kept saying the change was pending, the approve button read "Working..." and both buttons stayed disabled, although the change was already live. The bar now says the change was approved and published, keeps the cache note, and offers to open the live page.
- fix
Page and post SEO is in the tool list, and SEO plugin keys sent as meta no longer pass in silence. update_page and update_post took an seo object, but no tool list showed it, so an agent wrote All in One SEO's _aioseo_title and _aioseo_description through meta. Those are a copy All in One SEO keeps for other plugins and never reads, so the write said success and the page title did not change. The seo object is now in both tool lists, with title, description, focus keyphrase, canonical URL, robots, noindex, nofollow and the Open Graph and X card fields. All in One SEO 4 keys sent through meta are written through All in One SEO's own save and the response says so in meta_warnings. Keys of an SEO plugin the site does not run are stored as sent, with a warning that they change nothing and which seo field to use. Common spellings such as canonical and meta_description are understood, and an seo field Respira does not know is named instead of dropped.
- fix
An image built on a Beaver Builder page shows the image. A generic image sent to build_page or inject_builder_content on Beaver became a Photo module without saying where its picture comes from, so Beaver showed its 1x1 placeholder with no alt text, an image sent as url became the photo's link, and the response still said the image renders. An image URL (src, url, image_url) is now a URL photo, a media library id (image_id) a library photo with the address Beaver renders from, and the alt text lands where Beaver reads it, as update_element already did. A photo with nothing to show now comes back with a beaver_photo_not_set warning that says how to set the image, instead of a claim that it renders.
- fix
A Spectra Legacy image without a media library id opens cleanly. An image sent with only an address was saved with an empty uag-image class, which Spectra's own save leaves out, so the block editor logged a validation failure and quietly migrated the block. The class is now written only when there is an id.
- fix
inject_builder_content follows a page's block library. Agents often name builder "gutenberg" for any block page. On a page that already had Kadence Blocks, Spectra, GenerateBlocks or GreenShift blocks, inject_builder_content then wrote new elements as WordPress core blocks and said nothing, while build_page and the add_* tools wrote the library's blocks. It now follows the page's library too, says so in library_blocks_hint, and lists the library's elements in library_blocks as build_page does. Core block names (core/heading) still write core blocks.