[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

refactor(maintenance): keep message as the announcement, updates as an independent timeline master

The branch mirrored the newest update into `maintenance.message`, which kept reads compatible but let any legacy writer (v1 PUT, RPC UpdateMaintenance, Terraform, the dashboard composer) overwrite the latest progress note. - `message` is the announcement again; `maintenance_update` rows are an optional 0..n timeline with `created_by`/`updated_by`. No sync helper, no initial update on create, no "at least one update" rule, no backfill. - Notifications split: `notifyMaintenance` (announcement, by maintenance id) and `notifyMaintenanceUpdate` (note, by update id); tRPC exposes both. Maintenance-update emails get their own idempotency key prefix. - Status JSON, feeds, Markdown and the UI block render the announcement followed by its notes. RPC/REST/CLI/Terraform shapes keep their meaning. - Migration 0092 regenerated; docs for the maintenance reference and MCP tools updated; tests rewritten for the new model.


+45 -33
10 changed files