# Changelog

## 1.1.4 — First stable WordPress.org release
- Rebuilt repeater rendering with isolated contexts so multiple repeaters can coexist on one Elementor page.
- Added the visible PressUndo Repeater Elementor widget.
- Added modern `{{ field }}` placeholders while preserving legacy `#field` compatibility.
- Preserved legacy `repeater_FIELD_NAME` CSS class recognition to ease migration from ACF Repeater for Elementor.
- Added complex ACF/SCF value normalization for images, files, links, taxonomy terms, post objects, relationships, users, arrays, and scalar values.
- Added current post, ACF/SCF Options Page, current term, current user, custom post ID, and nested parent-row data sources.
- Added nested repeater rendering and nested block syntax.
- Added saved Elementor template rendering per repeater row.
- Added classic Accordion/Toggle, Nested Accordion, and optional Elementor Pro Loop Carousel handling.
- Added PressUndo ACF Conditions with AND/OR relations and comparison operators.
- Added PressUndo Repeater Field dynamic tag and editor placeholder helpers.
- Hardened repeater rendering with context-aware escaping and sanitization for HTML, attributes, URLs, srcset, and inline styles.
- Sanitized complete inline HTML row-template output with WordPress KSES.
- Prevented unsafe inline event attributes from surviving rendered repeater markup.
- Fixed PHP 8.x null handling and unsafe object-to-string paths reported by users of the former plugin.
- Deferred Elementor Pro integration until Elementor is ready to prevent early autoload fatals.
- Prevented recursive saved-template rendering from blanking the Elementor settings panel.
- Stabilized the row-template controls and editor preview flow.
- Internationalized editor strings and completed WordPress.org package metadata and GPL licensing.

## 1.1.3
- Stabilized the Elementor widget settings panel.
- Removed the collapsible Row Template section that could blank the panel.
- Moved row-template controls into Repeater data.
- Replaced saved-template SELECT2 with a native SELECT.
- Removed row-template conditional UI re-rendering.
- Normalized saved-template IDs/titles.
- Added the required i18n translator comment.

## 1.1.2
- Prevented recursive saved-template rendering in the live editor.
- Added safe editor previews for saved row templates.
- Switched inline HTML editing to a stable textarea.
- Updated the widget icon.

## 1.1.1
- Added the visible PressUndo Repeater widget.
- Added the PressUndo Elementor category.
- Added saved Elementor template row rendering.

## 1.1.0
- Rebuilt the renderer to isolate each configured Elementor repeater instance.
- Fixed PHP 8.x null-to-preg_match deprecation path.
- Added modern placeholders and complex ACF/SCF object property resolution.
- Added current post, options, term, user and custom-post data sources.
- Added nested repeater support and nested block syntax.
- Improved Accordion, Nested Accordion and Loop Carousel handling.
- Added editor placeholder-copy UX.
- Protected Elementor Form widgets from duplication.
- Added ACF/SCF API compatibility detection.

## 1.0.1
- Fixed Elementor Pro fatal error caused by early class autoloading.
- Moved integration bootstrap to elementor/init.
- Deferred optional Loop Carousel registration until elementor/widgets/register.

## 1.0.0
- Initial PressUndo release.
- Security hardening for repeater placeholder rendering.
- New independent plugin identity and prefixes.
- Optional Elementor Pro carousel integration.
