fix(system): Settings > System still shows raw PCI id as the GPU model on AMD
Problem
#1165 stopped unresolved PCI ids reaching the leaderboard, but the fix was applied to benchmark_service.ts only. system_service.ts — which backs GET /api/system/info and therefore Settings → System — never got it, so an unresolved model is still shown to the user on AMD hardware.
isUnresolvedGpuModel appears 3 times in admin/app/services/benchmark_service.ts and 0 times anywhere else in the codebase at v1.34.0-rc.4.
NVIDIA hides the gap by accident: system_service.ts has an nvidia-smi probe (getNvidiaSmiInfo()) that resolves a real product name. There is no AMD equivalent, so si.graphics()'s raw string passes straight through to the UI.
Steps to Reproduce
On a box with a recent AMD GPU/APU whose pci.ids predates the card (reproduced on a Ryzen 9 PRO 8945HS / Radeon 780M):
- Open Settings → System, or
curl -s http://localhost:8080/api/system/info
Expected vs Actual
Expected: the resolved product name, matching what the benchmark path now reports for the same hardware. Actual: the raw PCI id.
# same machine, v1.34.0-rc.4
BenchmarkService.getHardwareInfo() -> "gpu_model": "Radeon 780M" # correct, #1165
GET /api/system/info -> "model": "Device 1900" # still unresolvedNVIDIA comparison on the same build, showing the nvidia-smi path masking it:
GET /api/system/info -> "model": "NVIDIA GeForce RTX 5060"Impact
Display only — the leaderboard submission path is correct, so this is not a data-integrity problem and #1165's goal is met. But Settings → System is where a user checks whether their hardware was detected, and on newer AMD cards it reads as though detection failed. It hits exactly the newest hardware, the same population #1165 was written for.
Suggested Fix
Share the existing helper rather than duplicating it: lift isUnresolvedGpuModel (and the AMD CPU-brand fallback that derives Radeon 780M from w/ Radeon 780M Graphics) out of benchmark_service.ts into a shared util, and apply it in system_service.ts before the controller data is returned. That keeps one definition of "unresolved" across both paths.
Files Involved
admin/app/services/benchmark_service.ts— current sole home ofisUnresolvedGpuModel; candidate to extractadmin/app/services/system_service.ts—si.graphics()controllers returned unfiltered
Related
- #1165 — the leaderboard-side fix this completes
Found during v1.34.0-rc.4 QA.
Source: Crosstalk-Solutions/project-nomad