Repository navigation
feat(portal,sanity): support multiple guests per booking - #823
Merged
Merged
Conversation
…Presentation enables location navigation
…reschedule flow, and post-production rough cut + draft episode preview
…t Portable Text block, and auto-paste table conversion
…x630 cards, and Media Library prewarm script
… cards across all courses, lessons, podcasts, posts, and pages
release: send portal sign-in codes via Cloudflare Email Sending
A booking can now list every guest appearing on an episode in `guests[]`. Each guest signs in with their own email, edits only their own speaker profile, and signs their own media release; the host can view and edit any guest's profile but cannot sign on a guest's behalf. Single-guest bookings without `guests[]` behave exactly as before. - booking schema: `guests[]` with name, email, profile link, and per-guest release signature/consents - portal-guests: resolve the guest list (legacy single-guest fallback) - access list includes every guest email - sign-release / guest-profile: act on the signed-in guest's entry; the first guest is mirrored to the top-level release fields for the ops app - guest-profile: only the host may target an arbitrary guestSlug - portal page: "Guests on This Episode" roster with profile/release status - fix biome lint/format errors already on main so CI passes Co-authored-by: Cursor <cursoragent@cursor.com>
…esholds Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
⚡ Cloudflare Worker Preview Ready!
|
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.
Why
Episodes can have more than one guest (e.g. the Sanity episode with Chris LaRocque and Cody). Bookings only modeled one guest, so a second guest could only be added as a coordinator, had no speaker profile of their own, and the single media release on the booking could be signed by one person on everyone's behalf.
What
booking.guests[](name, email, guestSlug, guestDocId, per-guest signature + consents). Empty = single-guest booking, unchanged behavior./api/portal/sign-release): recorded on the signed-in guest's own entry. Non-guests (host, coordinators) get 403 on multi-guest bookings. The first guest is mirrored to the top-level release fields so the ops app keeps working./api/portal/guest-profile): a guest edits only their own profile; the host picks a guest via?guest=<key>.guestSlugoverrides in the request body are now host-only (previously any signed-in user could point the save at any guest/author slug)./guest-portal/[token]redirect also matchesguests[].og-utils.ts/topics.tsthat were already failing onmain.This branch is based on
main(dev was 12 commits behind), so it also bringsdevup to date.Verification
biome checkpasses;astro checkhas no new errors in touched files;astro buildand Sanitytscpass.private.booking-gcal-sanity-20261125toguests[]and verify both guests' portal views.Made with Cursor