Skip to content

v1.29.0

Choose a tag to compare

@BenKalsky BenKalsky released this 20 Aug 11:15
· 11 commits to main since this release
c1f5e3c

Nine correctness and discoverability fixes on the atomic (Elementor 4.x) write path, all found while building a real client site with these tools. Most were silent — the tool reported success and Elementor dropped the value.

Sites on 1.28.0 are offered this automatically through the self-updater, on the normal Plugins / Dashboard → Updates screens.

Silent write failures

  • font-family was emitted with the wrong $$type, so no font set through any tool ever applied. Elementor types it as Font_Family_Prop_Type, which does not share String_Prop_Type's key, and the style schema silently drops props that do not match.
  • update-atomic-widget could not change a style at all — it wrote only settings, but on an atomic element size, spacing and appearance live in the styles map. It now accepts the same flat style params as the add-* tools and merges them into the element's base variant, member-wise for composite props so touching one padding side no longer drops the other three.
  • add-custom-css was a no-op on atomic elements. It wrote the Elementor 3.x settings.custom_css control, which atomic elements never read. It now writes a style variant, base64-encoded — Elementor decodes that field through base64_decode() and a plain CSS string is dropped to an empty rule.
  • The fallback write path never invalidated Elementor's rendered-element cache. That path is the one taken in non-browser contexts — i.e. how the MCP writes — so a correct write served the pre-change markup until the cache expired. Indistinguishable from a failed write, and intermittent.

Capabilities that existed but were never advertised

  • add-flexbox and add-div-block now publish everything the builders accept. Borders, radii, widths, gradients and per-side spacing always worked; the schema advertised 14 parameters and none of them, so agents concluded atomic containers could not express them. Both tools now derive their schema from a single shared source, and tests pin schema and builder together in both directions.
  • New: position and box-shadow — the two capabilities that were genuinely missing. The input key is css_position, not position, which the layout tools already use for the insert index. Offsets use logical names (offset_inline_start and friends) because the inline axis follows text direction; offset_left would name the wrong edge on every RTL page.

Discoverability

  • New: server-info, a diagnostic that cannot be switched off. Reports plugin / Elementor / Elementor Pro versions, atomic state, the resolved MCP adapter source and version, whether the server endpoint is on, and registered vs exposed vs suppressed ability counts with the suppressed slugs and the cause of each gap. A fresh install presenting as "zero tools exposed" previously had nothing anywhere to explain it.
  • add-nav-menu published the wrong parameter for choosing the menu. menu_name is the widget's accessible label; the SELECT that picks the navigation is menu. On a site with more than one menu, the wrong navigation was inserted.
  • replace-system-colors and update-global-colors now describe what they each write and name each other. update-global-colors appends to custom_colors and never touches the four system slots every Global Color picker references, so a brand palette could land while Elementor's stock colour stayed bound to the roles that matter.

Full detail in CHANGELOG.md.