diff --git a/book/src/admin.md b/book/src/admin.md index 37a9a93..23daab2 100644 --- a/book/src/admin.md +++ b/book/src/admin.md @@ -448,6 +448,12 @@ action, target and timestamp. Destructive **replica stop/restart**, schedule changes, MFA enrolment/reset/proof, and break-glass MFA bypasses are recorded too; rows with a change diff expand to show it. +Timestamps are stored in UTC and rendered in **your browser's timezone**, so +two operators in different zones each read the local wall clock of the same +event. Hovering a timestamp shows the full date with the zone name. (The +scheduler's own times — next occurrence and last run on the Schedules page — +are still labelled UTC.) + ### System A read-only diagnostic of the running server (version, bind address, diff --git a/crates/ruscker-admin/templates/admin/_layout.html b/crates/ruscker-admin/templates/admin/_layout.html index 5051b02..cddcfe5 100644 --- a/crates/ruscker-admin/templates/admin/_layout.html +++ b/crates/ruscker-admin/templates/admin/_layout.html @@ -309,6 +309,70 @@ {% block content %}{% endblock %} +{# ── Local-time rendering (#1041) ────────────────────────────────── + Every timestamp in the DB is UTC (the right thing to store), and + chrono's `format` prints the wall clock OF THE VALUE — so a bare + day/month/year+hour interpolation renders UTC and reads as three + hours in the future for a UTC−3 operator (the audit log made this + obvious). There is no server-side timezone to convert to: box and + hugo would each need configuring, and operators can sit in + different zones anyway. So each timestamp cell ships as + `