diff --git a/packages/astro-utils/src/sidebar/index.ts b/packages/astro-utils/src/sidebar/index.ts index 904f76f70ab..4569954ccf3 100644 --- a/packages/astro-utils/src/sidebar/index.ts +++ b/packages/astro-utils/src/sidebar/index.ts @@ -53,7 +53,8 @@ export async function processSidebar( function getSlugFromPath(directory: string, path: string) { const name = parse(path).name.toLocaleLowerCase(); const normalizedName = name === "index" ? "" : name; - return prefix(join(directory, normalizedName)) + const joined = join(directory, normalizedName); + return prefix(joined === "." ? "" : joined) .replaceAll("$", "") .replaceAll(" ", "-") .toLowerCase(); diff --git a/website/astro.config.mjs b/website/astro.config.mjs index ea4a1ad8e76..499511cff9a 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -22,16 +22,27 @@ export default defineConfig({ astroExpressiveCode(), starlight({ title: "TypeSpec", - sidebar: await processSidebar( - resolve(import.meta.dirname, "src/content/docs"), - "docs", - current, - ), + sidebar: [ + ...(await processSidebar( + resolve(import.meta.dirname, "src/content/docs"), + "docs", + current, + )), + { + label: "🚀 Release Notes", + link: "/release-notes/", + }, + { + label: "🚀 Release Notes", + autogenerate: { directory: "release-notes" }, + }, + ], favicon: "/img/favicon.svg", customCss: ["./src/css/custom.css"], components: { Header: "./src/components/header/header.astro", PageFrame: "./src/components/starlight-overrides/PageFrame.astro", + Sidebar: "./src/components/starlight-overrides/Sidebar.astro", }, expressiveCode: false, // defined directly above head: [ diff --git a/website/src/components/release-notes-list.astro b/website/src/components/release-notes-list.astro new file mode 100644 index 00000000000..929c5214523 --- /dev/null +++ b/website/src/components/release-notes-list.astro @@ -0,0 +1,62 @@ +--- +import { getCollection } from "astro:content"; +import Link from "@typespec/astro-utils/components/link.astro"; + +const releaseNotes = await getCollection( + "docs", + (x) => x.id.startsWith("release-notes/") && x.id !== "release-notes", +); +releaseNotes.sort((a, b) => b.id.localeCompare(a.id)); +--- + + + + diff --git a/website/src/components/release-notification.astro b/website/src/components/release-notification.astro index 54e312cd976..26858181756 100644 --- a/website/src/components/release-notification.astro +++ b/website/src/components/release-notification.astro @@ -1,6 +1,6 @@ --- import { getCollection } from "astro:content"; -const releaseNotes = await getCollection("docs", (x) => x.id.startsWith("docs/release-notes")); +const releaseNotes = await getCollection("docs", (x) => x.id.startsWith("release-notes/")); releaseNotes.sort((a, b) => a.id.localeCompare(b.id)); const last = releaseNotes[releaseNotes.length - 1]; const releaseDate = last.data.releaseDate; diff --git a/website/src/components/starlight-overrides/Sidebar.astro b/website/src/components/starlight-overrides/Sidebar.astro new file mode 100644 index 00000000000..b3d3ab2ab38 --- /dev/null +++ b/website/src/components/starlight-overrides/Sidebar.astro @@ -0,0 +1,37 @@ +--- +import MobileMenuFooter from "@astrojs/starlight/components/MobileMenuFooter.astro"; +import SidebarPersister from "@astrojs/starlight/components/SidebarPersister.astro"; +import SidebarSublist from "@astrojs/starlight/components/SidebarSublist.astro"; + +const { sidebar } = Astro.locals.starlightRoute; +const pathname = Astro.url.pathname; + +type SidebarEntry = (typeof sidebar)[number]; + +const isReleaseNotes = pathname.startsWith("/release-notes"); + +/** Returns true for sidebar groups that contain release notes entries. */ +function isReleaseNotesGroup(entry: SidebarEntry): boolean { + if (entry.type !== "group") return false; + return entry.entries.some((e) => e.type === "link" && e.href.startsWith("/release-notes/")); +} + +const filtered = sidebar.filter((entry) => + isReleaseNotes ? isReleaseNotesGroup(entry) : !isReleaseNotesGroup(entry), +); + +// Reverse release notes entries so newest appear first. +for (const entry of filtered) { + if (entry.type === "group" && isReleaseNotesGroup(entry)) { + entry.entries.reverse(); + } +} +--- + + + + + +
+ +
diff --git a/website/src/content/current-sidebar.ts b/website/src/content/current-sidebar.ts index 44893d8f8bc..b6e8393692f 100644 --- a/website/src/content/current-sidebar.ts +++ b/website/src/content/current-sidebar.ts @@ -249,13 +249,6 @@ const sidebar: SidebarItem[] = [ "extending-typespec/writing-scaffolding-template", ], }, - { - label: "🚀 Release Notes", - autogenerate: { - order: "desc", - directory: "release-notes", - }, - }, ]; export default sidebar; diff --git a/website/src/content/docs/docs/release-notes/cadl-typespec-migration.md b/website/src/content/docs/release-notes/cadl-typespec-migration.md similarity index 100% rename from website/src/content/docs/docs/release-notes/cadl-typespec-migration.md rename to website/src/content/docs/release-notes/cadl-typespec-migration.md diff --git a/website/src/content/docs/docs/release-notes/images/tspconfig-completion.png b/website/src/content/docs/release-notes/images/tspconfig-completion.png similarity index 100% rename from website/src/content/docs/docs/release-notes/images/tspconfig-completion.png rename to website/src/content/docs/release-notes/images/tspconfig-completion.png diff --git a/website/src/content/docs/release-notes/index.mdx b/website/src/content/docs/release-notes/index.mdx new file mode 100644 index 00000000000..52b704b1166 --- /dev/null +++ b/website/src/content/docs/release-notes/index.mdx @@ -0,0 +1,9 @@ +--- +title: Release Notes +sidebar: + hidden: true +--- + +import ReleaseNotesList from "@site/src/components/release-notes-list.astro"; + + diff --git a/website/src/content/docs/docs/release-notes/release-2022-07-08.md b/website/src/content/docs/release-notes/release-2022-07-08.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2022-07-08.md rename to website/src/content/docs/release-notes/release-2022-07-08.md diff --git a/website/src/content/docs/docs/release-notes/release-2022-08-10.md b/website/src/content/docs/release-notes/release-2022-08-10.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2022-08-10.md rename to website/src/content/docs/release-notes/release-2022-08-10.md diff --git a/website/src/content/docs/docs/release-notes/release-2022-09-07.md b/website/src/content/docs/release-notes/release-2022-09-07.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2022-09-07.md rename to website/src/content/docs/release-notes/release-2022-09-07.md diff --git a/website/src/content/docs/docs/release-notes/release-2022-10-12.md b/website/src/content/docs/release-notes/release-2022-10-12.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2022-10-12.md rename to website/src/content/docs/release-notes/release-2022-10-12.md diff --git a/website/src/content/docs/docs/release-notes/release-2022-12-07.md b/website/src/content/docs/release-notes/release-2022-12-07.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2022-12-07.md rename to website/src/content/docs/release-notes/release-2022-12-07.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-01-12.md b/website/src/content/docs/release-notes/release-2023-01-12.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-01-12.md rename to website/src/content/docs/release-notes/release-2023-01-12.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-02-07.md b/website/src/content/docs/release-notes/release-2023-02-07.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-02-07.md rename to website/src/content/docs/release-notes/release-2023-02-07.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-03-13.md b/website/src/content/docs/release-notes/release-2023-03-13.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-03-13.md rename to website/src/content/docs/release-notes/release-2023-03-13.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-04-11.md b/website/src/content/docs/release-notes/release-2023-04-11.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-04-11.md rename to website/src/content/docs/release-notes/release-2023-04-11.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-05-10.md b/website/src/content/docs/release-notes/release-2023-05-10.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-05-10.md rename to website/src/content/docs/release-notes/release-2023-05-10.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-06-06.md b/website/src/content/docs/release-notes/release-2023-06-06.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-06-06.md rename to website/src/content/docs/release-notes/release-2023-06-06.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-07-11.md b/website/src/content/docs/release-notes/release-2023-07-11.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-07-11.md rename to website/src/content/docs/release-notes/release-2023-07-11.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-08-08.md b/website/src/content/docs/release-notes/release-2023-08-08.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-08-08.md rename to website/src/content/docs/release-notes/release-2023-08-08.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-09-12.md b/website/src/content/docs/release-notes/release-2023-09-12.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-09-12.md rename to website/src/content/docs/release-notes/release-2023-09-12.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-10-11.md b/website/src/content/docs/release-notes/release-2023-10-11.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-10-11.md rename to website/src/content/docs/release-notes/release-2023-10-11.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-11-07.md b/website/src/content/docs/release-notes/release-2023-11-07.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-11-07.md rename to website/src/content/docs/release-notes/release-2023-11-07.md diff --git a/website/src/content/docs/docs/release-notes/release-2023-12-06.md b/website/src/content/docs/release-notes/release-2023-12-06.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2023-12-06.md rename to website/src/content/docs/release-notes/release-2023-12-06.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-01-23.md b/website/src/content/docs/release-notes/release-2024-01-23.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-01-23.md rename to website/src/content/docs/release-notes/release-2024-01-23.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-02-06.md b/website/src/content/docs/release-notes/release-2024-02-06.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-02-06.md rename to website/src/content/docs/release-notes/release-2024-02-06.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-03-05.md b/website/src/content/docs/release-notes/release-2024-03-05.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-03-05.md rename to website/src/content/docs/release-notes/release-2024-03-05.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-04-02.md b/website/src/content/docs/release-notes/release-2024-04-02.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-04-02.md rename to website/src/content/docs/release-notes/release-2024-04-02.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-05-07.md b/website/src/content/docs/release-notes/release-2024-05-07.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-05-07.md rename to website/src/content/docs/release-notes/release-2024-05-07.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-06-10.md b/website/src/content/docs/release-notes/release-2024-06-10.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-06-10.md rename to website/src/content/docs/release-notes/release-2024-06-10.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-07-16.md b/website/src/content/docs/release-notes/release-2024-07-16.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-07-16.md rename to website/src/content/docs/release-notes/release-2024-07-16.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-08-06.md b/website/src/content/docs/release-notes/release-2024-08-06.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-08-06.md rename to website/src/content/docs/release-notes/release-2024-08-06.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-09-10.md b/website/src/content/docs/release-notes/release-2024-09-10.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-09-10.md rename to website/src/content/docs/release-notes/release-2024-09-10.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-10-09.md b/website/src/content/docs/release-notes/release-2024-10-09.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-10-09.md rename to website/src/content/docs/release-notes/release-2024-10-09.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-11-05.md b/website/src/content/docs/release-notes/release-2024-11-05.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-11-05.md rename to website/src/content/docs/release-notes/release-2024-11-05.md diff --git a/website/src/content/docs/docs/release-notes/release-2024-12-10.md b/website/src/content/docs/release-notes/release-2024-12-10.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2024-12-10.md rename to website/src/content/docs/release-notes/release-2024-12-10.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-01-15.md b/website/src/content/docs/release-notes/release-2025-01-15.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-01-15.md rename to website/src/content/docs/release-notes/release-2025-01-15.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-02-11.md b/website/src/content/docs/release-notes/release-2025-02-11.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-02-11.md rename to website/src/content/docs/release-notes/release-2025-02-11.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-03-04.md b/website/src/content/docs/release-notes/release-2025-03-04.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-03-04.md rename to website/src/content/docs/release-notes/release-2025-03-04.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-03-18.md b/website/src/content/docs/release-notes/release-2025-03-18.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-03-18.md rename to website/src/content/docs/release-notes/release-2025-03-18.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-04-02.md b/website/src/content/docs/release-notes/release-2025-04-02.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-04-02.md rename to website/src/content/docs/release-notes/release-2025-04-02.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-04-22.md b/website/src/content/docs/release-notes/release-2025-04-22.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-04-22.md rename to website/src/content/docs/release-notes/release-2025-04-22.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-05-06.md b/website/src/content/docs/release-notes/release-2025-05-06.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-05-06.md rename to website/src/content/docs/release-notes/release-2025-05-06.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-06-10.md b/website/src/content/docs/release-notes/release-2025-06-10.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-06-10.md rename to website/src/content/docs/release-notes/release-2025-06-10.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-07-15.md b/website/src/content/docs/release-notes/release-2025-07-15.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-07-15.md rename to website/src/content/docs/release-notes/release-2025-07-15.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-08-06.md b/website/src/content/docs/release-notes/release-2025-08-06.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-08-06.md rename to website/src/content/docs/release-notes/release-2025-08-06.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-09-09.md b/website/src/content/docs/release-notes/release-2025-09-09.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-09-09.md rename to website/src/content/docs/release-notes/release-2025-09-09.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-10-08.md b/website/src/content/docs/release-notes/release-2025-10-08.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-10-08.md rename to website/src/content/docs/release-notes/release-2025-10-08.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-11-11.md b/website/src/content/docs/release-notes/release-2025-11-11.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-11-11.md rename to website/src/content/docs/release-notes/release-2025-11-11.md diff --git a/website/src/content/docs/docs/release-notes/release-2025-12-09.md b/website/src/content/docs/release-notes/release-2025-12-09.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2025-12-09.md rename to website/src/content/docs/release-notes/release-2025-12-09.md diff --git a/website/src/content/docs/docs/release-notes/release-2026-01-13.md b/website/src/content/docs/release-notes/release-2026-01-13.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2026-01-13.md rename to website/src/content/docs/release-notes/release-2026-01-13.md diff --git a/website/src/content/docs/docs/release-notes/release-2026-02-10.md b/website/src/content/docs/release-notes/release-2026-02-10.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2026-02-10.md rename to website/src/content/docs/release-notes/release-2026-02-10.md diff --git a/website/src/content/docs/docs/release-notes/release-2026-03-10.md b/website/src/content/docs/release-notes/release-2026-03-10.md similarity index 100% rename from website/src/content/docs/docs/release-notes/release-2026-03-10.md rename to website/src/content/docs/release-notes/release-2026-03-10.md diff --git a/website/src/content/docs/docs/release-notes/signature-help.png b/website/src/content/docs/release-notes/signature-help.png similarity index 100% rename from website/src/content/docs/docs/release-notes/signature-help.png rename to website/src/content/docs/release-notes/signature-help.png diff --git a/website/src/pages/docs/[...slug].md.ts b/website/src/pages/docs/[...slug].md.ts index 13884a9b872..06a61b18c3b 100644 --- a/website/src/pages/docs/[...slug].md.ts +++ b/website/src/pages/docs/[...slug].md.ts @@ -8,7 +8,7 @@ export async function getStaticPaths() { return docs .filter((doc) => { // Exclude release notes - if (doc.id.includes("/release-notes/")) return false; + if (doc.id.startsWith("release-notes/")) return false; return true; }) .map((doc) => ({