You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(events): store venue placeId + adopt the Shamwari icon (#121)
* fix(events): store the resolved venue placeId, report catalogue misses to fundi-ingestion
createEventForPerson/updateEventForPerson hardcoded placeId: null on every
event, so the built EventVenueCard/VenueVerifyCta (Kweli) surfaces had
nothing to ever resolve. Thread the placeId a DB hit or a promoted OSM
suggestion already carries from location-modal.tsx through the create/edit
forms into the event doc, clearing it if the venue is hand-edited afterward.
Additively, when geocodeAddress() falls through to Nominatim, fire a
best-effort search_miss task at the fundi-ingestion worker so it bulk-seeds
the surrounding area (fuller Overpass/enrichment pass than nhimbe's own
single-pick promotion) for future searches, without blocking this request.
* feat(ui): adopt the hex-cluster mark as the Shamwari/AI icon
New ShamwariIcon (src/components/ui/shamwari-icon.tsx) replaces the generic
lucide Bot glyph everywhere it stood in for the Shamwari assistant: the
description wizard, the "Ask Shamwari" trigger, the search pill, and the
Shamwari answer block in NyuchiSearchView. Left the Sparkles icons on
upgrade-to-pro-alert and the avatar picker's Gravatar button alone — neither
is actually AI-branded.
Idle pulse animation via the harness's motion config (skipped under
prefers-reduced-motion), wrapped in SectionErrorBoundary so a render failure
in the icon can't take an AI-adjacent surface down with it, and defaults to
role="img" + aria-label="Shamwari AI" unless the caller marks it decorative
with aria-hidden (the common case, next to visible "Shamwari" text).
---------
Co-authored-by: Bryan Fawcett <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CLAUDE.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -337,6 +337,7 @@ Set in Vercel (prod + preview) and locally in `.env.local`:
337
337
-`SHAMWARI_AI_GATEWAY_URL`, `SHAMWARI_AI_GATEWAY_TOKEN` — Cloudflare AI Gateway base + provider bearer; optional `SHAMWARI_AI_GATEWAY_AUTH_TOKEN` for the authenticated gateway.
338
338
-`RESEND_API_KEY` — server-only; used for transactional email via Resend (`src/lib/email/`). Sends from the verified `notify.mukoko.com` domain (`events@notify.mukoko.com`). When unset, email sends are skipped (never throw).
339
339
-`R2_ACCOUNT_ID`, `R2_ACCESS_KEY_ID`, `R2_SECRET_ACCESS_KEY` — server-only R2 S3 API credentials for cover-image uploads (`src/lib/r2.ts`). `R2_BUCKET`*(optional)* defaults to `mukoko-storage`. When unset, `/api/media/upload` returns 503 and uploads fall back to a gradient cover.
340
+
-`FUNDI_API_TOKEN` — server-only bearer token for the `fundi-ingestion` Cloudflare Worker's `POST /tasks` endpoint. `src/app/actions/geocode.ts` fires a best-effort `search_miss` task whenever a places-catalogue search falls through to OSM Nominatim, so fundi-ingestion bulk-seeds the surrounding area (Overpass + Plus Codes/what3words/Wikidata/AI-description enrichment) into the shared `places.places`/`entity.entities` collections for next time. When unset, reporting is skipped silently — nhimbe's own address search is unaffected either way. `FUNDI_INGESTION_URL`*(optional)* defaults to `https://fundi-ingestion.nyuchi.dev`.
340
341
-`NEXT_PUBLIC_SITE_URL` — the **primary/canonical** public origin (default `https://events.mukoko.com`). See "Dual-domain" below — this is the single origin all self-referential URLs (canonical tags, OG images, sitemap, robots, JSON-LD, `.well-known` resource) point at, resolved once in `src/lib/site-url.ts` (`SITE_URL`).
341
342
-`NEXT_PUBLIC_ASSETS_URL`*(optional)* — override the R2 assets host (defaults to `https://assets-s001.mukoko.com`).
342
343
-`ADMIN_URL`*(optional)* — where `/admin*` redirects (defaults to `https://admin.events.mukoko.com`). The admin app itself is a separate repo (`nyuchi/mukoko-events-admin`) and Vercel project with its own env.
0 commit comments