=== Yatoon Salon Booking Pro - Square Payments & POS Sync ===
Contributors: yatoon, freemius
Tags: booking, appointments, salon, spa, nail salon, square, apple pay
Requires at least: 5.8
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 4.2.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Demo: https://yatoon.com/bookingdemo/

Mobile-first salon booking for WordPress with Square appointment sync, Square online payments, Apple Pay, Google Pay, Cash App Pay, Square Gift Card checkout, deposits, staff tools, reminders, customer self-service, and optional AI guidance.

== Description ==
= WordPress salon booking built for Square-powered salons =

Yatoon Pro combines a mobile-first customer booking experience with Square Appointments synchronization, Square online payments, staff tools, reminders, deposits, no-show workflows, and customer self-service. It is built for salons that already run their day inside Square App, Square Appointments, or Square POS and want their WordPress website to feed that same workflow.

Clients can book on your website, pay a deposit or the full appointment amount through Square, and the appointment continues through the existing Square sync path. Staff keep working from Square and Yatoon instead of juggling a disconnected payment system.

Square online checkout supports Card, Apple Pay, Google Pay, Cash App Pay, and Square Gift Card methods when available for the seller, browser, device, and Square account configuration.

AI guidance is optional and never required for normal booking. An experimental Vagaro connector remains available for development use but is not presented as a verified integration.

Built with nail salons in mind: clients can attach a reference photo of the color, shape, or nail art they want right on the booking form, with a nail-shape preference field one tap away - on top of the order, invoice, and capacity-aware scheduling engine that powers the rest of Pro.

The guided setup asks for integration credentials only when the matching Pro mode is selected. New installations stay empty unless the administrator explicitly chooses sample content.

= Official source, copyright, and support =

Yatoon Salon Booking Pro is an official Yatoon plugin. Official downloads, updates, licensing, and support are provided through https://yatoon.com.

Live demo: https://yatoon.com/bookingdemo/

The plugin code is distributed under the GPLv2 or later, as required for WordPress-compatible distribution. Yatoon names, logos, and brand assets are trademarks or brand identifiers of Yatoon. Modified or forked versions should not claim to be the official Yatoon release, use Yatoon branding in a misleading way, or imply official support unless authorized by Yatoon.

For the safest installation, download Yatoon only from the official source and avoid unsupported redistributed copies.

**Built by a salon owner who got tired of generic booking plugins.**

After trying plugin after plugin designed for dentists or yoga studios, we gave up and built our own. Yatoon is the booking system we wish existed when we opened our salon - and now we're sharing it with every beauty business owner who's been through the same frustration.

No complicated setup. No required outside booking subscription for local booking mode. Just a beautiful, fast booking experience your clients will love.

---

= WordPress 7.0 AI-ready booking =

Yatoon 4.2.0 is built to work with the WordPress 7.0 AI Client when an AI provider is connected in WordPress Settings > Connectors. This makes Yatoon an early AI-ready salon booking plugin for WordPress 7.0 while staying fully compatible with WordPress 6.9 and older: if AI is not available, the normal booking flow keeps working and AI actions show clear availability guidance.

* **AI service helper** - clients describe what they want and AI suggests clickable matching services from your real service menu
* **AI service description helper** - salon owners can improve service descriptions from the Services editor so customers and AI have clearer details
* **No plugin-owned AI billing** - AI provider/API keys are managed by WordPress Connectors; usage costs depend on the site owner's chosen AI provider
* **Provider fallback** - when multiple providers are connected, Yatoon prefers OpenAI/GPT first, then Google/Gemini, then Anthropic/Claude
* **Safety-first prompts** - AI is instructed not to invent prices, appointment times, medical advice, refunds, or policies
* **Pro upgrade path** - Pro adds AI reply drafts for Text Us messages

---

= What makes Yatoon different =

Most booking plugins were built for generic businesses. Yatoon was built for **beauty**. That means:

* **Square-first salon workflow** - website booking, Square payment, Square Appointments sync, and POS follow-up stay in one operating rhythm
* **Square payments at booking** - collect a deposit or full amount with Card, Apple Pay, Google Pay, Cash App Pay, or Square Gift Card
* Clients can book **multiple services** in one visit - nails + pedicure + eyebrows, all in one checkout
* **AI-guided service selection** helps unsure clients understand which service fits their needs
* **Group appointments** - your client books for herself and her friend, with separate services and staff for each person, in one go
* A **restaurant-style service menu** with photos, pricing, and a Book button right on the page - not a separate popup or redirect
* **Staff profiles with real star ratings** from verified clients - clients pick who they trust
* A **photo gallery** that auto-scrolls your nail art - because your work sells itself
* **Tip / gratuity at checkout** - preset percentages or custom amount, right in the booking flow

These are the day-to-day details that make a booking tool feel natural inside a salon workflow.

---

= Booking experience your clients will love =

* **Mobile-first** - the entire booking flow is designed for phones first. Your clients book from the nail salon parking lot or their couch.
* **Multi-step flow** with animated progress bar - clients always know where they are and what's next
* **Real-time availability** - live calendar that loads actual open slots from your schedule
* **"Any staff" option** - clients who don't have a preference get the first available technician automatically
* **Waitlist capture** - when a time is fully booked, clients can join a list so you can follow up manually
* **"Text Us" button** - if nothing is available, clients can reach you directly with one tap
* **Add to Calendar** - Google, Apple, and Outlook with one click after booking
* **Self-service portal** - clients reschedule or cancel on their own, without calling you

---

= Everything you need to run your salon =

**For your clients:**
* Beautiful booking form that matches your website
* Instant confirmation email with full appointment details
* Automated reminder email before their appointment
* One-tap star rating after their visit - no login required
* Secure link to reschedule or cancel anytime

**For your team:**
* Staff portal - technicians view their own schedule on their phone, no logins needed
* Staff profiles with photos, bios, and real star ratings
* Each staff member linked to only their services

**For you:**
* Dashboard with today's bookings, monthly revenue, and no-show rate at a glance
* Client list with visit history, notes, and allergy information
* Closed dates manager - block holidays for everyone with one click
* Custom booking form fields - add questions like nail shape preference, allergy notes, or reference photos
* Fully customizable confirmation email template

---

= Service display shortcodes =

* **`[yatoon_booking]`** - the full booking form. Put it on any page.
* **`[yatoon_service_menu]`** - restaurant-style menu with photos, prices, and Book buttons. Clients browse and book without leaving the page.
* **`[yatoon_catalog]`** - image card grid with category filters.
* **`[yatoon_gallery]`** - auto-scrolling photo carousel of your work. Supports mobile swipe, lightbox, and infinite loop.
* **`[yatoon_customer_portal]`** - client self-service: view upcoming bookings, reschedule, cancel.
* **`[yatoon_staff_portal]`** - technician schedule viewer. Installable as a home screen app on iPhone and Android.

---

= Pro features included - for salons that are growing =

This Pro package includes the features growing salons depend on:

* **Square Appointments sync** - website appointments can flow into the Square workflow your team already uses.
* **Square online payments** - collect booking deposits or full prepayment with Card, Apple Pay, Google Pay, Cash App Pay, and Square Gift Card checkout.
* **Vagaro connector** - experimental connector for development/testing where configured.
* **AI reply drafts** - turn Text Us messages into warm, staff-reviewed response drafts
* **SMS reminders via Twilio** - automated text messages before every appointment cut no-shows dramatically
* **Google Calendar two-way sync** - your bookings appear in your personal calendar automatically
* **Unlimited staff members** - no cap on technicians
* **Deposits & prepay** - require partial or full payment upfront for high-value services or clients with no-show history
* **Waitlist auto-notify** - email clients automatically when a matching slot opens
* **No-show tracking** - automatically flag clients who miss appointments
* **Recurring bookings** - clients set up weekly or bi-weekly repeats from the confirmation page
* **Service packages, memberships, coupon codes & gift cards** - sell and redeem prepaid value from your site
* **Priority support** - direct access to the team that built and runs this in a real salon

---

= Get started in 5 minutes =

1. Install and activate Yatoon Pro.
2. Open the **Setup Wizard** and choose Local WordPress, Square Appointments, or the experimental Vagaro connector.
3. Add business details, hours, staff, services, and the booking page.
4. If using Square, enter the Square credentials and test sync before going live.
5. Enable the payment, deposit, notification, and staff portal tools your salon needs.
6. Open the booking page on your phone and place one test appointment.

After setup, the Launch Center shows what is still missing before you share the booking link: booking page, services, staff, notifications, staff portal, policy, and first test booking.

That's it. Your clients can start booking.

= Square payment setup =

For Square-powered salons, Yatoon Pro can collect booking deposits or full appointment payment before saving the appointment.

1. In Square Developer Dashboard, open or create the Square application used by the salon.
2. Copy the matching **Application ID**, **Access Token**, and **Location ID** for Sandbox or Production.
3. In Yatoon Settings, set Active Platform to Square and confirm Square appointment sync works first.
4. Open **Settings > Payments**.
5. Enable **Square Online Payments**.
6. Paste the Square Application ID and choose Deposit only or Full appointment amount.
7. Select payment methods: Card, Apple Pay, Google Pay, Cash App Pay, and/or Square Gift Card.
8. For Apple Pay, register the live website domain under the Square application Apple Pay settings. Apple Pay requires HTTPS and Safari on a supported Apple device.
9. Test in Square Sandbox, then switch the Square environment and credentials to Production.

Cash App Pay availability depends on Square seller country and is currently US-focused. Digital wallet buttons appear only when Square, the browser, and the buyer device support that method.

= External Services and Privacy =

AI features use the WordPress 7.0 AI Client when a site administrator connects an AI provider in WordPress Settings > Connectors. Yatoon does not store AI provider API keys and does not charge for AI usage. Any AI usage cost depends on the site owner's selected AI provider. On WordPress 6.9 and older, AI features stay hidden and the booking system continues to work normally.

Optional Cloudflare Turnstile protection connects to Cloudflare only after a site administrator enables it and enters Turnstile keys. Yatoon sends the Turnstile token and visitor IP address to Cloudflare's verification endpoint to confirm that the booking request came from a real browser.

Pro integrations connect only after the site administrator enables them and enters credentials. Depending on enabled features, booking, customer, payment, calendar, or message data may be exchanged with Square, Vagaro, Stripe, Twilio, Google Calendar, or Freemius to provide the requested service.

When a site administrator opts in to Freemius software analytics, Yatoon also sends one-time setup funnel event names together with the plugin version, Free/Pro tier, booking mode, and event time. These events do not include customer names, contact details, appointment content, payment information, or an explicit site-domain property. Sites that do not allow tracking keep these milestones only in their own WordPress database.

* Square: https://squareup.com/us/en/legal/general/privacy
* Vagaro: https://www.vagaro.com/PrivacyPolicy.aspx
* Stripe: https://stripe.com/privacy
* Twilio: https://www.twilio.com/en-us/legal/privacy
* Google Calendar / Google APIs: https://policies.google.com/privacy
* Cloudflare Turnstile: https://www.cloudflare.com/privacypolicy/
* Freemius: https://freemius.com - Terms: https://freemius.com/terms/ - Privacy: https://freemius.com/privacy/

== Screenshots ==

1. Mobile-first booking flow where clients choose service, staff, time, and contact details.
2. Square-ready checkout for deposits or prepayment, including supported digital wallet methods.
3. Group appointment booking with separate services and staff for each guest.
4. Any staff or preferred technician selection with a running total and duration.
5. Client checkout details, notes, reference photo support, and confirmation.
6. Booking success page with manage appointment and Add to Calendar actions.
7. Visual service menu shortcode for browsing and booking from a services page.
8. Customer self-service portal for upcoming appointments, rescheduling, and cancellation.
9. Launch Center checklist showing services, staff, notifications, staff portal, and booking readiness.
10. Square sync and payment settings for salons that already run on Square.
11. Services and staff management with availability, pricing, photos, options, and permissions.
12. Secure Staff Portal PIN entry designed for shared salon devices.
13. Staff mobile day calendar with appointments, customers, checkout, and messages.
14. Appointment detail screen with client context, visit history, booked-on time, Square sync state, and staff actions.
15. Add-ons control center for Square, payments, SMS, Google Calendar, deposits, packages, and growth tools.

== Frequently Asked Questions ==

= Does this work with Square or Vagaro? =

Real-time Square and Vagaro calendar sync is available in Yatoon Pro. The free version supports local availability management through the built-in calendar.

= Can clients book for a group? =

Yes. Yatoon supports group appointments - your client can book services for themselves and a guest in a single checkout, with separate service and staff selection for each person.

= Can I add multiple services to one appointment? =

Yes. Clients can add as many services as needed. The booking form shows a running total of time and price, and the calendar finds a start time that fits the full combined duration.

= Is it mobile-friendly? =

Yatoon is designed mobile-first. The booking form, service menu, and photo gallery all work smoothly on phones and tablets.

= Does it send confirmation emails? =

Yes. Automated confirmation emails go out immediately after booking, with a full appointment summary and a link to manage or reschedule.

= Can clients leave a star rating without creating an account? =

Yes. After their appointment, clients receive an email with a one-tap star rating link. No login or account required.

= How do I display my service photos? =

Upload photos to each service (Services > Edit > Gallery Images), then add `[yatoon_gallery]` to any page. The carousel auto-scrolls and supports swipe on mobile.

= Does AI cost money? =

WordPress 7.0 provides the AI Client interface, but the site owner pays their chosen AI provider if that provider charges for usage. Yatoon does not store AI API keys or charge for AI usage.

= Does Yatoon still work on WordPress 6.9? =

Yes. The booking system remains compatible with WordPress 6.9 and older. AI features only appear when the WordPress 7.0 AI Client is available and configured.

= What languages is Yatoon available in? =

Yatoon is translation-ready and compatible with WPML and Polylang. All strings are localized.

== Changelog ==

== Square sync and display fixes ==
* Fixed multi-service Square bookings omitting catalog-backed Design/Add-on segments.
* Fixed multi-service availability and appointment length calculations to include add-on duration.
* Square sync now resolves real customer names, email addresses, and phone numbers independently of email notification settings.
* Manual and scheduled sync repair legacy "Square Customer" placeholder records.
* Customer matching now falls back to phone number to reduce duplicate Square customer profiles.

= 4.2.0 =
* Hardened booking verification so email/SMS OTP settings are enforced server-side, not only in the browser.
* Added an optional strict Cloudflare Turnstile mode for active bot-attack windows.
* Refined Freemius-facing privacy, external-service, GPL, and Yatoon brand wording.
* Added Square online payment support for Card, Apple Pay, Google Pay, Cash App Pay, and Square Gift Card checkout.
* Added Square payment settings for Application ID, payment mode, enabled payment methods, country code, and wallet setup guidance.
* Square payments can collect either a deposit or the full appointment amount before the booking is saved and synced.

= 4.1.6 =
* CRITICAL FIX: a service Add-on (multi-select) whose price was configured relative to the base service price could combine with a discounted Main option (e.g. a Fill-in priced below the full service) to produce an incorrect - sometimes negative - total charge. Add-on prices are now stored as the actual flat amount they add, independent of whichever Main option is selected, on save and on Square catalog sync. If you have existing Add-on options, re-open and re-save each one under Services once after updating so its stored price reflects the new, correct calculation (the amount shown on screen will not change, only how it is stored).
* The booking price preview (cart/review screen) previously showed the highest-priced selected option instead of the combined total when multiple options were selected, which could under-display the price of a real Add-on charge. It now sums correctly and matches what is actually charged.

= 4.1.5 =
* CRITICAL FIX: restored a database schema-version check that had drifted out of sync with the rest of the plugin. On sites that upgraded through earlier versions, this had silently prevented newer tables and columns from being created, including the Clients table, staff time-off requests, and consent/payment/design-upload fields on bookings and services. This is repaired automatically on update; no action needed.
* Restored Job Queue, Performance, Operations, Commerce, Resources, native Gutenberg blocks, Elementor widget, and Activity Log modules to the Pro package. These shipped in the Free package but were missing from Pro's startup file.
* Fixed: multi-service appointments in the Staff Portal detail view were showing the selected option (e.g. "With Gel Polish") in place of the actual service name (e.g. "Luxe Pedicure"), leaving staff unable to tell what was booked. Each line now shows the service name with its option as a subtitle, its own time and staff, and a correct running total.
* Security: fixed a Staff Portal access-control gap where the client search endpoint did not confirm an active staff sign-in before returning client records.
* Hardened Staff Portal PIN sign-in with an additional site-wide throttle against distributed guessing, on top of the existing per-device and per-IP limits.
* Admin notices no longer echo the plugin's server file path.
* Updated description copy to better reflect nail-salon-specific features (design reference photo upload, nail-shape preference).

= 4.1.3 =
* Kept the professional 5-step booking flow and tightened the mobile first-screen spacing.
* Added instant booking URL support for direct service, staff, and category links.
* Added manual next-opening search on the date/time step.
* Restored a today-first date/time experience: selecting staff loads the current selected date instead of auto-jumping to a future opening.
* Added a same-day slot guard so past times are hidden and empty states clearly reference today.
* Fixed Brand & Colors saving for Plugin Background, Panel/Card Background, border, and text/color fields.
* Connected mobile booking edge background to the saved Plugin Background setting instead of hard-coded pink.
* Slimmed mobile service cards so clients see more services before scrolling.
* Improved checkout confidence messaging on the review step.
* Added Pro release smoke checks for versioning, setting persistence, mobile layout, and availability behavior.

= 4.1.2 =
* Added a Loyalty / Rewards points program: clients earn points automatically on paid visits, redeemable for a discount at Staff Portal checkout.
* Added Marketing Broadcasts: send a one-off email/SMS to a client segment (all, lapsed, by service history, or tag) with live recipient count and batch sending.
* Updated the bundled Freemius SDK to 2.13.4.

= 4.1.1 =
* Fixed multi-service visits not merging into one calendar card when the underlying booking rows didn't have a shared group link (older bookings, or edge cases). The calendar now also merges rows that are unmistakably the same visit - same customer, same staff, exact same start time - as a fallback.

= 4.1.0 =
* CRITICAL FIX: bookings submitted through the website's booking form could silently fail to save due to a missing database column referenced by the booking-save code since 4.0.4. Fixed automatically on update - no manual steps needed.
* Added an independent admin app shell: a dedicated left nav + top bar replacing the default WordPress admin chrome, plus a fix for WordPress's native "Screen Options / Help" tabs floating oddly.
* Staff Portal calendar: multi-service visits now display as one merged card (like Square) instead of separate same-name blocks; checkout/status updates now apply to every service in the visit instead of just the first.
* Fixed a bug where the Today tab could show the wrong day due to a function-naming collision.
* Added a configurable idle auto-lock to the Staff Portal for unattended-device security.
* Added a new visual Automation builder: set up rules like "24 hours after a booking is still Pending, send an SMS reminder" as connected trigger -> action cards instead of scattered settings toggles.
* Added a live color preview to Brand & Colors so changes to the booking page's colors are visible instantly.
* Added mobile card-layout responsiveness to the Bookings admin table and quick-jump staff tabs to the admin Staff Calendar.
* Polished the customer booking page's step transitions and button interactions.
* Consolidated overlapping admin design-token systems for long-term consistency.

= 4.0.5 =
* Fixed the design/photo-upload highlight so it actually appears (with good contrast) across the Bookings admin list, admin Staff Calendar, and every Staff Portal calendar view, including "Today".
* Fixed PIN pad double-tap-to-zoom on the Staff Portal login screen.
* Added a simplified "Month" calendar view to the Staff Portal for staff who only need to see their own schedule.
* Added a "View details" popup to admin Staff Calendar cards and a manual Duration field to the Staff Portal appointment editor.
* Fixed Square reschedules (time changes) not syncing back, and added an optional Square webhook for near-real-time sync.

= 4.0.4 =
* Added a design-image filter and gallery viewer to the Bookings admin list so image-backed appointments can be reviewed in batches.
* Added in-place full-size design image preview to the Staff Portal appointment detail view.
* Hardened Pro design-reference uploads with attachment tokens, orphan cleanup, and limited image derivative generation.

= 4.0.3 =
* Added a compact search bar under the category tabs on the booking page so customers can quickly find a service by name or description.
* Fixed Business Logo not saving in Brand & Colors (logo was written to the wrong option key and never appeared on the booking page, portal, or emails).
* Fixed deleted/renamed service categories lingering forever in the Brand & Colors "Category Order & Names" list.

= 4.0.2 =
* Improved contrast for the Today command card in the owner dashboard.
* Removed the duplicate horizontal scrollbar from the Staff table.
* Reworded the customer design-image upload prompt to clearly request a reference photo showing the desired color, shape, or nail art.

= 4.0.1 =
* Rebased the Pro package on the known-working 3.6.0 booking flow.
* Kept the existing Confirm Booking button and booking submission logic unchanged.
* Fixed Just me appointments so they skip the group-only Add guests and services screen.
* Tightened the mobile category tabs and More button spacing so the final tab is less likely to be clipped.
* Made the customer self-service post-cancel buttons compact on mobile screens.
* Added a backward-compatible Vagaro API loader for legacy AJAX paths.
* Preserved Pro Freemius packaging and Square, Vagaro, Google Calendar, and Twilio integrations.

= 3.6.0 =
* Added a Today workspace with next-client, appointment, unpaid, pending, and late indicators.
* Added Staff, Manager, and Owner permission presets while retaining granular portal permissions.
* Added staff time-off requests with manager approval or rejection and automatic availability blocking.
* Added client visit history, allergy, preference, and recent-note context to appointment details.
* Replaced squeezed mobile multi-staff columns with horizontal employee tabs.
* Preserved existing appointments, availability rules, staff PINs, shortcodes, and settings.

= 3.5.0 =
* Added a dedicated Yatoon admin shell and improved responsive admin layouts.
* Refined the staff portal with Day, Week, and Agenda views.
* Added secure customer design-image uploads for enabled services and design add-ons.
* Added reusable existing-item selection for service options with shared reference IDs.
* Improved mobile booking progress, fixed visible encoding artifacts, and preserved 3.4.0 compatibility.

= 3.4.0 =
* Improved: Preserved the 3.3.20-3.3.29 Services admin refinements as the new release baseline.
* Improved: Added clearer Active/Hidden controls, editable options, compact service cards, and reliable responsive widths.
* Analytics: Added a privacy-aware five-step activation funnel using Freemius only on sites that already allow tracking.
* Privacy: Conversion events exclude customer, appointment, payment, and explicit site-domain data.
* Stability: Free and Pro share the same telemetry and database core, backed by release parity tests.

= 3.3.29 =
* Replaced the Services list status checkbox with a clear Active/Hidden status button so selection and visibility controls are no longer confused.
* Widened the Edit Service modal, added an explicit close button, and prevented option action controls from being clipped.
= 3.3.28 =
* Made Service Options / Variations editable directly inside the Edit Service modal, including name, duration, price, and type.
* Added per-option Save and Delete controls so add-ons no longer need to be deleted and recreated for small changes.
= 3.3.27 =
* Reworked the Services admin page into self-contained service rows that show key details without dragging right.
* Disabled resizable-column behavior for the Services list so old saved column widths cannot squeeze the visible content.

= 3.3.26 =
* Reworked the Services admin list into a compact overview that fits common admin screens without hunting for far-right actions.
* Added click-row-to-edit behavior so service details, categories, options, and add-ons are managed in the edit modal instead of a wide inline table.

= 3.3.25 =
* Moved Services admin management actions into the top toolbar: select one service, then Edit Selected, Add Add-on, or Delete Selected.
* Hid the far-right row Actions column from the Services table so important controls no longer require horizontal scrolling.

= 3.3.24 =
* Fixed the Services admin table column initialization so Service Name no longer expands and pushes Duration, Price, Category, Status, and Actions off-screen.
* Preserved resizable columns while applying practical default widths and a one-time reset of older saved oversized Services table widths.

= 3.3.23 =
* Refined the Services admin table so default columns start narrower while remaining resizable by the user.
* Reset old saved Services table widths and made service selection update immediately on pointer down.

= 3.3.22 =
* Improved the Services admin table so key actions stay visible without horizontal hunting on desktop screens.
* Made service row selection more reliable by increasing checkbox hit targets and allowing the checkbox cell to toggle selection.

= 3.3.21 =
* Improved the Services admin option editor with visible Save/Delete actions, Unsaved/Saved feedback, and clearer inline option management.
* Fixed duplicate horizontal scrollbars on the Services admin table so option editing is easier to use.

= 3.3.20 =
* Fixed mobile option and add-on cards on Android/narrow browsers so long service option names wrap normally instead of collapsing into vertical text.
* Improved mobile booking width and option-card spacing to reduce empty side gutters while keeping prices and selection circles readable.

= 3.3.19 =
* Stability: Free and Pro now load the same shared core before all business classes.
* Upgrade safety: UI-only releases no longer rerun the full database schema migration.
* Testing: Added automated shared-core, schema-upgrade, package parity, and WP-CLI smoke tests.
* Onboarding: New Square/Vagaro-aware setup wizard with optional demo data, automatic page creation, and direct test booking.
* Insights: Added a local activation funnel from activation through the first real booking.
* Trust: New installations stay clean unless sample staff and services are explicitly selected.

= 3.3.18 =
* Improved: Client profiles now surface VIP, upcoming booking, no-show, and unpaid signals directly in the client list.
* Improved: Square no-show fee statuses are clearer across Staff Portal, admin calendar, and bookings.
* Improved: Booking payment status labels now include no-show fee charged and waived states for cleaner operations.

= 3.3.17 =
* New: Added a Square-only no-show fee workflow for Staff Portal and admin calendar.
* New: Staff can open Square, copy the Square booking ID, mark a no-show fee charged in Square, or waive the fee after marking an appointment No Show.
* Improved: No-show appointments remain visible in operational calendar views so staff can finish the charge/waive decision.

= 3.3.16 =
* Refined: cleaner admin license wording, steadier mobile spacing, stronger button/focus states, and clearer release metadata for Free and Pro packages.
* Improved: tightened service/category cards and booking controls so the interface feels more polished on phone and desktop.

= 3.3.15 =
* Final polish: mobile steps, service cards, category tabs, AI helper, and license/upgrade wording are cleaner and easier to scan.
* Improved: Booking flow copy is clearer across group bookings, staff choice, appointment length, review, and mobile cart states.
* Improved: Add guests and services review uses numbered guest labels and a consistent primary action style.
* Improved: Time selection now uses an Edit Services action that returns customers to the service/guest review instead of defaulting to adding another service for Me.

= 3.3.14 =
* Improved: Group guest appointments now show the time range first and Reserved Time underneath, with guests clearly shown as starting together instead of implying sequential service order.
