ea1a80dbda
fix: resolve flaky holiday hours test and clean up dev scripts - Use fixed date (Thursday Feb 26, 2026) instead of dynamic tomorrow to avoid timezone-related test flakiness - Remove orphaned SQL fragment from init-script.sql - Clean up duplicate color code definitions in local-dev-2.sh - Add Rustfs data wipe and SabreDAV startup to dev script - Add composer.lock to .gitignore
popertots2026-02-24 23:42:40 +00:00
c6fe9e92a7
refactor: migrate patch test schema from service-level to dedicated tables
popertots2026-02-24 22:17:50 +00:00
f59595eeec
Refactor patch test system and add booking edit requests - Replace patch_test_duration_hours on services with separate patch_tests table - Add user_patch_tests table to track user patch test records - Add booking edit request system: users can request time changes - Add admin handlers to list, approve, and reject edit requests - Add validation to prevent editing completed/cancelled bookings - Add overlap and closed-day checks for booking edits
popertots2026-02-24 17:23:28 +00:00
df3439bd70
fix: improve test infrastructure and add ID validation - Add TestMain to set test env vars and testdb.TruncateTables for test isolation - Add chi routing context to test helpers for path parameter extraction - Fix SQL error handling to use errors.Is() instead of == - Add validators package with ID validation - Fix admin test middleware chain (RequireAdmin wrapper) - Update test user inserts to include phone and date_of_birth fields - Update service delete test to check soft-delete (is_active=false) - Update holiday hours test to use new schema (weekday, is_open) - Add phone number validation tests for UK mobile numbers
popertots2026-02-23 00:59:32 +00:00
970cc5554d
feat: add email verification, profile pictures, deposits, and calendar export Backend: - Add email verification code generation and verification endpoints - Add profile picture upload with S3 storage and image processing - Add deposit_required field to users with 48h advance booking requirement - Add loyalty stamps that accumulate on completed bookings - Auto-transition bookings: confirmed → in_progress → completed - Add booking cancellation handler with no-show detection - Add ICS calendar file download endpoint for bookings - Sync bookings to CalDAV on confirmation Frontend: - Add schedule page route - Add avatar and image-cropper UI components - Update shadcn-svelte components (button, dialog) - Add "Add to Calendar" button in booking modal Database: - Add verification_codes table - Add profile_pic_url, loyalty_stamps, deposits_required to users - Various schema updates
popertots2026-02-21 18:48:29 +00:00
88d8469180
feat: add email verification, profile pictures, deposits, and calendar export Backend: - Add email verification code generation and verification endpoints - Add profile picture upload with S3 storage and image processing - Add deposit_required field to users with 48h advance booking requirement - Add loyalty stamps that accumulate on completed bookings - Auto-transition bookings: confirmed → in_progress → completed - Add booking cancellation handler with no-show detection - Add ICS calendar file download endpoint for bookings - Sync bookings to CalDAV on confirmation Frontend: - Add schedule page route - Add avatar and image-cropper UI components - Update shadcn-svelte components (button, dialog) - Add "Add to Calendar" button in booking modal Database: - Add verification_codes table - Add profile_pic_url, loyalty_stamps, deposits_required to users - Various schema updates
popertots2026-02-21 18:47:58 +00:00
7b0259c0db
fix(admin): pagination, patch tests, and per-page limits Backend: - Fix GetAllAdminBookingsHandler and SearchAdminBookingsHandler to return totalPages in response - Auto-record patch tests when booking status progresses to "completed" - Add GET/POST /api/admin/users/{id}/patch-tests endpoints Frontend: - BookingsCard: proper pagination with 4 per page, prev/next buttons - UsersCard, BookingCreateModal, WalkInCreateModal: per_page=4 for user search - Add PatchTestModal for manual patch test entry in UserModal - Hide patch test section when user has no eligible services Database: - Add UNIQUE constraint on user_service_patch_tests(user_id, service_id)
popertots2026-02-20 22:17:37 +00:00
5a4cd29b44
feat(account): add editable phone and password change with validation - Add editable phone field in /account General tab with UK phone validation - Create PUT /api/user/change-password endpoint in backend - Add zxcvbn password strength meter to change password modal - Add "passwords don't match" validation message to both /account and /register - Fix navbar logout reactivity with invalidateAll and $derived values - Fix a11y warnings: add labels, roles, and keyboard handlers - Remove unused CSS from account page
popertots2026-02-20 20:17:38 +00:00
41dc839830
feat(booking): add service eligibility based on age and patch tests - Add eligibility filtering to /api/services: exclude services below user's age, gray out services requiring patch tests that are missing/expired - Add new endpoint /api/services/eligible-for/{user_id} for admin booking flows to check eligibility for a specific user - Add image metadata stripping: uploads now strip all EXIF/GPS data via imaging library (security improvement) - Update ServiceCard frontend: show grayed-out state for ineligible services with "contact us" link (public) or just warning (admin) - Add 2 patch test services to seed data: Gel Polish Full Set, Luxury Gel Manicure (48h each) - Remove deprecated local-dev.sh script
popertots2026-02-20 18:46:38 +00:00