Skip to content

Releases: Hostzero-GmbH/yet-another-status-page

v0.4.0

16 May 14:44

Choose a tag to compare

Highlights

  • Helm chart and release pipeline. First-class Kubernetes deployment via a self-contained Helm chart (Postgres subchart, Ingress, NetworkPolicy, PDB, PVC, Secret). Tag-driven release workflow now publishes multi-arch Docker images to GHCR and pushes the Helm chart to the OCI registry with build provenance attestations. Helm is now the recommended deployment path; Docker Compose is documented for local development.
  • Maintenance lifecycle, fixed. Cancelled maintenances no longer linger forever and the Cancelled badge actually renders. The home card shows the inline update timeline (status icon + message text) just like incidents, and parent status is now kept in sync with the latest update via a beforeChange hook so the admin form and the timeline can no longer drift. A configurable retention window (default 24h) controls how long completed and cancelled cards stay visible after entering a terminal state.
  • No more dark-mode flash. Theme initialisation moved to next-themes, eliminating the brief light flash on page load when the visitor's stored preference is dark.

What's new

  • New Settings field: Maintenance retention (hours) under a dedicated collapsible. Defaults to 24, set to 0 to drop terminal-state maintenances immediately.
  • New sidebar fields on Maintenances: cancelledAt and completedAt, auto-stamped by the hook. Top-level status is now read-only in admin — change it by posting an update.
  • Maintenance cards on the home page now show:
    • all four status variants (Upcoming, In Progress, Completed, Cancelled) with proper styling,
    • the inline update timeline with each entry's status, timestamp, and message,
    • a subtle dim for terminal-state cards.

Fixes

  • Cancelled maintenances stayed on the status page indefinitely.
  • Cancelled badge rendered as an empty pill on the home page.
  • Home query sorted on a non-existent scheduledStart field (now scheduledStartAt).

Operational

  • Dependabot is enabled across npm, Docker, and GitHub Actions ecosystems with curated ignore rules (ESLint pinned to v9 due to peer constraints, Node base image and @types/node pinned to LTS).
  • Release workflow validates version consistency, runs lint/typecheck/build, builds multi-arch (amd64/arm64) Docker images, attaches build provenance, and pushes the Helm chart to GHCR's OCI registry on every vX.Y.Z tag.
  • Database migrations. The drizzle/Payload migration for the new columns is included; production deployments need to run migrations before rollout.

Upgrades

  • Node.js 24 (LTS) is now the minimum supported runtime.
  • Payload CMS 3.84.1, Next.js 16.2.6, React 19.2.6, TypeScript 6.0.3.
  • Tailwind CSS 4.3 (full migration: @theme inline, @custom-variant dark, @source; tailwind.config.ts removed).
  • Zod 4 (API change: result.error.issues), nodemailer 8, lucide-react 1.16, tailwind-merge 3, twilio 6, cross-env 10, sharp 0.34, graphql 16, nanoid 5, sass 1.99.
  • ESLint pinned to ^9.39.4 and @eslint/js to ^9.39.4 while eslint-plugin-react doesn't yet support ESLint 10.

Testing

  • New tests/e2e/maintenance-status-fix.spec.ts covers the status sync hook, terminal timestamp stamping, home page rendering of all four status variants, and the retention window.

Breaking changes

  • engines.node is now >=24.0.0 — older Node versions are no longer supported.
  • The Maintenances status field is admin-readonly. Admins must post an update to change a maintenance's status; programmatic writes (auto-schedule, hooks) continue to work as before.
  • Tailwind v3 config files have been removed in favour of the v4 CSS-based configuration.

Migration notes

When upgrading an existing deployment:

  1. Run database migrations (payload migrate) before rolling out the new image — three new columns (maintenances.cancelled_at, maintenances.completed_at, settings.maintenance_terminal_retention_hours).
  2. Existing terminal-state maintenances will have NULL cancelledAt / completedAt and so won't reappear on the home page (intentional — they were already in terminal state before this feature shipped).
  3. If self-hosting via Docker Compose, ensure your runtime supports Node.js 24.

What's Changed

  • Fix for login not working cookie domain configuration and CSRF security improvement by @topsy72 in #3
  • Feature/demo readme by @topsy72 in #2
  • chore(deps): bump actions/upload-pages-artifact from 3 to 5 by @dependabot[bot] in #9
  • chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #6
  • chore(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #8
  • chore(deps): bump @eslint/js from 9.39.4 to 10.0.1 by @dependabot[bot] in #10
  • chore(deps): bump actions/attest-build-provenance from 2 to 4 by @dependabot[bot] in #5
  • chore(deps): bump actions/deploy-pages from 4 to 5 by @dependabot[bot] in #4
  • chore(deps): bump @types/nodemailer from 7.0.11 to 8.0.0 by @dependabot[bot] in #14
  • chore(deps): bump eslint from 9.39.4 to 10.4.0 by @dependabot[bot] in #11
  • chore(deps): bump typescript from 5.9.3 to 6.0.3 by @dependabot[bot] in #15
  • chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #18
  • chore(deps): bump actions/configure-pages from 5 to 6 by @dependabot[bot] in #17

New Contributors

Full Changelog: v0.3.0...v0.4.0

v0.3.0

06 Feb 07:59

Choose a tag to compare

  • Reversed ordering of status updates on incidents and maintenance to have the newest on top
  • Upgrade to latest Payload CMS and Next 16
  • Introduce loading states and view transitions

Full Changelog: v0.2.0...v0.3.0

v0.2.0

12 Jan 11:28

Choose a tag to compare

Initial release

11 Jan 23:17

Choose a tag to compare