Replaced fixed 600px output heights with calc(100vh - 130px)
so console and chat logs fill the available space. Added min-height
to player list table so it doesn't look empty with few players.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Reduced pie chart margins from 75px to 5px and moved labels
inside the donut (.donutLabelsOutside(false)) so the chart
fills the available card width instead of being squeezed.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Players donut now same height as network chart (250px)
- Removed redundant Players toggle button
- Network toggle now collapses both cards via shared .bottom-row class
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Moved Players card before Network, placed side by side in a row:
col-sm-3 for the donut, col-sm-9 for the networking area chart.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Cards: replaced solid #1e1330 bg with semi-transparent glass
(backdrop-filter blur + subtle purple border)
- NVD3: overridden all chart text from black to rgba(255,255,255,0.85)
including axis labels, ticks, legends, and pie labels
- Axis lines toned down to barely-visible for a cleaner look
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Darkened primary from #8b5cf6 to #6d28d9 (violet-700) to better
complement the dark theme
- Removed <h1> page title — the sidebar active highlight already
tells you which tab you're on
- Cleaned up related CSS and elTitle plumbing in app.js
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Override Bootstrap 5.3 dark-theme --bs-primary to #8b5cf6 (violet)
- Update rcon.css accent, sidebar, and focus-ring to match purple
- Switch all containers from fixed-width to container-fluid
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Router.go() sets window.location.hash, but when the hash already
matches (e.g. F5 reload at /#/addr/info then clicking a saved
connection), hashchange doesn't fire and the router never re-renders.
Switched to Router.navigate() which processes the route directly
regardless of current hash.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Added 'row' class to #si-fields wrapper so Bootstrap col-sm-4 children
arrange horizontally instead of stacking vertically.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Eliminated redundant serverinfo RCON polling from the serverInfo page.
It now subscribes to the header's serverinfo-update CustomEvent instead.
Key changes:
- app.js: cache last serverinfo in window._lastServerInfo and dispatch
serverinfo-update event so pages can pick up data immediately
- serverInfo.js: replaced setInterval-based polling with event listener
plus immediate _lastServerInfo cache check, eliminating the initial
blank page state and duplicate RCON requests
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move startPolling() before nv.addGraph calls so it fires immediately
after DOM setup. This eliminates the race where nv.addGraph's async
render loop could delay or silently swallow the polling start. Charts
still initialize via nv.addGraph and have null guards in updateCharts.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
nv.addGraph uses setTimeout internally, so chart models may not exist yet
when the first WebSocket response arrives. Moved startPolling() into the
last nv.addGraph callback to guarantee charts are ready before data flows.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
NVD3 1.8.1 on CDN doesn't expose .duration() on multiChart or
stackedAreaChart top-level models. Duration is set via sub-components
(.lines1.duration, .lines2.duration) which are already present.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Lines 88-103 were a duplicate of the stackedAreaChart setup floating
outside any function — the stray }); at line 103 had no matching open
brace. Removed the 16 orphaned lines.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- 'Loading…' shown in charts/fields/output areas while waiting for server response
- Console + chat: clears loading state on first output line
- Player list: table body shows loading row until refresh completes
- Player info / Server info: fields show loading until data arrives
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Router.add() now takes 3 params (pattern, title, onEnter) matching app.js usage
- Fixed setActiveSidebar → setActivePage in all route callbacks
- Removed premature hash-setting from connect.js — app.js now sole navigator
(was firing router into a hidden container before showConnected ran)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Removed hamburger menu — all stats inline on one navbar row
- Disconnect button at top-right (ms-auto)
- Added data-bs-theme=dark for proper BS5 dark mode text inheritance
- Restored explicit width/height on chart SVGs (required by NVD3)
- Changed text-muted → text-white-50 for field labels on dark bg
- Added flex-nowrap to navbar container
- Overrode --bs-body-bg to maintain original dark shade
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
change data collection
charts are collapsible
show fps and entity count in one chart
improve network chart
add player chart (queued, joining, playing, free)