Version 1.1.1
April 15, 2026
Added
- New
slot/get-range-capacitycontroller action andBookedAvailability.getRangeCapacity()JS helper for querying the remaining capacity of a multi-day date range (tightest day wins). ScheduleResolverService::getCapacityForDay()resolves day-based capacity fromSchedule.workingHours[day].capacity, honoring service → employee → aggregated-employee precedence.- Day-service wizard step now shows a quantity picker (with +/− controls and live remaining-capacity hint) when a multi-day range has capacity greater than one.
- Inline booking error banner on the date/time step so backend error messages surface to the user instead of being swallowed.
Changed
- Multi-day availability now enforces capacity per day using the resolved schedule capacity instead of
Service.capacity, correctly accounting for overlapping reservations across each day of the range. SlotControllerrate limits raised to 120 req/min acrossget-slots,get-dates,get-valid-end-dates,get-event-dates, andget-availability-calendarto reduce false 429s for legitimate wizard traffic.BookedAvailability.getDates()andcreateBooking()now parse error response bodies so the wizard can display the server message and status code.- Wizard caches fetched available-date results per month/service/employee/location/quantity/extras key and de-dupes in-flight requests.
- Flexible-day price calculation guards against missing
selectedService.price.
Fixed
- GraphQL mutation registration for
QuantityMutations,ReservationMutations, andWaitlistMutations(minor correction). - Day-service “Next” button enable/disable logic now accounts for day-range capacity picker state.
Version 1.0.2
April 2, 2026
Fixed
- Bundled Alpine.js with the plugin so the built-in booking wizard works out of the box without requiring the site theme to include Alpine separately (#3)
- Alpine.js is loaded at
POS_ENDto ensure proper initialization order with wizard components - Added detection to skip loading Alpine.js if the site already includes it