From 713a65f64bcb614b968fbbc24bf2370cb8fdb167 Mon Sep 17 00:00:00 2001 From: Matt Bruce Date: Mon, 16 Feb 2026 09:17:27 -0600 Subject: [PATCH] fixed sync issue Signed-off-by: Matt Bruce --- Andromida.xcodeproj/project.pbxproj | 8 ++++++-- Andromida/App/Views/Rituals/RitualsView.swift | 1 + Andromida/App/Views/RootView.swift | 8 ++++++++ Andromida/App/Views/Today/TodayView.swift | 1 + 4 files changed, 16 insertions(+), 2 deletions(-) diff --git a/Andromida.xcodeproj/project.pbxproj b/Andromida.xcodeproj/project.pbxproj index 192efc3..0daff51 100644 --- a/Andromida.xcodeproj/project.pbxproj +++ b/Andromida.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ EAC04D322F298D9B007F87EA /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC04D312F298D9B007F87EA /* WidgetKit.framework */; }; EAC04D342F298D9B007F87EA /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC04D332F298D9B007F87EA /* SwiftUI.framework */; }; EAC04D412F298D9C007F87EA /* AndromidaWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = EAC04D2F2F298D9B007F87EA /* AndromidaWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; + EAC04D522F26BD5B007F87EA /* CloudKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EAC04D532F26BD5C007F87EA /* CloudKit.framework */; }; EAC04E2C2F2998B2007F87EA /* Bedrock in Frameworks */ = {isa = PBXBuildFile; productRef = EAC04E2B2F2998B2007F87EA /* Bedrock */; }; /* End PBXBuildFile section */ @@ -60,6 +61,7 @@ EAC04D312F298D9B007F87EA /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; }; EAC04D332F298D9B007F87EA /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; }; EAC04D4D2F298DD9007F87EA /* AndromidaWidgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AndromidaWidgetExtension.entitlements; sourceTree = ""; }; + EAC04D532F26BD5C007F87EA /* CloudKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CloudKit.framework; path = System/Library/Frameworks/CloudKit.framework; sourceTree = SDKROOT; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -128,6 +130,7 @@ buildActionMask = 2147483647; files = ( EAC04AEE2F26BD5B007F87EA /* Bedrock in Frameworks */, + EAC04D522F26BD5B007F87EA /* CloudKit.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -185,6 +188,7 @@ EAC04D302F298D9B007F87EA /* Frameworks */ = { isa = PBXGroup; children = ( + EAC04D532F26BD5C007F87EA /* CloudKit.framework */, EAC04D312F298D9B007F87EA /* WidgetKit.framework */, EAC04D332F298D9B007F87EA /* SwiftUI.framework */, ); @@ -569,7 +573,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1; + MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(PRODUCT_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; @@ -606,7 +610,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.1; + MARKETING_VERSION = 1.2; PRODUCT_BUNDLE_IDENTIFIER = "$(APP_BUNDLE_IDENTIFIER)"; PRODUCT_NAME = "$(PRODUCT_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; diff --git a/Andromida/App/Views/Rituals/RitualsView.swift b/Andromida/App/Views/Rituals/RitualsView.swift index c29e9d7..4008670 100644 --- a/Andromida/App/Views/Rituals/RitualsView.swift +++ b/Andromida/App/Views/Rituals/RitualsView.swift @@ -62,6 +62,7 @@ struct RitualsView: View { startPoint: .topLeading, endPoint: .bottomTrailing )) + .refreshable { store.refresh() } .navigationTitle(String(localized: "Rituals")) .navigationBarTitleDisplayMode(horizontalSizeClass == .regular ? .inline : .large) .toolbar { diff --git a/Andromida/App/Views/RootView.swift b/Andromida/App/Views/RootView.swift index 578c914..670ce8e 100644 --- a/Andromida/App/Views/RootView.swift +++ b/Andromida/App/Views/RootView.swift @@ -131,6 +131,14 @@ struct RootView: View { showOverlay: useDebugOverlay, minimumSeconds: useDebugOverlay ? debugForegroundRefreshMinimumSeconds : foregroundRefreshMinimumSeconds ) + // Delayed refreshes to catch CloudKit sync that completes after app activation. + // CloudKit fetch can take 5–10+ seconds; NSPersistentStoreRemoteChange is unreliable. + for delay in [5.0, 10.0] { + Task { @MainActor in + try? await Task.sleep(for: .seconds(delay)) + store.refresh() + } + } } else if newPhase == .background { // Prepare for next resume isResumingFromBackground = true diff --git a/Andromida/App/Views/Today/TodayView.swift b/Andromida/App/Views/Today/TodayView.swift index 5cc925c..1c20c22 100644 --- a/Andromida/App/Views/Today/TodayView.swift +++ b/Andromida/App/Views/Today/TodayView.swift @@ -78,6 +78,7 @@ struct TodayView: View { startPoint: .topLeading, endPoint: .bottomTrailing )) + .refreshable { store.refresh() } .navigationTitle(String(localized: "Today")) .navigationBarTitleDisplayMode(horizontalSizeClass == .regular ? .inline : .large) .sheet(isPresented: .init(