Conormis status

The manual

2 — The public page

What JavaScript may and may not do

The public page is the complete truth with JavaScript OFF — server- rendered SVG and tables, native hover titles on the bars and the sparklines. /charts.js (zero dependencies) only ever toggles what the server already rendered: the latency drill-down's window groups (24h by default; the configured windows' daily-p95 lines ride hidden) and the vantage show/hide chips. It reads only what the DOM carries and never computes or invents a number — a view is not a measurement.

The board (/)

Incidents and their update trail

Incidents carry a timestamped trail (investigating → identified → monitoring → resolved); the card's live phase is the last update's status. A live incident may publish its trail before the full write-up lands. The timeline is grouped by month; the Statuspage-era /history URL serves it too.

Scheduled maintenance

kind: maintenance rows render in their own section while upcoming or in flight, then fold into the history. They are declared windows, never observed downtime, and never feed the uptime numbers — the page says so.

The feeds

/feed.xml (RSS 2.0) and /feed.atom (Atom 1.0); the Statuspage-era /history.rss and /history.atom serve the same content. Every feed path takes ?service=<id> for a per-service feed (an unknown id answers 404). Maintenance items carry the Maintenance: title prefix.

Email subscriptions

The form on the page: an address, and optionally the services you care about (leave all unchecked for every service). A confirmation mail lands first (the surface honestly answers 503 when no mail provider is configured); every published incident that touches your selection mails you once, and every mail carries its own unsubscribe link — which DELETES the subscription entirely.

The embeddable badge

/badge.svg is the one-glance answer for any other site: the worst-of verdict (overall, or ?service=<id> for one service), honest to the pixel — no data renders gray, never green. Embed it like any image:

<img src="https://status.example.com/badge.svg" alt="Service status" />

The page's one word

The banner, the badge, and status.indicator in /api/summary.json all carry the page's state: all systems operational / degraded performance / partial outage (some services down) / major outage (the majority down) / maintenance (a declared window running). The words are the strings contract's page.* keys — renamable in config like every chrome word. A declared maintenance window is named as such while it runs; the cards beneath still tell the per-service truth, and a majority-down outage outranks the declaration. Groups carry their own worst-of in each section header, and services an operator marked only_show_if_degraded fold into a count while healthy — never while failing.