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

@@ -64,6 +64,15 @@ const nlohmann::json& ClientSysInfoView::Caveats() {
return caveats;
}
const nlohmann::json& ClientSysInfoView::Trust() {
static const nlohmann::json trust = {
{"clientOs", "unreliable"}, {"processorType", "unreliable"}, {"osVersionInfoSize", "unreliable"}, {"osVersion", "unreliable"},
{"platformId", "unreliable"}, {"memoryStats", "approximate"}, {"videoCard", "approximate"}, {"numberOfProcessors", "approximate"},
{"processorLevel", "approximate"}, {"processorRevision", "approximate"},
};
return trust;
}
std::string ClientSysInfoView::OsVersion(const IClientSysInfo::SysInfoRow& row) {
return std::to_string(row.majorVersion) + "." + std::to_string(row.minorVersion) + "." + std::to_string(row.buildNumber);
}
@@ -116,6 +125,7 @@ nlohmann::json ClientSysInfoView::RowJson(const IClientSysInfo::SysInfoRow& row,
{"os_version", OsVersion(row)}, {"os_label", OsLabel(row)},
};
if (showIp) out["ip"] = row.ip;
if (!row.accountName.empty()) out["account_name"] = row.accountName;
return out;
}