--- /** * `/changelog`: every topic and review release on one page, newest first — a * vertical timeline, the date on the left and one card per release on the * right, with no per-release subpages. Replaces Blume's generated changelog * (a custom page wins its route); the header links here from * `navigation.actions` in blume.config.ts. Data: lib/releases.ts. */ import PageLayout from "blume/components/layout/PageLayout.astro"; import data from "blume:data"; import { readReleases } from "../lib/releases.ts"; const { config } = data; const releases = await readReleases(); const DATE = new Intl.DateTimeFormat("en-US", { timeZone: "America/New_York", month: "short", day: "numeric", year: "numeric", }); const issueUrl = (n: number) => `https://github.com/prdlk/leetcode/issues/${n}`; // The /progress cards' difficulty palette (--chart-1..3 in theme.css), so a // Hard reads the same colour here as in the SolvedRing gauge. const DIFFICULTY: Record = { easy: { label: "Easy", class: "border-chart-1/40 bg-chart-1/10 text-chart-1" }, medium: { label: "Med.", class: "border-chart-2/40 bg-chart-2/10 text-chart-2" }, hard: { label: "Hard", class: "border-chart-3/40 bg-chart-3/10 text-chart-3" }, }; const description = "Every topic and review the campaign finished, newest first."; ---

Changelog

{description}

    { releases.map((r, i) => (
  1. {/* The rail: a line down the left edge, a ring at each release. */} {i < releases.length - 1 && (
  2. )) }