Ariver
2026-06-11 1bdf3fd8a05223aced3a7bf5b75a948d1afe32fc
C1.source/Sources/Aligner/AlignerApplicationDelegate.swift
@@ -4,6 +4,8 @@
@MainActor
final class AlignerApplicationDelegate: NSObject, NSApplicationDelegate {
    private static let quickSwitchConfirmBeforeCloseDefaultsKey = "QuickSwitchConfirmBeforeClose"
    private let permissionChecker = SystemPermissionChecker()
    private let launchOptions = Round0DebugLaunchOptions.parse(arguments: ProcessInfo.processInfo.arguments)
    private let round1PoCOptions = Round1PerformancePoCOptions.parse(arguments: ProcessInfo.processInfo.arguments)
@@ -352,7 +354,13 @@
            let controller = QuickSwitchSessionController(
                snapshotLoader: quickSwitchSnapshotLoader(),
                windowActivationService: quickSwitchWindowActivationService(),
                spaceActivationService: quickSwitchSpaceActivationService(),
                windowCloseService: quickSwitchWindowCloseService(),
                disableScreenshotRefresh: round1QuickSwitchOptions.disableScreenshotRefresh,
                closeConfirmationRequired: quickSwitchConfirmBeforeClose,
                onCloseConfirmationDisabled: { [weak self] in
                    self?.setQuickSwitchConfirmBeforeClose(false)
                },
                debugHoveredAppGroupIndex: round1QuickSwitchOptions.debugHoveredAppGroupIndex,
                debugOverlayWidth: round1QuickSwitchOptions.debugOverlayWidth,
                debugKeySequence: round1QuickSwitchOptions.debugKeySequence,
@@ -421,7 +429,13 @@
            let controller = QuickSwitchSessionController(
                snapshotLoader: quickSwitchSnapshotLoader(),
                windowActivationService: quickSwitchWindowActivationService(),
                spaceActivationService: quickSwitchSpaceActivationService(),
                windowCloseService: quickSwitchWindowCloseService(),
                disableScreenshotRefresh: round1QuickSwitchOptions.disableScreenshotRefresh,
                closeConfirmationRequired: quickSwitchConfirmBeforeClose,
                onCloseConfirmationDisabled: { [weak self] in
                    self?.setQuickSwitchConfirmBeforeClose(false)
                },
                debugHoveredAppGroupIndex: round1QuickSwitchOptions.debugHoveredAppGroupIndex,
                debugOverlayWidth: round1QuickSwitchOptions.debugOverlayWidth,
                debugKeySequence: round1QuickSwitchOptions.debugKeySequence,
@@ -505,11 +519,16 @@
            return FixtureQuickSwitchSnapshotLoader(appCount: 1, mode: .candidateFiltering)
        }
        if round1QuickSwitchOptions.fixtureSpaceFilter {
            return FixtureQuickSwitchSnapshotLoader(appCount: 1, mode: .spaceFilter)
        }
        if let fixtureAppCount = round1QuickSwitchOptions.fixtureAppCount {
            return FixtureQuickSwitchSnapshotLoader(
                appCount: fixtureAppCount,
                windowsPerApp: round1QuickSwitchOptions.fixtureWindowsPerApp ?? 1,
                mode: .layout
                mode: .layout,
                usesMultipleDisplays: round1QuickSwitchOptions.fixtureMultiDisplay
            )
        }
@@ -529,6 +548,34 @@
        return CGWindowAXWindowService(spaceIDsByWindowIDProvider: { _ in [:] })
    }
    private func quickSwitchSpaceActivationService() -> any SpaceActivationServiceProtocol {
        if round1QuickSwitchOptions.debugWindowActivation {
            return DebugSpaceActivationService()
        }
        return PrivateSpaceActivationService()
    }
    private func quickSwitchWindowCloseService() -> any WindowCloseServiceProtocol {
        if round1QuickSwitchOptions.debugWindowClose {
            return DebugWindowCloseService()
        }
        return CGWindowAXWindowService(spaceIDsByWindowIDProvider: { _ in [:] })
    }
    private var quickSwitchConfirmBeforeClose: Bool {
        let value = UserDefaults.standard.object(forKey: Self.quickSwitchConfirmBeforeCloseDefaultsKey)
        return (value as? Bool) ?? true
    }
    private func setQuickSwitchConfirmBeforeClose(_ enabled: Bool) {
        UserDefaults.standard.set(enabled, forKey: Self.quickSwitchConfirmBeforeCloseDefaultsKey)
        DevelopmentDiagnostics.log("app.quickSwitch.closeConfirmationPreferenceChanged", [
            "confirmBeforeClose": enabled
        ])
    }
    @objc private func showPermissions() {
        DevelopmentDiagnostics.log("app.permissions.show", [
            "accessibility": permissionStatusString(accessibilityStatus()),