From e69f40fdd0087ef29cc46e623c7c8ed94c3653f0 Mon Sep 17 00:00:00 2001 From: gorkem-bwl Date: Fri, 22 May 2026 10:25:06 -0400 Subject: [PATCH] docs(api): add releases timeline page MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Changes - Add a Releases tab to the top navigation via a custom Starlight Header override (HeaderLinks.astro) - Add ReleaseCard.astro — Vercel/Linear-style entry with sticky date + version on the left, headline and feature bullets on the right - Curate 14 release entries spanning v1.0 (Sept 2024) through v3.7.1 (April 2026), each focused on the most important user-facing features rather than every commit - Newest release carries a "Latest" badge in the brand color - Mobile layout collapses the two-column timeline to a single column ## Benefits - Visitors can see at a glance what shipped recently and what Checkmate has matured into over time - The data file (src/data/releases.ts) is the only thing that needs editing when a new version ships — no template or styling churn - Built on the same Starlight site as the API docs, so look and feel stay consistent --- docs/api/astro.config.mjs | 5 + docs/api/src/components/HeaderLinks.astro | 29 ++++ docs/api/src/components/ReleaseCard.astro | 139 ++++++++++++++++++ docs/api/src/data/releases.ts | 168 ++++++++++++++++++++++ docs/api/src/pages/releases.astro | 59 ++++++++ 5 files changed, 400 insertions(+) create mode 100644 docs/api/src/components/HeaderLinks.astro create mode 100644 docs/api/src/components/ReleaseCard.astro create mode 100644 docs/api/src/data/releases.ts create mode 100644 docs/api/src/pages/releases.astro diff --git a/docs/api/astro.config.mjs b/docs/api/astro.config.mjs index 7840dea8a..322c0b84d 100644 --- a/docs/api/astro.config.mjs +++ b/docs/api/astro.config.mjs @@ -33,6 +33,11 @@ export default defineConfig({ github: "https://github.com/bluewave-labs/Checkmate", }, + // Inject a "Releases" link into the site header. + components: { + SocialIcons: "./src/components/HeaderLinks.astro", + }, + sidebar: [ { label: "Getting started", diff --git a/docs/api/src/components/HeaderLinks.astro b/docs/api/src/components/HeaderLinks.astro new file mode 100644 index 000000000..4f681b283 --- /dev/null +++ b/docs/api/src/components/HeaderLinks.astro @@ -0,0 +1,29 @@ +--- +// Renders next to the search/theme controls in Starlight's header. +// Adds a "Releases" link plus delegates to the default SocialIcons. +import Default from "@astrojs/starlight/components/SocialIcons.astro"; +--- + +Releases + + + diff --git a/docs/api/src/components/ReleaseCard.astro b/docs/api/src/components/ReleaseCard.astro new file mode 100644 index 000000000..9123e119e --- /dev/null +++ b/docs/api/src/components/ReleaseCard.astro @@ -0,0 +1,139 @@ +--- +interface Props { + version: string; + date: string; + headline: string; + highlights: string[]; + isLatest?: boolean; +} + +const { version, date, headline, highlights, isLatest = false } = Astro.props; + +const formattedDate = new Date(date).toLocaleDateString("en-US", { + month: "long", + day: "numeric", + year: "numeric", +}); +--- + +
+ +
+

{headline}

+
    + {highlights.map((item) =>
  • {item}
  • )} +
+
+
+ + diff --git a/docs/api/src/data/releases.ts b/docs/api/src/data/releases.ts new file mode 100644 index 000000000..bc3c85a50 --- /dev/null +++ b/docs/api/src/data/releases.ts @@ -0,0 +1,168 @@ +// Source of truth for the Releases timeline. Newest first. +// Each entry should focus on user-facing features — leave routine +// bumps, lint fixes, and dependency updates out. + +export interface Release { + version: string; + date: string; // ISO 8601 yyyy-mm-dd + headline: string; + highlights: string[]; +} + +export const releases: Release[] = [ + { + version: "v3.7.1", + date: "2026-04-29", + headline: "Status page themes and a polished incidents page", + highlights: [ + "Pick a theme for your public status page: Refined, Modern, Bold, or Editorial", + "Choose between light, dark, or auto theme modes", + "Polished incidents page with better filtering and grouping", + "New empty state for the infrastructure network view", + "Remove-monitors confirmation modal in settings", + ], + }, + { + version: "v3.6.1", + date: "2026-04-23", + headline: "Twilio SMS notifications and incident comments", + highlights: [ + "Send incident alerts via SMS using Twilio", + "Resolve incidents with a comment so context is preserved", + "Login page no longer shows the register tip when registration is closed", + "Removed TimescaleDB dependency for a leaner deployment", + "New monitor-lifecycle documentation", + ], + }, + { + version: "v3.5.1", + date: "2026-03-06", + headline: "Uptime over WebSockets, Globalping ping, and team member removal", + highlights: [ + "Real-time uptime updates over WebSockets — no more polling delays", + "Use Globalping as the engine for distributed ping monitors", + "Admins can remove team members from the team settings page", + "Fixed dark-mode background and several theme contrast issues", + ], + }, + { + version: "v3.5.0", + date: "2026-03-04", + headline: "SWR data layer and tightened validation", + highlights: [ + "Global SWR-based data fetching for snappier navigation and automatic revalidation", + "Stricter server-side validation across all monitor types", + "Env-var validation surfaces misconfiguration at startup, not at first failure", + "Logs page improvements for easier debugging", + ], + }, + { + version: "v3.4.0", + date: "2026-02-20", + headline: "Settings refactor and status page access fixes", + highlights: [ + "Settings UI rebuilt for clarity and consistency", + "Fixed access rules so unpublished status pages remain admin-only", + "Several caching fixes for fresher data after configuration changes", + ], + }, + { + version: "v3.3", + date: "2026-01-27", + headline: "PageSpeed v2 details and a faster uptime details page", + highlights: [ + "Rebuilt PageSpeed details view with deeper Core Web Vitals breakdown", + "v2 uptime details page with denser charts and faster loading", + "Recent-checks endpoint redesigned for lower latency", + "PageSpeed tooltips clarify what each metric means", + ], + }, + { + version: "v3.2.0", + date: "2025-09-18", + headline: "Notification bodies and uptime % charts", + highlights: [ + "Customise the body of email, Slack, Discord, and webhook notifications", + "Toggle between absolute uptime and uptime % on monitor charts", + "Sliding-window threshold evaluation for more stable status decisions", + "Skip-maintenance notifications no longer fire during maintenance windows", + ], + }, + { + version: "v3.1", + date: "2025-08-20", + headline: "N-of-M alert thresholds and PagerDuty", + highlights: [ + "Alert only after N consecutive failures out of M checks — fewer flaky alerts", + "PagerDuty notification channel", + "Streamlined maintenance window creation flow", + "Network service refactor for more reliable cross-region checks", + ], + }, + { + version: "v2.3", + date: "2025-07-08", + headline: "Resolvable incidents and a cleaner incidents UI", + highlights: [ + "Mark incidents as resolved from the UI with a single click", + "Redesigned incidents page with better grouping", + "Move the status-page delete action out of harm's way", + "Configurable behavior when no notifications are attached to a monitor", + ], + }, + { + version: "v2.2", + date: "2025-07-07", + headline: "Notification management and i18n polish", + highlights: [ + "Delete notification channels with confirmation", + "Sorted translation keys for easier maintenance", + "Many small i18n fixes across pages", + ], + }, + { + version: "v2.1", + date: "2025-05-13", + headline: "Maintenance window improvements and form fixes", + highlights: [ + "Settings update flow rebuilt", + "Fixed monitor resume / pause behavior", + "Better PageSpeed reliability", + "Infrastructure monitor filtering improvements", + "Conditional alert rendering during maintenance windows", + ], + }, + { + version: "v2.0", + date: "2024-12-04", + headline: "Major UI refresh and password security", + highlights: [ + "Major frontend redesign with a refreshed theme", + "Improved password validation and error messages", + "Many fixes to incident detail views, colors, and responsiveness", + ], + }, + { + version: "v1.1.0", + date: "2024-10-11", + headline: "Maintenance windows and JWT-expiry handling", + highlights: [ + "Schedule maintenance windows so checks don't fire false incidents", + "Auto-logout users when their JWT expires", + "Centralised backend error handling", + "Initial maintenance-page feature", + ], + }, + { + version: "v1.0", + date: "2024-09-23", + headline: "First public release", + highlights: [ + "HTTP, ping, port, and PageSpeed monitors", + "Incident detection with email and Discord notifications", + "Public status pages", + "Team management with role-based access", + "Open source under the AGPL — self-host the entire stack", + ], + }, +]; diff --git a/docs/api/src/pages/releases.astro b/docs/api/src/pages/releases.astro new file mode 100644 index 000000000..d1f0afaa4 --- /dev/null +++ b/docs/api/src/pages/releases.astro @@ -0,0 +1,59 @@ +--- +import StarlightPage from "@astrojs/starlight/components/StarlightPage.astro"; +import ReleaseCard from "../components/ReleaseCard.astro"; +import { releases } from "../data/releases"; +--- + + +
+

+ Every meaningful Checkmate release, newest first. For the + complete commit history, see the + GitHub releases page. +

+
+ +
+ {releases.map((release, index) => ( + + ))} +
+
+ +