[READ-ONLY] Mirror of https://github.com/openstatusHQ/openstatus. 馃珫 Status page with uptime monitoring & API monitoring as code 馃珫 openstatus.dev
bun drizzle-orm monitoring monitoring-as-code nextjs observability on-call open-source shadcn-ui status-page statuspage synthetic-monitoring tinybird turso uptime uptime-checker uptime-monitor

feat(web): markdown frontmatter, shared listing metadata, mono prose typography (#2971) master

* feat(web): markdown frontmatter with url, shared listing metadata The home page answered a markdown request with HTML because the Accept rewrite needed at least one path character, so "copy markdown" pasted the page source. The root gets its own rewrite and the button refuses non-markdown bodies. Every markdown response now opens with the same frontmatter: title, absolute url, ISO date/updated, description. Listings, docs sections, the playground and external status pages carry it too, and the HTML head advertises the .md twin via rel="alternate". Listing titles, descriptions and breadcrumbs move into one content/sections.ts record read by both the HTML pages and the markdown generator, replacing the per-page TITLE/DESCRIPTION boilerplate. * style(web): tighten prose typography in the mono content layout Mono type gets clumsy past ~20px, so inside the content layout headings stay near body size, line height tightens and text runs at full contrast. Hierarchy comes from weight rather than size. The home page lede drops its text-lg to follow the same rule. * fix(web): markdown alternates that 404 and review follow-ups - resolve /index.md to the home page - serve /oss-friends.md from a shared fetch helper - percent-encode category segments in markdown links and canonical urls - keep .not-prose out of the mono first-paragraph rule - track content copies server-side via track.contentCopied, after success * fix(web): harden the oss-friends markdown twin - fail on non-2xx Formbricks responses instead of parsing the error body - validate hrefs and escape remote names/descriptions before rendering the list * fix(web): align markdown twins with their HTML pages and harden review follow-ups - listing and category H1s render the shared section label - docs hubs share title and first-leaf description across HTML and markdown - frontmatter honours seo.title / seo.description - Accept: text/markdown;q=0 no longer rewrites to markdown - per-IP rate limit on the anonymous contentCopied mutation - escape backslashes in oss-friends markdown (CodeQL) - status detail pages advertise their .md twin * fix(api,web): fail open on redis errors in contentCopied and pin docs hub descriptions in tests * style(web): tighten chrome to a 12px padding scale and move docs into the header Controls and cells go to px-3 py-2 at text-base, containers to p-3, and page gutters to px-3 so text edges line up with the header tiles. Prose headings sit near body size in both the mono and sans layouts, dropping the mono-only overrides. Tile grids add bg-clip-padding so the outer border does not stack on translucent dark-mode dividers. Docs becomes a top-level header link and leaves the Resources menu; the command palette trigger hides below lg. AGENTS.md documents the spacing and type rules.


+1171 -948
89 changed files