Commit Graph

  • 41666b0739 fix: full reschedule implementation with real available slots popertots 2026-05-08 22:44:18 +01:00
  • 6d95eb6dcf fix: match date/time picker style, fix two-row footer layout popertots 2026-05-08 22:27:40 +01:00
  • 8b539afccc fix: two-row footer layout, use DatePicker for reschedule popertots 2026-05-08 22:13:13 +01:00
  • fa10134d41 feat: user booking cancel/reschedule, estimated subtotal wording popertots 2026-05-08 22:02:16 +01:00
  • 968b40b4d9 fix: test migration cleanup for discount types/tables, fix type ordering in init-script popertots 2026-05-08 19:59:18 +01:00
  • 79a794de58 fix: remove discount_eligible from booking creation, fix modal scrolling, lower default to 5% popertots 2026-05-08 18:08:59 +01:00
  • 5c4041ded9 refactor: move discounts into admin panel as component, rebuild modal with proper field handling popertots 2026-05-08 17:54:05 +01:00
  • 1f54d8565c feat: loyalty/discount system with milestone campaigns, auto-redemption, and admin UI popertots 2026-05-08 17:32:20 +01:00
  • bec4100e4d feat: customer relationship view, idempotency keys, approval decline, seed payments, backlog cleanup popertots 2026-05-04 12:20:03 +01:00
  • 88ee265603 refactor: remove auto deposit penalty on no-shows, add comprehensive tests popertots 2026-05-03 15:59:40 +01:00
  • 6808752e0d feat: unify walk-in and call-in reservation flows with 15min TTL, guest booking support, and slot awareness popertots 2026-05-03 15:09:50 +01:00
  • bff86a6660 feat: 10 quick wins — account deletion, health check, debug cleanup, UX polish, graceful shutdown popertots 2026-05-01 11:33:27 +01:00
  • 7b396b7a9d fix: resolve guest booking failures from router conflict, reservation self-block, and closed-day miscalculation popertots 2026-04-30 16:06:51 +01:00
  • 819a7afb76 fix: move guest booking dates to avoid slot conflicts with existing seeded bookings popertotsandSisyphus 2026-04-30 11:58:22 +01:00
  • 861fa5227f refactor: rename Alice to Nina across test and seed scripts popertotsandSisyphus 2026-04-30 11:52:26 +01:00
  • acd50e0210 seed: add guest booking scenarios and time blockers popertotsandSisyphus 2026-04-30 11:48:18 +01:00
  • a9273be201 feat: wire admin time-blocker routes popertotsandSisyphus 2026-04-30 11:48:08 +01:00
  • c5b7d9a078 feat: wire slot reservation into all booking flows popertotsandSisyphus 2026-04-30 11:45:20 +01:00
  • 52ca9b425b test: add guest booking, reservation, and anonymization tests popertotsandSisyphus 2026-04-30 11:45:08 +01:00
  • 4f173b04dc feat: dual TTL reservation cleanup and guest account anonymization popertotsandSisyphus 2026-04-30 11:44:51 +01:00
  • 70cba5e412 feat: add guest booking system and admin slot reservation popertotsandSisyphus 2026-04-30 11:44:39 +01:00
  • 91dbdb199e schema: relax email UNIQUE to partial unique index for non-guest users popertotsandSisyphus 2026-04-30 11:44:27 +01:00
  • 16095ea372 chore: add .cgcignore to exclude dependencies and build artifacts popertotsandSisyphus 2026-04-29 23:23:44 +01:00
  • b6e98353bc test: update cleanup test for new RESERVATION:user: description format popertotsandSisyphus 2026-04-29 23:15:32 +01:00
  • b1bc46290f fix: resolve chi route collision on /bookings path popertotsandSisyphus 2026-04-29 23:12:54 +01:00
  • 6766c6128c feat: wire reserve route, dual TTL cleanup, and booking reservation deletion popertotsandSisyphus 2026-04-29 23:05:48 +01:00
  • 2ba7b85d0b feat: add OptionalAuth middleware and slot reservation endpoint popertotsandSisyphus 2026-04-29 22:56:53 +01:00
  • 60ec5a0a8c ui: polish navbar visibility and home page greetings popertotsandSisyphus 2026-04-29 22:56:35 +01:00
  • ce1a25f054 fix: remove double image processing in upload handler popertotsandSisyphus 2026-04-29 22:56:14 +01:00
  • b549716b89 test: fix flaky time_blockers test and improve testdb migration popertotsandSisyphus 2026-04-29 22:55:58 +01:00
  • a7c6e90978 fix: improve portfolio and image upload UX popertots 2026-03-07 23:28:16 +00:00
  • c7c10bc177 Fixed user cancelation logic popertots 2026-03-07 21:00:16 +00:00
  • 94adc7f54c test: clarify 1h advance requirement is USER-ONLY, add admin walk-in tests popertots 2026-03-07 18:05:17 +00:00
  • 99ab43eefb test: update tests to reflect current behavior changes popertots 2026-03-07 18:02:13 +00:00
  • f9610c8392 docs: update obsidian deposits section to reflect 24h rule, optional forgiveness, and admin enforcement toggle popertots 2026-03-07 17:46:15 +00:00
  • 2623b62573 docs: update README with comprehensive deposit system documentation popertots 2026-03-07 17:41:03 +00:00
  • c275265794 refactor: update deposit system with 24h no-show rule, optional forgiveness, and admin enforcement toggle popertots 2026-03-07 17:39:32 +00:00
  • faa4d89152 Implement business logic changes: deposits, no-shows, reservations, approval workflow popertots 2026-03-07 16:38:23 +00:00
  • 2c6dcc066d cron nbtb popertots 2026-03-04 20:36:04 +00:00
  • 182adaed6d fix nbtb, add tests popertots 2026-03-04 20:12:07 +00:00
  • 7c3f922725 Fix nbtb, add tests popertots 2026-03-04 20:11:51 +00:00
  • 29b9776a93 non-booking-time-blockers (nbtb) popertots 2026-03-04 11:38:34 +00:00
  • 861dd11c5b Deposit tracking popertots 2026-03-03 21:40:39 +00:00
  • ec2dfb6934 Update frontend to match new tested backend popertots 2026-03-02 22:49:20 +00:00
  • 1e13ccda05 docs popertots 2026-03-02 22:32:56 +00:00
  • a7c8837073 Tests popertots 2026-03-02 22:17:43 +00:00
  • 2f08b37902 Fix tests popertots 2026-03-02 20:25:03 +00:00
  • 74b6f039c0 Fix tests popertots 2026-03-02 19:57:44 +00:00
  • dd097c1022 Large manual tests corruption fix popertots 2026-03-02 18:07:13 +00:00
  • 817d5dd021 Test docstrings popertots 2026-03-02 11:37:31 +00:00
  • b42b7f898a fix tests popertots 2026-03-02 11:14:06 +00:00
  • a2e0a8e05c update tests popertots 2026-03-02 11:03:59 +00:00
  • eac5dccc3c testing update + docs popertots 2026-03-02 10:16:55 +00:00
  • 803aab7073 test fixes popertots 2026-03-01 16:05:02 +00:00
  • e00740a8c9 fix edit requests popertots 2026-02-27 16:07:46 +00:00
  • 72124bac98 partial edit fixes popertots 2026-02-26 20:03:11 +00:00
  • 4fc84e6d39 update sql functions popertots 2026-02-25 00:39:51 +00:00
  • 2c94a4d9c3 docs popertots 2026-02-25 00:06:55 +00:00
  • 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 popertots 2026-02-24 23:42:40 +00:00
  • c6fe9e92a7 refactor: migrate patch test schema from service-level to dedicated tables popertots 2026-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 popertots 2026-02-24 17:23:28 +00:00
  • 89d848ee72 docs popertots 2026-02-23 01:19:53 +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 popertots 2026-02-23 00:59:32 +00:00
  • 355e8a26c1 fix: correct middleware chain in scheduling NonAdmin tests popertots 2026-02-22 00:34:53 +00:00
  • ed5598a59f fix: correct time format assertions in scheduling tests popertots 2026-02-22 00:31:04 +00:00
  • 03e2d8343e fix: add 5-second buffer after PostgreSQL startup before database operations popertots 2026-02-22 00:25:55 +00:00
  • 2abf6653ba fix: add PostgreSQL startup wait loop before test database setup popertots 2026-02-22 00:24:03 +00:00
  • fb0a7fa59b fix: test database setup and scheduling test build error popertots 2026-02-22 00:20:28 +00:00
  • 82ff61cfdd Fix test DB connection - disable SSL popertots 2026-02-22 00:10:17 +00:00
  • 9ca102153b Add crussell_test database creation and schema seeding to dev script popertots 2026-02-22 00:06:03 +00:00
  • 44cac94f64 Fix test setup and middleware chain - Handler tests now passing popertots 2026-02-21 23:50:17 +00:00
  • e858c782a4 Update go popertots 2026-02-21 20:53:18 +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 popertots 2026-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 popertots 2026-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) popertots 2026-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 popertots 2026-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 popertots 2026-02-20 18:46:38 +00:00
  • eb1a719fc3 Exif stripping popertots 2026-02-20 17:22:43 +00:00
  • b4d91d5dc0 Security pass popertots 2026-02-20 12:59:10 +00:00
  • a5a2ffd83e Security: add rate limiting, input validation, and filter category validation Backend: - Add rate limiting middleware (mw/ratelimit.go) - in-memory per-IP limiter - Apply rate limits per endpoint group: - Public read-only: 120/min - Registration: 10/min - Portfolio filters: 60/min - Authenticated users: 120/min - Admin: none (trusted) - Add 256 char input length validation on portfolio endpoints - Validate filter categories exist in DB before querying - Secure GetImage endpoint: only allow UUID or numeric timestamp (15-20 digits) - Remove pattern-based image lookup to prevent enumeration - Add services validation: name (100), duration (1-480), patch test (0-168) Frontend: - Add maxlength=256 to portfolio tag/search inputs - Add maxlength to registration: name (50), email (255), phone (20), password (72) - Add maxlength=100 to service name input popertots 2026-02-20 12:03:14 +00:00
  • f9eec94f2f Security: add rate limiting, input validation, and filter category validation Backend: - Add rate limiting middleware (mw/ratelimit.go) - in-memory per-IP limiter - Apply rate limits per endpoint group: - Public read-only: 120/min - Registration: 10/min - Portfolio filters: 60/min - Authenticated users: 120/min - Admin: none (trusted) - Add 256 char input length validation on portfolio endpoints - Validate filter categories exist in DB before querying - Secure GetImage endpoint: only allow UUID or numeric timestamp (15-20 digits) - Remove pattern-based image lookup to prevent enumeration - Add services validation: name (100), duration (1-480), patch test (0-168) Frontend: - Add maxlength=256 to portfolio tag/search inputs - Add maxlength to registration: name (50), email (255), phone (20), password (72) - Add maxlength=100 to service name input popertots 2026-02-20 12:03:05 +00:00
  • 9259de9393 Portfolio: add filtering, URL sharing, and improved tag input - Add category filters with dynamic counts that reduce as filters applied - Add ?filter[category]=value URL params for filterable links - Add ?img= timestamp param that bypasses filters to show specific image - Update URL when opening/navigating/closing modal for shareable links - Backend: add /api/portfolio/filters endpoint with filter logic - Backend: add timestamp lookup fallback for GetImage endpoint Frontend: - Portfolio page: filter dropdowns, keyboard nav, mobile improvements - ImageUpload: live tag suggestions from API, arrow/Tab navigation, confirmation modal before upload, mobile-optimized touch targets - Add scrollbar-hide utility and fix filter dropdown overflow - Move Clear all button, add vertical separator on desktop popertots 2026-02-20 00:32:09 +00:00
  • dfd552b02f feat(storage): add S3/R2 abstraction with local Rustfs dev popertots 2026-02-17 22:47:38 +00:00
  • d43d7ebc5e readme popertots 2026-02-17 22:38:22 +00:00
  • 1082631525 feat(auth): wire up refresh token endpoint and auto-refresh popertots 2026-02-17 21:54:45 +00:00
  • e20263b717 Update readme popertots 2026-02-17 21:47:11 +00:00
  • bbb273c192 feat(notifications): add admin notification acknowledgement on booking state changes popertots 2026-02-17 21:38:50 +00:00
  • 105831eeb3 Update readme popertots 2026-02-12 22:29:42 +00:00
  • 50746595e7 feat(bookings): improve admin booking wizard and user dashboard popertots 2026-02-12 22:15:10 +00:00
  • 2ace6d4d87 WIP call in booking popertots 2026-01-24 22:08:36 +00:00
  • 3a8ea4c98f added booking approvals popertots 2026-01-19 22:32:35 +00:00
  • 1dd37a8d22 Added booking approvals popertots 2026-01-19 22:32:25 +00:00
  • 73610e5d8e Fix booking search, shrink time picker popertots 2026-01-17 19:59:03 +00:00
  • 3a77e582e3 Split admin dashboard, implement user and booking search popertots 2026-01-17 18:55:58 +00:00
  • 1e8995f577 responsive popertots 2026-01-06 16:55:26 +00:00
  • 67d812a9be Fix booking count filters, add admin notifications, and improve bookings UI popertots 2026-01-06 16:45:36 +00:00
  • f536a7fd04 Fix booking count filters, add admin notifications, and improve bookings UI popertots 2026-01-06 16:45:17 +00:00
  • 08e4e12a73 portfolio frontend popertots 2025-11-28 18:03:15 +00:00
  • 7bc2129422 Portfolio frontend, various fixes popertots 2025-11-28 18:03:06 +00:00
  • c1548c503f My account popertots 2025-11-09 01:49:28 +00:00