logging and presenting cpu/memory usage when app is force-closed (#1894)

closes #1803 











<!-- This is an auto-generated description by cubic. -->
---
## Summary by cubic
Detects when the app was force-closed and shows a dialog with the last
known CPU and memory usage. Adds background performance monitoring so we
can surface metrics on next launch.

- **New Features**
- Start a performance monitor at app launch; captures process and system
memory/CPU every 30s and on quit.
- Persist metrics in settings.lastKnownPerformance and track
settings.isRunning to detect improper shutdowns.
- On startup, if the previous run was force-closed, send a
"force-close-detected" IPC event after the window loads.
  - Add ForceCloseDialog to display timestamped process/system metrics.
- Whitelist the new IPC channel in preload and listen for it on the home
page.

<sup>Written for commit 0543cdc234da7f94024e8506749aaa9ca36ef916.
Summary will update automatically on new commits.</sup>

<!-- End of auto-generated description by cubic. -->
This commit is contained in:
Mohamed Aziz Mejri
2025-12-14 21:07:56 +01:00
committed by GitHub
parent a4ab1a7f84
commit 9d33f3757d
38 changed files with 606 additions and 48 deletions

View File

@@ -257,6 +257,17 @@ export const UserSettingsSchema = z.object({
releaseChannel: ReleaseChannelSchema,
runtimeMode2: RuntimeMode2Schema.optional(),
customNodePath: z.string().optional().nullable(),
isRunning: z.boolean().optional(),
lastKnownPerformance: z
.object({
timestamp: z.number(),
memoryUsageMB: z.number(),
cpuUsagePercent: z.number().optional(),
systemMemoryUsageMB: z.number().optional(),
systemMemoryTotalMB: z.number().optional(),
systemCpuPercent: z.number().optional(),
})
.optional(),
////////////////////////////////
// E2E TESTING ONLY.