=== SpaVexa Manager – Booking & Appointment Manager ===
Contributors: miroseo
Tags: booking, appointment, appointment booking, spa, salon
Requires at least: 6.4
Tested up to: 7.0
Requires PHP: 8.0
Stable tag: 1.3.17
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Booking & appointment scheduling for spas, salons, and beauty clinics — booking form, calendar, staff, and email confirmations.

== Description ==

**SpaVexa Manager** helps spas, salons, and beauty clinics accept appointments on WordPress — without a monthly SaaS subscription.

= Free features =

* Multi-step online booking form
* Admin dashboard and booking calendar
* Unlimited services and staff
* Email booking confirmations (customer and admin)
* Automated email appointment reminders
* Win-back / rebooking email campaigns
* WhatsApp click-to-chat button
* Before/after gallery and testimonials
* Opening hours, services list, and book button shortcodes
* Gutenberg blocks for booking and services
* Setup wizard for quick onboarding

= Pro upgrade (optional) =

Need deposits, packages, or reports? [SpaVexa Manager Pro](https://miroseo.com/product/spavexa-manager-pro/) adds Stripe/PayPal deposits, SMS & WhatsApp Cloud API messaging, Google Calendar sync, packages, coupons, gift cards, PDF invoices, and more — with a **one-time license** (no monthly fees).

= Shortcodes =

* `[spavma_booking_form]` — booking form
* `[spavma_book_button]` — call-to-action button
* `[spavma_calendar]` — date picker
* `[spavma_services]` / `[spavma_services_list]` — service showcase
* `[spavma_staff]` — team grid
* `[spavma_gallery]` — before/after gallery
* `[spavma_testimonials]` — client reviews
* `[spavma_opening_hours]` — business hours
* `[spavma_whatsapp_cta]` — WhatsApp button

= Privacy =

This plugin stores booking data in your WordPress database. It does not send customer data to external servers unless you configure optional integrations in **SpaVexa Manager Pro** (payments, SMS, etc.).

== Installation ==

1. Upload the plugin folder to `/wp-content/plugins/` or install from the WordPress plugin directory.
2. Activate **SpaVexa Manager** through the **Plugins** menu.
3. Complete the setup wizard under **SpaVexa → Getting Started**.
4. Add `[spavma_booking_form]` to a page.

== Frequently Asked Questions ==

= Is this really free? =

Yes. The core booking system is free on WordPress.org. Pro features are sold separately as [SpaVexa Manager Pro](https://miroseo.com/product/spavexa-manager-pro/).

= What is included in free vs Pro? =

Free includes unlimited services and staff, the booking form, calendar, email confirmations, email reminders, rebooking campaigns, gallery, and testimonials. Pro adds deposits, packages, SMS/WhatsApp API, reports, and other business tools.

= Does this require WooCommerce? =

No. WooCommerce is optional and available in the Pro version.

= Can I upgrade without losing bookings? =

Yes. Deactivate the free plugin, install **SpaVexa Manager Pro**, and activate your license. Your existing services and bookings use the same data structure.

= Where can I get help? =

See [SpaVexa documentation](https://miroseo.com/spavexa-documentation/) or use the WordPress.org support forum.

== Screenshots ==

1. Command Center dashboard
2. Online booking form
3. Admin calendar
4. Services and staff management
5. Upgrade comparison (Pro features)

== Changelog ==

= 1.3.17 =
* Update plugin display name and short description for clearer, more search-friendly branding (URL/slug unchanged)
* Refine readme.txt tags for discoverability

= 1.3.16 =
* Move the Popular badge to a floating corner ribbon on the card instead of sitting next to the title text

= 1.3.15 =
* Move the Popular badge inline next to the service title instead of on its own line, so titles line up across cards whether or not a service is marked Popular

= 1.3.14 =
* Pin the Book Now button to the bottom of every service/package card so buttons stay aligned across a row regardless of whether the Popular badge or a description is present

= 1.3.13 =
* Force full-width Book Now buttons on service/package cards (align-self:stretch alone could be overridden by theme CSS, making the button narrower on cards with the Popular badge)

= 1.3.12 =
* Fix duplicate block entries in the inserter (blocks were registered under 4 names each)
* Fix missing front-end CSS/JS on pages built with blocks (asset loader only recognized shortcodes and the legacy Pro block name)
* Prefix REST rest_base for bookings/customers post types (spavma-bookings, spavma-customers)
* Restrict booking/customer post types to the plugin's own capability, and remove them from the default REST controller (they carry customer PII)
* Prefix remaining script/style handles and block.json namespaces (spavma-*)
* Remove split-string obfuscation of a legacy option prefix in uninstall.php

= 1.3.11 =
* Prefix Gutenberg editor JavaScript data as spavmaBlocksEditor
* Reject any non-spavma wp_localize_script object during the free build

= 1.3.10 =
* Add nonces to testimonial/gallery admin-post handlers (CSRF)
* Document spavma_* shortcodes in readme (match registered tags)
* Sanitize booking custom_fields before save

= 1.3.9 =
* Keep uninstall legacy cleanup inside the prefixed function (Plugin Check globals)

= 1.3.8 =
* Remove function_exists() around own uninstall helper (WordPress.org guideline)

= 1.3.7 =
* Rename remaining spavma_ post types, meta, caps, and CSS to spavma_ (WordPress.org 4+ char prefix)

= 1.3.6 =
* Fix fatal error: use global WP_Block_Type_Registry inside Spavma namespace

= 1.3.5 =
* Fix duplicate Gutenberg block registration (spavma/* already registered notice)

= 1.3.4 =
* Remove legacy brand strings from the free WordPress.org package

= 1.3.3 =
* Unify all PHP identifiers under the spavma_ prefix (WordPress.org prefix review)

= 1.3.2 =
* Prefix uninstall callback as spavexa_manager_uninstall (Plugin Check)

= 1.3.1 =
* Rename free helper functions and PHP namespace to SpaVexaManager / spavexa_manager_ (WordPress.org prefix review)
* Register spavexa_* shortcodes (legacy spavma_* tags still work)

= 1.3.0 =
* Prefix slot cache transients as spavexa_manager_slots_ (WordPress.org naming)

= 1.2.9 =
* Fix block.json UTF-8 BOM so Plugin Check can read apiVersion 3

= 1.2.8 =
* Fix admin Calendar not rendering after ID rename

= 1.2.7 =
* Add Business Hours settings (controls Available Times on the booking form)
* Show loading state while Available Times load
* Add Advanced → Reset Everything (factory reset + setup wizard)

= 1.2.6 =
* Register legacy Gutenberg block names so older pages (spavexa-manager-pro/*) still work in the editor

= 1.2.5 =
* Fix New Booking: opens Quick Add Booking instead of the setup wizard
* Create Pages from Getting Started is one-click (no wizard step 6)

= 1.2.4 =
* Hide Pro-only settings UI that had no free implementation (SMS, waitlist, deposits, demo)
* Ship email reminder template with the free build
* Clarify free vs Pro FAQ (email reminders are free)

= 1.2.3 =
* Show the Reminders settings tab in the free build (email reminders UI)

= 1.2.2 =
* Unlock email reminders and rebooking for the free build (Guideline 5)
* Longer plugin prefixes (spavexa_manager / SPAVMA_*) for WordPress.org compliance
* Harden register_setting sanitization and package-balances REST permissions
* Remove free-version package marker

= 1.2.1 =
* Point product and documentation links to SpaVexa store URLs

= 1.2.0 =
* Rebrand to SpaVexa Manager (slug spavexa-manager)
* Remove service/staff quantity caps (Guideline 5 / trialware)
* Enqueue admin notice CSS/JS via wp_enqueue (no raw inline tags)
* Public staff REST returns display fields only (no email/phone/commission)
* Uninstall deletes an explicit option whitelist only
* Keep build tooling out of the WordPress.org zip

= 1.1.7 =
* Compliance hardening for WordPress.org review

= 1.1.6 =
* Gutenberg category pinned in the inserter
* Block titles/descriptions always registered in PHP for reliable discovery

= 1.1.5 =
* Fix blocks missing from inserter — load editor script + category

= 1.1.4 =
* Fix Gutenberg blocks not appearing in the inserter (PHP registration)

= 1.1.3 =
* Fix Gutenberg blocks category registration
* Fix invalid block.json encoding that caused JSON decode notices
* Inherit theme font on public booking UI
* Show admin notice when WhatsApp CTA has no number configured

= 1.1.2 =
* Stop auto-creating a Packages page on free (Pro-only shortcode)
* Auto-remove empty Packages stub pages left from older free installs

= 1.1.1 =
* Clean Gutenberg markup from testimonials
* Guard invoice helpers when Pro classes are absent

= 1.0.1 =
* Fix fatal error on plugin deactivation (License class guard)
* Fix booking flow when Pro-only classes are not loaded

= 1.0.0 =
* Initial WordPress.org release
* Online booking form and admin calendar
* Unlimited services and staff
* Email confirmations, gallery, testimonials, WhatsApp button
* Setup wizard and Gutenberg blocks

== Upgrade Notice ==

= 1.2.0 =
Rebranded to SpaVexa Manager. Install as a new plugin slug (spavexa-manager); deactivate any older free build first.
