import Link from "next/link"; import type { Metadata } from "next"; import { Header, Footer } from "@/components/Shell"; import { ReleaseNotes } from "@/components/ReleaseNotes"; import { ChangelogRefresh } from "@/components/ChangelogRefresh"; import { getChangelog } from "@/lib/changelog"; import { getI18n } from "@/lib/i18n"; export const metadata: Metadata = { title: "Changelogs", description: "The latest MineGeo releases, improvements, and bug fixes.", }; export default async function ChangelogsPage({ searchParams, }: { searchParams: Promise<{ before?: string }>; }) { const params = await searchParams; const before = typeof params.before === "string" && /^\d{17,20}$/.test(params.before) ? params.before : undefined; const [{ t, formatDate }, feed] = await Promise.all([ getI18n(), getChangelog(before), ]); return ( <>
{!before && } {t("WHAT'S NEW")}

{t("Changelogs")}

{t("New releases, improvements, and fixes from MineGeo.")}

{before && {t("Latest releases")}} {feed.unavailable ? (

{t("Release notes are temporarily unavailable")}

{t("Please check back soon.")}

) : feed.entries.length === 0 ? (

{t("No releases on this page yet.")}

) : (
{feed.entries.map((entry) => (
{t(entry.kind)}

{entry.title}

))}
)} {!feed.unavailable && "before" in feed && feed.before && ( {t("Older posts")} )}