Ariver
2026-08-14 86f0b4bd20cdec86dfb5bdb7978d1f6ff4af111a
C1.source/Sources/Aligner/QuickSwitchSessionController.swift
@@ -426,6 +426,40 @@
        ]
    }
    func performanceDiagnosticSummary() -> [String: Any] {
        let applications = currentSnapshot?.appGroups.map { group in
            [
                "name": group.app.name,
                "bundleIdentifier": group.app.bundleIdentifier,
                "processIdentifier": group.app.processIdentifier ?? NSNull(),
                "windowCount": group.windows.count,
                "minimizedWindowCount": group.windows.filter { $0.window.isMinimized }.count,
                "fullscreenWindowCount": group.windows.filter { $0.window.isFullscreen }.count
            ] as [String: Any]
        } ?? []
        return [
            "snapshotLoaded": currentSnapshot != nil,
            "snapshotError": lastSnapshotError ?? NSNull(),
            "quickSwitchVisible": isVisible,
            "displayCount": currentSnapshot?.displays.count ?? 0,
            "spaceCount": currentSnapshot?.displays.flatMap(\.spaces).count ?? 0,
            "applicationCount": applications.count,
            "windowCount": currentSnapshot?.appGroups.flatMap(\.windows).count ?? 0,
            "applications": applications,
            "timingsMilliseconds": [
                "overlayOpen": overlayOpenElapsedMilliseconds ?? NSNull(),
                "snapshotStart": snapshotStartElapsedMilliseconds ?? NSNull(),
                "snapshot": snapshotDurationMilliseconds ?? NSNull(),
                "lastActivation": lastActivationDurationMilliseconds ?? NSNull()
            ] as [String: Any],
            "snapshotRanOnMainThread": snapshotRanOnMainThread ?? NSNull(),
            "lastActivationResult": lastActivationResult.map(Self.activationResultString) ?? NSNull(),
            "lastActivationError": lastActivationError ?? NSNull(),
            "lastDismissReason": lastDismissReason.map(Self.dismissReasonString) ?? NSNull()
        ]
    }
    func prepareLifecycleRun(targetCycles: Int) {
        lifecycleTargetCycles = max(0, targetCycles)
        lifecycleCompletedCycles = 0