Changelog
What has shipped
A running list of what we have built and released, straight from the log our engineers keep.
One line per deliverable, newest first.
- stripe Connect accounts created with explicit controller settings (course pays fees, Stripe liable for losses, full dashboard) instead of Express;
stripeDashboardLinkreplacesexpressDashboardLink - stripe Billing and card-on-file fixes: portal plan changes follow the price, Group checkout honors the free trial, pay-at-course bookings save a card when the course requires one (
startCardOnFile,confirmPayAtCourseWithCard,finalizeCardAction), and the card form matches intents that save the card - copy Marketing site describes built features as available: only the phone agent and Reserve with Google stay "rolling out"; waitlist, gift cards and passes, leagues, memberships, and POS listed on every plan in the pricing table
- signup Self-serve sign-up page (
/signup) and a one-click live demo (/demo) on a sample course (0930_demo_course.sql,demo_refresh, hourlydemo/refreshanddemo/purge-visitorsjobs, read-only throwaway visitors, demo bar in the staff app); every "Book a demo" button replaced with "Start free" and "See the live demo" - trial Free trial for platform billing: 30 days free from go-live with no card (
0015_platform_trials.sql,start_org_trial), trial-aware billing states and read-only rule, trial checkout throughcreatePlatformCheckout,trialingwebhooks, hourly reminder job withplatform.trial_endingandplatform.trial_endedemails, trial card and banners, pricing page and FAQ copy - int Test scripts
test:api,test:feeds,test:autopilot,test:integration,test:conversations,test:parity; README table of every suite;.env.examplecovers every variable read - int Seed: read-only and platform admin logins, saved test card, POS products, pass products, membership plan with member rates, funnel events;
scripts/seed-additions.sh - int Short links (
/l/<code>) with click counts for SMS campaigns, waitlist, weather recovery, no-show confirm, and review request texts - int Shared
scheduleCampaignfor the composer and autopilot approvals;failedcampaign status with a send-job failure handler and list and report UI - int
/mock-invoice/[id]test page for mock outing invoices - int Email templates
webhook.disabled,pass.pending_verification,expiry.reminder,pos.receipt, replacing borrowedcampaign.broadcastandpass.purchasedsends - int Booking engine: gift card and pass amounts in the checkout code preview, member booking window on the landing page, golfer session refresh on booking hosts, waitlist link when a time-of-day filter falls through, membership button behind its flag
- int merge_golfers moves memberships to the survivor; voided passes return the granted rate class
- int Phone agent: voice status callback on provisioned numbers, test chats excluded from the calls report, retention from course settings
- int POS: reader cancel through the provider with charged-after-cancel recovery; card details on receipts; nightly void of abandoned open sales
- int Payments provider: platform subscription quantity, cancel and invoice list; membership default card, price swap and undo cancel; wired into org billing, settings billing and memberships
- int Nightly league tee time sync after slot materialization; nightly shared-golfer relink job
- int Onboarding stepper shows real completion on every step page
- p13 Light POS: Stripe Terminal flow, products and inventory, split tender, receipts, closeout
- p14 Memberships: plans, recurring billing, member rate and booking window (also at online checkout), dunning with grace, golfer portal
- p12 Gift cards and passes: purchase, ledger, split tender, punch and season passes, admin, re-credit on expired holds
- p15 Leagues and outings: recurring blocks, rosters, grouped tee times, invoices, cart signs
- p16 Multi-course organizations: dashboard, consolidated reports, org staff, copy setup, shared golfers, group billing
- p10 Marketing autopilot: soft spots, weekly suggestions with approval links, review requests, Google post drafts, monthly report
- p7 Waitlist matcher, weather recovery, no-show scoring and confirm texts, staff waitlist page, booking site nav for flagged modules
- p6.2 Settings, Stripe Connect onboarding and webhooks, platform billing and dunning, onboarding wizard, support mode
- p4.3 Public API v1 with OpenAPI, signed webhooks, CSV exports, export everything
- p4.2 Messaging jobs, campaigns, inbox, templates editor, usage and retention
- p8 AI phone agent: voice service, internal tool API, Twilio voice webhooks, calls UI
- p3.2 Public booking engine: availability, checkout with holds and payments, confirmation, manage, pay link, account; rain check re-credit on expired holds and cancellations
- p4.1 Golfer CRM: profile, consent controls, segments builder, duplicates and merge
- p2 Tee sheet UI: quick-book, drag move, blocks, frost delay, realtime, offline queue, print
- p9 Dynamic pricing: rules engine, forecasts, suggestions UI, hourly weather pull
- p5 Importers for GolfNow, foreUP, Lightspeed, Club Prophet, and generic CSV with preview, commit, rollback
- p11 Reserve with Google feeds and booking server, marketplace framework, feeds admin
- p3.1 Rates UI, six-question wizard, tees and templates, slot materialization jobs
- p6.1 Reports, daily stats jobs, alerts and heartbeats
- p1.6 Booking service layer (
lib/bookings/service.ts), tender registry, outbox drain - p1.5 Seed: two courses, 2,500 golfers, 7,500 bookings, blocks, waitlist, campaigns, 30 days of stats
- p1.4 Availability and sheet-day queries, segment compiler, golfer facts, daily stats rollup, storage buckets
- p1.3 Booking RPCs: book, confirm, move, cancel, check in, no-show, complete, split, merge, change players, rain checks, blocks, frost delay
- p1.2 Golfers, bookings, payments, refunds, rain checks, audit log, messaging tables, payment and golfer stat triggers
- p1.1 Tee sheet tables, slot materialization and reconciliation, rates and SQL pricing engine, event outbox
- p0.6 Marketing site (54 routes), demo and contact forms, legal templates, docs skeleton, business collateral
- p0.5 Provider layer with mock mode (email, SMS, payments, AI, domains, weather, analytics) and React Email templates
- p0.4 Shared package: settings schema, timezone helpers, pricing engine, segments, messaging rules, no-show score, pricing rules, plans
- p0.3 App shell: design system, auth (magic link, Google, local password), admin layout with course switcher, onboarding step 1, staff invites, middleware host routing
- p0.2 Tenancy schema, RLS helpers and policy pattern, course creation and staff invite RPCs
- p0.1 Monorepo scaffold, local Supabase on dedicated ports, CI workflow