Every fix that landed in v6.11, scoped to the adapter or tool surface it lives in.
Each one closes either a customer-reported issue or a public github issue.
Bricks paper cuts
3 inject foot-guns Element-name validator with Levenshtein-ranked "did you mean" suggestions for unknown names instead of silent rendering of name: "div". Auto-wrap on array content input so callers don’t have to know the undocumented { elements: [...] } envelope. _cssGlobalClasses now documented as a first-class property on every element with a worked example in the tool description.
Bricks REST 500 on find_element
github #21 ntrance A TypeError in Respira_Builder_Tree_Utility::find_recursive() returned 500 on every find_element call when the data structure had non-array elements at any tree level. One-line is_array() guard fixes it. Reported with the exact patch in the issue thread; applied verbatim.
Beaver foundation
3 persist-and-render bugs Three bugs blocked the heading / text / button persist-and-render flow on Beaver Builder Pro. update_element no longer silently no-ops (read-modify-write canary asserts the new content is in _fl_builder_data before declaring success). Heading text now lands under settings.heading (Beaver’s fl-heading reads that, not settings.text). Button URLs survive complexify (link, link_target, link_nofollow all preserved).
Cross-builder text identifier alias
Beaver, Breakdance, WPBakery find_element({identifier_type: "text", …}) now works on Beaver, Breakdance, and WPBakery as an alias of content. Three builders previously returned 404; one shared Respira_Builder_Identifier_Aliases helper covers every adapter going forward.
Divi 4 shortcode write support
github #24 pablolic The "Legacy block at index 0 must remain opaque" guard from the v6.7.x Divi 5 ship was a placeholder that was never lifted. Divi 4 pages were effectively read-only for update_element. v6.11 ships actual Divi 4 shortcode write support via a per-attribute writer using the existing find_node() walker, plus respira_rewrite_legacy_shortcode(post_id, new_post_content) for atomic replacement when the per-attribute path doesn’t fit.
Divi button_url validator
github #25 pablolic Relaxed to match esc_url_raw semantics. Accepted forms now: fragment-only (#), fragment id (#section-id), relative paths (/, ./, ../), mailto:, tel:, sms:, query-only (?query), plus all standard http(s). Pre-existing button_url="#" on sibling modules no longer blocks writes to unrelated modules; validation is scoped to the fields the caller is actually mutating. javascript: is rejected with a specific scheme rule.
wordpress_diagnose_connection
new MCP tool Runs a full self-check battery and reports back structured findings when a customer site behaves oddly. Detects HTML-instead-of-JSON responses (extracts the page <title> from the body so you instantly know which layer is intercepting), edge-layer presence (Cloudflare cf-ray, Wordfence x-wordfence-*, Sucuri x-sucuri-*), schema-vs-rest drift, Authorization-header arrival, and Respira route registration. Pairs with a server-side /respira/v1/diagnostic/report plugin endpoint that surfaces what the MCP server can’t see from outside.
Plugin auto-connect on Overview tab
admin UX v6.10.0 wired the auto-connect block into the License view, but customers landing on the Overview tab first saw the paste-only flow and could not find the auto-connect path at all. The connect block now appears on Overview (?page=respira-for-wordpress) too, mirrored into admin/views/dashboard.php. Same block, both tabs. New customers connect in one click instead of digging for the API key paste field.