=== LogicWeft Salon – Booking, Front Desk & Day Close for WooCommerce ===
Contributors: logicweft
Tags: salon, spa, booking, appointments, woocommerce
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 1.0.1
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Online booking, a front desk app, stylist screens, client cards and day close for salons and spas on WooCommerce.

== Description ==

LogicWeft Salon turns a WooCommerce site into a salon system: clients book services and stylists online, the front desk runs the day from a tablet, stylists see their day on a phone, and the owner closes the day with numbers that match WooCommerce.

Services are WooCommerce products and appointments are WooCommerce orders, so your gateways, taxes, coupons and reports keep working, and retail products go in the same cart as a haircut.

= Free includes =
* Online booking: services, add-ons, stylist choice or "anyone", back-to-back slots, guest booking
* Full prepayment or pay at the salon, cancellation policy and windows
* Operator App: Today board, calendar by staff, walk-in queue, stylist My day, run-late and pause
* Client cards with history, notes and allergy banner
* Day close and today dashboard
* Waitlist, QR walk-in join page and My Account bookings with reschedule and cancel
* Setup wizard with optional demo data; WP-CLI demo commands
* Booking emails through WooCommerce, with .ics and Google Calendar links
* Palette presets and appearance settings; Elementor widgets, blocks and shortcodes
* Translation-ready with RTL support

Everything listed above is included, with nothing locked.

== External services ==

LogicWeft Salon does not send data from your site to any outside service, and it loads no remote scripts, styles or fonts.

= Google Calendar (link only) =
The booking confirmation page and the confirmation email show an "Add to Google Calendar" link. Nothing is sent when the page loads. Only when a client clicks the link, their browser opens calendar.google.com with the appointment's service name, time, salon name and address in the link, so Google can pre-fill a calendar event. The same page also offers a downloadable .ics file, which stays on your site.
* Google Terms of Service: https://policies.google.com/terms
* Google Privacy Policy: https://policies.google.com/privacy

== Source code ==

The JavaScript and CSS in `assets/` are compiled. Their human-readable source ships with the plugin in `apps/`: the booking widget (`apps/booking`), the Operator App and its service worker (`apps/operator`), the Appearance screen (`apps/admin`), the shared stylesheets (`apps/ui`) and the shared Operator App shell, components and design tokens (`apps/wc-ops-core-ui`), written in TypeScript and React.

To rebuild `assets/` from that source, use Node.js 20 or newer and pnpm 9 or newer in the plugin folder:

`pnpm install && pnpm build`

The build uses Vite, TypeScript, React and vite-plugin-pwa, as listed in the `package.json` files. The PHP code is not compiled.

== Third-party libraries ==

JavaScript, compiled into `assets/` (source in `apps/`):

* React, React DOM and scheduler (MIT).
* Workbox 7 (MIT), with idb (ISC), in the Operator App's service worker.

Fonts:

* Inter and Manrope variable fonts (SIL Open Font License 1.1), packaged by Fontsource and bundled, so no font is loaded from another site. Their licences are in `licenses/`.

PHP: the plugin's shared WooCommerce operations library (GPLv2 or later, by the same author) ships in `vendor-prefixed/` under the `LogicWeft\Salon\Vendor` namespace, so it cannot clash with another plugin's copy.

== Installation ==
1. Install and activate WooCommerce.
2. Upload and activate LogicWeft Salon.
3. Follow the setup wizard: salon details, hours, staff, services, booking page, look.

== Frequently Asked Questions ==
= Does it work with my theme? =
Yes. The booking widget inherits your theme's fonts by default and sizes itself to its container; the Operator App has its own screen.

= What is the difference between Free and Pro? =
This plugin is complete on its own: booking, front desk, stylist screens, client cards and day close, with nothing locked. A separate paid add-on for deposits, packages, memberships, gift cards, commissions and SMS/WhatsApp reminders is planned; it is not needed for anything this plugin does.

= Do I need WooCommerce? =
Yes. Services are WooCommerce products and appointments are WooCommerce orders, so WooCommerce 9.5 or later must be active.

= Can clients book without an account? =
Yes. Clients can book as guests; clients with an account also see their appointments under My Account.

= Does it send SMS or WhatsApp messages? =
Not in Free. Free sends WooCommerce emails for booked, rescheduled, cancelled and reminder messages.

== Screenshots ==

1. Online booking: choose services from the menu, filtered by category.
2. Pick a stylist (or "anyone"), a day and a time.
3. Today board: every appointment by status, with arrive, in chair and finish actions.
4. Calendar: the day across every stylist.
5. Client card with preferences and visit history.
6. Setup wizard: add your staff in a few steps.

== Changelog ==
= 1.0.1 =
* Fix: in a salon name such as "Hair & Spa", the ampersand showed as an HTML code in the booking widget's logo text and in test emails.
* A new salon now takes its name from the site title as plain text.
* The plugin's home page is now https://salon.logicweft.com.

= 1.0.0 =
* First public release.
* Online booking: services, add-ons, stylist choice or "anyone", back-to-back slots and guest booking, through WooCommerce checkout.
* Operator App for the front desk and stylists: Today board, calendar, walk-in queue, running late, My day, client cards, checkout and day close.
* Setup wizard, settings, appearance, a booking block, shortcodes and Elementor widgets.
* Staff can be added without a WordPress login and linked to a user later.

== Upgrade Notice ==

= 1.0.1 =
Shows salon names with an ampersand correctly.

= 1.0.0 =
First public release.
