From 3603e06bb0122b346d4c339904e3df79f9f6d5f8 Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 7 May 2026 13:50:00 +0000 Subject: [PATCH 1/2] fix: restore greeting variable in ops dashboard Adds back the time-of-day greeting (morning/afternoon/evening) plus the user's first name so PageHeader's title prop has a defined value again. https://claude.ai/code/session_01RewehvZ5pbZba5r6YcHmqk --- app/indaba/(ops)/dashboard/page.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/app/indaba/(ops)/dashboard/page.tsx b/app/indaba/(ops)/dashboard/page.tsx index f475362..6697acf 100644 --- a/app/indaba/(ops)/dashboard/page.tsx +++ b/app/indaba/(ops)/dashboard/page.tsx @@ -131,6 +131,12 @@ export default async function DashboardPage({ const isBd = user.role === "bd"; const isCompliance = user.role === "compliance"; + const hour = new Date().getHours(); + const timeOfDay = + hour < 12 ? "Good morning" : hour < 18 ? "Good afternoon" : "Good evening"; + const firstName = user.name.split(" ")[0] ?? user.name; + const greeting = `${timeOfDay}, ${firstName}`; + return (
{flash ? ( From dc8d5e1b17ecb49cdc238106bb3cc08e46d8fd8d Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 7 May 2026 13:53:36 +0000 Subject: [PATCH 2/2] fix: restore dashboard data unwrap block dropped in Launch 6 cleanup Commit 5135269 ("strip Launch 6") removed the entire block of variable declarations between total and today, but only one of them (launch6Done) was Launch-6-specific. Restores linkCount, eventsUpcoming, intros, introsPending, runs, brief, flags, and regSignals so the dashboard JSX that consumes them compiles again. https://claude.ai/code/session_01RewehvZ5pbZba5r6YcHmqk --- app/indaba/(ops)/dashboard/page.tsx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/indaba/(ops)/dashboard/page.tsx b/app/indaba/(ops)/dashboard/page.tsx index 6697acf..6faed9d 100644 --- a/app/indaba/(ops)/dashboard/page.tsx +++ b/app/indaba/(ops)/dashboard/page.tsx @@ -119,6 +119,15 @@ export default async function DashboardPage({ stageCounts[b.onboarding_stage] = (stageCounts[b.onboarding_stage] ?? 0) + 1; } const total = businesses.length; + const linkCount = linksRes.count ?? 0; + const eventsUpcoming = eventsUpcomingRes.count ?? 0; + const intros = + "data" in introsRes && Array.isArray(introsRes.data) ? introsRes.data : []; + const introsPending = intros.filter((i) => !i.roy_approved).length; + const runs = (agentRunsRes.data ?? []) as AgentRun[]; + const brief = briefRes.data as Pick | null; + const flags = (flagsRes.data ?? []) as ComplianceFlag[]; + const regSignals = (regSignalsRes.data ?? []) as RegulatorySignal[]; const today = new Intl.DateTimeFormat("en-GB", { weekday: "long", day: "2-digit",