SPB Git

web: homepage live feed renders its empty state instead of 'unavailable'; movers ranked and labelled by Activity Score

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Simon-Pierre Boucher committed (Sep 12, 2026) parent 11c4ad8 Browse files

1 changed file +4 −4

Unified Split
modified apps/web/src/app/page.tsx +4 −4
@@ -54,7 +54,7 @@ export default async function HomePage() {
54 {/* Live feed + movers */} 54 {/* Live feed + movers */}
55 <div className="grid gap-8 lg:grid-cols-12"> 55 <div className="grid gap-8 lg:grid-cols-12">
56 <Section eyebrow="Live activity feed" title="What changed in the last minutes" action={{ href: routes.live(), label: 'Full feed' }} className="lg:col-span-7" hairline={false}> 56 <Section eyebrow="Live activity feed" title="What changed in the last minutes" action={{ href: routes.live(), label: 'Full feed' }} className="lg:col-span-7" hairline={false}>
57− {initialLive.length ? ( 57+ {live || pulse ? (
58 <Suspense fallback={<EventList events={initialLive.slice(0, 18)} variant="feed" />}> 58 <Suspense fallback={<EventList events={initialLive.slice(0, 18)} variant="feed" />}>
59 <LiveFeed initial={initialLive} limit={18} compact showControls={false} /> 59 <LiveFeed initial={initialLive} limit={18} compact showControls={false} />
60 </Suspense> 60 </Suspense>
@@ -62,9 +62,9 @@ export default async function HomePage() {
62 <Unavailable what="The live feed" /> 62 <Unavailable what="The live feed" />
63 )} 63 )}
64 </Section> 64 </Section>
65− <Section eyebrow="Companies moving fastest" title="Highest Corporate Change Index" action={{ href: routes.rankings('most_active', '7d'), label: 'Rankings' }} className="lg:col-span-5" hairline={false}> 65+ <Section eyebrow="Companies moving fastest" title="Highest Activity Score (7 days)" action={{ href: routes.rankings('most_active', '7d'), label: 'Rankings' }} className="lg:col-span-5" hairline={false}>
66− {p.movers ? <CompanyMiniList items={p.movers} metric="corporate_change_index" label="CCI" sparkline /> : <Unavailable what="Movers" compact />} 66+ {p.movers ? <CompanyMiniList items={p.movers} metric="activity_score" label="Activity" sparkline /> : <Unavailable what="Movers" compact />}
67− <Note className="mt-3">CCI = 0.25 hiring + 0.20 product + 0.15 geographic + 0.15 leadership + 0.10 developer + 0.10 communication + 0.05 pricing (provisional weights, see methodology).</Note> 67+ <Note className="mt-3">Activity Score = decayed weight of meaningful changes and structured events over 30 days, normalised per active sensor (0–100, see methodology).</Note>
68 </Section> 68 </Section>
69 </div> 69 </div>
70 70
71 71
Menu

Theme