popertots
eda4b6d865
fix: deduplicate service list to prevent each_key_duplicate
2026-05-29 18:09:35 +01:00
popertots
94f3f77985
fix: restore ServicesManagement.svelte component
2026-05-29 18:09:06 +01:00
popertots
7d1266707c
refactor: use shadcn Checkbox in PatchTestsManagement
2026-05-29 18:06:05 +01:00
popertots
db4c3aa076
feat: complete PatchTestsManagement UI and modal logic
2026-05-29 18:04:27 +01:00
popertots
df32f5518c
fix: resolve svelte syntax error and cleanup ServicesManagement.svelte
2026-05-29 17:57:33 +01:00
popertots
a22ddb7a0f
fix: remove duplicate and deprecated createService implementation
2026-05-29 17:55:23 +01:00
popertots
e1c0d3a03f
fix: remove duplicate validateMinimumAgeField
2026-05-29 17:54:00 +01:00
popertots
10bb1b4e9e
fix: remove duplicate validation functions
2026-05-29 17:52:25 +01:00
popertots
dec3e1023e
fix: remove duplicated validation functions in ServicesManagement.svelte
2026-05-29 17:51:36 +01:00
popertots
f5c2c26fe4
fix: resolve compilation errors in frontend and backend
2026-05-29 17:46:15 +01:00
popertots
f36497090a
feat: migrate to dedicated patch test management
2026-05-29 17:19:02 +01:00
popertots and Sisyphus
ec097af0f6
refactor: route pages with shared formatting and layout updates
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:10:29 +01:00
popertots and Sisyphus
5705ef71b8
refactor: dialog and alert-dialog UI primitives
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:10:07 +01:00
popertots and Sisyphus
3aa0814b1a
fix: navbar layout and styling improvements
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:09:46 +01:00
popertots and Sisyphus
040a47401e
refactor: user payment modal
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:09:25 +01:00
popertots and Sisyphus
91999d8244
refactor: account modals with auto-select and formatting
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:09:05 +01:00
popertots and Sisyphus
fc69fec361
refactor: today page components with calendar grid and stats
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:08:44 +01:00
popertots and Sisyphus
18d8822c47
refactor: admin user modal, image upload, and new schedule page
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:08:25 +01:00
popertots and Sisyphus
a44972fbc6
refactor: admin edit and approval modals
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:08:05 +01:00
popertots and Sisyphus
b2788b2269
refactor: admin management components (discounts, holidays, schedule, time blockers)
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:07:44 +01:00
popertots and Sisyphus
96ab71a579
refactor: admin booking modals with shared formatting and auto-select
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:07:26 +01:00
popertots and Sisyphus
0b3d26914b
refactor: booking flow wizard with step indicator improvements
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:07:02 +01:00
popertots and Sisyphus
0f118205d6
feat: add created_by_name field to Booking type
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:05:56 +01:00
popertots and Sisyphus
e8c03d6c30
refactor: extract shared formatting utilities (duration, date, age)
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-29 16:05:35 +01:00
popertots and Sisyphus
91d20d474b
refactor: lunch protection to find all gaps instead of largest
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:34:13 +01:00
popertots and Sisyphus
72270649b6
fix: UI polish across navbar, payment modal, calendar, and dialog
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:34:13 +01:00
popertots and Sisyphus
fff8afcbe9
feat: account edit request modal with auto-select and responsive improvements
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:34:13 +01:00
popertots and Sisyphus
f69750da82
feat: today calendar with time blockers, stats, and pending approvals improvements
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:34:13 +01:00
popertots and Sisyphus
db5f6ff135
fix: admin booking modals and schedule components polish
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:34:13 +01:00
popertots and Sisyphus
329eb28ec7
feat: admin reschedule modal and time blockers for schedule management
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:34:13 +01:00
popertots and Sisyphus
6cf1f12442
refactor: admin BookingCreateModal to use shared time slot utilities
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:30:32 +01:00
popertots and Sisyphus
efbcfbaaf0
refactor: booking flow components with shared utilities and auto-select
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:30:07 +01:00
popertots and Sisyphus
7ee77d6bff
feat: shared time slot utility module for booking and admin components
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-28 16:29:41 +01:00
popertots
8574bf2221
feat: enriched edit request system with side-by-side snapshots, calendar preloading, and admin review UI
...
Backend:
- Add enriched response types (EditSnapshot, EnrichedEditRequest) with original vs proposed snapshots
- Add 4 new GET endpoints for viewing edit requests (user and admin scoped)
- Remove github.com/lib/pq dependency — use native PostgreSQL array scanning
- Clean up edit requests, time blockers, and notifications on booking cancellation
- Validate exceptional closed hours on admin approve (409 Conflict)
- Notification upsert on edit request replace (no duplicate admin notifications)
Frontend:
- New user EditRequestModal with time/services/both modes and lunch protection
- New admin EditRequestModal with side-by-side diff (date/time, services, notes)
- Integrate edit requests into PendingApprovals card and notifications page
- Preload 3 months of availability to prevent calendar snap-back
- Apply lunch protection to isDateUnavailable in BookingFlow and BookingCreateModal
- Fix accessibility: card list items use <button> instead of <div>
Dev & Docs:
- Seed edit requests in local-dev-2.sh
- Update all Obsidian manuals with enriched edit request documentation
- 42 new tests (438/441 passing)
2026-05-26 11:59:07 +01:00
popertots and Sisyphus
3ccc017716
feat: user payment modal and tip route for online payments
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-25 18:05:14 +01:00
popertots and Sisyphus
f553ebad99
fix: booking duration calculation, tip page auth, and UI polish across frontend
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-25 18:04:43 +01:00
popertots and Sisyphus
2a8f04e7b3
feat: saved cards management and account cards tab
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-25 18:04:21 +01:00
popertots and Sisyphus
785a6dbf6f
feat: multi-method payment modal with tip presets and price overrides
...
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-25 18:04:12 +01:00
popertots
2e1ab9d745
feat: Square payment integration, booking flow redesign, and timezone/weekday fixes
...
- Add Square payment integration (mock + handlers + UI): terminal/online payments,
refunds, tips, saved cards, webhooks. Build-tagged dev/prod clients.
- Redesign booking flow: Step 4 conditional (deposit only), Step 5 confirmation
screen with booking ID, auto-submit on transition.
- Redesign schedule modal: 2x3 button grid with Pay Deposit/Pay Early logic.
- Add deposit warning banner at Step 1 for users with outstanding deposits.
- Fix weekday conversion bug: Go 0=Sunday vs DB 0=Monday mismatch in 6 locations.
- Fix timezone bug: UTC vs London time in closing hours validation.
- Fix frontend error parsing: plain text backend errors now displayed correctly.
- Fix crypto.randomUUID fallback for environments without Web Crypto.
- Add 7 new regression tests: closing hours, advance check, active booking limit,
weekday conversion, UTC/London, deposit snapshot, exceptional hours.
- Fix 3 flaky tests: dynamic dates instead of fixed, no-show timing.
2026-05-23 11:29:34 +01:00
popertots
d0e82e7d79
style: fix indentation in notification preferences section and backlog table formatting
2026-05-17 00:37:21 +01:00
popertots
c91be086c1
fix: close unclosed div wrapping notification preferences section
2026-05-17 00:34:34 +01:00
popertots
5c84cd71b8
fix: hide notification preferences section from admin users
2026-05-17 00:28:55 +01:00
popertots
b08df624a8
feat: user notification preferences UI and API endpoints
...
GET/PUT /api/user/notification-preferences with partial update support.
Toggle section in /account Admin tab (Email, SMS, Browser push).
3 new tests: defaults, full update, partial update.
Fix pre-existing timezone bug in exceptional hours tests (Truncate vs time.Date).
Update README, Technical Manual, and gap backlog (#15 struck out).
2026-05-17 00:24:13 +01:00
popertots
7fc58f58d9
feat: admin notification system with priority ordering, bell icon, and /notifications page
...
Two-tier notification system: new_booking (all public bookings) + pending_booking (notes/today).
Priority-sorted queue, unread count polling, enriched responses with user_name/booking_start_time.
Fix critical bug: edit_requested cleanup was broken (wrong reason string in 3 handlers).
Add 15 new tests covering priority ordering, enrichment, and notification creation flows.
Update Admin Manual, Technical Manual, and gap backlog docs.
2026-05-16 23:41:18 +01:00
popertots
80621e0d77
feat: add booking edit modal for /today page with service management
...
Replace placeholder BookingModal on the Next Appointment edit button with a
dedicated EditBookingModal that allows admins to add, remove, and override
services on an active booking. Includes backend PUT endpoint with overlap
detection and full test suite (20 tests).
2026-05-16 17:23:00 +01:00
popertots
44259a32ab
ui: swap Cancel and Payment button layout in Next Appointment card
...
Cancel is now half-width (inline with Edit/Extend), Payment is full-width spanning bottom row
2026-05-10 20:02:18 +01:00
popertots
83c62ffb97
feat: edit request time blockers, today closing time, UI polish, and test fixes
...
- Add time blocker management for booking edit requests
- Add closing_time field to admin today/current-next endpoint
- Update UserBookingModal and CurrentAppointment UI components
- Fix fmt import in bookings_test.go (was missing)
- Fix created_by FK in TestAdminApproveEditRequest_TimeBlockerOverlap
- Update test coverage for edit request time blocker overlap
- Update gap backlog documentation
2026-05-10 16:53:17 +01:00
popertots and Sisyphus
f3fb44f401
fix: port slot grouping fixes across all booking journeys
...
UserBookingModal (reschedule): add lunch protection filtering, validation guard preventing invalid start>end unavailable blocks, composite each keys, and simplified available/unavailable rendering (lunch is invisible to users).
BookingCreateModal (admin): add validation guard for unavailable blocks and fix composite each keys. Admin lunch protection behavior (30min min + amber warning) preserved.
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent )
Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai >
2026-05-10 14:26:28 +01:00
popertots
e7d3a83867
fix: refine unavailable slot grouping validation logic
2026-05-10 12:08:13 +01:00
popertots
f1a9d129e6
fix: unique keys for time slot each block to prevent duplicate key errors
...
- Use type+startTime+endTime composite key instead of startTime alone
- Prevents collisions when available and unavailable slots share start times
2026-05-10 11:57:05 +01:00