Make the admin dashboard usable by non-technical sitters#17
Merged
Conversation
Fixes from two rounds of simulated non-technical-user testing (setup and
daily-operations personas), re-verified against the fixed build:
- Time off: the UI now treats the typed range as inclusive ("First/Last
day off, both days are included") and converts to the DB's exclusive
convention at the boundary — blocking Aug 10-17 no longer silently
leaves Aug 17 bookable.
- Service options: duration-derived option keys auto-dedupe server-side,
so two same-length options ("30 minutes" and "Puppy Check-in") save
fine; only genuinely duplicate names error, and the message says so.
- Booking triage: dashboard lands on Bookings with a "Needs your reply
(N)" group sorted by date; confirm/decline/cancel show a fixed bottom
status bar including whether the client was emailed; cancelling a
confirmed booking asks first; declined requests are stored (Declined
flag) and displayed distinctly from cancelled bookings.
- Booking status emails: confirm/decline/cancel notify the customer via
Resend when email is configured; the response reports notified so the
dashboard is honest when it isn't.
- New sitter-facing data (migration 0008, all additive): business
contact email/phone (shown in the widget), client phone numbers, and
per-pet care notes.
- Plain language: embed page gets copy buttons and numbered
Squarespace/Wix steps; "Embed" nav renamed "Your website", "Pets" to
"Pet types"; Services page explains how to add a new offering; stale
error banners clear on section switch; login screen drops the
DEMO_NOTES.md reference.
- Seed: demo bookings belong to the demo customer (no more "Unknown
customer"), plus pending requests so a fresh install demos triage.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Replaces #16 (same content; that branch's history predated the #15 squash and conflicted — this branch is a clean rebase of the one remaining commit onto main).
Summary
UX hardening round driven by simulated non-technical-user testing: two persona subagents (business setup, daily operations) drove the real app and reported friction; everything blocking was fixed and re-verified against the fixed build.
Declinedflag) and displayed distinctly from cancellednotifiedso the dashboard stays honest when it isn't0008, additive-only — already applied to the remote DB): business contact email/phone (shown in the widget), client phone numbers, per-pet care notesTest plan
npm test— 245/245 passing (new tests: declined lifecycle, same-duration option keys)🤖 Generated with Claude Code