diff --git a/hbd/server/templates/live.html b/hbd/server/templates/live.html index 4db57f0..1b39b65 100644 --- a/hbd/server/templates/live.html +++ b/hbd/server/templates/live.html @@ -540,7 +540,7 @@ if (msg.service) html += '' + msg.service + ''; html += '' + msg.message + ''; html += ''; - msgs.insertAdjacentHTML("afterbegin", html); + msgs.insertAdjacentHTML(state.history ? "beforeend" : "afterbegin", html); applyLogFilters(); } cnt++; diff --git a/hbd/server/ws.py b/hbd/server/ws.py index d073479..f8f9d6c 100644 --- a/hbd/server/ws.py +++ b/hbd/server/ws.py @@ -85,13 +85,15 @@ async def handler(request): except Exception as e: logger.error("Error sending initial hosts: %s", e) - # Send recent messages, filtered to hosts this user may see + # Send recent messages newest-first so the client can append them in + # display order without reordering on arrival (tagged history=True so + # the client knows to append rather than prepend). if data.msgs: try: - for m in data.msgs: + for m in reversed(data.msgs): host_name = m.get("host") if isinstance(m, dict) else None if not host_name or _user_can_see_host(user, host_name): - await ws.send_str(json.dumps({"type": "message", "data": m})) + await ws.send_str(json.dumps({"type": "message", "data": m, "history": True})) except Exception as e: logger.error("Error sending initial messages: %s", e)