= 4.8.3 =
* Popular and recommended services open their details and options in one click, including services hidden by a search filter.
* Keep policy and consent checkboxes compact on mobile and desktop; make optional comments and gift-card entry collapsible.
* Show persistent inline required-field errors and retain entered booking details during corrections.
* Restore usable settings screens for stale links and correct payment setup shortcuts.
* Update the bundled Freemius WordPress SDK to 2.13.5.
* Fix empty button font choices on the Brand page and a staff-limit notice that counted inactive staff.

= 4.8.2 =
* Booking locks now work on hosts without MySQL named locks (a built-in lock table is used automatically; Site Health shows the active mode), making simultaneous bookings safer.
* Marketing consent: promotional emails carry an unsubscribe link and List-Unsubscribe headers; promotional SMS (broadcasts and automations) honours opt-in and STOP / START replies; optional "offers" checkboxes on the booking form; consent choices included in personal-data export.
* Broadcasts skip opted-out clients, send in background batches, and never resend a delivery whose outcome is uncertain.
* Automations: timed triggers no longer miss bookings when WP-Cron runs late, and the Test button only messages the signed-in administrator.
* Prices follow the shop currency everywhere (new yatoon_format_money filter).
* Large client lists: phone and email lookups and the Square loyalty tools no longer load the whole client table.
* Staff PIN checks reject repeated patterns; uninstall also removes the lock table.
* Plugin Check clean-up: translator comments, ordered placeholders, SQL preparation and output escaping.
* Smaller booking-form CSS with unchanged appearance, updated Spanish, Vietnamese and Chinese translations, and new regression tests.

= 4.8.1 =
* Make the lifetime-spend VIP threshold configurable and let owners set individual clients to automatic, VIP, or not VIP.
* Keep customer booking-history status labels compact and prevent narrow history columns from stretching rows.
* Fix saving employee weekly schedules and date-specific overrides in the Free edition.
* Allow authorized customer email and phone edits while preserving linked booking history.
* Add Gemini 3.8 Flash and Claude Haiku 5.5 as the latest model options and defaults.
* Translate AI model option descriptions into the bundled locales while keeping model names in English.
* Complete the bundled Spanish, Vietnamese, Simplified Chinese, and Traditional Chinese translations.
* Correct JavaScript percent formatting for membership discounts.

= 4.8.0 =
* Summarize visits once on the owner Today page while retaining individual service details and actions.
* Present local and legacy Square multi-service appointments as complete units, label add-ons, fold cancelled items, and exclude cancelled visits from the default list without removing their history.
* Add a built-in Help & demo guide, quick-start documentation, and a quiet optional WordPress.org review invitation after sustained appointment use.
* Keep appointment filters visible when there are no results, clarify full CSV export, and improve customer list paging and accessible searches.
* Coordinate service search with category navigation, support category names and multiple search terms, improve mobile search controls, and retain translated More labels.
* Consolidate General settings save actions in a persistent bar with accurate unsaved-state feedback and tuck template reset into More tools.
* Add named setup steps with completion based on saved configuration and resume the first unfinished step.
* Keep the selected appointment time visible in the mobile cart, clarify selected versus confirmed appointments, and improve translated step guidance and accessible status labels.
* Simplify the admin sidebar to six workspaces plus All tools; add related-page navigation and searchable Website & Growth and Settings hubs. Keep original pages, permissions, direct links and complete tool search available.
* Condense repeated settings navigation, clarify Pro badges, maintain bundled translations and repair the legacy Deposit & Prepay settings link.
* Search the booking history by name, email, or phone; show each customer once, exclude cancelled appointments, and manually send review invitations with corrected email addresses.

* Archive services while preserving bookings, options and employee assignments.
* Use effective employee service durations for REST booking creation and availability.
* Correct staff utilization using actual saved schedules and time off; aggregate material costs across all services.
* Remove all owned scheduled task argument variants on deactivation without removing business data.
* Preserve zero-minute add-ons in the service editor and clarify service archive actions.
* Clarify staff customer access and sync diagnostics.

* Compact WordPress submenu with seven core shortcuts; remaining tools are organized in a searchable, permission-aware All tools directory. Original page registrations, direct URLs and topbar search remain available.
* Employee hours now preserve different weekday and split-shift schedules; date-specific one-time changes override only that date and the recurring default returns automatically.
* Schedule validation protects saves and availability, create and reschedule paths. Square remains the default availability source in Square mode; optional Yatoon restrictions limit Yatoon bookings without changing Square calendar availability.
* Calendar appointments are displayed using the timezone saved with each booking, including bookings near day boundaries.
* Calendar hover details remain fully visible within the browser window instead of being clipped by the scrolled day grid.
* Refined staff profile, message, checkout and editor sheets with consistent accessible close controls.
* Customer-profile merge with its own permission, matching contact review, retained-profile selection, atomic consolidation and historical contact aliases.
* Make snapshots consistent, restore all tables in one checked transaction, invalidate snapshots on erasure and remove them on full-data uninstall.
* Validate restored booking availability; report actual bulk-update outcomes and protect schema retries with database locks.
* Recover unfinished Stripe events and Square staff saves; serialize payment attempts and report failed journal writes.
* Refresh expired frontend nonces once, limit active checkout holds and alert on persistent payment exceptions.
* Store reference photos outside the public website and migrate previously tagged uploads to private access links.
* Preserve mobile category, padding, validation-scroll and review-summary fixes; use responsive recovery cards.
* Restricted public employee data and unified staff, variation and add-on scheduling, Any Staff duration ranges, waitlist matching and location checks.
* Added encrypted checkout recovery, expiring Local-calendar payment holds, provider reconciliation and reuse of existing verified payments after interrupted submissions.
* Fixed complete failed-job counts and pagination; added owner-facing availability diagnosis and private customer / visit context in Today.
* Fixed peak resource capacity and cleanup occupancy; added optional Local-calendar service stages with saved booking snapshots.
* Reduced initial booking JavaScript with a lazy checkout component; retained scrolling seasonal effects and added an optional reduced-motion-aware glass surface.
* Retained the compact mobile flow, current-catalogue Book Again and guarded optional location modules on booking pages.

= 4.7.8 =
* Placed waitlist controls beside booking setup and added switch status and a settings shortcut on the Waitlist page.
* Unified confirmation emails in one responsive layout with an easy-to-open appointment link. Existing plain-text preferences still work.
* Refined the appointment summary card, mobile spacing, and service-change emails.
* Improved waitlist recovery, including same-day signup and checks for every selected service.
* Clarified accepted mail status and service names in appointment changes.
* Improved the setup wizard and first booking checklist.
* Clarified setup availability checks and booking readiness.
* Simplified the default admin menu and strengthened local Any Staff selection.
* Fixed confirmation emails to show selected service options and service-change emails to preserve the original option.

= 4.7.6 =
* Signing out of the Staff Portal now ends the session on the server, not just in the browser. Previously the sign-out button only cleared local data, leaving the staff token usable until it expired on its own; if the sign-out request fails the portal now stays signed in and says so rather than implying it worked.
* Fixed the installable offline app never registering: the Service Worker scripts are served through a rewrite rule, so WordPress redirected them to a trailing slash and the browser refused them. Both the booking and staff workers now load, and the error they logged on every page is gone.
* The calendar's booking popover now re-checks which way it should open while the day grid scrolls, instead of keeping the direction it was given when it opened.
* Stopped shipping three Pro-only admin screens that no Free site could reach.
* Added a guided first-run flow for Business, Team, Services, real staff availability, and the Booking Page, with a dashboard checklist for anything skipped.
* Fixed Review Request emails so `{service_name}` is populated from the linked service, added a real-booking preview, and replaced the overly promotional Google CTA with a calm invitation to share honest feedback.
* Removed stray asterisks from review settings and email buttons, and stopped filtering Google review invitations by an internal rating so every invited client receives the same optional feedback path.
* Made internal star-rating emails opt-in, prevented them from being sent alongside the direct Google review request, fixed their settings save path, and added their service details and delivery outcomes.
* Replaced the short in-memory delivery history with an additive database-backed delivery ledger, migrating retained records and adding Sent / Failed filters plus 25 / 50 / 100 row pagination.
* Added scoped color modes: Customer Booking Widget supports Follow system, Light, and Dark; Yatoon Admin and Staff Portal support Light and Dark.
* Added a shared semantic color-scheme token layer without duplicating the existing Beauty, Clean, and Luxury theme styles.
* Updated the booking progress Current state to use each selected theme's primary, border, and Light/Dark/Follow-system surface tokens instead of a fixed fill; completed steps remain green.
* Fixed Theme Preview persistence so Save Theme always saves the theme currently being previewed and the matching seasonal effect.
* Restored Custom as an explicit storefront choice: named themes now control their complete component palette, while Custom applies the merchant's saved colors and per-button styling without deleting those settings.
* Added the Custom Theme Library: Brand & Colors edits become a pending Custom theme, then can be named, saved, applied, renamed, or deleted. Free stores one Custom theme; Pro stores up to five.
* Made Custom Theme Library management discoverable beside Brand & Colors: saved themes now have explicit Use, Edit, Rename, and Delete actions, and a visible pending-save prompt appears after palette changes are saved.
* Loaded the Custom Theme Library controller on the Brand & Colors menu itself, so its top-of-page prompt and save, use, edit, rename, and delete actions work on the screen where palette changes are made.
* Moved the Custom Theme Library into the actual Brand & Button Settings screen, made Brand saves mark a pending Custom theme through its Settings API path, and made that screen available in Free with the one-theme limit.
* Added saved Custom themes by name to Front-end style and Theme Preview. Choosing one applies its complete saved snapshot; later visual edits clear the active snapshot and require an explicit update or new saved theme.
* Fixed named Custom themes sharing the last globally saved palette. Save or Update now captures the current Brand controls as an independent sanitized snapshot, so every saved theme restores its own appearance.
* Clarified the Custom Theme Library workflow: Edit this theme loads its saved controls, Apply theme activates a saved theme, and Save changes to selected theme stores edits explicitly.
* Removed the redundant Custom-theme selector. Editing a named theme now locks that exact theme as the save target, loads its stored controls immediately, and sends the live form snapshot as JSON so saved themes cannot be confused with one another.
* Simplified Custom Theme Library actions to one Use and edit this theme control, which activates the selected theme, loads its values, and locks it as the only save target.
* Seasonal effect controls now appear only for their matching theme: Festive Red Snowfall, Halloween Bats and Pumpkins, or Emerald Sparkles. Restored the optional Halloween pumpkins and gave all seasonal effects gentle free-direction drift and rotation while preserving reduced-motion support.
* Added the Modern booking theme with structured cards, contemporary spacing, teal actions, refined focus states, and full Light/Dark compatibility.
* Added a scoped Theme Preview to Booking Experience settings with Beauty, Clean, Luxury, and Modern specimens, plus a nearby Save Theme action that persists the selected theme and its matching seasonal effect; Preview controls only expose Snowfall for Festive Red and Bats for Halloween.
* Added the Festive Red booking theme with Light/Dark/Follow system support and an optional low-density, reduced-motion-safe Seasonal Snowfall effect scoped to the booking widget and Theme Preview.
* Organized Core and Seasonal themes in settings and added the polished Halloween theme with optional reduced-motion-safe bat decoration in the widget and Theme Preview.
* Improved Festive Red Snowfall contrast and stacking so the optional effect remains visible above widget surfaces without intercepting interaction.
* Kept booking data, APIs, and permissions compatible; the only new database object is the additive notification delivery ledger.

= 4.7.5 =
* Added a Delivery activity view with Sent / Failed filters across the retained WordPress email outcomes, explicit retry feedback, and a notification-only retry action that avoids racing an in-progress worker.
* Improved Front Desk performance for busy days with server-backed customer, service, status, and professional filters that remain compatible with incremental Load more results.
* Added import conflict reporting for duplicate, ambiguous, and incomplete rows, with preview-safe results and bounded sample details before records are changed.
* Added deeper salon reporting metrics including repeat-client, retention, rebooking, cancellation, no-show, completion, average-ticket, booked-hour, commission, contribution, and forward-revenue views.
* Made multi-location and shared-resource scheduling consistent across calendar, Front Desk, availability, booking, and customer workflows.
* Added location-aware waitlist storage, filtering, exports, claim links, and scheduled availability checks. The waitlist migration is represented by schema manifest revision 16; the internal YATOON_DB_VERSION remains 4.7.1.
* Updated release metadata and Dashboard generated assets for 4.7.5.

= 4.7.4 =
* Added a Daily Staff Time Grid with one shared local-time axis across employee columns, precise appointment placement and duration, overlap lanes, break and unavailable backgrounds, shared-resource visibility, and a current-time line. Desktop moves continue through existing availability and server-side reschedule validation; mobile keeps a single-employee grid with Move / Reschedule fallback.
* Made appointment cards quicker to inspect: hover-capable desktop pointers show the existing quick preview with a short handoff delay, while desktop clicks, touch taps, and keyboard activation open the existing full appointment details modal. Move / Reschedule remains in the card action menu, and calendar source, minified, RTL, and manifest assets were rebuilt.
= 4.7.3 =
* Restored the customer-facing AI Chat as a shared Free and Pro feature. Both packages now load one canonical Concierge class and six shared traits; customer chat remains available in Free when an administrator connects a provider and enables it.
* Kept customers inside AI Concierge when final contact validation rejects a phone number, email address, or customer name. The editable contact form now reopens with the entered details preserved.
* Fixed typed chat messages being accepted before the AI consent box was checked. The consent gate now covers every typed message before it is added to the conversation.
* Improved multi-person chat booking so shared services, guest names, selected options, prices, durations, and professionals remain correct through review and confirmation.
* Improved the mobile chat control, service and option selection, running visit summary, and recovery when a customer changes a service, professional, date, or time.
* Added clearer local booking workflows for mobile staff rescheduling, temporary breaks, shared-resource checks, and capability-based Yatoon roles.
* Completed the 4.7.3 release metadata and asset-manifest updates, and removed obsolete Concierge build artifacts from both release packages.

= 4.7.2 =
* Added the customer-facing AI Chat to Free and Pro as an opt-in feature. Customers can describe what they want, review real services and availability, and continue through the existing booking flow.
* Hardened AI chat input, consent handling, sensitive-data screening, bounded requests, multilingual responses, and provider rate limits.
* Improved customer self-service, responsive booking layouts, availability checks, notifications, and local booking reliability.
