import type { Metadata } from "next";
import Link from "next/link";
import { EventRow } from "@/components/event-row";
import { BreakingRail } from "@/components/rail";
import { Empty, PageHeader, Panel, Sparkline, Stat } from "@/components/ui";
import { api } from "@/lib/api";
import { fmtInt, GROUP_LABELS, relTime, CHANNELS } from "@/lib/format";
export const dynamic = "force-dynamic";
export const metadata: Metadata = { title: "Pulse", description: "What is changing on the Internet right now: global activity, breaking events, fastest-rising entities, cyber incidents, AI developments, market and government events, infrastructure incidents, silent changes." };
/** Real-time summary of the Internet (spec §39). */
export default async function PulsePage() {
const p = await api.pulse();
if (!p) return
The gap between raw changes and events is the noise WebSensor filtered out: timestamps, navigation churn, cookie banners, advertising, cosmetic edits.