July 16th, 2025
This PR delivers a comprehensive set of bug fixes, UX improvements, backend enhancements, and new featuresโwith a strong focus on grooming appointments, invoicing, SEO, and commission tracking. ๐งผ๐พ๐ผ
โ Improved calendar UI and appointment time slot logic for smoother booking.
โ Fixed bug where selecting multiple services caused conflicts.
โ
Added fallback rendering delay with await new Promise(resolve => setTimeout(...)).
โ
Resolved ReferenceError: timeSlot is not defined.
โ
Enhanced date parsing and formatting with formatDateLocalized().
โ
Added null checks on service.appointmentTime to prevent runtime crashes.
โ Introduced & styled grooming checkout page.
โ Fixed syntax & HTML nesting issues in grooming components.
โ Updated grooming summary email with currency & unit formatting.
โ Refined grooming check-in flow and added more granular time options.
โ
Handled appointment.invoice_status when undefined.
โ Updated grooming weight unit display for clarity.
โจ Added staff commission tracking per grooming appointment.
๐ Integrated commission logic into grooming-related reporting modules.
๐งฉ Improved reporting performance and structure.
๐ Extended AnalyticsData interface with fullMonth support for better charting.
โ Enhanced error handling with typed error objects and cleaner logging.
๐ง Fixed issues in Stripe subscription logic to handle edge cases reliably.
โ
Fixed type mismatch on pet_parents in Invoice type.
๐ธ Fixed currency formatting in invoice dashboard & grooming complete screen.
๐ ๏ธ Explicitly typed availability in TypeScript to resolve compile errors.
โ Ran DB migration to correct foreign key constraints.
โ Fixed 404 errors flagged by Google Search Console.
โ
Resolved bugs in getLocalizationSetting() logic.
โ
Fixed inconsistent useEffect dependencies in localization hook.
๐ Simplified localization data fetching on invoicing page.
โ
Ensured createClient() is properly awaited (returns a Promise).
โ
Confirmed correct usage of getLocalizationSettings() across modules.