Skip to content

v4.3.0 - DIVI 5 + Elementor 4 Atomic + Oxygen 6 native support

Choose a tag to compare

@coryhubbell coryhubbell released this 19 May 15:27

What's New in v4.3.0

Picks up the three items v4.2 explicitly deferred. v4.2 shipped detection-only helpers for DIVI 5, Elementor 4 Atomic, and Oxygen 6 — content matching those signatures passed through untranslated. v4.3 wires native parser + converter pairs for all three, plus a correctness fix for the Bricks converter.

Framework Coverage

v4.2 v4.3
Frameworks 11 14
Translation pairs 110 182

New Framework Parsers + Converters

Framework Format Status
divi-5 WordPress block markup (wp:divi/* namespace) Native — schema per public block-json-reference
elementor-4 Atomic Editor JSON (e-div-block, e-flexbox, e-grid, e-heading, e-paragraph, e-button, e-image, e-form) Native — schema per Elementor developer docs
oxygen-6 Nested JSON tree with EssentialElements\* namespaced types Proxy — Oxygen 6 was rebuilt on the Breakdance codebase (~80% shared); shipped against the documented Breakdance schema

Each new framework registers in both DEVTB_Parser_Factory and DEVTB_Converter_Factory with sensible aliases (divi5, elementor4, elementor-atomic, oxygen6).

Automatic Routing

The legacy parsers now short-circuit when they see content from their successor:

  • DEVTB_DIVI_Parser::parse() returns [] when is_divi5_payload() matches block-comment content (<!-- wp:divi/* -->)
  • DEVTB_Elementor_Parser::parse() returns [] when is_atomic_v4_payload() matches (elType: e-* or version >= 4)
  • DEVTB_Oxygen_Parser::is_oxygen6_payload() exposes the same pattern for callers routing around the legacy ct_* path

Bricks Correctness Fix

The PHP Bricks converter was emitting nested child element objects inside children[] — wrong against every Bricks Builder version. v4.3 refactors to the real Bricks 2.x flat page format:

  • Top-level array of elements, each with a string parent id and children array of child id strings (not nested objects)
  • DEVTB_Bricks_Parser accepts both the new flat format and the legacy nested fixture shape
  • Python bricks.py now links direct-child ids back into each parent's children array

Structural assertion assertBricksFlatStructure runs on every *_to_bricks translation pair to prevent regression.

New Components

PHP:

  • translation-bridge/parsers/class-divi5-parser.php
  • translation-bridge/parsers/class-elementor4-parser.php
  • translation-bridge/parsers/class-oxygen6-parser.php
  • translation-bridge/converters/class-divi5-converter.php
  • translation-bridge/converters/class-elementor4-converter.php
  • translation-bridge/converters/class-oxygen6-converter.php

Python:

  • src/translation_bridge/converters/divi5.py
  • src/translation_bridge/converters/elementor4.py
  • src/translation_bridge/converters/oxygen6.py

Test Deltas

v4.2 baseline v4.3
PHP tests 208 284
PHP assertions 447 4003
Python tests 63 109

Pre-existing 41 errors / 3 failures unchanged (class-autoload mismatches not addressed by this release).

⚠️ Proxy Schema Disclosure

Oxygen 6 and parts of DIVI 5 / Elementor 4 were implemented against published documentation without verification against real exports. The structural shape (block delimiters, atomic field set, namespaced types, _nextNodeId book-keeping) is asserted by the test suite, but specific internal property keys may need a follow-up patch once real fixtures are available. Each proxy assumption is isolated to a single helper for mechanical correction:

  • Oxygen 6: ELEMENT_NAMESPACE constant + build_properties helper
  • DIVI 5: build_attrs helper (responsive value wrappers, content keys)
  • Elementor 4: build_settings helper (per-widget setting keys)

Full Changelog: v4.2.0...v4.3.0