feat(dashboard): browse every client system info report, per account and across accounts

The account page lists the account's reports as a table and the Client System Info page lists every report (or each account's newest), sortable and searchable by account name or video card; a row opens every field. Values that say little about the real system are marked, and every caveat is a tooltip on the value and column.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-30 08:06:02 -05:00
parent bd13297947
commit d94d84b5cb
16 changed files with 363 additions and 40 deletions

View File

@@ -164,7 +164,13 @@
<p class="small text-body-secondary mb-2">What this account's game client said about its system at each login, exactly as sent. The client asks old Windows
functions from a 32-bit program, so several values are compatibility defaults, not the player's real hardware; each field says how far it can be trusted.
A new entry starts when anything but the memory in use changes.{% if not can.logs_audit %} Addresses are only shown with logs_audit.{% endif %}</p>
<div id="sysinfoList"><p class="text-body-secondary mb-0">Loading&hellip;</p></div>
<p class="small text-body-secondary mb-2">Dotted values have a tooltip saying what they're worth; &#9888; marks values that say little or nothing about the
player's real system. Click a row for every field.</p>
<table id="sysinfoTable" class="table table-sm table-hover table-stack align-middle w-100">
<thead><tr><th>Last seen</th><th>Account</th><th class="text-end">Logins</th><th data-caveat="os">Windows reported</th><th data-caveat="video">Video card</th>
<th class="text-end" data-caveat="cpus">CPUs</th><th class="text-end" data-caveat="memory">Memory</th><th data-caveat="client">Client build</th><th>First seen</th></tr></thead>
<tbody></tbody>
</table>
</div>
</div>
{% endif %}

View File

@@ -11,7 +11,7 @@
and under Wine or Proton the answers are whatever Wine reports. Treat this as what clients claim, not as players' real hardware.
</div>
<p class="text-body-secondary">From each account's newest report (<span id="sysinfoAccounts">&hellip;</span> accounts), kept for <code>log_client_sysinfo_days</code>.
Each account's own history is on its account page.</p>
Every report is listed below; each account's own reports are also on its account page.</p>
<div class="row g-4">
<div class="col-lg-6">
@@ -60,6 +60,26 @@
</div>
</div>
</div>
<div class="card mt-4" id="sysinfoAll">
<div class="card-header d-flex flex-wrap justify-content-between align-items-center gap-2">
<h5 class="mb-0">All reports</h5>
<div class="form-check form-switch mb-0 small">
<input class="form-check-input" type="checkbox" id="sysinfoLatest" data-pref="client_sysinfo.latest">
<label class="form-check-label" for="sysinfoLatest">Only each account's newest</label>
</div>
</div>
<div class="card-body">
<p class="small text-body-secondary mb-2">One row per account while its client reports the same system; a new row starts when anything but the memory
in use changes. Dotted values have a tooltip saying what they're worth; &#9888; marks values that say little or nothing about the player's
real system. Click a row for every field; a video card above filters the list to it.</p>
<table id="sysinfoTable" class="table table-sm table-hover table-stack align-middle w-100">
<thead><tr><th>Last seen</th><th>Account</th><th class="text-end">Logins</th><th data-caveat="os">Windows reported</th><th data-caveat="video">Video card</th>
<th class="text-end" data-caveat="cpus">CPUs</th><th class="text-end" data-caveat="memory">Memory</th><th data-caveat="client">Client build</th><th>First seen</th></tr></thead>
<tbody></tbody>
</table>
</div>
</div>
</div>
{% endblock %}