Widget Visibility Control — Full changelog

For each release, see the entries below. The latest version is always at the top.
The current release notes also live in readme.txt under "== Changelog ==".

= 1.4.0 =
* New: Export and restore — download every visibility rule as a JSON file and load it back later, with a choice of merging it into what you already have or replacing everything. Replaces the placeholder that was in the Import / Export tab, and works as a real backup or as a way to move a setup from staging to production.
* New: "Capability" rule type — show or hide widgets based on a specific user capability (manage_options, edit_posts, or any capability registered by your plugins), not just by role. The list of capabilities can be tailored with the `ayudawp_wvc_capabilities` filter.
* New: Three new page conditions — any single content, sticky post, and paginated archive (page 2 and beyond).
* New: The Widget Logic importer understands many more rules: current_user_can(), is_singular(), is_sticky(), is_paged(), is_page() with no arguments, has_term(), has_category(), is_attachment(), is_privacy_policy(), is_tree(), lists of values such as is_page( array( 1, 2, 3 ) ) in both array notations, and negated conditions such as !is_home() or !is_page(2) && !is_page(3).
* New: The Widget Logic importer covers WooCommerce shops: is_product(), is_shop(), is_cart(), is_checkout(), is_account_page(), is_product_category(), is_product_tag() and is_woocommerce().
* New: Widget Logic rules that are just a constant, like true, false or !(true || false), now import as always visible or always hidden instead of asking you to decide.
* New: The original Widget Logic code is now kept when you import, including for the widgets you decide by hand, so you can still check what each widget used to do even after removing the Widget Logic data.
* Improved: The Widget Logic notice and the import screen now state that Widget Logic was closed on the WordPress.org plugin directory on 14 April 2026, and explain that the import works even if the plugin is already deactivated or deleted.
* Improved: Clearer explanations in the importer for the rules that still cannot be translated automatically, so it is easier to decide what to do with each widget.
* Improved: The Import / Export sections can now be folded away, and each one remembers whether you left it open. Export is now the first section, since the import steps stop being useful once you have run them.
* Improved: Tested up to WordPress 7.1
* Fix: The "Dismiss" button on the Jetpack and Widget Logic notices was rendered as an underlined link inside a box instead of a regular button.

= 1.3.0 =
* New: Import from Widget Logic — assisted wizard that translates Widget Logic PHP rules into structured visibility rules, with per-widget decisions for code we cannot translate automatically (always visible / always hidden / skip). Works with data from both Widget Logic 5.x and 6.x.
* New: "Always" rule type for widgets that should always be shown or always be hidden (used by the Widget Logic import path).
* New: Settings page redesigned with two tabs (Overview and Import / Export), an Overview "Visibility rules" summary card with total count plus a breakdown by source (Widget Logic / Jetpack / manual) and the last import date per source, and the AyudaWP promo banner at the bottom of each tab.
* New: Wizard recognises previously imported widgets and adapts the copy ("X of Y already imported · Z pending" or "You already imported all of these") instead of looking like a fresh task.
* New: "Remove Widget Logic data" cleanup action in Import / Export.
* Improved: Jetpack import card disables its actions when no legacy data remains in widget instances and explains the state clearly.
* Improved: Editing a rule from the widget UI preserves its imported origin (Widget Logic / Jetpack) so the Overview breakdown stays accurate.
* Fixed: False positive in the Jetpack data counter caused by writing a redundant copy of conditions inside widget instances. The plugin now keeps a single source of truth in its own option.

= 1.2.0 =
* New: Cascading taxonomy selector - pick a taxonomy first, then its terms (much faster on WooCommerce sites with many taxonomies and attributes)
* New: "Include children" checkbox for hierarchical taxonomy terms - match child terms automatically
* New: "Include children" checkbox now also available in the block editor for pages (parity with classic widgets)
* New: Filter `ayudawp_wvc_max_taxonomy_terms` to control the maximum number of terms loaded per taxonomy (default 250)
* Improved: Taxonomy data is now indexed by slug for faster client-side lookups
* Improved: Visibility panel moved from Advanced section to its own panel in the block editor sidebar (much easier to find)
* Improved: Block editor labels now loaded from PHP via wp_localize_script for better translation support

= 1.1.2 =
Tested up to WordPress 7.0

= 1.1.1 =
* Fixed: Classic/legacy widgets visibility rules not working (missing filter arguments)
* Fixed: Block widgets showing empty container when hidden (now completely hidden)
* Fixed: Improved handling of block widgets in widget_display_callback filter
* Fixed: Schedule not working when combined with visibility rules
* Fixed: Timezone handling in schedule evaluation
* Improved: Better block visibility filtering using pre_render_block
* Improved: Better condition checking for schedule and rules

= 1.1.0 =
* New: Time scheduling feature - schedule widgets to show/hide during specific date and time ranges
* New: "No end date" option for indefinite scheduling (ideal for permanent changes starting from a specific date)
* New: Schedule conditions work alongside existing visibility rules (AND logic)
* New: Time Schedule section in widget visibility panel for both classic and block editor
* Uses WordPress timezone settings for accurate scheduling

= 1.0.1 =
* Fixed: Customizer visibility button not appearing when block editor was active
* Fixed: Suppressed harmless wp-editor dependency notice on widgets screen
* Improved: Customizer now works independently of block editor settings
* Improved: Better separation between classic and block editor interfaces

= 1.0.0 =
* Initial release
* Full support for classic widgets and block-based widgets
* Independent data storage system
* Automatic Jetpack Widget Visibility migration
* Settings page for data management
* Condition types: category, tag, author, page, post type, date, taxonomy, user role, login status
* AND/OR logic for multiple conditions
* RTL language support
* Complete internationalization
