Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>

This commit is contained in:
Matt Bruce 2026-02-11 19:06:37 -06:00
parent 236871f5bc
commit 9059eda108
15 changed files with 73 additions and 25 deletions

View File

@ -81,9 +81,19 @@
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
EA69EC522F3D5DDB00592220 /* Exceptions for "BusinessCardWatch Watch App" folder in "BusinessCardWatch Watch App" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Configuration/Watch.xcconfig,
);
target = EA837F972F11B16400077F87 /* BusinessCardWatch Watch App */;
};
EA837E5C2F106CB500077F87 /* Exceptions for "BusinessCard" folder in "BusinessCard" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Configuration/Base.xcconfig,
Configuration/Debug.xcconfig,
Configuration/Release.xcconfig,
Info.plist,
);
target = EA8379222F105F2600077F87 /* BusinessCard */;
@ -91,6 +101,7 @@
EACLIP0012F20000000000E /* Exceptions for "BusinessCardClip" folder in "BusinessCardClip" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Configuration/Clip.xcconfig,
Info.plist,
);
target = EACLIP0012F200000000004 /* BusinessCardClip */;
@ -118,6 +129,9 @@
};
EA837F992F11B16400077F87 /* BusinessCardWatch Watch App */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
EA69EC522F3D5DDB00592220 /* Exceptions for "BusinessCardWatch Watch App" folder in "BusinessCardWatch Watch App" target */,
);
path = "BusinessCardWatch Watch App";
sourceTree = "<group>";
};
@ -345,7 +359,7 @@
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 2600;
LastUpgradeCheck = 2600;
LastUpgradeCheck = 2630;
TargetAttributes = {
EA8379222F105F2600077F87 = {
CreatedOnToolsVersion = 26.0;
@ -500,6 +514,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@ -554,6 +569,7 @@
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
@ -565,6 +581,7 @@
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
@ -612,6 +629,7 @@
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
STRING_CATALOG_GENERATE_SYMBOLS = YES;
SWIFT_COMPILATION_MODE = wholemodule;
VALIDATE_PRODUCT = YES;
};
@ -637,7 +655,8 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_BackgroundColor = LaunchBackground;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -674,7 +693,8 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_BackgroundColor = LaunchBackground;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
@ -851,7 +871,7 @@
CODE_SIGN_ENTITLEMENTS = BusinessCardClip/BusinessCardClip.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
DEVELOPMENT_TEAM = 6R7KLBPBLZ;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = BusinessCardClip/Info.plist;
@ -860,7 +880,8 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_BackgroundColor = LaunchBackground;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
@ -889,7 +910,7 @@
CODE_SIGN_ENTITLEMENTS = BusinessCardClip/BusinessCardClip.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = "$(DEVELOPMENT_TEAM)";
DEVELOPMENT_TEAM = 6R7KLBPBLZ;
ENABLE_PREVIEWS = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = BusinessCardClip/Info.plist;
@ -898,7 +919,8 @@
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchScreen_BackgroundColor = LaunchBackground;
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown";
INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 26.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",

View File

@ -7,12 +7,12 @@
<key>BusinessCard.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
<integer>3</integer>
</dict>
<key>BusinessCardClip.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>3</integer>
<integer>1</integer>
</dict>
<key>BusinessCardWatch Watch App.xcscheme_^#shared#^_</key>
<dict>

View File

@ -1,5 +1,6 @@
import SwiftUI
import SwiftData
import AppIntents
import Bedrock
@main

View File

@ -6,6 +6,7 @@
//
import SwiftUI
import UIKit
import Bedrock
// MARK: - Device Size Tier
@ -20,7 +21,10 @@ enum DeviceSizeTier {
/// The current device's size tier based on screen dimensions.
static var current: DeviceSizeTier {
let bounds = UIScreen.main.bounds
let bounds = UIApplication.shared.connectedScenes
.compactMap { $0 as? UIWindowScene }
.first?.screen.bounds
?? CGRect(x: 0, y: 0, width: 390, height: 844)
let height = max(bounds.width, bounds.height)
let width = min(bounds.width, bounds.height)

View File

@ -801,10 +801,6 @@
}
}
},
"Show first-run onboarding again on next app launch" : {
"comment" : "A description of the reset onboarding feature.",
"isCommentAutoGenerated" : true
},
"Social Media" : {
},

View File

@ -221,6 +221,8 @@ struct OnboardingView: View {
switch status {
case .authorized:
.allowed
case .limited:
.allowed
case .notDetermined:
.notRequested
case .denied, .restricted:

View File

@ -58,18 +58,12 @@ final class QRScannerViewController: UIViewController, AVCaptureMetadataOutputOb
private func startScanning() {
guard let session = captureSession, !session.isRunning else { return }
let capturedSession = session
DispatchQueue.global(qos: .userInitiated).async {
capturedSession.startRunning()
}
session.startRunning()
}
private func stopScanning() {
guard let session = captureSession, session.isRunning else { return }
let capturedSession = session
DispatchQueue.global(qos: .userInitiated).async {
capturedSession.stopRunning()
}
session.stopRunning()
}
func metadataOutput(_ output: AVCaptureMetadataOutput, didOutput metadataObjects: [AVMetadataObject], from connection: AVCaptureConnection) {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -1,6 +1,7 @@
{
"images" : [
{
"filename" : "AppIcon.png",
"idiom" : "universal",
"platform" : "ios",
"size" : "1024x1024"

View File

@ -12,11 +12,11 @@
</array>
<key>com.apple.developer.icloud-services</key>
<array>
<string>CloudKit</string>
<string>CloudKit-Anonymous</string>
</array>
<key>com.apple.developer.parent-application-identifiers</key>
<array>
<string>$(AppIdentifierPrefix)$(APP_BUNDLE_IDENTIFIER)</string>
<string>$(AppIdentifierPrefix)com.mbrucedogs.BusinessCard</string>
</array>
</dict>
</plist>

View File

@ -1,14 +1,18 @@
import SwiftUI
import AppIntents
@main
struct BusinessCardClipApp: App {
@State private var recordName: String?
@State private var launchErrorMessage: String?
#if DEBUG
@State private var debugState: ClipDebugState?
#endif
var body: some Scene {
WindowGroup {
Group {
#if DEBUG
if let debugState {
ClipDebugHarnessView(initialState: debugState)
} else if let recordName {
@ -20,6 +24,17 @@ struct BusinessCardClipApp: App {
} else {
ClipLoadingView()
}
#else
if let recordName {
ClipRootView(recordName: recordName)
} else if let launchErrorMessage {
ClipErrorView(message: launchErrorMessage) {
self.launchErrorMessage = nil
}
} else {
ClipLoadingView()
}
#endif
}
.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { activity in
handleUserActivity(activity)

View File

@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

View File

@ -1,7 +1,8 @@
{
"images" : [
{
"idiom" : "watch",
"filename" : "AppIcon.png",
"idiom" : "universal",
"platform" : "watchos",
"size" : "1024x1024"
}

View File

@ -1,4 +1,5 @@
import SwiftUI
import AppIntents
@main
struct BusinessCardWatchApp: App {