*** Bulk Content Toolkit Changelog ***

2026-05-20 - version 1.4.3
* Fix: WooCommerce is optional; removed WC requires at least header.

2026-05-20 - version 1.4.2
* Bump: WP V7
* Fix: Bulk edit switches no longer double-prefix field names (custom_custom__*) — mixed yes/no now shows centered indeterminate state and saving without clicking leaves posts unchanged.
* Fix: Indeterminate switch styling via .bct-indeterminate class (works when native :indeterminate is not painted).
* Fix: PHP bulk checkbox save ignores any submitted value other than yes, no, or indeterminate.
* Improvement: More WooCommerce internal meta keys blocked from the field picker.
* Cleanup: Removed unused files (display.php, admin.js, bulk-actions.php, core-functions.php) and dead bulk-actions dropdown hooks.
* Dev: Central debug helper (bulkedittoolkit_log) — single PHPCS ignore; JS logs gated by UserScriptParams.debug (WP_DEBUG or BULKEDITTOOLKIT_DEBUG).

2026-05-19 - version 1.4.1
* Fix: Quick edit checkbox now uses a hidden input — unchecking reliably submits 'no' instead of being silently ignored.
* Fix: LearnPress boolean fields (_lp_coming_soon and 12 others) now write '' for false instead of 'no', matching LearnPress native storage convention.
* Fix: WooCommerce boolean fields normalized to 'yes'/'no' on write.
* Fix: Switch pre-population in quick edit now updates the hidden input, not just the visual checkbox.
* Fix: Delegated click handler keeps hidden input in sync with checkbox state after user interaction.

2026-05-19 - version 1.4.0
* New: **Field Search** — live filter input above the Available Fields list on the settings page. Instantly narrows down fields by name, useful on sites with 50+ meta keys.

2026-05-16 - version 1.3.0
* Security: Replaced all wp_redirect() with wp_safe_redirect() + exit.
* Security: Added isset() + wp_unslash() on all $_POST/$_REQUEST accesses before sanitization.
* Security: Removed unauthenticated AJAX hook on get_bulk_edit_statuses.
* Security: Fixed SQL injection risk — table names now passed through esc_sql().
* Security: Added explicit nonce verification on the quick edit save path.
* Fix: Fatal PHP error in checkbox type detection — missing $ on variable name, checkbox auto-detection was completely broken.
* Fix: Double-prefix bug on checkbox field key in bulk save — unchecking a field in bulk edit had no effect.
* Fix: Hidden input and checkbox no longer share the same name attribute — unchecking now saves correctly.
* Fix: Select "no change" logic — empty string now correctly skips the field.
* Fix: date() replaced with gmdate() in 8 places to avoid runtime timezone drift.
* Fix: i18n placeholders in _n() corrected, missing translators comment added.
* **Mixed State Checkboxes**: Initializes to indeterminate when selected posts have different values. Saving without touching leaves all posts unchanged.
* **Mixed State Selects**: Initializes to "— No change —" when values differ. Saving without changing leaves all posts unchanged.
* **Quick Edit Pre-population**: All field types now load the post's current value when the row opens.
* **Column Display**: Checkboxes show a dashicon, dates use WP date format, long text truncated at 40 chars, URLs show domain only.
* **Screen Options**: Each column can be individually shown/hidden per user via the native WP Screen Options panel.
* **Field Discovery**: Rewritten with a single SQL JOIN + DISTINCT — dramatically faster on large catalogs.
* **Settings Cache**: wp_cache_get/set with 5 min TTL — settings table no longer queried on every page load.
* **Field Type System**: New field-types.php centralizes known_types and blocked_keys registries.
* **Type Sampler**: Rewritten with 80% vote threshold — a single outlier no longer causes a field to be mistyped.
* **i18n**: All hardcoded strings replaced with English base strings via __() and esc_html_e().

2025-10-01 - version 1.2.9
* Compatibility: Verified and bumped tested up to WordPress 6.9.

2025-09-15 - version 1.2.8
* Fix: Select tag gathered with wrong method in bulk edit.

2025-09-10 - version 1.2.7
* Fix: Select and switch fields definitively handled in bulk edit.

2025-09-01 - version 1.2.5
* Fix: CSS was overstepping its own scope due to a bad condition.

2025-08-28 - version 1.2.4
* Fix: "No Change" option for select fields in bulk edit now correctly prevents unintended updates.

2025-08-27 - version 1.2.2
* Improvement: Clearer bulk edit interface.

2025-08-26 - version 1.2.1
* Fix: Select fields now require at least two distinct values to display as a select input.

2025-08-25 - version 1.2.0
* New: **Known Types System** — hardcoded map of WooCommerce and LearnPress meta keys to their correct input type.
* New: Reset and Rebuild button — remove and re-add a field to force type re-detection.
* Improvement: AJAX handling for Quick Edit reworked.

2025-08-24 - version 1.1.0
* Improvement: Styling for toggle switches and select fields.
* Fix: Select fields rendering incorrectly in quick edit row.

2025-08-22 - version 1.0.0
* Initial release.
