*** Logicfire Wishlist & Registry for WooCommerce Changelog ***

2026-04-08 - version 2.1.8
* Add - Registry tab visible to guests on wishlist page with login prompt instead of registry UI
* Fix - Registry REST and UI require login: guest list excludes registries; no guest create/update/delete of registry lists; product/registry counter hidden for guests when appropriate
* Fix - Remove front-end notice when registry counter block/widget cannot render; output empty markup instead
* Fix - Hide convert-to-registry, registry progress, and registry heart sub-control for guests (with Pro)
* Update - Vue `v-bind:*` attributes allowed through `lfwlr_kses_vue_template()` where `:` shorthand is stripped by WordPress kses

2026-04-07 - version 2.1.6
* Fix - Add-to-cart from shared page uses claimed quantity when a claim exists (Pro integration)
* Fix - Claim notification now respects per-user notification preference (lfwlr_claim_notifications user meta)
* Add - Pro settings hooks: proUserPrefs, toggleUserPref, toggleRegistrySetting in wishlist page Vue app for frontend dashboard settings tab

2026-04-07 - version 2.1.5
* Refactor - Move `LFWLR_Purchase_Tracker` out of base plugin (Pro-only ownership for fulfillment/purchase-tracking internals)
* Update - Base plugin purchase notifications remain handled by `LFWLR_Cart` + `lfwlr_item_purchased` notification flow

2026-04-07 - version 2.1.4
* Add - Allow selecting multiple navigation menu locations for automatic wishlist counter placement
* Fix - Counter dropdown footer behavior: keep "+X more" and "View Wishlists" pinned at the bottom while product items scroll
* Fix - Counter toggle stability in navigation: clicking the counter again now closes the same panel instead of spawning a duplicate dropdown at the top-left

2026-04-04 - version 2.1.3
* Add - Gutenberg blocks: Wishlist Button, Wishlist Counter, Registry Counter
* Add - Elementor widgets: Wishlist Button, Wishlist Counter, Registry Counter
* Add - Counter widgets show dropdown (desktop) or drawer (mobile) with product names and View Lists CTA
* Add - Enhanced Wishlist Button with configurable icon (heart/bookmark/star), style (icon-only/icon+text/banner), and custom label
* Add - Custom block category "Wishlist & Registry" in Gutenberg editor
* Add - Real-time badge count updates via lfwlrHooks event bus

2026-04-04 - version 2.1.2
* Update - Improved readme with keyword-rich description for wishlist, gift registry, wedding registry, and save for later searches
* Update - Added changelog section to readme
* Update - Revised tags: wishlist, woocommerce, gift registry, save for later, wedding registry

2026-04-01 - version 2.1.1
* Fix - Added parameter documentation for all function parameters
* Update - Improved code documentation and comments for better maintainability

2026-03-27 - version 2.1.0
* Security - Comprehensive REST API security audit - all endpoints follow WordPress.org Codex guidelines
* Fix - REST API error responses now use WP_Error instead of WP_REST_Response for proper error handling
* Fix - Added missing sanitize_callback to all REST API route arguments for input sanitization
* Fix - Added validate_callback with enum validation for visibility, access_level, and email fields
* Fix - Combined duplicate /items/{id} route registrations into single endpoint with array of handlers
* Fix - check_auth() now returns WP_Error with descriptive 401 message instead of generic false
* Refactor - Removed strict return type hints from REST methods that can return WP_Error
* Fix - Completed remaining wlr_ to lfwlr_ prefix rename across WooCommerce admin hooks, order meta keys, and transient cleanup
* Fix - Vue template extension points now escaped with lfwlr_kses_vue_template() — custom wp_kses wrapper that preserves Vue directives (v-if, @click, :class) while stripping dangerous tags
* Fix - Non-template apply_filters outputs escaped with wp_kses_post() for heart/banner HTML
* Fix - wp_add_inline_style CSS vars now escaped with wp_strip_all_tags() for correct CSS context
* Fix - Corrected WooCommerce admin field type hook names to match lfwlr_ setting type definitions

2026-03-25 - version 2.0.3
* Fix    - Implement missing permission callbacks for REST API routes with proper auth closures.
* Fix    - Output escaping issues on wishlist frontend items via `wp_kses_post` and CSS inline.
* Refactor - Mass rename of generic prefix `wlr` to unique `lfwlr` across all files, functions, options, and methods.

2026-03-24 - version 2.0.2
* Update - Rename registry setting to `Enable Registry` and gate registry UI/API behavior behind `enable_registry`.
* Fix    - Hide/show registry tabs and frontend registry icon consistently from the new setting.
* Update - Add `Active state Icon color` appearance setting for active icon accents.
* Refactor - Normalize frontend/config naming to `enableRegistry` and replace legacy `ww-` CSS class prefixes with `lfwlr-`.
* Fix    - Packaging cleanup for Plugin Check: exclude hidden metadata files from release zip.

2026-03-23 - version 2.0.1
* Add - Gift registry in base: event dates, REST `event_date`, fulfillment fields, Wishlists + Registry tabs, purchase tracking for fulfilled quantities.
* Update - `extendedDashboard` enabled by default for logged-in wishlist page UX.

2026-03-11 - version 2.0.1
* Update - Tested up to WordPress 6.9, WooCommerce 10.6
* Add    - Tested up to header for WordPress compatibility
