2025-02-13 23:04:40 +01:00
|
|
|
import fs from "fs"
|
|
|
|
import path from "path"
|
2025-02-14 18:11:45 +01:00
|
|
|
|
2025-02-13 23:04:40 +01:00
|
|
|
async function getChangelog() {
|
2025-02-14 17:31:44 +01:00
|
|
|
const changelogPath = path.join(process.cwd(), "..", "CHANGELOG.md")
|
2025-02-14 17:54:52 +01:00
|
|
|
try {
|
2025-02-14 19:37:46 +01:00
|
|
|
return fs.readFileSync(changelogPath, "utf8")
|
2025-02-14 17:54:52 +01:00
|
|
|
} catch (error) {
|
|
|
|
console.error("Error reading changelog file:", error)
|
2025-02-14 19:09:50 +01:00
|
|
|
return "<p>Changelog content not found.</p>"
|
2025-02-14 17:54:52 +01:00
|
|
|
}
|
2025-02-13 23:04:40 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
export default async function ChangelogPage() {
|
|
|
|
const changelogContent = await getChangelog()
|
|
|
|
|
2025-02-14 12:24:18 +01:00
|
|
|
return (
|
2025-02-14 19:53:59 +01:00
|
|
|
<div className="min-h-screen bg-white">
|
2025-02-14 17:54:52 +01:00
|
|
|
<div className="container mx-auto px-4 py-16 max-w-4xl">
|
2025-02-14 19:53:59 +01:00
|
|
|
<h1 className="text-4xl font-bold mb-8 text-gray-900">Changelog</h1>
|
|
|
|
<div
|
2025-02-14 20:06:08 +01:00
|
|
|
className="prose prose-gray max-w-none [&>h2]:text-2xl [&>h2]:font-bold [&>h2]:mt-8 [&>h2]:mb-4 [&>h3]:text-xl [&>h3]:font-semibold [&>h3]:mt-6 [&>h3]:mb-3 [&>p]:text-gray-700 [&>ul]:list-disc [&>ul]:pl-5 [&>ul]:text-gray-700 [&>a]:text-blue-600 [&>a:hover]:text-blue-800"
|
2025-02-14 19:53:59 +01:00
|
|
|
dangerouslySetInnerHTML={{ __html: changelogContent }}
|
|
|
|
/>
|
2025-02-14 17:54:52 +01:00
|
|
|
</div>
|
2025-02-13 23:04:40 +01:00
|
|
|
</div>
|
|
|
|
)
|
2025-02-14 17:09:21 +01:00
|
|
|
}
|
2025-02-14 20:06:08 +01:00
|
|
|
|