Release notes · v4.2 → v9.2.6

Every release,
every story.

A single timeline. Every version Respira has shipped, with the stories behind the ones that mattered. Click into any release tagged story for the full write-up.

Connect your WordPress site
Looking for the plugin? The download and your license key are in your dashboard, one free sign-up away. No card.
766 Releases shipped
15 With a landing page
9.2.6 Latest stable
336 days Since v1.0
Product
Filtered Visual Composer · 2 releases See Visual Composer MCP → Clear
October 13, 2026
WordPress plugin v9.2.0 Minor October 13, 2026 Redirects have their own tools, and their own manners
  • Redirects have their own tools, and their own manners. respira_list_redirects, respira_create_redirect, respira_update_redirect and respira_delete_redirect. They exist because an agent moving a site to a new domain needed one redirect, and the only road it could find ran through a redirect plugin's settings in the database. That road works until the day it doesn't. When Redirection is active, Respira writes through Redirection itself, so the redirect sits in its screens like one you made and keeps its place in the list when it changes. Without it, Respira keeps a small list of its own and answers those addresses before WordPress starts looking for the page. Rank Math, Yoast SEO Premium, Safe Redirect Manager and Simple 301 Redirects are read, never written.

    A redirect is a promise to every visitor and every search engine, so I check it before making it. Respira refuses to move wp-admin, the login page, the REST API, cron, XML-RPC and WordPress's other own addresses, or a pattern that reaches them. It refuses a redirect that would walk visitors in a circle through any of those plugins, a second redirect for an address that already has one, and a permanent redirect to a page that answers with an error, unless you say why. A pattern that copies part of the address into the target can only send people somewhere on your own site. The home page, and any pattern that catches every address, wait for a person to say yes; on Redirection, which answers the login page too, a catch-all is refused outright. A chain longer than one hop comes back as a warning, because each extra hop is a small tax on speed and on search. Every change keeps a snapshot, so respira_restore_snapshot undoes it, and the list can follow one address through every redirect with real requests and tell you where it really ends up.

  • YOOtheme Pro is a supported builder. Respira reads and writes YOOtheme pages as YOOtheme builder layouts: sections, rows, columns and YOOtheme's own elements. Every write is saved through YOOtheme's own builder, the way its customizer saves, so a page opens in the YOOtheme customizer like one built there. Your AI gets every element's fields and allowed values from the running theme, custom elements from child themes and extensions included, and a catalog of the 75 elements of YOOtheme Pro 5.0.50 when the theme is not loaded. Column widths, the items a button, list or grid needs, and the section and row a loose element needs are added for it. A setting an element does not have is named in the response instead of being stored where YOOtheme never reads it. Builder info also reports the YOOtheme style, its variable overrides and the site templates.

  • YOOtheme site templates can be read and changed. Four tools appear on YOOtheme sites: list_yootheme_templates, get_yootheme_template, create_yootheme_template and update_yootheme_template. A template is the layout YOOtheme renders for every single post, the blog index, an archive, search or the 404 page. A new template starts disabled, so you can review it in the YOOtheme customizer before it changes the site. Changing an enabled template, or enabling one, needs your confirmation, and every write saves a snapshot first that restore_snapshot puts back.

  • Exhale converts HTML into YOOtheme Pro pages. convert_html_to_builder takes builder yootheme. Headings, text, buttons, images, video and lists become YOOtheme elements, a grid or flex layout becomes a row of columns, and a wrapper's alignment and background colour reach its section or column. Only forms, tables and icons stay as HTML. YOOtheme takes its look from its style, so the source stylesheet is not carried, and the response says so.

  • The add_ tools write YOOtheme elements.* add_button writes a Button with its item, add_accordion an Accordion with its items, and so on. YOOtheme has no spacer, progress bar or form element: the first two become a small HTML element with YOOtheme's own UIkit markup, and add_form is refused with a pointer to a form plugin's shortcode.

  • Every builder says what it can write. get_builder_info now carries write_capabilities for every builder: whether it builds pages, adds elements or only edits text, and whether a new element is native, written as core blocks, or partial. On Thrive Architect, which only edits existing text, and SeedProd, which is read only, build_page and the add_* tools now refuse before anything is written. Before, a Thrive page build failed after the page was created, add_* reported success while writing nothing, and the design ended up in a single HTML block. Every build response counts the elements written as raw HTML.

  • respira.press records the active theme. The license check and tool calls carry the theme name, its parent and whether it is a block theme. Public identifiers only.

  • A YOOtheme section shows its own background colour. YOOtheme draws a section's colour only when no predefined style is set, and every section starts on the default style, so a colour sent on its own was stored and never shown. Respira now clears the style when a colour is set, as picking a colour in the customizer does.

  • The new Spectra Blocks plugin is detected as Spectra. Spectra split into Spectra Legacy and the new Spectra Blocks in 2026, and sites on the new plugin reported no Spectra at all.

  • Font tokens reach a block theme's Global Styles. Applying a design direction to a block theme skipped every font family and filed font sizes as spacing sizes. Font families, font sizes, line heights and letter spacing now land where WordPress reads them, with body and heading fonts set from the token's role.

  • Exhale keeps WPBakery and Visual Composer apart. A Visual Composer Website Builder site got a WPBakery shortcode tree, and an explicit builder visual-composer failed as if WPBakery were missing. Each product now gets its own elements.

  • The Divi 5 module list is current with Divi 5.13, including the Charts and Payment Button modules.

June 12, 2026
Clearing key visual

What the agent writes is what actually lands on the page

A deep pass through every supported builder, closing the gaps where a write reported success but the page stayed stale or blank. Styling now lands on Oxygen, Beaver Builder, Elementor v4 Atomic, Bricks, Divi 4 and Divi 5. Brizy and Visual Composer move from read to write, with their caveats stated. Recovery gets deeper: custom CSS and page settings are captured, and globals are versioned, so deleting a Bricks global class, a Divi preset, or an Elementor kit color leaves a recovery point. And when something cannot be persisted in a way the builder reads, Respira says exactly what did not land instead of reporting success. Every fix verified on a real site by loading the actual rendered page.

12 builders verified end-to-end
2 builders moved from read to write
6 verification stages per builder
Read the full story
Show the 18 entries
  • This release is about making sure that what the agent writes is what actually lands on the page, and that you can always get back to where you were.

    When you ask an AI agent to change a site, "success" should mean the change is live, not just that a database write returned without an error. Across a deep pass through every supported builder, I found places where Respira wrote data in a shape the builder didn't read, or skipped a step the builder needed to render, and reported success anyway. The page stayed stale, or blank, and the agent had no way to know. Clearing closes those gaps. Every fix in this release was verified on a real site with the real builder installed, by loading the actual rendered page, not by trusting the write.

  • Brizy moved from read to write. Respira can now write Brizy pages that Brizy's own editor opens and the front end renders. Writes are labeled with their caveats in the docs (front-end compile depends on Brizy's compiler service, so the site needs internet).

  • Visual Composer moved from read to write. Respira now writes in VC's canonical storage format, so the editor loads the page and the front end renders. Labeled with its caveats (VC recompiles on the next editor save).

  • Globals are now versioned. Deleting a Bricks global class, a Divi preset, or an Elementor kit color now leaves a recovery point. "The agent deleted my global class" used to be unrecoverable; now you can roll it back. Restores remain themselves undoable, so recovery can never make things worse.

  • Your own custom CSS and page settings are now captured in snapshots, so the edits Respira makes to things like custom CSS are recoverable, not just the main content.

  • Loud-drop behaviour across builders. When a value cannot be persisted in a way the builder reads, Respira names exactly what did not land and tells the agent not to retry blindly. This is the systemic version of the per-builder fixes below, and it cuts the retry loops that waste tokens.

  • An internal check now runs across the test fleet to confirm that every builder function Respira calls actually exists in that builder. It would have caught several of the silent failures below the day they were written, and it now runs continuously.

  • Oxygen: generated CSS was being written without the selectors it needed, so styles never reached the page. Element styling now renders, and dynamic content resolves correctly. Code blocks that contained quotes could corrupt a page; that is fixed.

  • Beaver Builder: style edits were serving stale CSS until you re-saved in the editor, because a cache flush was calling the wrong internal method and silently never ran. Style changes now appear immediately.

  • Elementor v4 (Atomic): styling writes now route correctly and the styles wire to the element, so colors, typography, breakpoint and state styles render. Atomic styling support is now claimable, with the supported element set documented.

  • Bricks: responsive style overrides were written in a key shape Bricks doesn't parse, so tablet and mobile rules silently did nothing. They now render at the right breakpoints.

  • Divi 4: responsive values needed a flag Respira wasn't writing, so tablet and phone styles quietly voided. They now apply.

  • Divi 5: several modules were receiving content in fields the renderer ignores, so the content was invisible. Team member, pricing, video, countdown, testimonial and others now render. Unsupported responsive keys now report loudly instead of silently dropping.

  • Snapshot fidelity tightened across builders, including the case where Oxygen migrated sites were capturing nothing. Restores now bring back the builder data they're meant to.

  • Synced patterns: updates aimed at a synced pattern now return a clear message naming the actual pattern to edit, instead of silently doing nothing.

  • WPBakery: raw HTML and unknown shortcode types are now encoded and reported correctly instead of rendering as garbage or literal brackets.

  • Gutenberg: buttons now write canonical markup so they render styled, and stale helper attributes are cleaned up.

  • Brizy and Visual Composer ship with the caveats above, labeled honestly in the builder list.

  • A few deep follow-ups remain documented and in progress (Breakdance section-background CSS in some layouts; Elementor structured-property aliases, which warn clearly today).

Showing the most recent 146 releases. Older entries are in the release feed. Every release follows semver.org.