diff --git a/docs/web-ui/dashboard.md b/docs/web-ui/dashboard.md index 75fe842b..6ccca5a0 100644 --- a/docs/web-ui/dashboard.md +++ b/docs/web-ui/dashboard.md @@ -245,6 +245,13 @@ checked-not-originally-active = `targets_add`; submit PATCHes `/api/schedules/{id}`), and a `✕` button cancels the whole schedule (`POST /api/schedules/{id}/cancel`). +The `next` column cell (`.sched-due`) carries a `data-due-at` +Unix timestamp attribute; a shared 1s ticker rewrites it +in-place showing `fmtDuration` while in the future and +`overdue X ago` once the fire time has passed — same +zero-re-render pattern as the reminder due-at labels and the +question TTL chip. + The table's last row is a permanent inline creation row: inputs live directly in table cells (targets as checkboxes, body textarea that expands on focus, datetime-local pre-filled @@ -265,7 +272,12 @@ button hard-deletes (`POST /cancel-reminder/{id}`) and a `R3TRY` button re-arms one whose delivery failed (`POST /retry-reminder/{id}`). Backed by `GET /api/reminders`. Lives in the SCH3DUL3S tab alongside operator schedules so the -operator has one place for everything time-fired. +operator has one place for everything time-fired. The due-time +label (`.reminder-due`) carries a `data-due-at` Unix timestamp +attribute; a shared 1s ticker rewrites it in-place — showing +`in Xm Ys` while the reminder is in the future and +`overdue X ago` once the deadline passes — without triggering a +full re-render of the list. ## P33RS tab