"use client"; import { useState, useEffect } from "react"; import Link from "next/link"; import { Cancel01Icon } from "@hugeicons/core-free-icons"; import { HugeiconsIcon } from "@hugeicons/react"; import { Button } from "@/components/ui/button"; import { getSortedReleases } from "../utils"; import type { Release } from "../utils"; const STORAGE_KEY = "last-seen-version"; export function ChangelogNotification() { const [release, setRelease] = useState(null); useEffect(() => { const releases = getSortedReleases(); const latest = releases[0]; if (!latest) return; let storedVersion: string | null = null; try { storedVersion = localStorage.getItem(STORAGE_KEY); } catch { // localStorage unavailable } // First-time visitor: record the version silently, nothing to announce. if (storedVersion === null) { try { localStorage.setItem(STORAGE_KEY, latest.version); } catch { // ignore } return; } // Already seen this version. if (storedVersion === latest.version) return; // New version since last visit: record it and show the notification. try { localStorage.setItem(STORAGE_KEY, latest.version); } catch { // ignore } setRelease(latest); }, []); if (!release) return null; return (
{release.title} v{release.version}
{release.summary && (

{release.summary}

)}
); }