Native probes, scheduler split, status badges, theme toggle
A heavy day — a lot of the redesign lands back-to-back.
Native probes
We replaced the third-party probe stack with our own:
- Native HTTP uptime probe.
- Native SSL certificate probe.
- Native domain expiry probe — no more upstream rate limits.
- The old dependency is gone from the codebase entirely.
Result: simpler architecture, faster probes, every checker is greyout's own code.
Scheduler split
The scheduler now runs on a dedicated workers host, separately from the web app. They never compete for the same minute of work — alerts dispatch from exactly one place.
Workspace overview
The org-level overview page is now a linear list of projects, sorted by worst-status, scannable in one glance.
Theme toggle
Light + dark themes, with an AA-pass light palette. System / Light / Dark settings stick in a cookie, and the inline boot script means no white flash on a dark-themed user's first paint.
Maintenance windows
Planned maintenance periods (one-off + recurring) — open incidents within a window are automatically suppressed and re-evaluated when it closes.
Monthly reports
Per-workspace monthly digest — settings, on-demand generator, and a scheduled dispatcher that emails each owner on the 1st.
Per-project notifications
Notification channels are now scoped per project rather than workspace-global. Plus per-channel opt-outs and per-project throttling so a noisy day on one project doesn't wake you for the others.
Public status badges
<img src="https://app.greyout.io/badges/<token>/uptime/large.svg"> — embed an at-a-glance status badge anywhere. SVG, no auth, no cookies, regenerable token if the URL leaks.