# Changelog

This documentation tracks released plugin behavior. Versions are listed without invented release dates.

## 2.4.9

- Scoped nested Loop Grid and Loop Carousel Relationship/Post Object queries to the active Repeater or Flexible Content row that owns the selected field path.
- Preserved every row's configured post order, including repeated instances of the same Flexible Content layout.
- Kept an empty active row authoritative so it cannot inherit selections from another row.
- Preserved real related-post context inside virtual row Loop Items and kept later Flexible Content mappings stable through nested rendering.
- Kept top-level and out-of-row Relationship queries on their existing aggregate source-object behavior.

## 2.4.8

- Restored the ACF Repeater Text **Before**, **After**, and **Fallback** controls in Elementor's actual dynamic-tag registration path.
- Added the ACF Options Page fallback when a Loop Item's selected preview post has no rows, while keeping populated preview posts authoritative.

## 2.4.7

- Added native **Before**, **After**, and **Fallback** controls to the ACF Repeater Text tag.
- Applied **Before** and **After** only to populated values, treated zero as populated, and returned **Fallback** by itself for empty values.
- Left image, URL, gallery, file, and other structured-value tags unchanged.

## 2.4.6

- Fixed ACF Link subfields using the Link URL return format dropping fragment-only links such as `#information-we-collect`.
- Preserved root-relative URLs while continuing to sanitize scalar URL values through WordPress.
- Left absolute URLs, email links, media fields, relationships, taxonomy links, previews, and frontend row context behavior unchanged.

## 2.4.5

- Fixed Automatic context using a Loop Item's saved Preview Post on normal frontend requests instead of the actual queried post.
- Limited saved Elementor Preview Post resolution to Elementor edit and preview modes.
- Kept Loop Item editor previews on their selected sample post while frontend widgets use the viewed post's own rows.

## 2.4.4

- Fixed Repeater dynamic tags rendering empty values when the selected Preview Post existed only in the current editor user's Elementor autosave.
- Resolved the active Loop Item through Elementor's autosave-aware document API while preserving the published-document fallback.
- Kept the override limited to authenticated Elementor AJAX requests for this plugin's Repeater tags.

## 2.4.3

- Fixed Repeater dynamic tags rendering empty values when Elementor's editor-side tag request used the Loop Item template instead of its selected preview post.
- Persisted explicit ACF row-schema changes before reloading the editor preview.
- Invalidated stale Repeater dynamic-tag preview cache entries without altering unrelated dynamic-tag settings.

## 2.4.2

- Fixed trailing Repeater Loop Grids rendering empty dynamic values when Elementor normalized a negative virtual row ID to an existing positive Theme Document ID.
- Preserved each virtual row and the surrounding WordPress query through Elementor's Loop Item preview lifecycle.
- Added no saved-setting renames, removals, or migrations.

## 2.4.1

- Updated the paid Pro trial from 3 days to 7 days to match the current Freemius checkout configuration.
- Kept the payment-method requirement and existing plan, license, and entitlement behavior unchanged.

## 2.4.0

### Editor-only Context Inspector

- Added an opt-in **Troubleshooting** panel to Elementor Loop Grid and Loop Carousel.
- Added provider, resolved object, row source, row-count, and representative-row metadata to Free and Pro.
- Added Pro-only stable paths, Flexible Content mappings, Relationship/Post Object resolution, row-query state, filter state, pagination, and signed-refresh status.
- Kept the inspector disabled by default and out of the preview canvas and frontend.

### Security and validation

- Required an authenticated nonce plus permission to edit the active Elementor document.
- Accepted only a strict widget-settings allowlist and excluded row values, field values, signed render tokens, credentials, and nonces from responses.
- Added PHPUnit, PHP 7.4 compatibility, PHPStan, package-boundary, and real Loop Grid/Loop Carousel browser coverage.

## 2.3.0

### Row search and sorting **Pro**

- Added opt-in search across selected scalar Repeater and Flexible Content row fields.
- Added stable text, number, and date sort choices with configurable public labels and default directions.
- Added number/date minimum and maximum filters plus Flexible Content layout filtering.
- Added optional, widget-isolated URL state for multiple Loop Grids and Loop Carousels.
- Applied taxonomy filtering, search, ranges, and sorting before one final pagination step.
- Kept all controls disabled by default and existing Loop Item markup unchanged.

## 2.2.1

### Elementor editor compatibility **Pro**

- Fixed an HTTP 500 while Elementor generated global Loop Grid and Loop Carousel control configuration.
- Stopped reading widget instance settings while Elementor was still constructing the control schema.
- Kept legacy Relationship/Post Object selectors editable without migrating saved settings.

## 2.2.0

### Product name

- Renamed the customer-facing product to **Dynamic ACF Repeater for Elementor**, following Elementor's trademark guidance.
- Preserved the installed folder, main plugin file, WordPress.org slug, text domain, Freemius identity, saved settings, and internal identifiers so existing sites update in place.

### Deep Relationship and Post Object queries **Pro**

- Added stable field-key paths through Groups, Flexible Content layouts, nested Repeaters, and mixed structural paths.
- Flattened posts selected across nested rows, removed duplicates, and preserved the first configured occurrence and field order.
- Added the same Relationship query controls to Loop Carousel.

## 2.1.0

### Elementor Pro Taxonomy Filter integration **Pro**

- Added an opt-in bridge between repeater taxonomy subfields and Elementor Pro's Taxonomy Filter widget.
- Preserved Elementor Pro's Taxonomy Filter markup, styles, URL state, multi-select behavior, pagination, and Load More controls.
- Kept the existing built-in custom filter and all saved settings unchanged when the Elementor Pro integration is not enabled.

## 2.0.1

### Compatibility

- Restored the established field-provider behavior: Secure Custom Fields and Advanced Custom Fields Pro are both supported through their shared runtime API.
- Kept Elementor as the only hard WordPress.org dependency because the dependency header cannot express alternative providers.

## 2.0.0

### Relationship queries **Pro**

- Preserved Elementor posts-per-page and pagination when resolving Relationship or Post Object fields from the current SCF/ACF object.
- Kept selected posts in field order without routing them through Repeater virtual-row pagination.

### Nested row sources **Pro**

- Added stable field-key paths for Repeaters nested inside Repeaters, Flexible Content layouts, and Group fields.
- Flattened matching child rows in source order while preserving their complete row/index path and formatted SCF/ACF values.
- Kept existing top-level Repeater widget settings and saved Loop Items backwards compatible.

### Flexible Content templates **Pro**

- Added the **ACF Flexible Content** skin to Loop Grid and Loop Carousel.
- Added one opt-in Loop Item mapping control for each discovered Flexible Content layout.
- Added explicit default-template fallback and skip-unmapped behavior without inserting frontend buttons, panels, or other visual markup.
- Suspended Elementor's position-based Alternate Templates only while the data-driven skin renders, then restored the saved setting.

### Elementor editor

- Added row-schema choices for nested Repeaters and individual Flexible Content layouts in Loop Item document settings.
- Limited dynamic-tag field choices to the selected layout schema.
- Added representative nested/layout values to Loop Item editor previews through the same resolver used on the frontend.

### Validation

- Added PHPUnit coverage for source discovery, stable selectors, nested path flattening, layout schemas, and virtual-row values.
- Added real WordPress browser coverage for per-layout output, nested rows, mapping controls, and Loop Item preview data.

## 1.2.1

### Lightbox visual compatibility

- Removed plugin-generated buttons from Loop Items and removed the editor diagnostic overlay.
- Restored the lightbox to a dim overlay containing the cloned Loop Item, with no generated title, white panel, toolbar, or footer.
- Kept nested links and form controls interactive while non-interactive item clicks open the lightbox.
- Prevented site-wide button styles from adding backgrounds, borders, or rounded shapes to close and previous/next controls.

### Elementor editor

- Applied width, height, padding, overlay, navigation, and close-control changes to an already-open lightbox preview.
- Restored Content Height sizing on the cloned Loop Item and its background-bearing Elementor root.
- Preserved Loop Carousel item deduplication and editor document-handle access without adding template markup.

### Packaging

- Kept the Freemius source header neutral while identifying licensed premium installs as PRO without duplicating the suffix.

## 1.2.0

- Added Automatic, Current Post, Queried Object, and Options contexts to Free.
- Added Current User and explicit post, user, taxonomy-term, or Options contexts to Pro.
- Restored lightbox opening in AJAX-rendered Loop Grid and Loop Carousel editor previews.
- Restored Pro lightbox Style controls for both loop widgets.
- Preserved non-post SCF/ACF object IDs through virtual rows and signed filter requests.
- Avoided enqueueing frontend dependencies during editor AJAX and REST render responses.
- The visible editor diagnostics and per-item trigger buttons introduced here were removed in 1.2.1.

## 1.1.0

### Security

- Replaced arbitrary public document rendering with signed, expiring render contexts bound to published content and an owned Loop Grid or Loop Carousel widget.
- Blocked anonymous private, draft, password-protected, malformed, and cross-document render requests with controlled REST errors.
- Changed editor REST permissions from generic `edit_posts` checks to `edit_post` checks for the requested document.

### Correctness and Pro improvements

- Removed a site-wide SQL rewrite that stripped `post__not_in` exclusions from unrelated queries.
- Added request-local, collision-safe virtual row IDs and row-level pagination for current-object Repeaters.
- Fixed empty Relationship queries, preserved Relationship field order, and corrected multi-term OR filtering.
- Corrected media, URL, Relationship, Taxonomy, and multi-value dynamic-tag formatting.
- Scoped multiple filters to their owning widget and prevented stale responses from replacing newer results.
- Consolidated feature registration behind the active Freemius entitlement and updated Freemius SDK to 2.13.4.
- Expanded automated Free/Pro package-boundary, PHPUnit, WordPress runtime, and Playwright coverage.

## 1.0.91

- Fixed a visual overflow regression in Free and Pro.

## 1.0.9

- Fixed Pro registration for the ACF Repeater Form options field.
- Added general Free and Pro stability improvements.

## 1.0.8

- Added the Pro **ACF Repeater Select** Elementor Form field with dropdown, radio, and checkbox presentation.
- Added Relationship and Post Object query support for fields directly inside a top-level Repeater.
- Normalized nested Relationship results to post IDs.

## 1.0.7

- Added Pro support for ACF Link fields with URL, Link Title, and Link Target tags.
- Added Pro Color and Icon tags.
- Improved Gallery normalization for IDs, URLs, arrays, and objects.

## 1.0.6

- Added drag ordering for taxonomy filter terms, instant updates, and an optional deep-link URL.
- Added the Pro **ACF Repeater Field** display condition.
- Fixed default-filter active styles and custom filter parameter names.
- Added Number support to the Pro Text tag.

## 1.0.5

- Fixed lightbox element-visibility flicker in Pro.

## 1.0.4

- Fixed taxonomy filters for Options Page Repeaters and array-based Taxonomy subfield values.
- Added custom URL parameters, empty-term display, default terms, filter dividers, term descriptions, and expanded filter style controls.

## 1.0.3

- Fixed the Free Loop Grid limit that showed only the first ten Repeater rows.
- Added the Options Page fallback when the current post has no rows.
- Added Pro Loop Carousel support.

## 1.0.2

- Fixed multiple Loop Item templates so each could access its selected Repeater field.
- Improved Repeater value retrieval.
- Added Pro support for multiple repeater-powered Loop Grids on one page.

## 1.0.1

- Added **Query Current Post Only** and improved editor preview post handling.
- Refactored Pro taxonomy filtering for current-post rows, aggregate Repeater rows, and parent-post taxonomy states.

## 1.0.0

- Initial Elementor Loop Grid integration for top-level SCF/ACF Repeater rows.
- Added Free Text, Image, Original Post Title, and background-image workflows.
- Added the first Pro media, Relationship-query, lightbox, taxonomy-filter, and visibility capabilities.
