diff --git a/packages/tracker/meshnet_tracker/dashboard.html b/packages/tracker/meshnet_tracker/dashboard.html index ef4b282..8f4df39 100644 --- a/packages/tracker/meshnet_tracker/dashboard.html +++ b/packages/tracker/meshnet_tracker/dashboard.html @@ -212,7 +212,7 @@ .chat-compose button:disabled { opacity:.45; cursor:not-allowed; } .console { background:var(--bg); border:1px solid var(--border); border-radius:6px; - min-height:160px; max-height:280px; overflow:auto; padding:7px 9px; + min-height:160px; max-height:520px; overflow-y:auto; overflow-x:auto; padding:7px 9px; white-space:pre-wrap; word-break:break-word; font-size:11px; } .console-line { padding:1px 0; border-bottom:1px solid #161b22; } @@ -1083,6 +1083,7 @@ function renderBillingUsage(records) { } let consoleClearedAt = 0; +const CONSOLE_MAX_LINES = 1000; function clearConsole() { consoleClearedAt = Date.now() / 1000; @@ -1096,7 +1097,7 @@ function renderConsole(data) { $("console").innerHTML = '
no console events
'; return; } - $("console").innerHTML = events.slice(-120).map(e => { + $("console").innerHTML = events.slice(-CONSOLE_MAX_LINES).map(e => { const level = String(e.level || "info"); const cls = level === "error" ? "console-level-error" : level === "warn" ? "console-level-warn" : "console-level-info"; const fields = e.fields && Object.keys(e.fields).length ? " " + JSON.stringify(e.fields) : ""; diff --git a/packages/tracker/meshnet_tracker/server.py b/packages/tracker/meshnet_tracker/server.py index 149ff3d..cbb3663 100644 --- a/packages/tracker/meshnet_tracker/server.py +++ b/packages/tracker/meshnet_tracker/server.py @@ -86,7 +86,7 @@ from .model_files import files_for_layer_range, snapshot_dir_for_repo from .raft import RaftNode -_CONSOLE_LIMIT = 300 +_CONSOLE_LIMIT = 1000 _PROXY_PROGRESS_LOG_INTERVAL = 5.0 _SESSION_COOKIE_NAME = "meshnet_session" diff --git a/tests/test_dashboard.py b/tests/test_dashboard.py index d3c1234..f387d21 100644 --- a/tests/test_dashboard.py +++ b/tests/test_dashboard.py @@ -44,6 +44,9 @@ def test_dashboard_served_with_all_panels(): assert ".wide { grid-column:span 2; }" in html assert 'onclick="clearConsole()"' in html assert "let consoleClearedAt = 0;" in html + assert "max-height:520px; overflow-y:auto; overflow-x:auto;" in html + assert "const CONSOLE_MAX_LINES = 1000;" in html + assert "events.slice(-CONSOLE_MAX_LINES)" in html finally: tracker.stop()