Skip to content

v1.3.1

Choose a tag to compare

@Hordekiller Hordekiller released this 27 Jun 09:14
· 12 commits to main since this release

v1.3.1

New

  • Elementor_Renderer refactored into 7 single-responsibility classes (NodeFilter, TypeResolver, StyleExtractor, LayoutExtractor, WidgetConverters, Positioning, JsonNormalizer)
  • JsonNormalizer with normalize + validate on every save_template (critical errors → WP_Error, warnings → log)
  • Snapshot testing — 6 golden scenarios, 83 total tests across 5 suites
  • AES-256-GCM crypto upgrade (v2: prefix, backward-compatible CBC fallback)
  • Cache metrics with per-type TTL, sampled logging (1:20), dedicated cache_get/cache_set wrappers
  • Image download chunking (groups of 5) + progress throttling (≤1 call/sec)
  • 9 additional language .po files (total 10: fa_IR, en_US, de_DE, es_ES, fr_FR, it_IT, nl_NL, pt_BR, sv_SE, tr_TR)
  • "Recent Activity Log" section in Dashboard

Enhancement

  • All 23 AJAX error responses include a stable code string for programmatic handling
  • Logger error_log() fallback for ERROR/CRITICAL + hello_figma_logged action hook
  • Rotated absolute-positioned nodes logged as WARNING with node_id/name/rotation
  • AJAX input hardening — format enum validation, overrides size limit (10KB) and depth limit (5)
  • 3 RTL test cases for map_align (CSS logical properties flex-start/flex-end)

Fix

  • PHPStan Level 6 — 0 errors (baseline only for missingType.iterableValue)
  • PHPCS — all test files auto-fixed, project_audit excluded from scan
  • save_template uses $validation['ok'] instead of fragile str_contains heuristic
  • $run_id typo in Logger resolved
  • should_position_absolute() renamed to node_needs_absolute_positioning()
  • 16 fixture entries for TypeResolver (12 mapping rules, 4 edge cases)

Docs

  • README.md overhaul — Project Status table (done/incomplete/help-wanted), full language list, updated architecture diagram, honest known limitations