add changelog page

This commit is contained in:
outfoxxed 2025-07-26 21:05:24 -07:00
parent e7c807ac85
commit 0209f2ace7
Signed by: outfoxxed
GPG key ID: 4C88A185FB89301E
5 changed files with 36 additions and 9 deletions

View file

@ -90,6 +90,11 @@ if (versionName) {
link="/about" link="/about"
current={currentPath.length === 1 && currentPath[0] === "about"} current={currentPath.length === 1 && currentPath[0] === "about"}
/> />
<Link
title="Changelog"
link="/changelog"
current={currentPath.length === 1 && currentPath[0] === "changelog"}
/>
{ versionedEntries && <Tree {...versionsTree as TreeEntry}/>} { versionedEntries && <Tree {...versionsTree as TreeEntry}/>}
<hr/> <hr/>
{ versionedEntries && ( { versionedEntries && (

View file

@ -47,8 +47,9 @@ async function readVersionsData(): Promise<VersionsData> {
const content = await fs.readFile(versionsPath, "utf8"); const content = await fs.readFile(versionsPath, "utf8");
const data = JSON.parse(content); const data = JSON.parse(content);
const versions = await Promise.all(data.versions.map(async (d: { name: string, types: any }) => ({ const versions = await Promise.all(data.versions.map(async (d: { name: string, changelog?: string, types: any }) => ({
name: d.name, name: d.name,
changelog: d.changelog ? await fs.readFile(d.changelog, "utf8") : undefined,
modules: await readModulesData(d.types), modules: await readModulesData(d.types),
}))); })));

View file

@ -84,6 +84,7 @@ export interface ModuleData {
export interface VersionData { export interface VersionData {
name: string; name: string;
changelog?: string;
modules: ModuleData[]; modules: ModuleData[];
} }

28
src/pages/changelog.astro Normal file
View file

@ -0,0 +1,28 @@
---
import GuideLayout from "@layouts/GuideLayout.astro";
import { getVersionsData } from "@config/io/generateTypeData";
import { processMarkdown } from "@config/io/markdown";
const { versions } = await getVersionsData();
const versionsMd = await Promise.all(versions.filter(version => version.changelog).map(async version => ({
version,
changelog: await processMarkdown(version.name, version.changelog!)
})));
const headings = versionsMd.map(({ version }) => ({
text: version.name,
slug: version.name,
depth: 1,
}));
---
<GuideLayout title="Changelog" description="" headings={headings}>
{versionsMd.map(({ version, changelog }) => (
<div style="display: flex; justify-content: space-between">
<h2>{version.name}</h2>
<h2><a href={`/docs/${version.name}/guide`}>Documentation</a></h2>
</div>
<hr/>
<Fragment set:html={changelog}/>
))}
</GuideLayout>

View file

@ -1,8 +0,0 @@
---
layout: "@layouts/GuideMdLayout.astro"
title: Changelog
---
## v0.2.0
## v0.1.0