From 4f5d7c13209555a114761f5027299f3ba1b42217 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Mon, 08 Jun 2026 13:27:09 +0800
Subject: [PATCH] Release 7.8.22 Apple default app catalog
---
Apptag/ApptagApp.swift | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++------
1 files changed, 52 insertions(+), 6 deletions(-)
diff --git a/Apptag/ApptagApp.swift b/Apptag/ApptagApp.swift
index c35007f..e155bc6 100644
--- a/Apptag/ApptagApp.swift
+++ b/Apptag/ApptagApp.swift
@@ -210,6 +210,15 @@
setupLaunchAtLogin()
suppressReopenUntil = Date().addingTimeInterval(1.0)
configureApplicationMenuWhenAvailable(retries: 200)
+ warmAppIndexInBackground()
+ relocalizeDefaultAppNotesForCurrentLanguageAsync()
+ }
+
+ /// Pre-scan application folders so the first App Grid open can hydrate from cache quickly.
+ private func warmAppIndexInBackground() {
+ DispatchQueue.global(qos: .utility).async {
+ _ = AppIndexer.scan(useCache: true)
+ }
}
func applicationDidBecomeActive(_ notification: Notification) {
@@ -430,7 +439,11 @@
}
if isQuickSearchOpen {
- NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+ NotificationCenter.default.post(
+ name: .tagLauncherQuickSearchDismissRequested,
+ object: nil,
+ userInfo: ["source": QuickSearchDismissSource.programmatic]
+ )
}
if !requiresForegroundOwnership {
@@ -446,6 +459,19 @@
) { [weak self] _ in
self?.setupMenuBar()
self?.configureApplicationMenuWhenAvailable()
+ self?.relocalizeDefaultAppNotesForCurrentLanguageAsync()
+ }
+ }
+
+ private func relocalizeDefaultAppNotesForCurrentLanguageAsync() {
+ DispatchQueue.global(qos: .utility).async {
+ let apps = AppIndexer.scan(useCache: true)
+ let appleChanged = AppleDefaultAppCatalog.relocalizeDefaultNotesForCurrentLanguage(apps: apps)
+ let smartStartChanged = SmartStartService.relocalizeDefaultNotesForCurrentLanguage(apps: apps)
+ guard appleChanged || smartStartChanged else { return }
+ DispatchQueue.main.async {
+ NotificationCenter.default.post(name: .tagLauncherDataDidChange, object: nil)
+ }
}
}
@@ -987,7 +1013,11 @@
isQuickSearchOpen = false
removeQuickSearchExternalMouseMonitor()
updateOverlayLevelForTextInput()
- NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+ NotificationCenter.default.post(
+ name: .tagLauncherQuickSearchDismissRequested,
+ object: nil,
+ userInfo: ["source": QuickSearchDismissSource.keyboard]
+ )
if shouldHideOverlayAfterDismiss {
quickSearchShouldHideOverlayOnClose = false
quickSearchOnlyOverlaySession = false
@@ -1526,7 +1556,11 @@
) { [weak self] _ in
DispatchQueue.main.async {
guard self?.isQuickSearchOpen == true else { return }
- NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+ NotificationCenter.default.post(
+ name: .tagLauncherQuickSearchDismissRequested,
+ object: nil,
+ userInfo: ["source": QuickSearchDismissSource.mouse]
+ )
}
}
}
@@ -1538,7 +1572,11 @@
) { [weak self] event in
guard let self, self.isQuickSearchOpen else { return event }
if event.window === self.overlayWindow {
- NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+ NotificationCenter.default.post(
+ name: .tagLauncherQuickSearchDismissRequested,
+ object: nil,
+ userInfo: ["source": QuickSearchDismissSource.mouse]
+ )
return nil
}
return event
@@ -1633,7 +1671,11 @@
updateOverlayLevelForTextInput()
quickSearchShouldHideOverlayOnClose = false
quickSearchOnlyOverlaySession = false
- NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+ NotificationCenter.default.post(
+ name: .tagLauncherQuickSearchDismissRequested,
+ object: nil,
+ userInfo: ["source": QuickSearchDismissSource.programmatic]
+ )
}
@objc private func switchLanguage(_ sender: NSMenuItem) {
@@ -1695,7 +1737,11 @@
}
if hit == self {
if quickSearchSuppressesBackdropDismiss {
- NotificationCenter.default.post(name: .tagLauncherQuickSearchDismissRequested, object: nil)
+ NotificationCenter.default.post(
+ name: .tagLauncherQuickSearchDismissRequested,
+ object: nil,
+ userInfo: ["source": QuickSearchDismissSource.backdrop]
+ )
return
}
if suppressBackdropDismiss {
--
Gitblit v1.9.3