diff --git a/server/src/dashboard.html b/server/src/dashboard.html index 02f936f..6a91368 100644 --- a/server/src/dashboard.html +++ b/server/src/dashboard.html @@ -977,10 +977,10 @@ const history = await response.json(); const feed = document.getElementById('activity-feed'); feed.innerHTML = ''; - history.forEach(item => { + [...history].reverse().forEach(item => { const div = document.createElement('div'); div.className = 'feed-entry'; - const timeStr = new Date(item.time).toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', second:'2-digit'}); + const timeStr = new Date(item.time).toLocaleString([], {month: '2-digit', day: '2-digit', hour: '2-digit', minute:'2-digit', second:'2-digit'}); div.innerHTML = `[${timeStr}] ${item.message || item.data}`; feed.appendChild(div); }); @@ -1000,17 +1000,17 @@ const data = JSON.parse(event.data); if (data.type === 'activity') { // Check scroll state before appending - const isScrolledToBottom = feed.scrollHeight - feed.clientHeight <= feed.scrollTop + 20; + const isScrolledToTop = feed.scrollTop <= 20; const div = document.createElement('div'); div.className = 'feed-entry'; - const timeStr = new Date(data.data.time).toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', second:'2-digit'}); + const timeStr = new Date(data.data.time).toLocaleString([], {month: '2-digit', day: '2-digit', hour: '2-digit', minute:'2-digit', second:'2-digit'}); div.innerHTML = `[${timeStr}] ${data.data.message || data.data.data || data.data}`; - feed.appendChild(div); + feed.prepend(div); // Enforce max history while (feed.children.length > MAX_ACTIVITY_HISTORY) { - feed.removeChild(feed.firstChild); + feed.removeChild(feed.lastChild); } // Auto-scroll logic @@ -1169,3 +1169,4 @@ +