Releases: Hostzero-GmbH/yet-another-status-page
Releases · Hostzero-GmbH/yet-another-status-page
v0.4.0
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
beforeChangehook 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:
cancelledAtandcompletedAt, auto-stamped by the hook. Top-levelstatusis 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
scheduledStartfield (nowscheduledStartAt).
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/nodepinned 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.Ztag. - 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.tsremoved). - 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.4and@eslint/jsto^9.39.4whileeslint-plugin-reactdoesn't yet support ESLint 10.
Testing
- New
tests/e2e/maintenance-status-fix.spec.tscovers the status sync hook, terminal timestamp stamping, home page rendering of all four status variants, and the retention window.
Breaking changes
engines.nodeis now>=24.0.0— older Node versions are no longer supported.- The Maintenances
statusfield 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:
- 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). - Existing terminal-state maintenances will have NULL
cancelledAt/completedAtand so won't reappear on the home page (intentional — they were already in terminal state before this feature shipped). - 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
- @topsy72 made their first contribution in #3
- @dependabot[bot] made their first contribution in #9
Full Changelog: v0.3.0...v0.4.0
v0.3.0
- 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
OIDC Support
Full Changelog: https://github.com/Hostzero-GmbH/status-page/commits/v0.2.0