=== Appointment Booking Calendar and Scheduling for Directories – MyBookaro ===
Contributors: mybookaro
Tags: appointment booking, appointments, booking, booking calendar, directory
Requires at least: 6.0
Tested up to: 7.1
Requires PHP: 8.1
Stable tag: 1.2.2
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Free appointment booking plugin and booking calendar for WordPress directories (MyListing) and service businesses. Scheduling, dashboards, reminders.

== Description ==
MyBookaro is a free WordPress booking plugin: online appointment booking, a real booking calendar with provider availability, and scheduling dashboards for directories and service businesses. Works on single-business sites, MyListing directories, Listeo, Listdom, ListingPro, and any custom directory CPT. Customers book online by choosing a service, date, and available time slot; providers manage every appointment from a dashboard.

MyBookaro is a provider-based booking system and appointment scheduling engine for WordPress. It is ideal for service businesses and directory providers that need simple online appointment scheduling without payment processors or external accounts. It is strongest on MyListing Directory sites, fully supports a real Single Business no-listing path, and also supports guided Generic Directory setups where you intentionally control provider mapping, services, and placement.
Lite covers booking requests, availability, dashboards, reminders, and diagnostics. Pro adds WooCommerce payments, Google Calendar + iCal sync, booking chat, SMS/webhooks, reports, and exports.
Generic Directory is a guided lane and requires intentional mapping/services/placement decisions; it is not a universal automatic adapter for every theme.
Booking chat is Pro only: MyListing Directory uses native MyListing messaging, while Generic Directory and Single Business use MyBookaro booking chat with an active, valid Pro license.

MyBookaro is an independent plugin compatible with MyListing and is not affiliated with or endorsed by 27collective.

MyListing, Listeo, Listdom, ListingPro, and WooCommerce are trademarks of their respective owners. MyBookaro is independent and is not affiliated with, endorsed by, or sponsored by any of them; their names are used only to describe compatibility.

= Getting started =
* Run MyBookaro > Setup Wizard.
* Choose your lane first: MyListing Directory, Single Business, or guided Generic Directory.
* MyListing Directory: keep Integration Mode on Auto-detect/MyListing Directory, confirm sidebar booking entry, and set the repeater class.
* Single Business: no listings required. Set Default Provider, assign booking/services/dashboard pages, place booking UI on normal pages, then test one booking.
* Generic Directory (guided): choose provider mapping + services model, assign pages, place booking UI, then run lane diagnostics before launch.
* In MyBookaro > Settings > Email, enable reminder and review invite emails if you want automated follow-ups.
* Complete the lane-aware checklist in MyBookaro > Getting Started.
* Review the operational summary in MyBookaro > Getting Started so you can see current safeguards and launch defaults before go-live.
* Before opening support requests, review the operational summary first, then run MyBookaro > System Status, copy the masked support snapshot, and attach the Support Bundle JSON only when deeper diagnostics are needed.

= Official product lanes =
MyBookaro officially supports these lanes:

* MyListing Directory (strongest lane): fastest launch and lowest support risk.
* Single Business (real no-listing lane): provider-first booking for service businesses on normal pages.
* Generic Directory (supported guided lane): flexible for custom directory setups with intentional mapping/services/placement decisions.

* MyListing Directory | Provider mapping: Listing owner/provider from MyListing listing context | Services model: MyListing repeater services | Placement model: Directory listing template (sidebar booking entry) or shortcode/block placement | Dashboards/pages needed: Provider and customer dashboards (or WooCommerce My Account mode).
* Single Business | Provider mapping: Default Provider (provider-first, no listing requirement) | Services model: Provider Only by default (Admin Only/Hybrid optional) | Placement model: Normal pages or shortcode/block placement | Dashboards/pages needed: Booking page, services page, provider dashboard page, and customer dashboard page.
* Generic Directory | Provider mapping: Listing Author or Listing Meta Key | Services model: Provider Only, Admin Catalog Only, or Hybrid | Placement model: Directory templates, normal pages, shortcode/block only, or CSS selector insertion | Dashboards/pages needed: Booking page and dashboard pages when using shortcode dashboard mode.

= Generic Directory presets =
For Generic Directory lanes, Setup Wizard includes guided presets:
* Provider-Owned Directory (Listing Author + Provider Only)
* Editorial + Meta Key Directory (Meta Key + Provider Only)
* Shared Catalog Directory (Listing Author + Admin Catalog Only)
* Legacy installs may still run as Generic Directory (legacy compatibility profile active). This stays inside the Generic Directory lane and is not a separate site type.

= MyListing repeater setup =
To read services from MyListing repeater rows, set Row CSS Class to `mybookaro_services` in MyListing > Listing Type > Repeater. You can change the class/prefix in MyBookaro > Settings > General.

= Lite features =
* Booking requests flow for MyListing Directory listings and Single Business pages (request-to-book)
* Provider availability and booking calendar management (weekly schedule, time slots, date exceptions)
* Provider and customer dashboards
* Booking workflows and status updates
* Email notifications with template toggles (new booking/status, 24h + 1h reminders, review invites)
* Getting Started onboarding, operational summary, and setup checklists
* System Status diagnostics page with masked copy/share summaries, launch-readiness checks, and support bundle export
* Blocks and shortcodes for booking entry points and dashboards

= Lite and Pro comparison =
* MyListing Directory - Included in Lite, strongest lane, fastest launch
* Single Business - Included in Lite, real no-listing lane
* Generic Directory - Included in Lite, guided lane for custom directory setups
* Core request-to-book, availability, dashboards, reminders, and diagnostics - Included in Lite (also in Pro)
* WooCommerce payments - Pro only
* Google Calendar + iCal - Pro only (iCal does not boot in Lite tabs/dashboards)
* Booking chat - Pro only; MyListing uses native MyListing messaging, Generic + Single Business use MyBookaro chat with an active, valid Pro license
* Staff - Pro only; manual roster + assignment workflow (no customer-selected staff and no automatic routing/dispatch)
* Reports / exports / webhooks / SMS - Pro only
* In Lite, any Pro tabs or Pro fields shown in Settings are disabled read-only previews and do not save settings.
* Full Pro functionality requires the separate MyBookaro Pro plugin installed with a valid license key.

= Notifications, reminders, and review invites =
* Reminder emails (`reminder_24h`, `reminder_1h`) are queued when a booking is approved.
* Reminder emails send only for future reminder times.
* Review invite emails are queued after a booking is completed.
* Scheduled reminder/review invite delivery runs through WordPress Cron.

= Compatibility =
* Compatible with MyListing
* Works with the MyListing theme
* Provider mapping supports MyListing listing owners
* Official support lanes: MyListing Directory, Single Business, and guided Generic Directory.
* Generic Directory is guided, not automatic universal theme compatibility.
* WooCommerce is optional and only required for WooCommerce My Account UI mode

= Blocks and shortcodes =
Blocks (Gutenberg):
* MyBookaro: Booking Button (`bookaro/booking-button`)
* MyBookaro: Booking Form (`bookaro/booking-form`)
* MyBookaro: Provider Dashboard (`bookaro/provider-dashboard`)
* MyBookaro: Customer Dashboard (`bookaro/customer-dashboard`)
* MyBookaro: Services Cards (`bookaro/services-cards`)

Shortcodes (examples):
* `[bookaro_booking_button listing_id="123" provider_id="45" service_label="Consultation" price="49"]`
* `[bookaro_booking_form listing_id="123" auto_open="true"]`
* `[bookaro_services_cards listing_id="123" columns="3" show_price="1" show_duration="1"]`
* `[bookaro_provider_dashboard]`
* `[bookaro_customer_dashboard]`

= Data and privacy =
MyBookaro stores booking and availability data in your WordPress database so booking workflows can run.

Data types include:
* Booking records (listing, provider, customer, dates, status, notes)
* Provider availability rules, timeslots, and exceptions
* Notification logs for delivery diagnostics

By default, uninstall keeps data. To remove all plugin data, enable "Delete all MyBookaro data on uninstall" before uninstalling.

== Installation ==
1. Upload the `mybookaro` folder to `/wp-content/plugins/`.
2. Activate the plugin in WordPress Plugins.
3. If you choose the MyListing Directory lane, ensure MyListing is active.
4. Configure settings in MyBookaro > Settings.

== Source code ==
The compiled JavaScript bundles in `mybookaro/dist/*.js` are produced from the Vue.js source files shipped in `mybookaro/assets/*.vue` and `mybookaro/assets/components/**/*.vue`. To rebuild from source: install Node.js + npm, run `npm install` inside the plugin directory, then `npm run build:lite`. Build configuration is in the `vite.*.config.js` files in the plugin root.

== Frequently Asked Questions ==
= Is MyBookaro a free booking plugin? =
Yes. MyBookaro Lite is a free appointment booking and scheduling plugin. It includes booking requests, provider availability (weekly schedule, time slots, and date exceptions), provider and customer dashboards, booking status workflows, and email reminders and review invites — at no cost. Advanced features such as WooCommerce payments, Google Calendar and iCal sync, SMS, and reporting are available in the separate MyBookaro Pro plugin.

= Can I use MyBookaro for a service business without a directory? =
Yes. The Single Business lane is built for individual service businesses and requires no listings. Set a Default Provider, assign your booking, services, and dashboard pages, and place the booking form on any normal page. It is a good fit for consultants, coaches, trainers, salons, spas, clinics, and other appointment-based service providers who want online booking on a standard WordPress site.

= How do customers book an appointment? =
Customers open the booking form from a listing or page, choose a service, pick a date, and select an available time slot, then submit a booking request. The provider reviews requests from the WordPress admin or their front-end dashboard and can approve, reschedule, cancel, or complete each booking. Approved bookings can trigger automatic 24-hour and 1-hour email reminders.

= Can providers manage their schedule and availability calendar? =
Yes. Each provider sets their own availability with a weekly schedule, configurable time slots, and date exceptions, so customers only see open times. Customers can also view their upcoming appointments in a calendar from the customer dashboard.

= Can I add a booking form to a page with a block or shortcode? =
Yes. MyBookaro is an online booking system that ships Gutenberg blocks and matching shortcodes for the booking button, booking form, services cards, provider dashboard, and customer dashboard. You can place online booking entry points on any page or post without writing code — add a block or paste a shortcode such as `[bookaro_booking_form]`.

= Does MyBookaro work on directory sites like MyListing, Listeo, Listdom, or ListingPro? =
Yes. MyBookaro is a provider-based booking engine designed for WordPress directories. The MyListing Directory lane is the strongest, fastest-to-launch path, and the guided Generic Directory lane lets you map providers, services, and placement for other directory themes and custom directory CPTs where you intentionally control the configuration.

= Which lane should I choose: MyListing Directory, Single Business, or Generic Directory? =
Choose MyListing Directory for MyListing-powered sites, Single Business for service sites that do not need listing context, and guided Generic Directory for CPT/custom directory setups where you control mapping and placement.

= Does Single Business require listings? =
No. Single Business is provider-first, requires no listings, and can run with a Default Provider on normal pages.

= Does Generic Directory work automatically with any theme? =
No. Generic Directory is a supported guided lane, not a universal turnkey adapter for every theme.

= Why is Generic Directory called guided? =
Because it supports real custom directory setups, but you are expected to choose provider mapping, services source, and placement intentionally.

= What happens when my Pro license expires? =
Lite keeps working normally. Pro premium modules stop booting until the license is valid again, and Pro updates are blocked.

= Is Google Calendar or iCal included in Lite? =
No. Google Calendar sync and iCal are Pro-only and iCal is not shown in Lite dashboards/tabs.

= How does booking chat work in each lane? =
Booking chat is Pro-only. MyListing Directory uses native MyListing messaging; Generic Directory and Single Business use MyBookaro booking chat when Pro is active with a valid license.

= Do I need WooCommerce? =
WooCommerce is optional in Lite and only needed for WooCommerce checkout / My Account-based Pro flows.

= Are deposits partial checkout charges or payout-split settings? =
Current WooCommerce checkout flows charge the full booking amount. Deposit-style options in current releases are payout-split settings (website share/provider share), not partial checkout charges.

= What should I check before opening support? =
Start in MyBookaro > Getting Started for the lane checklist and operational summary. Then run MyBookaro > System Status. Share the masked support snapshot and attach the Support Bundle JSON (or text report + JSON export). This helps support prioritize blockers quickly.

= Is MyBookaro affiliated with MyListing? =
No. MyBookaro is an independent plugin compatible with MyListing.

= Is MyBookaro an official MyListing plugin? =
No. MyBookaro is independent and is not affiliated with or endorsed by 27collective.

= What does "Compatible with MyListing" mean? =
It means MyBookaro integrates with MyListing-powered sites. Compatibility does not imply affiliation, endorsement, or sponsorship.

= Does MyBookaro require MyListing? =
No. Choose the lane that matches your site: MyListing Directory, Single Business, or guided Generic Directory.

= How do I launch Single Business without listings? =
No listings are required. Set a Default Provider, assign booking/services/dashboard pages, place booking UI on normal pages, then run one end-to-end booking test and review System Status.

= What happens if MyBookaro Pro is installed but the license is inactive? =
Lite continues working normally; premium Pro modules stay disabled until the license is valid.

= Does Lite connect to an external license server? =
No. Lite has no licensing checks and no premium update checks.

= How do reminder and review invite emails work? =
Enable them in MyBookaro > Settings > Email. Reminders are queued on approved bookings (24h and 1h before start), and review invites are queued after bookings are completed.

= Are public endpoints rate-limited? =
Yes. Public endpoints use throttling and return HTTP 429 with Retry-After when limits are exceeded.

= Does MyBookaro send data to third parties? =
Not by default. External requests happen only when you enable optional integrations on your site.

= How do I delete personal data? =
Use WordPress Tools > Export/Erase Personal Data, or enable "Delete all MyBookaro data on uninstall" before uninstalling.

= Does MyBookaro work on WordPress Multisite? =
Yes — activate it per-site. On a network, activate MyBookaro individually on each site that needs it rather than using "Network Activate"; each site then gets its own booking tables and settings. Network-wide activation is not supported.

== Screenshots ==
1. Online booking form — book directly from a listing or page: choose a service, date, and an available time slot.
2. Manage every booking from your WordPress dashboard: filter, search, then approve, reschedule, cancel, or complete.
3. Settings control center — setup overview, one-click toggles, and live booking activity.
4. Guided setup wizard configures your integration, listings, services, and pages in a few steps.
5. Getting Started maps your product lane and tracks progress to your first booking.
6. Customers manage their own bookings from a dedicated front-end dashboard.
7. Customer booking calendar — customers view their upcoming appointments in a clean calendar.
8. MyBookaro Pro: revenue and operations reporting with KPIs, status breakdowns, and trends.
9. MyBookaro Pro: WooCommerce payments with deposits, pay-now / pay-later, and order status sync.
10. MyBookaro Pro: SMS notifications and reminders through your own SMS provider.

== Changelog ==
= 1.2.2 =
* Fixed: PHP 8.4 no longer emits deprecation notices for the booking action REST parameters. No change in behaviour on any supported PHP version.

= 1.2.1 =
* The MyBookaro blocks (Booking Button, Booking Form, Provider Dashboard, Customer Dashboard, Services Cards) now use the WordPress Block API v3, so they insert, select, and preview correctly in the current block editor — including the iframed editor introduced for WordPress 7.1.
* Confirmed compatible with WordPress 7.0.

= 1.2.0 =
* Improved directory listing copy (title, tags, short description, FAQ) and added a WordPress Playground live-preview blueprint.

= 1.1.9 =
* Improved WordPress.org discoverability: keyword-led plugin title, refreshed search tags, expanded FAQ, and clearer description and screenshot captions.
* Added: an optional, dismissible prompt that invites site owners to review MyBookaro on WordPress.org after a few completed bookings. It appears only on MyBookaro admin screens, is never incentivized, can be permanently dismissed, and its threshold is filterable via the `bookaro_review_nudge_threshold` filter.

= 1.1.8 =
* Fixed: the Getting Started setup tip for MyListing now shows the services-repeater Row CSS Class configured in Settings instead of always printing `mybookaro_services`, so sites that customized the class see the correct value.

= 1.1.7 =
* Added: a `bookaro_settings_render_tabs` filter so add-ons can contribute tabs and panels to the MyBookaro Settings page. The built-in Settings tabs now render through this filter; the five free tabs are unchanged.
* Fixed: MyBookaro Pro Settings tabs (Payments, Calendar, SMS, Automation, Analytics, Staff, Exports, Custom Forms) could not appear on the Settings page because the tab list was hardcoded. Pro tabs now render alongside the free tabs when a valid Pro license is active.

= 1.1.6 =
* Fixed: prevented the booking form from being injected more than once on MyListing single-listing pages when used alongside MyBookaro Pro.

= 1.1.5 =
* Refreshed the WordPress.org plugin page with real screenshots of the booking, admin, and customer-dashboard surfaces, plus clearly labeled MyBookaro Pro highlights.

= 1.1.4 =
* Updated the plugin Author header to the "MyBookaro" brand name (consistent with the Plugin URI and the WordPress.org listing).

= 1.1.3 =
* Hardening: the System Status self-diagnostic now verifies TLS for public hosts and only skips certificate verification for local/loopback addresses (localhost, development TLDs, or private IPs), mirroring WordPress core's Site Health loopback checks.

= 1.1.2 =
* Replaced a hardcoded `wp-admin/admin-ajax.php` reference in the System Status diagnostics with WordPress's `admin_url()`.
* JSON-encoded locale data passed to inline scripts via `wp_json_encode()` so it is always safely escaped.
* Renamed the `rest_enabled` filter to the prefixed `bookaro_rest_enabled` to prevent collisions with other code.
* Hardened the IP rate limiter to validate addresses before parsing (removed an error-suppression operator).
* Completed a full PHP_CodeSniffer / WordPress Coding Standards pass — no errors or warnings across security, escaping, i18n, prefixing, and global-scope checks.

= 1.1.1 =
* Lite now ships with no locked or "Pro preview" placeholders and no license-key field — every included feature is fully functional. Pro-only capabilities are provided by the separate MyBookaro Pro plugin.
* Rewrote the Lite vs Pro screen as a clear, descriptive feature comparison (no disabled or locked controls).
* Enqueued all admin and front-end inline scripts and styles through WordPress's standard enqueue functions for better performance and compatibility.
* Moved the MyBookaro top-level admin menu to a lower position so it no longer sits among core WordPress menu items.
* Hardened the diagnostics log file with an unguessable filename and directory access guards (.htaccess / web.config / index.html).
* Regenerated the translation template (.pot) and language catalogs.

= 1.1.0 =
* Added MyBookaro brand mark and horizontal lockup (SVG) and wired them into the WP admin menu icon and every plugin admin hero (Bookings, Settings, Setup Wizard, Getting Started, System Status, Logs, Upgrade, Booking edit).
* Fixed Plugin URI in plugin header (was `/mybookaro`, now points at the marketing homepage).
* Added lane-summary and next-action visibility improvements across Setup Wizard, Getting Started, and System Status.
* Hardened Generic preset and Single Business first-run guidance with clearer launch blockers and next steps.
* Simplified Lite Pro-preview calendar placeholders so they are unmistakably read-only; iCal remains Pro-only.
* Aligned Staff and booking-chat positioning copy with shipped lane behavior and current product scope.
* Added SMS/webhook delivery observability surfaces (last test result, last delivery error, and suggested next step) when Pro modules are active.
* Expanded calendar health diagnostics guidance for Google Calendar + iCal workflows in Pro-enabled environments.
* Fixed: completing the guided Setup Wizard on the Generic Directory lane now persists the lane-confirmation flags, so a single save confirms the lane.
* Fixed: Generic Directory can now reach a green System Status — the provider/customer dashboard "page ready" checks recognize the pages assigned through the Setup Wizard, so the lane reaches launch-ready via the guided flow.
* Fixed: Single Business no longer flags its provider-owned services as orphaned/"missing listing" (Single Business has no listings by design).
* Fixed: a listing's booking modal no longer dead-ends without a service — provider-managed Generic Directory services are now offered when no listing-level service is present.
* Fixed: the shared lane-summary card now uses the standard admin-card padding so it matches the surrounding cards.
* Added: booking-UI typography presets — pick a Body and Heading font in Settings > Appearance (System default, your theme font, Sans-serif, Serif, Monospace, or a custom CSS font stack); headings default to "Same as body" so the booking UI stays consistent on any theme.

= 1.0.4 =
* Updated booking details modal layout and confirmation flow.
* Improved section rendering for provider and customer booking details.
* General UI and display fixes in booking details screens.

= 1.0.3 =
* Improvements and fixes for booking form flow and booking detail fields.

= 1.0.2 =
* Maintenance update.

= 1.0.0 =
* Initial public release (request-to-book for MyListing)

== Upgrade Notice ==
= 1.2.2 =
Clears PHP 8.4 deprecation notices from the booking action REST endpoints. No behaviour change on any supported PHP version.

= 1.2.1 =
The MyBookaro blocks now use Block API v3 for full compatibility with the current WordPress block editor, including the iframed editor coming in WordPress 7.1. Confirmed compatible with WordPress 7.0.

= 1.2.0 =
Directory listing copy refresh (title, tags, short description, FAQ). No functional changes.

= 1.1.9 =
Better WordPress.org discoverability (title, tags, FAQ, captions) and a new optional, dismissible prompt that asks site owners to review MyBookaro after a few completed bookings.

= 1.1.7 =
Makes the Settings page tabs filterable so MyBookaro Pro's Settings tabs render. If you use Pro, update both Lite and Pro to 1.1.7/1.1.3.

= 1.1.6 =
Reliability fix for the booking form on MyListing directory listings.

= 1.1.5 =
Refreshed the plugin directory screenshots with real product captures.

= 1.1.4 =
Cosmetic: the plugin Author now displays as "MyBookaro".

= 1.1.3 =
Hardens the System Status loopback diagnostic to verify TLS on public hosts.

= 1.1.2 =
WordPress.org review compliance: prefixed the REST filter, JSON-encoded inline-script locale data, replaced a hardcoded admin-ajax path with admin_url(), and completed a full WordPress Coding Standards hardening pass.

= 1.1.1 =
Lite is now fully functional with no locked placeholders or license-key field, assets are enqueued the standard way, the admin menu uses a lower position, and the diagnostics log is hardened.

= 1.1.0 =
Clearer lane-aware onboarding and launch blockers, more explicit Lite Pro previews, and improved Pro chat/delivery/calendar diagnostics. Fixes let the Generic Directory and Single Business lanes reach launch-ready. New: pick the booking UI font in Settings > Appearance.

= 1.0.4 =
Updated booking details modal layout and confirmation flow.

= 1.0.3 =
Booking form flow and booking detail field fixes.

= 1.0.2 =
Maintenance update.

= 1.0.0 =
Initial public release.
