=== Massoftind Field Builder ===
Contributors: sandipbiswas123
Donate link: https://masssoftwaresolutions.com/
Tags: custom fields, field builder, repeater, metabox, gallery
Requires at least: 6.2
Tested up to: 7.0
Requires PHP: 8.1
Stable tag: 1.9.100
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Modern custom fields for WordPress — visual builder, nested repeaters, galleries, relationships, WPML, conditional logic, and theme helpers.

== Description ==

**Massoftind Field Builder** is a modern custom-fields / field-builder plugin for WordPress. Build reusable field groups with a clean visual UI, nest repeaters and layout blocks, attach media and relationships, and render values safely in your theme.

= Highlights =

* **Visual field builder** — drag-and-drop fields, search, duplicate, Browse Fields type switcher
* **37 field types** — text, media, choices, relations, layout, and more
* **Nested structures** — Repeater, Group, Accordion, Tabs, Layout Blocks
* **Smart location rules** — post type, template, taxonomy, user form, and custom filters
* **Conditional logic** — show/hide fields based on other field values
* **Developer-first** — copy-ready PHP snippets, Filters & Hooks guide, optional REST API
* **Multilingual-ready** — WPML / WCML and qTranslate-X / qTranslate-XT
* **Try instantly** — [WordPress Playground live demo](https://playground.wordpress.net/?plugin=massoftind-field-builder&url=/wp-admin/admin.php%3Fpage%3Dmassoftind-fb-field-groups&php=8.2)

= Try a live demo =

Open WordPress Playground with the plugin preinstalled:

[Try Massoftind Field Builder in WordPress Playground](https://playground.wordpress.net/?plugin=massoftind-field-builder&url=/wp-admin/admin.php%3Fpage%3Dmassoftind-fb-field-groups&php=8.2)

Or load `blueprint.json` from the plugin zip in the [Playground Builder](https://playground.wordpress.net/builder/builder.html).

= Video walkthrough =

https://www.youtube.com/watch?v=6Z7VDzOmx1M

= Field types =

* **Basic:** Text, Textarea, Number, Email, URL, Password, Hidden, Range, Color
* **Content:** WYSIWYG, Code Editor, Shortcode, Link, Message (instructions only)
* **Date & time:** Date, Date & Time, Time
* **Media:** Image, Gallery, File, Video, YouTube
* **Choices:** Select, Checkbox, Radio, Toggle, Star Rating
* **Relations:** Post Object, Relationship, Taxonomy, User
* **Layout:** Repeater, Group, Accordion, Tabs, Layout Blocks, Clone

= Modern media & gallery =

* Gallery and Image return formats: Image ID, Image URL, or **Image Array**
* Gallery layouts: Card / Masonry with optional lightbox
* Per-image **Link URL** + **Link Target** (`_blank`, `_self`, `_parent`, `_top`) in the Media sidebar
* Theme loops can use `$img['external_url']` and `$img['target']` (or `massoftind_fb_the_gallery()`)

= Relationships & taxonomies =

* Relationship dual-list picker with search, filters, drag reorder
* **Allow Multiple** with optional **Min / Max** selection limits
* WPML-aware titles — Available and Selected stay in the current admin language
* Taxonomy multi-select preserves pick order; optional **Exclude Terms** picker
* Taxonomy **Min / Max** when multiple is enabled

= Builder & admin experience =

* Drag-and-drop field builder with nested Sub Fields
* Location rules (post type, page template, taxonomy, role, and more)
* Conditional logic on fields
* Import / export field groups as JSON
* Post Types, Taxonomies, Site Sections, List Views, and **Content Order**
* Settings: Preferences, Field Usage Guide, **Filters & Hooks** reference
* Optional Classic Editor toggle and SVG upload control
* Onboarding checklist and in-plugin documentation

= Multilingual & integrations =

* **qTranslate-X / qTranslate-XT** — language buttons on text-like fields
* **WPML + WooCommerce Multilingual** — translate/copy custom fields; product sync with WCML
* **Yoast SEO / Premium** and **Rank Math / Pro** — custom field variables
* **WooCommerce** location rules for products
* **WP All Import Pro** / **WP All Export Pro** field exposure

= Template helpers =

Use in your theme:

* `massoftind_fb_get()` / `massoftind_fb_update()`
* `massoftind_fb_have_rows()` / `massoftind_fb_the_row()` / `massoftind_fb_sub_field()`
* `massoftind_fb_image()` / `massoftind_fb_gallery()` / `massoftind_fb_the_gallery()`
* `massoftind_fb_terms()` / `massoftind_fb_date()` and more

Optional template-compatibility aliases (`get_field`, `have_rows`, …) can be enabled in Settings for existing theme code.

= Privacy & third-party services =

* Does **not** phone home or send site data to Massoftind
* YouTube fields may load thumbnails/embeds from YouTube only when configured — see [YouTube Terms](https://www.youtube.com/t/terms)
* SVG uploads are **off by default** (Settings → Allow SVG Uploads)

= Optional companion =

Works alongside **Dynamic Content Builder** for front-end listings. No other plugins are required to use Field Builder.

== Installation ==

1. Upload the `massoftind-field-builder` folder to `/wp-content/plugins/`, or install via **Plugins → Add New → Upload Plugin**.
2. Activate **Massoftind Field Builder**.
3. Open **Field Builders** in the admin menu.
4. Create a field group, add fields, set location rules, and save.
5. Edit matching content and use template helpers (or the developer panel snippets) in your theme.

== Frequently Asked Questions ==

= Do I need another custom fields plugin? =

No. Massoftind Field Builder is a standalone field builder with its own metabox UI, repeaters, and template helpers.

= Can I try it before installing? =

Yes — [WordPress Playground live demo](https://playground.wordpress.net/?plugin=massoftind-field-builder&url=/wp-admin/admin.php%3Fpage%3Dmassoftind-fb-field-groups&php=8.2).

= Where are field values stored? =

As prefixed post meta. Field-group definitions use an internal custom post type.

= How do I set a Link URL on a gallery image? =

Open the Gallery field → **Edit** on a thumbnail → in Attachment Details set optional **Link URL** and **Link Target**. Values appear in Image Array as `external_url` and `target`.

= Can I limit how many items a Relationship or Taxonomy field allows? =

Yes. Enable **Allow Multiple**, then set optional **Minimum Selections** and **Maximum Selections** (0 = no limit).

= Can I move field groups between sites? =

Yes. Use **Tools → Export** and **Import** for JSON field-group definitions (and related Post Types / Taxonomies / Site Sections when present).

= Is there a REST API? =

Yes, optional. Enable under **Field Builders → Settings**. Endpoints require authenticated users with the right capabilities.

= Does this phone home? =

No.

= Does it work with qTranslate-X? =

Yes. With **qTranslate-X** or **qTranslate-XT**, text-like fields use Language Switching Buttons. Helpers return the active language on the front end.

= Does it work with Yoast SEO, Rank Math, WP All Import / Export? =

Yes, when those plugins are active (SEO variables, sitemap exclusions, import/export field exposure).

= Does it work with WPML / WooCommerce Multilingual? =

Yes. Fields register for translate/copy; WCML product translation UI is supported. Override under WPML → Settings → Custom Fields Translation.

== Screenshots ==

1. Simple & Intuitive — create field groups and edit values in a clean modern admin UI.
2. Made For Developers — template helpers and copy-ready snippets from the developer panel.
3. All About Fields — 37 field types: Text, WYSIWYG, Image, Gallery, Relationship, Repeater, Layout Blocks, and more.
4. Location Rules — show field groups by post type, template, taxonomy, role, and more.
5. Latest features — Image Edit/Remove overlays, Gallery Link URL + Target, Content Order, WPML-ready relationships, and WYSIWYG embeds.

== Changelog ==

= 1.9.100 =
* Fix: WPML Translation cards no longer clip at the bottom (open accordion overflow + card min-height).

= 1.9.99 =
* Fix: WPML Translation cards span the full settings width (were stuck in half of the 2-column grid).

= 1.9.98 =
* Improved: WPML Translation options match the reference layout — 4 cards in a row, radio above title, `margin-bottom: 6px` on the radio dot.

= 1.9.97 =
* Fix: WPML Translation radio dots render as proper circles (were stretched into thin vertical slivers).

= 1.9.96 =
* Fix: Field Instructions `<strong>` (and other basic HTML) were stripped on Save/refresh — JSON payload was run through `sanitize_text_field` before save.

= 1.9.95 =
* Fix: Field instructions `<strong>` / `<b>` render bold on edit screens; WPML Translation radio cards no longer overlap option titles.

= 1.9.94 =
* Fix: Field list “Move to Trash” tooltip no longer clips on the right edge of the sidebar.

= 1.9.93 =
* Fix: Field list tooltips (Duplicate / Move to Trash) no longer clip under the Add Field bar.

= 1.9.92 =
* Fix: Removed the misplaced **Empty Trash** button under “+ Add Field” in the group editor.

= 1.9.91 =
* Enhancement: Field group editor field list has **All | Trash** — deleted fields can be restored or permanently removed (saved with the group).

= 1.9.90 =
* Fix: Field Groups **Trash** tab URL used a missing page slug (`massoftind-fb`) and showed “not allowed”; now opens `massoftind-fb-field-groups&status=trash`.

= 1.9.89 =
* Enhancement: Field Groups now use **Trash** — deleted groups appear under All | Trash; restore or permanently delete from Trash.

= 1.9.88 =
* Enhancement: Field group editor **Developer Panel** can be shown/hidden with a header toggle (preference remembered). Also honors the Settings → Developer Panel switch.

= 1.9.87 =
* Fix: Field **Instructions** keep basic HTML (`<strong>`, `<em>`, links, etc.) on save and render bold/italic correctly on edit screens.

= 1.9.86 =
* Improved: WPML Translation setting uses radio cards (Don't translate / Copy / Copy once / Translate) instead of a select.

= 1.9.85 =
* New: Per-field **WPML** Translation setting (Don't translate / Copy / Copy once / Translate) in the Field Builder when WPML is active; syncs to Custom Fields Translation on save.

= 1.9.84 =
* Fix: `have_rows()` / `massoftind_fb_have_rows()` now work with term selectors (`product_cat_12`, `term_5`, …) so taxonomy repeaters render on the front end.

= 1.9.83 =
* Fix: WYSIWYG — bare `<span>` tags are no longer stripped when switching Visual ↔ Code or updating.

= 1.9.82 =
* Fix: Relationship (User) — Type Settings **Filter by Role** now locks Available users to that role (no All Roles switch). Interactive role dropdown only when Filter by Role is All Roles.

= 1.9.81 =
* New: Relationship (User mode) — **All Roles** is a live dropdown that filters Available users by WordPress role.

= 1.9.80 =
* Fix: Field Group editor — first field is highlighted in the sidebar on load (same as after click).

= 1.9.79 =
* Fix: Location Rules taxonomy dropdown — when labels collide (e.g. blog Category vs product Category), show the slug in parentheses: Category (category) / Category (product_cat).
* Fix: Field groups with Taxonomy location rules now appear on taxonomy Add/Edit screens (including WooCommerce Product Categories) and save to term meta.

= 1.9.78 =
* Fix: Home Banner (and other Field Builder CPTs) — Featured Image “Set featured image” control now shows on Add New (always visible button; no longer depends on hide-if-no-js).

= 1.9.77 =
* New: Relationship — when Filter by Post Type is **User**, show **Filter by Role** (All Roles + each WP role); Available users respect the role.
* Fix: Field list “Delete” tip no longer stays visible after focus (hover-only on × / Duplicate).

= 1.9.76 =
* Fix: Relationship — removing all Selected items (× then Update) now clears saved values instead of restoring the previous selection (including User mode).

= 1.9.75 =
* New: Relationship Filter by Post Type includes **User** — pick WordPress users (display names) in Available / Selected.
* Fix: Relationship term filter label uses the chosen taxonomy (e.g. Select Category / Select Tag).
* Fix: Relationship Filter by Post Type = All expands correctly; toolbar empty option is All.

= 1.9.74 =
* Fix: Relationship term filter label uses the chosen taxonomy (e.g. Select Category / Select Tag).
* Fix: Relationship supports Filter by Post Type = All; toolbar post-type filter empty option is All.

= 1.9.73 =
* Improved: Image field UI — thumbnail with circular Edit / Remove overlays (like Gallery); Select Image when empty.
* Improved: Media sidebar label renamed from “External URL” to “Link URL” (meta key unchanged).

= 1.9.72 =
* Fix: WYSIWYG fields render `[embed]` / YouTube oEmbed on the front (WP_Embed runs before do_shortcode).

= 1.9.71 =
* Fix: Content Order no longer empties taxonomy list tables with WPML (“No categories found” while counts still show).

= 1.9.70 =
* Fix: Content Order for WooCommerce Product categories persists after refresh (also writes WC `order` term meta).

= 1.9.69 =
* Fix: readme.txt Tags limited to 5 (WordPress.org Plugin Check).

= 1.9.68 =
* New: Taxonomy multi-select — drag selected tags to reorder (e.g. Select Popular Categories).

= 1.9.67 =
* Fix: Content Order now saves WooCommerce Product categories / tags (admin list ordering only).
* Improved: Hide unrelated admin notices (e.g. shipping alerts) on Field Builder screens.

= 1.9.66 =
* Docs: Expanded WordPress.org Details — modern feature highlights (gallery links, min/max, WPML, integrations, helpers).

= 1.9.65 =
* Fix: Plugin Check warning for WPML `wpml_object_id` hook (documented phpcs ignore on call site).

= 1.9.64 =
* Fix: Plugin Check VIP warnings — filter excluded posts/terms in PHP instead of `post__not_in` / `exclude`.

= 1.9.63 =
* Improved: Link Target UI — segmented New tab / Same window / Parent / Top control (replaces plain select).

= 1.9.62 =
* Improved: External URL + Link Target are plugin-owned (no child theme require needed for Gallery).

= 1.9.61 =
* Fix: External URL + Link Target now register in Media Attachment Details (plugin + theme require restored).

= 1.9.60 =
* Improved: Gallery/Image Array includes optional attachment External URL (`external_url`) and Link Target (`target`).
* Improved: `massoftind_fb_gallery_html()` links to External URL when set (lightbox unchanged).

= 1.9.59 =
* New: Taxonomy Min/Max selection limits when Allow Multiple is enabled.

= 1.9.58 =
* Fix: Relationship Selected list shows titles in the current WPML language (matches Available).
* New: Relationship Min/Max selection limits when Allow Multiple is enabled.

= 1.9.57 =
* Improved: Taxonomy **Exclude Terms** is now its own toggle; turn it on to reveal the “Search terms to exclude” picker.

= 1.9.56 =
* Improved: Taxonomy **Exclude Terms** only appears when **Allow Multiple** is enabled.

= 1.9.55 =
* Improved: Taxonomy **Exclude Terms** uses a modern searchable tag picker (same style as field multi-select), not a native multi-select list box.

= 1.9.54 =
* Fix: Taxonomy multi-select keeps selection order (e.g. Advisors then Core Team).
* New: Taxonomy Type Settings — **Exclude Terms** multi-select beside Return Format; excluded terms are hidden from the picker and AJAX search.

= 1.9.53 =
* Fix: Settings Preferences / Field Usage Guide / Filters & Hooks panels now span full content width (were stuck at ~420px).

= 1.9.52 =
* Improved: Settings UI refreshed — segmented tabs with icons, grouped preference cards, sticky save bar, and clearer Usage / Filters guide panels.

= 1.9.51 =
* New: Settings → **Filters & Hooks** tab documents all plugin filters/actions with copy-paste examples (location rules, values, Site Sections, list views, WPML, and more). Settings now use General / Field Usage / Filters tabs.

= 1.9.50 =
* Improved: `massoftind_fb_location_rule_match` now runs for every location rule param (taxonomy, post_type, custom, etc.), so themes can override show/hide from `functions.php`.

= 1.9.49 =
* Fix: Content Order list “Order” column no longer wraps mid-word; Layout Blocks delete (×) button alignment; Developer Panel type badges no longer clip; WPML notice dismiss control spacing.

= 1.9.48 =
* Fix: Repeater / Layout Blocks `get_field()` now formats nested File, Image, and other sub-fields (so foreach templates get `['url']` arrays instead of raw attachment IDs).

= 1.9.47 =
* Fix: WYSIWYG fields no longer strip `<iframe>` embeds (e.g. Google Maps) on Update — save uses an allow-list that keeps iframes; TinyMCE keeps them in Visual mode.

= 1.9.46 =
* Fix: Taxonomy multi-select (“Select Popular Categories”) search dropdown was clipped by repeater/tabs overflow — menu now opens above the admin UI with AJAX term search.

= 1.9.45 =
* Fix: Nested repeater “Add Row” no longer inherits the parent repeater Maximum Rows (Key Points inside Banner Key Points works when sub-repeater has no max).

= 1.9.44 =
* Fix: NO + EN WooCommerce category archives — Content Order off on front end entirely; auto-repair missing product-category / produktkategori rewrite rules. Upload this version (1.9.42 on the server still causes the 404).

= 1.9.43 =
* Fix: Product category archives (NO/EN) no longer 404 — Content Order no longer alters front-end/WPML term lookups; WooCommerce taxonomies excluded from term ordering; WPML settings sync is admin-only.

= 1.9.42 =
* Fix: WooCommerce translated product category URLs (e.g. `/en/product-category/greenhouse/`) no longer 404 when Field Builder is active — reserved WC taxonomies/slugs are never registered; rewrite flush is deferred until after WooCommerce registers rules.

= 1.9.41 =
* Improved: WPML — making a duplicate independent keeps your existing English ACF/Field Builder translations (no re-translate). Only the sync link is removed.

= 1.9.40 =
* Fix: WPML — pages/posts/products that are still “Copied From the Original” no longer overwrite the original language when you Update the translation. Field Builder auto-switches to independent translation and restores original Field Builder meta if sync ran mid-save (options already used per-language keys).

= 1.9.39 =
* Fix: WPML — English Update no longer overwrites Norwegian Field Builder fields (Copy once for all storage fields; block translation→original meta sync; never seed empty values).

= 1.9.38 =
* Fix: WPML — repeater/group fields use Copy once (not Copy) so English Sub Heading edits persist after Update; WPML CF prefs are never downgraded to Copy; admin edit screen shows the translation post’s own values (no original fallback).
* Improved: Plugin Check ignores for required WPML API filters `wpml_current_language` / `wpml_default_language`.

= 1.9.37 =
* Fix: Site Section / Footer options are stored per WPML language so saving Norwegian no longer overwrites English (and vice versa). Do not re-run Content Sync to fix this — edit each language and Save. Options migrate skips non-empty language values unless Force is used.

= 1.9.36 =
* Fix: Native “Custom Fields” Screen Options box stays unchecked/hidden on post edit screens (including CPTs like FAQ), even when Screen Options prefs were already saved.

= 1.9.35 =
* New: Settings → Allow SVG Uploads toggle (off by default). Turns on admin SVG/SVGZ uploads via existing SvgSupport; filter `massoftind_fb_allow_svg_uploads` still overrides.

= 1.9.34 =
* Fix: Field group JSON meta is wp_slash()'d before update_post_meta so instructions/placeholders containing quotes no longer corrupt stored JSON and wipe the field list after save/import.

= 1.9.33 =
* New: Field Type dropdown + Browse Fields in General (change Text to Image without deleting), matching ACF-style editing.
* Fix: Stop rewriting page_template `tamplate-` → `template-` so location rules match real theme filenames.
* Fix: Import empty location defaults to Post Type = Post; duplicate field keys/names in JSON get unique keys on import.

= 1.9.32 =
* Improved: Repeater “Add Row” moved to a modern full-width footer (always visible after scrolling rows); Tools page simplified progress/form use max-width 100%.

= 1.9.31 =
* Fix: Content Sync runs in small AJAX batches (progress bar) to avoid Cloudflare/WP Engine 502 Bad Gateway timeouts; WPML meta repair is also chunked.

= 1.9.30 =
* Fix: WPML secondary language empty after ACF→Field Builder migrate — read fallback to original post; migrate all WPML siblings; re-seed translation meta; register bare field names in Custom Fields Translation.

= 1.9.29 =
* Fix: WPML Custom Fields Translation — sync `_massoftind_fb_*` keys to Copy / Copy once in saved WPML settings.

= 1.9.28 =
* Fix: Collapsing a Repeater/Group header now hides all rows and subfields (display:flex was ignoring [hidden]).

= 1.9.27 =
* New: Repeater sections always show a collapse toggle before Add Row (same as Group), with row count badge.

= 1.9.26 =
* Improved: Modern repeater row UI — header bar with chevron, index badge, summary, and compact action toolbar.

= 1.9.25 =
* New: Repeater rows include a collapse/expand toggle (with row summary); Group fields always show a header toggle.

= 1.9.24 =
* Fix: WPML — text fields use copy-once; Field Builder meta is seeded onto translations (English no longer empty); one-time repair for existing translations.

= 1.9.23 =
* Fix: Tab View Left/Top shows each top-level field as a tab (and preserves placement on JSON import).
* New: Optional collapsible accordion headers for Repeater and Group fields (including nested).

= 1.9.22 =
* New: Edit Fields link on field-group metaboxes (post edit) opens the Field Group builder for admins.

= 1.9.21 =
* New: Integrations for Yoast SEO / Premium, Rank Math / Pro, WooCommerce, WP All Import Pro, and WP All Export Pro (auto-detected).

= 1.9.20 =
* Fix: Template compatibility loads even if only some helpers exist; have_rows() aborts instead of hanging when the_row() is omitted.
* Fix: Single FAQ theme pattern (if/while have_rows + the_row) stays safe under template compatibility.

= 1.9.19 =
* Improved: Removed third-party product branding from public docs/changelogs and renamed internal import helpers to portable/legacy wording (import + meta compatibility unchanged).

= 1.9.17 =
* New: Content Order — drag-reorder posts/CPTs and taxonomy terms from Field Builders → Content Order (menu_order / term meta; no separate ordering plugin).

= 1.9.16 =
* New: Settings → General → Classic Editor toggle — use TinyMCE instead of the block editor without a separate Classic Editor plugin.

= 1.9.15 =
* Fix: List View column drag-and-drop (Title / Author / Date / Featured Image reorder) — handle was a button blocked by jQuery UI Sortable.
* Fix: Status filter on non-order post types (e.g. Home Banner) no longer lists WooCommerce / unrelated plugin statuses.

= 1.9.14 =
* Fix: Force Featured Image metabox for Field Builder CPTs (Home Banner) when theme/plugins prevent core from adding it — appears in Screen Options again.

= 1.9.13 =
* Fix: Featured Image metabox for imported CPTs (e.g. Home Banner) when the theme limits `post-thumbnails`.
* Fix: WPML empty CPT lists (e.g. FAQ “No faq found” while All count is > 0) by syncing CPT translation settings and assigning default language to orphan posts.
* Fix: Native “Custom Fields” metabox is hidden by default in Screen Options.
* Improved: WooCommerce core post types are reserved; WPML + WooCommerce Multilingual field sync kept.

= 1.9.12 =
* Fix: WYSIWYG Content fields now run shortcodes (e.g. `[product_categories …]`) like WordPress post content.

= 1.9.11 =
* Fix: Nested repeater / group `have_rows()` now works with nested `if ( have_rows() ) { while ( have_rows() ) }` loops under a repeater.
* Fix: Taxonomy fields with portable `field_type=multi_select` return term ID arrays correctly when `multiple` is 0.
* Fix: `get_field( '…', 'product_cat_123' )` / term selectors read term meta (legacy + Massoftind keys).
* Fix: Relationship `return_format` (object vs id) honored for template compatibility.

= 1.9.10 =
* Fix: Saving Post Types / Taxonomies / List Views / Site Sections no longer triggers “headers already sent”.
* Fix: Empty portable `menu_position` imports as default 25 (exports often use `""` when unset).

= 1.9.9 =
* Fix: Portable JSON import now creates Post Types, Taxonomies, and Site Sections (options pages) from mixed exports — not only field groups.

= 1.9.8 =
* Improved: Field Groups bulk actions dropdown, Apply button, and row checkboxes match the dashboard UI.

= 1.9.7 =
* Fix: Layout Blocks “Add Section” button was clipped by icon-button width (34px); labeled button now uses auto width.

= 1.9.6 =
* Fix: Layout Blocks “Add Section” no longer shows a duplicate dark tooltip over the blue button.

= 1.9.5 =
* Compatibility: Gallery return format defaults to Image Array (`ID`, `url`, …) for existing theme loops.
* Fix: Align readme Stable tag with plugin header version.
* Docs: Add video walkthrough link.

= 1.9.4 =
* Fix: Content Sync overwrites outdated/dead gallery IDs and other stale Massoftind meta.
* Improved: Tools page simplified — one-click “Sync everything now” plus advanced options.

= 1.9.3 =
* Fix: Layout Blocks rebuild from portable flexible meta that stores an ordered list of layout slugs.
* Fix: Gallery falls through to unprefixed meta when stored attachment IDs are missing.

= 1.9.2 =
* Fix: Gallery and Layout Blocks fall through to legacy/unprefixed meta when Massoftind storage holds a non-usable value (e.g. flexible row count instead of rows).
* Fix: Legacy row rebuild keeps leaf meta keys with underscores (section_heading, layout row keys).
* New: Field Groups list — select all / bulk delete.

= 1.9.1 =
* Fix: Remap imported conditional logic from field keys to field names so dependent fields show correctly.
* Fix: After-title field groups (Banner Video / Banner Text) render on the edit screen.
* Fix: Stop empty one-tab-per-field UI when tab markers were skipped on import; Gallery and Layout Blocks show again.
* Fix: Gallery attachment ID parsing for portable array-shaped values.

= 1.9.0 =
* New: Message field (instructional text in the editor; no stored value).
* New: Date & Time field (`datetime`) with import mapping from portable JSON.
* New: Programmatic write helpers — `massoftind_fb_update()`, `massoftind_fb_add_row()`, `massoftind_fb_delete_row()` (optional template-compat aliases when enabled).
* Improved: Location rules — post status, post format, post taxonomy, attachment, user form, comment.
* Improved: JSON import fidelity for clone, password, message, and date-time types; editor-only tab markers are skipped (group tab placement still detected).
* Compatibility: WPML translate list includes message fields; branding/docs avoid third-party trademarks.

= 1.8.1 =
* New: WPML compatibility — register Field Builder meta for translate/copy, CPT/taxonomy translate flags, Site Section admin texts.
* New: WooCommerce Multilingual (WCML) support — product translation fields + meta sync on duplicate.
* New: List Views (admin list-table columns) and related admin polish.

= 1.6.0 =
* New: Layout Blocks field — add ordered content sections, each using a named layout with its own sub-fields.
* Import: portable flexible_content JSON → Layout Blocks (layouts preserved).
* Theme helpers: massoftind_fb_get_layout() and get_row_layout() (when template compatibility is enabled).
* Legacy meta: read flexible-style layout row keys into Layout Blocks values.

= 1.5.0 =
* Migration helpers: Settings toggles for template compatibility and legacy meta read fallback.
* Legacy meta: read unprefixed field names and repeater row keys when Massoftind meta is empty; Tools page can copy values into Massoftind storage.
* Site Sections: read/migrate `options_*` (and custom roots); helpers with 'option' supported.
* Import: location rule normalization (template path typos, options_page), more type mappings, relationship post_types.

= 1.4.0 =
* Optional theme helper aliases when not already defined (get_field, have_rows, get_sub_field, the_row, …).
* Nested repeater loops (have_rows inside have_rows) for common theme templates.
* Image return format "array" returns keys (ID, url, alt) with back-compat numeric indexes.

= 1.3.61 =
* Fix: Text / Textarea always keep safe HTML tags (span, strong, em, i, b, u, br, a) on Update — no toggle required.

= 1.3.60 =
* Text / Textarea: Allow basic HTML setting + massoftind_fb_kses_basic_html() helper.

= 1.3.59 =
* Promo: WordPress Playground blueprint for one-click live demo.
* Admin: dashboard onboarding checklist (first field group in minutes).
* Admin: optional dismissible review nudge after a field group exists.

= 1.3.58 =
* Fix: qTranslate-X compatibility — read raw Field Builder meta then translate strings so repeater have_rows()/sub_field() work on the front end.

= 1.3.57 =
* Fix: lock main page ID before get_header so repeater helpers read the correct post meta.
* Fix: empty key-based meta arrays no longer block fallback to name-based stored values.

= 1.3.56 =
* Fix: template helpers prefer the queried page ID on singular views so values still load after get_header() / secondary loops.

= 1.3.55 =
* Fix: have_rows() on Group fields no longer drops text sub-fields (badge/heading empty while loop still ran).

= 1.3.54 =
* Fix: nested Sub Fields drag-and-drop blocked by sortable cancel matching parent inline config panels.

= 1.3.53 =
* UI: remove help “i” icons next to Label / Name and other setting labels.

= 1.3.52 =
* Fix: builder tooltips clipped by overflow — Delete/Drag tips now show.
* Fix: drag-reorder for deeply nested Sub Fields (Repeater → Group → Repeater → fields).

= 1.3.51 =
* Fix: text domain aligned to plugin slug massoftind-field-builder.
* Security: sanitize posted field trees and AJAX JSON payloads before use.
* Fix: remove standalone wp_enqueue_script(wplink); load via script dependencies (core handle).

= 1.3.50 =
* Fix: SVG image/gallery admin preview blank after save (inlined SVG was stripped by wp_kses_post; use img preview instead).

= 1.3.49 =
* Fix: harden sanitize for checkbox, image, file, gallery, relationship, range, video, and YouTube against array POST / "Array" corruption.
* Fix: re-sync qTranslate hooks after AJAX-added repeater, accordion, and tabs rows.

= 1.3.48 =
* Fix: repeater delete + qTranslate — rebind hidden language field names after reindex so removed rows stay removed.
* Fix: scalar fields no longer save PHP "(string) array" as the literal text "Array".
* Fix: drop empty/corrupt repeater rows (junk nested rows created by stale multilingual POST data).

= 1.3.47 =
* Plugin Check: echo SVG/video HTML via wp_kses() directly (custom kses wrappers are not recognized by PHPCS).

= 1.3.46 =
* Security: tighten REST permission callbacks (manage_options for field groups; edit_post for per-post field values).
* I18n: text domain aligned to WordPress.org slug `massoftind-field-builder`.
* Security: late-escape admin/field output (attributes, SVG, shortcodes, media previews) via esc_attr / wp_kses / wp_kses_post.
* Prefixing: remove generic DFB_* global constants; keep massoftind_fb / MASSOFTIND_FB prefixes.

= 1.3.45 =
* Fix: when two field groups use the same field name, helpers pick the field that has stored values (not the empty duplicate).

= 1.3.44 =
* Native qTranslate-X / qTranslate-XT support: admin Language Switching Buttons and front-end language decode for template helpers.

= 1.3.43 =
* Rebranded to Massoftind Field Builder (slug, text domain, namespace, prefixes).
* Removed non-GPL Fancybox; gallery lightbox is plugin GPL JS. Masonry uses WordPress core only.
* Assets load via wp_enqueue_* / wp_add_inline_*; no inline style/script tags in templates.
* WordPress.org submission polish: remove trademark tag; defer plugin details to the official directory API.

= 1.3.42 =
* Plugin Check: replace var_export in developer code generator; document intentional meta_key ordering query.

= 1.3.41 =
* Plugin Check fixes: translators comments, local asset loading (no CDN), wp_enqueue_style for details modal.

= 1.3.40 =
* WordPress.org packaging: readme.txt, license.txt, Plugin Check cleanup, author/branding alignment.

= 1.3.39 =
* Developer Panel: Full Template Example for Repeaters/Groups includes Conditional Logic as PHP `if` checks.

= 1.3.38 =
* Fixed Conditional Logic dropdown changes triggering a full panel rebuild on autosave.

= 1.3.37 =
* Date field: Display Format and Return Format settings; `massoftind_fb_date()` / `massoftind_fb_the_date()` helpers.

== Upgrade Notice ==

= 1.9.73 =
Image fields use compact Edit / Remove overlays on the thumbnail.

= 1.9.72 =
WYSIWYG [embed] / YouTube videos now render on the front end.

= 1.9.71 =
Critical: restores Product/Blog category lists emptied by Content Order + WPML conflict.

= 1.9.70 =
Product category Content Order now persists after refresh (syncs WooCommerce order meta).

= 1.9.68 =
Taxonomy multi-select tags can be drag-reordered (Select Popular Categories order is saved).

= 1.9.67 =
Content Order saves Product categories again; shipping/other admin notices hidden on Field Builder pages.

= 1.9.66 =
Richer WordPress.org Details page — modern feature list (gallery links, min/max, WPML, integrations).

= 1.9.5 =
Stable tag aligned with plugin version; gallery Image Array return format; video walkthrough link.

= 1.6.0 =
Adds Layout Blocks for composable page sections, portable flexible-layout JSON import, and get_row_layout() compatibility.

= 1.5.0 =
Adds migration helpers: legacy meta read fallback, Tools migration, and Settings toggles for template compatibility.

= 1.3.44 =
Adds native qTranslate-X / qTranslate-XT support for multilingual field values.

= 1.3.43 =
WordPress.org-first packaging: safer readme tags and official plugin information flow.

= 1.3.42 =
Plugin Check warning fixes for developer code generation and field group ordering.

= 1.3.41 =
Plugin Check error fixes; gallery libraries bundled locally.

= 1.3.40 =
WordPress.org submission package; requires WordPress 6.2+.

= 1.3.39 =
Developer Panel conditional-logic template examples for nested fields.

