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/AlignerCore/Windows/FinderTabSpaceAttributionPolicy.swift | 32 ++++++++++++++++++++++++++++++--
1 files changed, 30 insertions(+), 2 deletions(-)
diff --git a/C1.source/Sources/AlignerCore/Windows/FinderTabSpaceAttributionPolicy.swift b/C1.source/Sources/AlignerCore/Windows/FinderTabSpaceAttributionPolicy.swift
index 0de281d..9c40e17 100644
--- a/C1.source/Sources/AlignerCore/Windows/FinderTabSpaceAttributionPolicy.swift
+++ b/C1.source/Sources/AlignerCore/Windows/FinderTabSpaceAttributionPolicy.swift
@@ -4,6 +4,7 @@
public enum FinderTabSpaceAttributionPolicy {
private static let finderBundleIdentifier = "com.apple.finder"
private static let minimumOverlapRatio: CGFloat = 0.85
+ private static let minimumSizeSimilarityRatio: CGFloat = 0.80
private static let minimumBestScoreGap: CGFloat = 0.05
public static func attributedRecords(_ records: [WindowEnumerationRecord]) -> [WindowEnumerationRecord] {
@@ -52,8 +53,7 @@
sameProcess(candidate, host)
}
let scoredHosts = compatibleHosts.compactMap { host -> (record: WindowEnumerationRecord, score: CGFloat)? in
- guard let score = overlapScore(candidate.frame, host.frame),
- score >= minimumOverlapRatio
+ guard let score = frameCompatibilityScore(candidate.frame, host.frame)
else {
return nil
}
@@ -79,6 +79,18 @@
let secondBest = scoredHosts[1]
return best.score - secondBest.score >= minimumBestScoreGap ? best.record : nil
+ }
+
+ private static func frameCompatibilityScore(_ lhs: CGRect?, _ rhs: CGRect?) -> CGFloat? {
+ guard let overlap = overlapScore(lhs, rhs),
+ overlap >= minimumOverlapRatio,
+ let sizeSimilarity = sizeSimilarityScore(lhs, rhs),
+ sizeSimilarity >= minimumSizeSimilarityRatio
+ else {
+ return nil
+ }
+
+ return min(overlap, sizeSimilarity)
}
private static func sameProcess(
@@ -115,6 +127,22 @@
return (intersection.width * intersection.height) / denominator
}
+ private static func sizeSimilarityScore(_ lhs: CGRect?, _ rhs: CGRect?) -> CGFloat? {
+ guard let lhs,
+ let rhs,
+ lhs.width > 0,
+ lhs.height > 0,
+ rhs.width > 0,
+ rhs.height > 0
+ else {
+ return nil
+ }
+
+ let widthSimilarity = min(lhs.width, rhs.width) / max(lhs.width, rhs.width)
+ let heightSimilarity = min(lhs.height, rhs.height) / max(lhs.height, rhs.height)
+ return min(widthSimilarity, heightSimilarity)
+ }
+
private static func copy(
_ record: WindowEnumerationRecord,
isFullscreen: Bool,
--
Gitblit v1.9.3