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/ContentView.swift |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

diff --git a/Apptag/ContentView.swift b/Apptag/ContentView.swift
index 59964a3..e2bf1c7 100644
--- a/Apptag/ContentView.swift
+++ b/Apptag/ContentView.swift
@@ -586,6 +586,7 @@
         .onReceive(NotificationCenter.default.publisher(for: .appLanguageDidChange)) { _ in
             let appsSnapshot = allApps
             DispatchQueue.global(qos: .userInitiated).async {
+                _ = AppleDefaultAppCatalog.relocalizeDefaultNotesForCurrentLanguage(apps: appsSnapshot)
                 _ = SmartStartService.relocalizeDefaultNotesForCurrentLanguage(apps: appsSnapshot)
                 DispatchQueue.main.async {
                     refreshApps(forceLayoutRefresh: true)
@@ -1814,12 +1815,18 @@
     }
 
     private func refreshAppsForOverlay() {
-        guard AppIndexer.shouldRefreshForSearchPathChanges() else { return }
+        // Each overlay show creates a fresh ContentView with empty `allApps`. The indexer
+        // cache may still be warm from a prior overlay/settings scan, so path-signature
+        // alone must not skip the first hydrate or the grid spinner never clears.
+        guard allApps.isEmpty || AppIndexer.shouldRefreshForSearchPathChanges() else { return }
         refreshApps()
     }
 
     private func refreshAppsForQuickSearch() {
-        guard AppIndexer.shouldRefreshForSearchPathChanges() else { return }
+        guard allApps.isEmpty
+            || quickSearchDocuments.isEmpty
+            || AppIndexer.shouldRefreshForSearchPathChanges()
+        else { return }
         refreshApps()
     }
 

--
Gitblit v1.9.3