Description
Users currently have no way to know how old the data in a panel is. Add a relative timestamp ("2m ago", "just now", "12m ago") to each DashPanel's border_title showing when its source's snapshot was last refreshed.
Implementation:
- Extract
refreshedAtfrom each source's snapshot duringrefresh_data() - Pass it to
DashPanelalongside the content (e.g.set_content(text, refreshed_at=dt)) DashPanelupdatesborder_title = f"{self._title} {relative_time(refreshed_at)}"- Add a lightweight 60s timer that re-renders titles in place (just the relative time strings) without re-fetching data
relative_time(dt)→ "just now" (<2m), "Xm ago" (<1h), "Xh ago" (≥1h)
Acceptance Criteria
- #1 Each panel border shows relative age of its data
- #2 Timestamps update every minute without re-fetching
- #3 Panels without a snapshot (not configured) show no timestamp