Build Log
MedinaCHF — Onboarding Simplification, a Self-Hosted Invite Email, and a Live Production Outage Fixed
August 28, 2026
Courtney's live-member-test brief asked for less friction between invitation and Member Home. Building it surfaced that Clerk's invitation email needs a paid plan to customize, which led to a bigger decision (create Clerk accounts directly, send our own email) that a real account-deletion bug and a Crucible council review both caught and fixed before it shipped. A live production 500 (a missing table from an unrelated prior session) was found and fixed mid-session using the same evidence discipline. Two smaller features (RSVP manual correction, membership-progress event list) and two small bug fixes closed out the session.
Timeline
What shipped
products/medinaCHF/app/member/layout.tsx, app/member/page.tsx — removed the /welcome redirect and the Getting Started card; a newly onboarded member lands directly on normal Member Home
products/medinaCHF/app/welcome/page.tsx, components/GettingStartedCard.tsx — deleted entirely
products/medinaCHF/app/member/help/page.tsx — relocated AddToPhoneButton here as an optional resource
products/medinaCHF/lib/emails/member-account-ready.ts — new self-hosted HTML/text invitation email matching Courtney's copy
products/medinaCHF/lib/email.ts — added sendHtmlEmail
products/medinaCHF/lib/actions/member-management.ts — createMemberAccountDirect, createClerkAccountForAdult, resolveClerkAccountForEmail, updateMemberOnboardingStatus; createMemberManually now always creates the Clerk account inline with an optional sendAccountEmail flag
products/medinaCHF/components/coordinator/AddMemberButton.tsx — 'Send account email now' checkbox, wider panel, visible required-field markers
products/medinaCHF/components/coordinator/MemberDetailPanel.tsx — 'Send Account Email (ForgeKit)' button, manual onboarding-status override control
products/medinaCHF/tests/e2e/armory/coordinator-member-management.spec.ts — updated for the new Add Member button label/checkbox, added a held-back-email regression test
products/medinaCHF/lib/db/schema.ts — admin_intents table pushed to production (fix for a live outage; schema itself predates this session)
products/medinaCHF/lib/actions/rsvp.ts — recordRsvpForFamily, removeRsvpRecord
products/medinaCHF/components/coordinator/RsvpEditor.tsx — new coordinator RSVP add/remove UI
products/medinaCHF/app/coordinator/events/[id]/page.tsx — wired in RSVP add/remove, removed dead RSVP_LABEL constant
products/medinaCHF/lib/queries/attendance.ts — listCountedAttendanceEventsForFamily
products/medinaCHF/components/CountedEventsSection.tsx — 'Events That Counted This Year' on Plan Something
products/medinaCHF/app/member/planning-board/page.tsx, app/member/page.tsx — wired in the counted-events list and its Home deep-link; fixed 'View My Membership' button label to 'View My Profile'
“what the fuck. just delete it already. you have my permission.”