diff options
| author | Christian Cleberg <[email protected]> | 2026-07-17 00:27:45 -0500 |
|---|---|---|
| committer | Christian Cleberg <[email protected]> | 2026-07-17 00:31:57 -0500 |
| commit | d3a27d06809e6744c092f9bed4bf0537843d0210 (patch) | |
| tree | 1527e935e11561dda4bc8c6cfaabdb92db5be95c /DomainDig.xcodeproj/project.pbxproj | |
| parent | 685f84ad0a8d2dc7b62125d5d9c3a50b75ae2468 (diff) | |
| download | domain-dig-d3a27d06809e6744c092f9bed4bf0537843d0210.tar.gz domain-dig-d3a27d06809e6744c092f9bed4bf0537843d0210.tar.bz2 domain-dig-d3a27d06809e6744c092f9bed4bf0537843d0210.zip | |
Complete v4.5.0: Run Sweep intent, detail deep link, and portfolio widget
Finishes the v4.5.0 "Home Screen & Shortcuts reach" scope that the tag shipped
partially:
- Add RunSweepIntent (opens the app and runs refreshAllTrackedDomains via the
in-process router) and expose it in DomainDigShortcuts.
- Extend the domaindig:// scheme with `sweep` and `domain` (detail) actions;
route .detail to present TrackedDomainDetailView and .sweep to refresh the
watchlist. Move DomainDigDeepLink into Shared/ so the widget can build links.
- Add a WidgetKit extension (DomainDigWidgetExtension) with small/medium/large
Portfolio widgets showing health counts, per-domain status, and certificate
countdowns; tapping a domain deep-links into its detail.
- Share portfolio state via an App Group (group.net.cleberg.DomainDig): the app
writes a DomainDigWidgetData snapshot on launch/foreground and on watchlist
changes and reloads timelines; the widget reads the same store.
Diffstat (limited to 'DomainDig.xcodeproj/project.pbxproj')
| -rw-r--r-- | DomainDig.xcodeproj/project.pbxproj | 173 |
1 files changed, 173 insertions, 0 deletions
diff --git a/DomainDig.xcodeproj/project.pbxproj b/DomainDig.xcodeproj/project.pbxproj index fe76a4e..dbd0873 100644 --- a/DomainDig.xcodeproj/project.pbxproj +++ b/DomainDig.xcodeproj/project.pbxproj @@ -14,8 +14,33 @@ 8BCA3CC02F9C8D57004B742C /* LocalAPIModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BCA3CBC2F9C8D57004B742C /* LocalAPIModels.swift */; }; 8BCA3CC12F9C8D57004B742C /* LocalAPIService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BCA3CBD2F9C8D57004B742C /* LocalAPIService.swift */; }; 8BF9DA872F9B13FB00EF41D5 /* DomainDataPortabilityService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BF9DA842F9B13FB00EF41D5 /* DomainDataPortabilityService.swift */; }; + 8BDA00010000000000000002 /* DomainDigWidgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 8BDA00010000000000000001 /* DomainDigWidgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 8BDA00010000000000000003 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 8B7800612F6090E300933221 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8BDA00010000000000000006; + remoteInfo = DomainDigWidgetExtension; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 8BDA00010000000000000005 /* Embed Foundation Extensions */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 13; + files = ( + 8BDA00010000000000000002 /* DomainDigWidgetExtension.appex in Embed Foundation Extensions */, + ); + name = "Embed Foundation Extensions"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + /* Begin PBXFileReference section */ 8B7800692F6090E300933221 /* DomainDig.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = DomainDig.app; sourceTree = BUILT_PRODUCTS_DIR; }; 8BBFEF032F9874AE00E8E144 /* DomainInspectionService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainInspectionService.swift; sourceTree = "<group>"; }; @@ -25,6 +50,7 @@ 8BCA3CBC2F9C8D57004B742C /* LocalAPIModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAPIModels.swift; sourceTree = "<group>"; }; 8BCA3CBD2F9C8D57004B742C /* LocalAPIService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAPIService.swift; sourceTree = "<group>"; }; 8BF9DA842F9B13FB00EF41D5 /* DomainDataPortabilityService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DomainDataPortabilityService.swift; sourceTree = "<group>"; }; + 8BDA00010000000000000001 /* DomainDigWidgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = DomainDigWidgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ @@ -37,6 +63,13 @@ ); target = 8B7800682F6090E300933221 /* DomainDig */; }; + 8BDA0001000000000000000F /* Exceptions for "DomainDigWidget" folder in "DomainDigWidgetExtension" target */ = { + isa = PBXFileSystemSynchronizedBuildFileExceptionSet; + membershipExceptions = ( + Info.plist, + ); + target = 8BDA00010000000000000006 /* DomainDigWidgetExtension */; + }; /* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ /* Begin PBXFileSystemSynchronizedRootGroup section */ @@ -48,6 +81,19 @@ path = DomainDig; sourceTree = "<group>"; }; + 8BDA0001000000000000000D /* Shared */ = { + isa = PBXFileSystemSynchronizedRootGroup; + path = Shared; + sourceTree = "<group>"; + }; + 8BDA0001000000000000000E /* DomainDigWidget */ = { + isa = PBXFileSystemSynchronizedRootGroup; + exceptions = ( + 8BDA0001000000000000000F /* Exceptions for "DomainDigWidget" folder in "DomainDigWidgetExtension" target */, + ); + path = DomainDigWidget; + sourceTree = "<group>"; + }; /* End PBXFileSystemSynchronizedRootGroup section */ /* Begin PBXFrameworksBuildPhase section */ @@ -58,6 +104,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8BDA00010000000000000008 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ @@ -65,6 +118,8 @@ isa = PBXGroup; children = ( 8B78006B2F6090E300933221 /* DomainDig */, + 8BDA0001000000000000000D /* Shared */, + 8BDA0001000000000000000E /* DomainDigWidget */, 8B78006A2F6090E300933221 /* Products */, 8BBFEF062F9874AE00E8E144 /* LookupSnapshot.swift */, 8BBFEF042F9874AE00E8E144 /* DomainReportBuilder.swift */, @@ -80,6 +135,7 @@ isa = PBXGroup; children = ( 8B7800692F6090E300933221 /* DomainDig.app */, + 8BDA00010000000000000001 /* DomainDigWidgetExtension.appex */, ); name = Products; sourceTree = "<group>"; @@ -94,13 +150,16 @@ 8B7800652F6090E300933221 /* Sources */, 8B7800662F6090E300933221 /* Frameworks */, 8B7800672F6090E300933221 /* Resources */, + 8BDA00010000000000000005 /* Embed Foundation Extensions */, ); buildRules = ( ); dependencies = ( + 8BDA00010000000000000004 /* PBXTargetDependency */, ); fileSystemSynchronizedGroups = ( 8B78006B2F6090E300933221 /* DomainDig */, + 8BDA0001000000000000000D /* Shared */, ); name = DomainDig; packageProductDependencies = ( @@ -109,8 +168,39 @@ productReference = 8B7800692F6090E300933221 /* DomainDig.app */; productType = "com.apple.product-type.application"; }; + 8BDA00010000000000000006 /* DomainDigWidgetExtension */ = { + isa = PBXNativeTarget; + buildConfigurationList = 8BDA0001000000000000000A /* Build configuration list for PBXNativeTarget "DomainDigWidgetExtension" */; + buildPhases = ( + 8BDA00010000000000000007 /* Sources */, + 8BDA00010000000000000008 /* Frameworks */, + 8BDA00010000000000000009 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + fileSystemSynchronizedGroups = ( + 8BDA0001000000000000000D /* Shared */, + 8BDA0001000000000000000E /* DomainDigWidget */, + ); + name = DomainDigWidgetExtension; + packageProductDependencies = ( + ); + productName = DomainDigWidgetExtension; + productReference = 8BDA00010000000000000001 /* DomainDigWidgetExtension.appex */; + productType = "com.apple.product-type.app-extension"; + }; /* End PBXNativeTarget section */ +/* Begin PBXTargetDependency section */ + 8BDA00010000000000000004 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 8BDA00010000000000000006 /* DomainDigWidgetExtension */; + targetProxy = 8BDA00010000000000000003 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXProject section */ 8B7800612F6090E300933221 /* Project object */ = { isa = PBXProject; @@ -127,6 +217,9 @@ }; }; }; + 8BDA00010000000000000006 = { + CreatedOnToolsVersion = 26.3; + }; }; }; buildConfigurationList = 8B7800642F6090E300933221 /* Build configuration list for PBXProject "DomainDig" */; @@ -144,6 +237,7 @@ projectRoot = ""; targets = ( 8B7800682F6090E300933221 /* DomainDig */, + 8BDA00010000000000000006 /* DomainDigWidgetExtension */, ); }; /* End PBXProject section */ @@ -156,6 +250,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8BDA00010000000000000009 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -173,6 +274,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8BDA00010000000000000007 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin XCBuildConfiguration section */ @@ -373,6 +481,62 @@ }; name = Release; }; + 8BDA0001000000000000000B /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_ENTITLEMENTS = DomainDigWidget/DomainDigWidget.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 37; + DEVELOPMENT_TEAM = ZCNAX3VL9D; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = DomainDigWidget/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 17.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 4.5.0; + PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DomainDig.DomainDigWidget; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + 8BDA0001000000000000000C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_ENTITLEMENTS = DomainDigWidget/DomainDigWidget.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 37; + DEVELOPMENT_TEAM = ZCNAX3VL9D; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = DomainDigWidget/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 17.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@executable_path/../../Frameworks", + ); + MARKETING_VERSION = 4.5.0; + PRODUCT_BUNDLE_IDENTIFIER = net.cleberg.DomainDig.DomainDigWidget; + PRODUCT_NAME = "$(TARGET_NAME)"; + SKIP_INSTALL = YES; + SWIFT_APPROACHABLE_CONCURRENCY = YES; + SWIFT_EMIT_LOC_STRINGS = YES; + SWIFT_UPCOMING_FEATURE_MEMBER_IMPORT_VISIBILITY = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -394,6 +558,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 8BDA0001000000000000000A /* Build configuration list for PBXNativeTarget "DomainDigWidgetExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 8BDA0001000000000000000B /* Debug */, + 8BDA0001000000000000000C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 8B7800612F6090E300933221 /* Project object */; |
