4
Plans
4
Executed ✅
14
Commits
0
Open questions
📋 Kickoff prompt for next session
Review Phase 37 (Demo Path Foundation) shipped overnight + Phase 38 (Professional Workflows Deep) shipped overnight. Verify cross-link patches on iPad: tap a venue name on a CheckIn/QuickRec post → opens business drawer; tap an author name on a PhotoFirstCard → opens user profile; tap a building/venue in EventDetail → opens entity. Spot-check empty states: open NotificationDrawer when empty, open a building review section with no reviews, open ConversationThread with no messages. Then run the 4 archetype workflows from ServiceProviderDetail (a handyman = quote, a babysitter = booking, an interior designer = discovery, a yoga instructor = class). Approve or redesign as needed. Then move to Phase 39 (Singles + Vault) discuss-phase.
🔗 Quick links
Live app + capture boards
- • Dev server (vite, on local network)
- • All capture boards index
- • Phase 36 capture board
- • Phase 38 capture board →
Planning
- •
.planning/ROADMAP.md— Phase 37/38/39/40 rewritten 2026-05-26 - •
.planning/HANDOFF.md— overnight session summary - •
.planning/SESSION_LOG.md— chronological journal - •
.planning/TODOS.md— what's still open
📦 Phase scope (all shipped)
| Plan | What | Files | Status |
|---|---|---|---|
| 37-01 | Cross-linking audit + patch — every venue/author/business name in feed cards taps to its entity |
src/contexts/EntityNavigationContext.tsx (new)src/components/feed/post-variants/PhotoFirstCard.tsxQuickRecCard.tsx, CheckInCard.tsxEventDetail.tsx, MorningBriefingDrawer.tsxmockBusinesses.ts (findBusinessByName helper)
|
Implemented · needs iPad verify |
| 37-02 | Empty states — 9 demo-path screens get graceful zero-content rendering with warm copy + lucide icons | NotificationDrawer, ConversationThread, BuildingReviews, QuestionDetail, TonightHeroCard, WorkDoneHere, ListingManagement, BadgesGrid, ExploreContainer comparison | Implemented · needs iPad verify |
| 37-03 | Link previews + iOS home-screen icon — shared URLs render OG card; Add-to-Home-Screen produces real icon |
public/manifest.jsonpublic/icon-{192,512,maskable-512}.pngpublic/apple-touch-icon.pngpublic/icon-app.svgindex.html — OG, manifest link, apple-touch-icon, theme-color, viewport-fit
|
Done |
| 37-04 | This capture board + ROADMAP rewrite + handoff/log/todos |
mockups/phase-37-capture-board.html.planning/ROADMAP.md.planning/HANDOFF.md + SESSION_LOG.md + TODOS.md
|
Done |
✅ Decisions locked
- D-01 — Demo path foundation FIRST. Cross-linking + empty states + link previews ship before Phase 38 adds new entities (singles profiles, archetype workflows). Reasoning: every later phase adds entities that need cross-linking + empty states. Doing audits first means new work slots into an already-clean system instead of being audited twice.
- D-02 — New EntityNavigationContext over prop drilling. Parallel to existing AuthorNavigationContext. Provides
useEntityNav()so deep components (post variant cards, briefing rows) can dispatchopenBusiness(id)/openProperty(id)/ etc. without parent containers passing handlers through 4+ levels. - D-03 — Name-string → business-ID resolution via helper, not schema change.
findBusinessByName()inmockBusinesses.tshandles case-insensitive + apostrophe-stripped matching. Existing mock data ("Paulie Gee's", "Devocion") resolves automatically. No mock-data rewrite needed. - D-04 — Static text fallback when no business match. If
findBusinessByName()returns undefined, the venue name renders as static text (no dangling button → ghost tap). Pattern:venueBiz ? <button> : <span>. - D-05 — Empty states use warm Brooklyn-neighborly copy. "Be the first to share what living here is actually like" (BuildingReviews) > "No reviews available". "Quiet night ahead — perfect for catching up on saved posts" (TonightHeroCard) > "No events". Founder voice carries through to dead-end states.
- D-06 — Icon master is the AppShell skyline SVG. One 512-master SVG with indigo→purple→pink gradient + rounded 22% corner radius. qlmanage produces thumbnails, sips resizes to 192/512/180. No external icon-generator service needed.
- D-07 — PWA-grade meta but NO service worker. manifest.json + apple-touch-icon + theme-color + viewport-fit=cover. No installable PWA / no offline. Just the "shared link looks legit + Add-to-Home-Screen icon works" baseline.
📌 Outstanding from cross-link audit (lower priority — parked)
- ListingCard agent name not visible. Agent shown as initial-only ("M." in tiny circle). Could surface full name on card. Parked — listing detail surfaces the agent properly.
- ListingDetail Message CTA bypasses agent profile. Currently jumps straight to messaging; founder may prefer "open profile first, message from there". Debatable UX — parked for founder call.
- PropertyDetail address not tappable. Could open mini-map. Low priority — address itself is read-only context, not a primary nav surface.
- Story overlay business names (NeighborhoodStoriesRow). Business stories render name as plain text. Could be intentional (business ≠ user). Parked pending founder UX call.
- WC Hub event venue names (deep inside destination drawers). Some EventDetail mounts inside WC Hub V2 child drawers may render static venue names — same pattern as the main EventDetail fix already shipped, but inside the V2 destinations. Sweep with same pattern next session if iPad walk-through surfaces them.
- 14 of 21 audited entity-render sites were already correctly wired (PostDetail comments, LivePhotoLightbox contributor, AgentLeaderboard, Question/Answer authors, VerifiedLocalPros, GroupMemberList, SavedContent, FollowingList, AgentMatchCard). Audit credit-pile, not gaps.
📜 All commits this phase (newest at top)
feat(37) empty state for ExploreContainer comparison viewfeat(37) empty state for BadgesGridfeat(37) empty state for ListingManagementfeat(37) empty state for WorkDoneHerefeat(37) empty state for TonightHeroCardfeat(37) empty state for QuestionDetailfeat(37) empty state for BuildingReviewsfeat(37) empty state for ConversationThreadfeat(37) empty state for NotificationDrawerfeat(37) cross-linking — venue/author names tap to entity drawersfix(37) actually wire manifest + icons + meta into index.htmlfeat(37) PWA manifest + iOS home-screen icon + expanded OG tags