Releases: Hordekiller/FigmaToelementor
Releases · Hordekiller/FigmaToelementor
Release list
v1.3.3
Fixes
Critical
- Front-end fatal — is_plugin_active() guard added for non-admin page loads (Phase 0)
- Linear gradient detection — GRADIENT_LINEAR case added (was silently dropped; Phase 1)
Security (Phase 2)
- esc_url() on image src, add_link_attributes() for custom link
- SSRF host allowlist + image-only MIME restriction on downloads
- current_user_can('manage_options') added to admin handlers
- .htaccess deny-all added to log directory
Logic bugs (Phase 3)
- BOOLEAN_OPERATION/STAR/POLYGON mapped to icon (not image) — SVG export path
- Per-side stroke weight — reads flat strokeTopWeight/strokeLeftWeight etc.
- Partial padding — individual sides applied, missing sides default to 0
- Social icons 'x' matcher — word-boundary regex instead of bare str_contains
- Dead ternary in extract_button_settings — split into proper fallback logic
Data integrity (Phase 3/4)
- to_object list repeater corruption — sequential arrays preserved as arrays (not stdClass with numeric keys)
- Stat parser — EU ambiguous formats return null, negative signs handled
CI
- PHPCS line length errors/warnings resolved
- PHPStan nullCoalesce.offset in image-handler.php resolved
Tests
- 29 new regression tests covering all fixes above
- Existing test suites: 126/126 green
- PHPStan Level 6: 0 errors
- PHPCS: 0 errors
v1.3.1
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
codestring for programmatic handling - Logger error_log() fallback for ERROR/CRITICAL +
hello_figma_loggedaction 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_templateuses$validation['ok']instead of fragile str_contains heuristic$run_idtypo in Logger resolvedshould_position_absolute()renamed tonode_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
v1.3.0
What's New
- Absolute positioning — Figma absoluteBoundingBox converted to Elementor
position: absolute - Smart Widget Conversion — FAQ→Accordion, Gallery→Basic Gallery, Slider/Carousel→Image Carousel
- Section Review — Preview frames with detected component types before import
- Progress Bar — Real-time status updates during import
- Per-side Borders — Individual top/right/bottom/left stroke widths
- Dynamic Tags — Elementor Pro dynamic tags for Figma text/fields
Enhancements
- Token encrypted at rest using AUTH_KEY-derived AES-256
- Structured logging via centralized Logger class
- Cache TTL configurable via
hello_figma_cache_ttlfilter - Manual cache flush button in admin settings
- Image auto-download and attachment via Image_Handler
- Radial gradient type detection (mapped to Elementor radial)
- Angular/diamond gradient types mapped to linear fallback
- Asset_Manager for centralized script/style registration
- Compatibility checks for plugin environment
Docs & Tooling
- Updated README.md features table and added Known Limitations section
- PHPCS + PHPStan configuration files
- Fixed GPL license table (forks are allowed under GPL)
v1.2.1
v1.2.1
Fixed
- Sync HELLO_FIGMA_VERSION constant with plugin header (1.2.1)
- Add uninstall.php: cleanup all plugin options, transients, and post meta on deletion
v1.2.0
v1.2.0
New
- Token encryption (AES-256-CBC + wp_salt)
- Real-time progress bar with AJAX polling
- Absolute positioning for Figma non-auto-layout frames
- Filterable cache TTL and API timeout hooks
Fixed
- Rate-limit retry: cap at 3 retries (prevents infinite loops)
- Rotated nodes excluded from absolute positioning (deferred for relativeTransform)
Refactored
- should_position_absolute() renamed to node_needs_absolute_positioning()
- compute_relative_position() extracted as separate method
- Absolute children get explicit width/height from bounding box
Figma to Elementor v1.0.0
Figma to Elementor v1.0.0
The first public release! Convert Figma designs into Elementor templates with full style preservation.
Features
- One-click Import — Paste any Figma URL, auto-extracts the file key
- Frame Browser — Browse frames with live preview thumbnails
- Full Style Mapping — Colors, typography, gradients, shadows, borders, opacity
- Component Breakdown — Each section (header, hero, footer) becomes an independent Elementor container
- Container-native — Built for Elementor Flexbox Containers
- Typography Preserved — Font family, size, weight, line height, letter spacing, transforms
- Gradient Support — Linear gradients with accurate color stops
- Image Mapping — Background images from Figma fills
- Style Sync — Sync Figma styles to Elementor Global Colors/Fonts
- Editor Integration — Import directly inside Elementor editor via $e.run()
- URL Parsing — Paste full Figma URLs, file key is extracted automatically
- Persian Support — Full RTL and Persian (Farsi) localization
Requirements
- WordPress 6.6+
- PHP 8.0+
- Elementor 3.27+ (Free or Pro)
- Figma Personal Access Token
Installation
cd wp-content/plugins/
git clone https://github.com/Hordekiller/FigmaToelementor.git hello-elementor-figma-syncThen activate from WordPress admin → Plugins.
Changelog
See full changelog.