[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

fix(emails): format the maintenance window and rename the template to page-update (#2882) master

* fix(emails): format the maintenance window instead of raw ISO timestamps The email channel joined the maintenance from/to ISO strings into the template's date prop, so subscribers saw a Window row like "2026-10-12T22:00:00.000Z - 2026-10-13T01:00:00.000Z". Pass the window as its own props, format it in the template, and keep date as the update's timestamp so the eyebrow shows when each update was posted. Drop the unused sendMaintenanceNotification client method. * fix: email * refactor(emails): rename sendStatusReportUpdate to sendPageUpdate The subscriber email carries maintenance updates too, so the method, subject helper, and template now use the page-update vocabulary that @openstatus/subscriptions already uses (PageUpdate, dispatchPageUpdate). - EmailClient.sendStatusReportUpdate -> sendPageUpdate - statusReportSubject -> pageUpdateSubject - emails/status-report.tsx -> emails/page-update.tsx (PageUpdateEmail, PageUpdateProps, PageUpdateSchema, pageUpdatePreheader) Idempotency key prefixes, the reportTitle prop, and the report-specific dispatchStatusReportUpdate are unchanged. * fix(emails): compare the year when collapsing a same-day window formatDateTimeRange only checked day and month, so a window ending on the same calendar date in another year rendered the end as time-only. * ci: apply automated fixes --------- Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>


+207 -218
12 changed files