-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Summary
The diagnostics report collected by DiagnosticsCollector includes hardware GPU info (app.getGPUInfo) but omits app.getGPUFeatureStatus() — the API that reveals whether WebGL is hardware-accelerated, software-only, or disabled. This makes it impossible to diagnose user-reported terminal rendering slowdowns or WebGL-related issues from a diagnostics report alone.
Problem Statement
When users report sluggish terminal rendering or unexpected CPU usage, a key diagnostic question is: "Is the GPU actually hardware-accelerating the terminal renderer?" The answer lives in app.getGPUFeatureStatus(), which maps Chromium feature names (e.g., webgl, webgl2, gpu_compositing) to their active status ("enabled", "software_only", "disabled_off", etc.).
This data is available at runtime but not captured anywhere in the diagnostics report. The existing collectGpu() function calls app.getGPUInfo("basic") (which returns hardware device info — VRAM size, device ID, driver version) but not getGPUFeatureStatus() (which returns the runtime capability flags). The two APIs are complementary: hardware info without feature status doesn't tell you if hardware acceleration is actually active.
Current Behavior
DiagnosticsCollector.collectGpu()atelectron/services/DiagnosticsCollector.ts#L144-L148callsapp.getGPUInfo("basic")onlyapp.getGPUFeatureStatus()is called once in smoke test mode (electron/main.ts#L1636) but its output is not persisted or reported
Expected Behavior
The gpu section of the diagnostics report should include both hardware info and the runtime feature capability status, so that a user-submitted diagnostics report fully answers: "Is this machine running hardware-accelerated WebGL?"
Context
Relevant code:
electron/services/DiagnosticsCollector.ts#L144-L148—collectGpu()function to extendelectron/main.ts#L1636— existing call pattern forgetGPUFeatureStatus()
Acceptance Criteria
- The
gpusection of a collected diagnostics report includes the output ofapp.getGPUFeatureStatus() - The addition handles errors gracefully (same pattern as other sections — caught exception returns an error object)
- The added data is visible in the diagnostics output accessible via the app's diagnostics UI
Edge Cases & Risks
app.getGPUFeatureStatus() is synchronous and fast, so it does not need the existing GPU_TIMEOUT_MS guard. However, it should still be wrapped in a try/catch to match the defensive pattern used throughout the rest of DiagnosticsCollector.