Release notes · v4.2 → v9.3.10

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.
820 Releases shipped
15 With a landing page
9.3.10 Latest stable
362 days Since v1.0
Product
Filtered YOOtheme Pro · 2 releases See YOOtheme Pro 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.

October 13, 2026
MCP server v8.5.0 Minor October 13, 2026 Four redirect tools: respira_list_redirects, respira_create_redirect, respira_update_redirect and respira_delete_redirect, for plugin 9.2.0 and newer Requires Needs plugin 9.2.0. (YOOtheme Pro support)
  • Four redirect tools: respira_list_redirects, respira_create_redirect, respira_update_redirect and respira_delete_redirect, for plugin 9.2.0 and newer. Before them, an agent asked for a redirect had one option: edit a redirect plugin's settings in the options table and hope. Each description now says what the tool refuses and why, and the server's own guidance sends agents here instead of to update_option. Update and delete travel as POST, so a host that blocks PUT and DELETE cannot quietly turn a change into a second redirect, and yes-or-no arguments go out as real booleans, so a dry run means the same thing to the approval check as it does to the write.

  • YOOtheme Pro support. Four tools are listed when the site's builder is YOOtheme: respira_list_yootheme_templates, respira_get_yootheme_template, respira_create_yootheme_template and respira_update_yootheme_template, for the site templates YOOtheme renders on single posts, the blog index, archives, search and the 404 page. A new template starts disabled for review, an enabled one changes only with confirm_live_edit, and every write returns a snapshot for respira_restore_snapshot. Needs plugin 9.2.0. yootheme is accepted as a builder name everywhere a builder is named, and the server instructions explain YOOtheme layouts (props, per-column widths, items).

  • respira_list_sites no longer counts a site from an ended trial as connected. A config made while a trial ran can hold sites that are not on the plan you pay for now; the list kept all of them and nothing told them apart, so an agent said "4 sites connected" while the dashboard showed 2. The list now carries plan_summary ("2 of the 4 sites in this list are on your Builder plan. 2 more belong to an ended trial ...") and marks each such site with plan: "ended", with the way to move one onto the plan (Respira → Setup in its wp-admin, link it again) and the way to remove one. respira_get_active_site says the same. Needs respira.press to send ended_plan_sites; with an older backend, dashboard keys that are not on the account list are still named.

  • A key from an ended trial refused by respira.press is no longer reported as "the account's plan is not active" when the account has another plan that runs. When the served list explains it, nothing is reported; when no other key in the config reaches the running plan, the notice names that plan and asks for a fresh setup code instead of sending a paying customer to billing.

  • respira_switch_site says that the site it switches to stays active for that connection after a restart (and says so when the state file cannot be written), and respira_list_sites carries a one-line switching hint when there is more than one site. Changing the default site no longer needs a hand edit of "default": true in ~/.respira/config.json.

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