From 86f0b4bd20cdec86dfb5bdb7978d1f6ff4af111a Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Fri, 14 Aug 2026 22:41:54 +0800
Subject: [PATCH] [verified] feat: export performance diagnostics
---
C1.source/Sources/Aligner/AlignerApplicationDelegate.swift | 25 +++++++++++++++++++++++++
1 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift b/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift
index 9904f96..83d35ba 100644
--- a/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift
+++ b/C1.source/Sources/Aligner/AlignerApplicationDelegate.swift
@@ -27,6 +27,7 @@
private var statusItem: NSStatusItem?
private var verticalWaterfallViewModeMenuItems: [NSMenuItem] = []
private var horizontalWaterfallViewModeMenuItems: [NSMenuItem] = []
+ private let performanceDiagnosticsExporter = PerformanceDiagnosticsExporter()
func applicationDidFinishLaunching(_ notification: Notification) {
let bundlePathSummary = DevelopmentDiagnostics.pathSummary(Bundle.main.bundlePath)
@@ -104,6 +105,7 @@
menu.addItem(menuItem(title: "Settings...", action: #selector(showSettingsFromMenu), keyEquivalent: ""))
menu.addItem(.separator())
menu.addItem(menuItem(title: "Check Permissions...", action: #selector(showPermissions), keyEquivalent: ""))
+ menu.addItem(menuItem(title: "Export Performance Diagnostics...", action: #selector(exportPerformanceDiagnostics), keyEquivalent: ""))
menu.addItem(.separator())
menu.addItem(menuItem(title: "Show Quick Switch", action: #selector(showQuickSwitchFromMenu), keyEquivalent: ""))
menu.addItem(menuItem(title: "Hide Quick Switch", action: #selector(hideQuickSwitchFromMenu), keyEquivalent: ""))
@@ -139,6 +141,7 @@
appMenu.addItem(menuItem(title: "Settings...", action: #selector(showSettingsFromMenu), keyEquivalent: ","))
appMenu.addItem(.separator())
appMenu.addItem(menuItem(title: "Check Permissions...", action: #selector(showPermissions), keyEquivalent: ""))
+ appMenu.addItem(menuItem(title: "Export Performance Diagnostics...", action: #selector(exportPerformanceDiagnostics), keyEquivalent: ""))
appMenu.addItem(menuItem(title: "Show Quick Switch", action: #selector(showQuickSwitchFromMenu), keyEquivalent: ""))
appMenu.addItem(menuItem(title: "Hide Quick Switch", action: #selector(hideQuickSwitchFromMenu), keyEquivalent: ""))
appMenu.addItem(quickSwitchViewModeMenuItem())
@@ -890,6 +893,7 @@
return [
"hasAboutItem": statusItem?.menu?.item(withTitle: "About Aligner...") != nil,
"hasSettingsItem": statusItem?.menu?.item(withTitle: "Settings...") != nil,
+ "hasExportPerformanceDiagnosticsItem": statusItem?.menu?.item(withTitle: "Export Performance Diagnostics...") != nil,
"hasQuickSwitchViewSubmenu": statusItem?.menu?.item(withTitle: "Quick Switch View")?.submenu != nil,
"hasVerticalColumnsItem": verticalItem != nil,
"hasHorizontalWaterfallItem": horizontalItem != nil,
@@ -907,6 +911,7 @@
"hasAppMenu": appMenu != nil,
"hasAboutItem": appMenu?.item(withTitle: "About Aligner...") != nil,
"hasSettingsItem": appMenu?.item(withTitle: "Settings...") != nil,
+ "hasExportPerformanceDiagnosticsItem": appMenu?.item(withTitle: "Export Performance Diagnostics...") != nil,
"settingsKeyEquivalent": appMenu?.item(withTitle: "Settings...")?.keyEquivalent ?? "",
"hasQuickSwitchViewSubmenuInAppMenu": appMenu?.item(withTitle: "Quick Switch View")?.submenu != nil,
"hasQuickSwitchViewSubmenuInViewMenu": viewMenu?.item(withTitle: "Quick Switch View")?.submenu != nil
@@ -948,6 +953,26 @@
openSettingsWindow(source: "menu")
}
+ @objc private func exportPerformanceDiagnostics() {
+ let versionBuild = appVersionBuild()
+ let preferences = preferenceStore.read()
+ let quickSwitch = quickSwitchSessionController?.performanceDiagnosticSummary() ?? [
+ "snapshotLoaded": false,
+ "quickSwitchVisible": false,
+ "applicationCount": 0,
+ "windowCount": 0,
+ "applications": []
+ ]
+ performanceDiagnosticsExporter.export(
+ version: versionBuild.version,
+ build: versionBuild.build,
+ preferences: preferences,
+ accessibility: permissionStatusString(accessibilityStatus()),
+ screenRecording: permissionStatusString(screenRecordingStatus()),
+ quickSwitch: quickSwitch
+ )
+ }
+
private func showSettingsFromQuickSwitch() {
openSettingsWindow(source: "quickSwitch")
}
--
Gitblit v1.9.3