*** Qualiphy Changelog ***
2026-05-11 - version 1.1.0
* Added - Speak to a Doctor My Account page with product cards (image, name, variation, status, date) and follow-up consultation request flow
* Added - Patient Request system: 3 follow-ups within 90 days for "3 Month Supply" exams, 1 within 30 days for other Rx exams (configurable in config.php)
* Added - Webhook integration to mark patient requests complete when consultation is attended, scoped per order to start a fresh cycle on each new purchase
* Added - Signed HMAC token on follow-up request buttons so users cannot tamper with order/product/variation IDs from the browser
* Added - Exam launch popup reused on the My Account page when a follow-up consultation is requested
* Added - Fallback consultation message on the thank-you page when the exam invite has not yet been created or failed
* Added - Order Processing Message between consultation completion and order completion on the My Account page
* Added - Manage Products modal Unlink action for linked products (vs Delete for plugin-created products), with confirm/processing/success states
* Added - Live updates to the exam grid checkmark and "Consultations Linked to Products" sidebar after delete or unlink
* Added - Import wizard "Link Existing Product" path now runs the linked product through all wizard steps (categories, product type, free checkout, pharmacy, selection type, variants, pricing, summary), then overwrites the product with the new configuration while preserving title, slug, post content, descriptions, images, and other plugin metadata
* Added - _qualiphy_link_origin meta to distinguish "linked" vs "created" products with legacy fallback to _qualiphy_created
* Added - Hardcoded QUALIPHY_HIDDEN_EXAM_TITLES blocklist constant in config.php to hide internal/test consultations from the import grid
* Added - Style Settings section with bottle color pickers and live SVG preview for the questionnaire
* Added - Questionnaire language settings: all questions, button labels, dose adjustments, disclaimer, processing message editable in Language Settings
* Added - Questionnaire processing message shown after dose selection while the form auto-submits in the background
* Added - Questionnaire Redirect to Checkout setting (Product Settings)
* Added - Auto Redirect to Checkout setting (Product Settings) — sends customers straight to checkout when Add to Cart is pressed on a Qualiphy product page
* Added - Per-product return fee stored on order line items at checkout and used during refund calculations
* Added - Refund logic now sums per-item return fees across all Qualiphy line items (qty-aware) instead of using a single global default
* Added - Return fee total displayed on the cart and checkout consultation refund disclaimer
* Added - Wizard icons (free checkout, standard pricing, customer select, provider select) using purple Dashicons above each card title
* Added - Tooltips for Price, Cost, Return Fee, Sign Up Fee, and Frequency on both the variants and pricing wizard steps
* Added - Patient request exam IDs and limit constants in config.php for future adjustment
* Added - "Speak to a Doctor" follow-up cycle resets when a new order for the same product is completed
* Added - Order action: Resend Consultation Link Email for orders that already have a meeting URL
* Added - Order list red exclamation icon for Qualiphy orders missing a meeting URL
* Added - Quidget API order status sync after manually creating an exam invite from the order page
* Added - Auto-complete non-Rx orders when the initial consultation webhook is approved
* Added - Admin "Invite Failed" email sent to notification emails list when an exam invite fails during checkout, with retry instructions
* Added - Hidden "Free Instant Checkout" option on the product edit page for Rx exams (only applies to non-Rx)
* Added - Hidden "Enable Questionnaire" option on the product edit page for non-Rx exams
* Added - Return fee field hidden on the product edit page when "Free Instant Checkout" is enabled
* Added - Excluded States and Included States display on the Pharmacies page (whichever list is shorter)
* Added - Setup Wizard product link path now applies the Qualiphy shipping class, sets stock to In Stock, removes existing variations, and converts product type to match the wizard configuration
* Added - Fully unlink linked products on plugin uninstall instead of leaving Qualiphy data behind
* Added - _qualiphy_urgent_exam meta flag set on products imported from "Urgent Exam" titles
* Added - Cart and checkout return fee total disclaimer for Blocks checkout via JS injection
* Added - Ability to link one exam to multiple products
* Added - Redeveloped exam import to allow for packages
* Added - Require Phone Number on WooCommerce Checkout
* Added - Test State into Development Plugin
* Added - Qualiphy Account Validity Check during Setup
* Added - System to Track Incorrect Installs and Auto Repair
* Added - Sync to Exams to Hide Non-Quidget Use Exams
* Added - Search to Logo Import Modal
* Added - Sort Logo Upload Modal by PNG then JPG
* Added - Consultations Filter for Hidden Exams
* Added - Advanced Setting to Update API
* Added - Subscription Sign Up Fee support
* Added - Add to Cart Questionnaire system
* Update - Exam invite moved from woocommerce_checkout_order_processed to woocommerce_payment_complete to prevent the meeting link from being sent before Stripe 3D Secure verification completes
* Update - Free orders ($0 total) still send invites immediately via the order-created hooks
* Update - Pharmacies page hides the Pharmacy Routing and Video Tutorial sections; Available Pharmacies moved to the main column with linked-products-first sorting
* Update - Pharmacy product count now resolves through variations to the parent product
* Update - Refund order note shows a per-item breakdown of retained fees
* Update - Webhook processor checks the patient_requests table before falling through to the normal order lookup
* Update - Questionnaire bottle SVGs now built dynamically from configurable colors
* Update - Questionnaire variations sorted to match the order on the product edit page
* Update - Questionnaire add-to-cart button hidden after dose selection (replaced with a processing card)
* Update - Import wizard "Link Existing Product" header changes to "Link Consultation"
* Update - Pricing step layout: all four fields on a single row, cost displayed under the price input, grey background matching the variants step
* Update - Manage Products modal: clicking Delete on a linked product now offers Unlink instead
* Update - Account page card image reduced to 20% width
* Update - Variations created during link/import are sorted with the lowest dose first on the product page
* Update - Urgent Care Return Fee
* Update - Updated Exam Grid to Display Labs Easier
* Update - Remove Return Fee Notice if Cart is $0
* Update - Don't allow import of Rx Consults if no pharmacy available
* Update - Set GRE exams cost to a default value
* Update - Changed wording for placeholder for NA exam
* Update - Removed Consultations from Setup Wizard
* Update - Removed Unnecessary Settings from Setup Wizard
* Update - Setup Exam Grid Clustering
* Update - Removed Exam Grid Grouped Categories
* Update - Improved UI of the Consultation Grid with better highlighting on hover
* Fixed - WP 6.7+ "Translation loading triggered too early" notices for the woocommerce and woocommerce-payments domains by deferring Qualiphy_Migrations::run() to init priority 20
* Fixed - WooCommerce Blocks register_checkout_fields and extend_store_api now defer to wp_loaded to avoid early textdomain loading
* Fixed - Exam list checkmark not removed after deleting all products linked to a consultation
* Fixed - "Consultations Linked to Products" sidebar not updating after delete or unlink
* Fixed - Unlink not setting the product to draft because subsequent saves overwrote the status change
* Fixed - Unlink not clearing the wc_product_id column on the exams table because wpdb->update did not write SQL NULL
* Fixed - Patient request count not detecting existing requests because the cycle scope used a date filter that broke with future-dated test orders (now scoped by order ID)
* Fixed - Manual "Create Qualiphy Invite" order action returning "Unknown error" when the exam class was not loaded; defensive class_exists fallback added
* Fixed - process_invite() silent early returns now report descriptive errors (no exam data, unsupported exam type, no pharmacy)
* Fixed - Return Fee display label rendering as "Return Fee::" with a double colon
* Fixed - Patient Exam ID / View Exam Results link broken by an earlier render restructuring
* Fixed - Stock status not set to In Stock when linking an existing product
* Fixed - Brand and tags not removed when unlinking a product
* Fixed - Wizard-applied categories not removed when unlinking a product
* Fixed - Exam Cost line removed from the Qualiphy product tab on the product edit page
* Fixed - "Standard Pricing" card on the Free Checkout step not advancing to the pricing page
* Fixed - Frequency dropdowns squished against full-width price inputs on the pricing step
* Fixed - Custom Pharmacy and Urgent Care pharmacies properly excluded based on the original exam title
* Fixed - Hide Custom Pharmacy filter still shows the consultation if it's linked to a product
* Fixed - Questionnaire title "Question 1/2/3" labels editable through Language Settings
* Fixed - Questionnaire disclaimer text editable through Language Settings

2026-03-10 - version 1.0.0
* Added - Auto-update functionality for stable releases
* Added - Beta Access download option via manual config option
* Added - Complete Setup Wizard with guided configuration flow, start button, and cancellation recovery
* Added - Branding upload (logo and accent colors) in Setup Wizard and plugin settings
* Added - Terms and Conditions acceptance requirement during setup
* Added - Automatic Clinical Access grant for admin user during Setup Wizard
* Added - Auto Refund, Default Price Margin, User Settings, and Redirects configuration in Setup Wizard
* Added - WooPayments requirement check in Setup Wizard flow
* Added - Find My API Key link forwarding to Knowledgebase article from the Wizard
* Added - Plugin Dashboard with Roadmap, embedded configuration video, and Quick Links section
* Added - Help videos on all plugin pages
* Added - Alert icon next to Qualiphy menu item when setup is incomplete
* Added - Uninstall option with safeguard against deletion of pre-existing pages
* Added - Price input and free exam configuration to Exam Import module
* Added - Pill-style controls for Rx, GFE, and Urgent Care exam filtering
* Added - Linked exams surfaced at top of exam grid
* Added - MSRP Margin Setting for auto-filling prices during Exam Import
* Added - WooCommerce Subscriptions integration in Exam Import, including automatic subscription updates for deferred exams
* Added - Unlink and delete products directly from the Wizard
* Added - Age restriction enforcement: Rx exams require 18+, GFE exams require 13+ with Guardian Disclaimer
* Added - Guest checkout disabled for all Qualiphy orders
* Added - Support for multiple Non-Rx exams in a single cart session
* Added - Configurable Add to Cart button language for Rx and Non-Rx exam types
* Added - Configurable text for already-in-cart notices
* Added - Add to Cart button support for WordPress Blocks
* Added - Mini cart support for Blocks and Classic WooCommerce themes
* Added - Placeholder product images for Rx and Non-Rx exam products
* Added - Language text on post-checkout confirmation page
* Added - Automatic order status updates via return webhooks
* Added - Shipment Tracking for WooCommerce integration
* Added - Automatic tagging of purchasers as Qualiphy Customers on completed purchase
* Added - Hide Qualiphy order details from backend users without Clinical Access
* Added - Hide Qualiphy customers from admin user searches for non-clinical administrators
* Added - Hide Qualiphy Orders filter on the WooCommerce Orders page
* Added - WordPress Notification System integration for in-dashboard messaging
* Added - Email Notification Settings panel
* Added - Force Redirect setting for the post-exam popup
* Added - How-To page with tooltip hovers on key terminology
* Added - Elementor compatibility support
* Update - After unlinking a product, prompt to optionally delete it
* Update - Qualiphy-linked product messaging added to WooCommerce Products page
* Update - Exam categories (Rx, GFE, Urgent Care) visually segmented throughout the interface
* Update - Standardized "Rx" capitalization across the entire plugin
* Update - Washington DC repositioned alphabetically next to Washington in state selectors
* Update - Checkout redirect delay defaulted to 5 seconds
* Update - Clinic Dashboard now routes to the Results page
* Update - Patient Exam ID surfaced on WooCommerce Order detail page
* Update - Replaced Karma font with Gilroy Semi for improved visual consistency
* Update - Removed Missed Exam Redirect setting (no longer applicable)
* Update - Removed status widget from plugin Dashboard
* Fixed - "Not Available Redirect" renamed to "Not Applicable" to reflect correct intent
* Fixed - Load More pagination on Notifications table
* Fixed - Mini cart item removal not updating Add to Cart button states correctly
* Fixed - Service Area "Select All" button not functioning in Setup Wizard
* Fixed - Pharmacies failing to sync during Setup Wizard flow
* Fixed - "Filter by Brand" dropdown not correctly including Qualiphy as an option
* Fixed - Wizard redirect configuration unable to save pre-existing WordPress pages
* Fixed - Removed Qualiphy Products filter from Subscriptions list view
* Fixed - Removed Qualiphy Subscriptions filter from Products list view
* Fixed - Uninstall process no longer deletes pages that existed prior to plugin installation