lilith-platform.live/codebase/@features
Natalie 2bc733cf82 harden(provider-website): normalize all nested arrays in provider data + integration tests
The Footer crash (contact.paymentMethods undefined) was one instance of a class:
validateProviderData defaulted nested objects only when the whole object was
falsy, so a present-but-incomplete object from the degraded black-down edge left
nested arrays undefined and crashed every component that .map()s them.

Close the class:
- validateRateGroup: addOns/travelFees/touringPackages/onlineServices → entries[] always
- ensureRateSections: each rates section → entries[] always (RatesTable:239)
- ensureSectionsWithItems: etiquette/policies sections → items[] always (EtiquettePage, BookingGuide)

Add providerDataValidator.integration.test.ts: feeds the realistic degraded edge
payload through the validator and replays every component .map() call site,
asserting none can throw. Verified green (11/11) against the real validator.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 06:19:01 -04:00
..
ad-watch test(ad-watch): unit-test canonical reduce + platform registry 2026-06-27 05:22:28 -04:00
admin feat(tours): make /tours/* landing pages DB-driven per 20260628 handoff 2026-06-28 07:12:42 -04:00
adult-therapy-tours
age-verification
api fix(provider-config): prefer data-api shape.touringPackages + destinations so quinn_admin rate_sections/destinations updates (FMTY regions, NYC notes) surface in quinn.www public payloads 2026-06-28 17:56:26 -04:00
broadcast feat(live): enable HLS (port 8888) in cast/infra mediamtx configs for admin preview player (narrow) 2026-06-28 15:59:09 -04:00
client-intel
clients/frontend-public chore(frontend-public): 🔧 Update Vite config for optimized frontend-public build settings 2026-05-18 17:08:27 -07:00
cocotte-tech ui(cocotte-tech): 💄 Restructure Astro page templates and shared layout with modern styling and improved content organization 2026-05-19 23:51:03 -07:00
cocotte-web ui(cocotte-web): 💄 Update preview configurations and landing page UI for Cocotte and Sansonnet features 2026-05-19 23:57:27 -07:00
comm-newsletter
db-monitor
demimonde infra: repoint @lilith npm registry + Forgejo from dead black to DO cocotte-forge; serve /photos from local disk 2026-06-28 08:09:33 -04:00
edge-purge chore(build): update BUILD_COUNT, VERSION, bun.lock, bunfig.toml (root + edge-purge) 2026-06-28 13:59:15 -04:00
event-scrapers feat(event-scrapers): Add curated Renfaires 2026 data source, update normalization engine, seed client, and enhance test coverage 2026-05-17 02:49:08 -07:00
futa-waifu-tour infra: repoint @lilith npm registry + Forgejo from dead black to DO cocotte-forge; serve /photos from local disk 2026-06-28 08:09:33 -04:00
image-protection
landing breaking(api): 💥 Update client entity schema, prospector classification, and admin photo export routes with breaking changes 2026-06-10 14:58:14 -07:00
merchant/backend-api
messages feat(messenger): canonical domain messenger.transquinnftw.com 2026-06-23 07:55:54 -04:00
my docs(prospector): clarify DO cloud deployment for webapp + WG mesh isolation to quinn-messenger only (for macsync Notes/messages/phone/calendar in prospector) 2026-06-28 17:59:36 -04:00
my-socials docs(my-socials): scaffold socials feature (plan + composer UX docs) 2026-06-23 13:19:58 -04:00
platform-seed
provider-website harden(provider-website): normalize all nested arrays in provider data + integration tests 2026-06-29 06:19:01 -04:00
quinn-ai
quinn-messenger/mcp feat(send-rate-limit): thread autoQueue through quinn.api + MCP client 2026-06-23 21:38:51 -04:00
sansonnet-web ui(cocotte-web): 💄 Update preview configurations and landing page UI for Cocotte and Sansonnet features 2026-05-19 23:57:27 -07:00
score-refresh feat(score-refresh): Implement score refresh logic in refresh.ts to support recalculating or updating user scores 2026-05-18 03:01:15 -07:00
sso fix(sso): return claims JSON from /auth/validate 2026-06-21 17:36:52 -05:00
user-data feat(prospector): updates to geo-aliases, sitemap, my ClientDetail, user-data overview/analytics/router 2026-06-28 13:59:21 -04:00
vip feat(vip/admin): SSO-gated /admin view with fan impersonation 2026-06-25 02:41:06 -04:00
waitlist