feat: live timer since rebuild

This commit is contained in:
venus
2026-10-20 17:01:05 -05:00
parent c8cd5fd0d9
commit 07de3b2782
6 changed files with 103 additions and 0 deletions
+1
View File
@@ -29,6 +29,7 @@
{% include "partials/footer.njk" %}
</div>
<script type="module" src="/assets/js/build-timer.js"></script>
{% block scripts %}{% endblock %}
</body>
</html>
+2
View File
@@ -4,6 +4,8 @@
<span>RUNTIME: ELEVENTY 3.x STATIC</span>
<span>&bull;</span>
<span>THEME: NATIVE TERMINAL DARK</span>
<span>&bull;</span>
<time id="build-age" data-build-timestamp="{{ buildTimestamp }}" aria-live="polite">REBUILT: INITIALIZING</time>
</div>
<div class="footer-right">
+30
View File
@@ -0,0 +1,30 @@
export const formatBuildAge = (buildTimestamp, nowTimestamp = new Date().toISOString()) => {
const buildTime = Date.parse(buildTimestamp);
const now = Date.parse(nowTimestamp);
if (!Number.isFinite(buildTime) || !Number.isFinite(now)) return "unknown";
const elapsedSeconds = Math.max(0, Math.floor((now - buildTime) / 1000));
const days = Math.floor(elapsedSeconds / 86400);
const hours = Math.floor((elapsedSeconds % 86400) / 3600);
const minutes = Math.floor((elapsedSeconds % 3600) / 60);
const seconds = elapsedSeconds % 60;
if (days > 0) return `${days}d ${hours}h ago`;
if (hours > 0) return `${hours}h ${minutes}m ago`;
if (minutes > 0) return `${minutes}m ${seconds}s ago`;
return `${seconds}s ago`;
};
if (typeof document !== "undefined") {
const timer = document.getElementById("build-age");
if (timer) {
const updateBuildAge = () => {
timer.textContent = `REBUILT: ${formatBuildAge(timer.dataset.buildTimestamp)}`;
};
updateBuildAge();
window.setInterval(updateBuildAge, 1000);
}
}