diff --git a/ExportOptions.plist b/ExportOptions.plist index ac3b677..fd90ded 100644 --- a/ExportOptions.plist +++ b/ExportOptions.plist @@ -7,7 +7,7 @@ Note: `method = app-store-connect` is the current name (Xcode 15.3+). On older Xcode use `app-store` instead. Signing is automatic — Xcode manages the distribution profile for team - 3XPAYVD6BP (needs an "Apple Distribution" cert + the App ID registered; see signing/README.md). + L7UDTQ6F5W (needs an "Apple Distribution" cert + the App ID registered; see signing/README.md). --> @@ -17,7 +17,7 @@ destination upload teamID - 3XPAYVD6BP + L7UDTQ6F5W signingStyle automatic uploadSymbols diff --git a/NucleicRemote/NucleicRemote.xcodeproj/project.pbxproj b/NucleicRemote/NucleicRemote.xcodeproj/project.pbxproj index a6ff472..26cd581 100644 --- a/NucleicRemote/NucleicRemote.xcodeproj/project.pbxproj +++ b/NucleicRemote/NucleicRemote.xcodeproj/project.pbxproj @@ -8,9 +8,11 @@ /* Begin PBXBuildFile section */ BF00000000000000000001 /* NucleicProtocol in Frameworks */ = {isa = PBXBuildFile; productRef = PD00000000000000000001 /* NucleicProtocol */; }; + E7313E872FEF723300717105 /* app-logo-file.icon in Resources */ = {isa = PBXBuildFile; fileRef = E7313E862FEF723300717105 /* app-logo-file.icon */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ + E7313E862FEF723300717105 /* app-logo-file.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = "app-logo-file.icon"; sourceTree = ""; }; FR00000000000000000001 /* NucleicRemote.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NucleicRemote.app; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ @@ -52,6 +54,7 @@ children = ( SG00000000000000000001 /* NucleicRemote */, GR00000000000000000002 /* Products */, + E7313E862FEF723300717105 /* app-logo-file.icon */, ); sourceTree = ""; }; @@ -131,6 +134,7 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + E7313E872FEF723300717105 /* app-logo-file.icon in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -183,14 +187,17 @@ BC00000000000000000003 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_APPICON_NAME = "app-logo-file"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 3XPAYVD6BP; + DEVELOPMENT_TEAM = L7UDTQ6F5W; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = NucleicRemote/Info.plist; + INFOPLIST_KEY_NSCameraUsageDescription = "Scan the pairing QR code shown on your Mac."; + INFOPLIST_KEY_NSLocalNetworkUsageDescription = "Connect to your Mac running Nucleic on the local network."; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; @@ -199,9 +206,14 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.nucleic.remote; + MARKETING_VERSION = 0.1.0; + PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; @@ -211,14 +223,17 @@ BC00000000000000000004 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_APPICON_NAME = "app-logo-file"; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = 3XPAYVD6BP; + DEVELOPMENT_TEAM = L7UDTQ6F5W; ENABLE_PREVIEWS = YES; GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = NucleicRemote/Info.plist; + INFOPLIST_KEY_NSCameraUsageDescription = "Scan the pairing QR code shown on your Mac."; + INFOPLIST_KEY_NSLocalNetworkUsageDescription = "Connect to your Mac running Nucleic on the local network."; INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; INFOPLIST_KEY_UILaunchScreen_Generation = YES; INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; @@ -227,9 +242,14 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.nucleic.remote; + MARKETING_VERSION = 0.1.0; + PRODUCT_BUNDLE_IDENTIFIER = "xyz.blakeslee.nucleic-remote"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; + SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; + SUPPORTS_MACCATALYST = NO; + SUPPORTS_MAC_DESIGNED_FOR_IPHONE_IPAD = NO; + SUPPORTS_XR_DESIGNED_FOR_IPHONE_IPAD = NO; SWIFT_EMIT_LOC_STRINGS = YES; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; diff --git a/NucleicRemote/NucleicRemote.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/NucleicRemote/NucleicRemote.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index 4f94944..78e347e 100644 --- a/NucleicRemote/NucleicRemote.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/NucleicRemote/NucleicRemote.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "23696d531d06a404cce2a1fb94c41e467624549bade00f7f85d0fc1f4c513c6a", + "originHash" : "997519e7bf6b3bb52f6f766bab10b0bf950c6beb140aa897dc50ba77eaaa5801", "pins" : [ { "identity" : "async-http-client", @@ -24,8 +24,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/grpc/grpc-swift-2.git", "state" : { - "revision" : "28cdd63ef88583ddc67d7bb179eab46fab465ce9", - "version" : "2.4.2" + "revision" : "21fe69ab7ce0e87ac089534733c52f037e74a3eb", + "version" : "2.4.1" } }, { @@ -33,8 +33,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/grpc/grpc-swift-nio-transport.git", "state" : { - "revision" : "2ca31f06658ed288a2560e23ad649acbb3d6b3a3", - "version" : "2.9.0" + "revision" : "e7d463749f9037b047dcd6da4e633718ddc432b8", + "version" : "2.8.0" } }, { @@ -42,8 +42,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/grpc/grpc-swift-protobuf.git", "state" : { - "revision" : "176c5a434fd76f6f479848d1a8f7d44967534168", - "version" : "2.4.1" + "revision" : "b05885fa9bdd88f1eab2e7162f1ee81340b0da33", + "version" : "2.4.0" } }, { @@ -105,8 +105,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-certificates.git", "state" : { - "revision" : "eaa10d47d19919979dd8df22ff4fd6349b1108d4", - "version" : "1.19.2" + "revision" : "bde8ca32a096825dfce37467137c903418c1893d", + "version" : "1.19.1" } }, { @@ -168,8 +168,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-log.git", "state" : { - "revision" : "a878e7f8f46cfc0e1125e565b5c08e7d5272dc9a", - "version" : "1.14.0" + "revision" : "92448c359f00ebe36ae97d3bd9086f13c7692b5a", + "version" : "1.13.2" } }, { @@ -177,8 +177,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-nio.git", "state" : { - "revision" : "cd3e1152083706d77b223fb29110e590efcc70c0", - "version" : "2.101.2" + "revision" : "77b84ac2cd2ac9e4ac67d19f045fd5b434f56967", + "version" : "2.101.0" } }, { diff --git a/NucleicRemote/NucleicRemote/HeartbeatReporter.swift b/NucleicRemote/NucleicRemote/HeartbeatReporter.swift index e7e1a44..a9a5701 100644 --- a/NucleicRemote/NucleicRemote/HeartbeatReporter.swift +++ b/NucleicRemote/NucleicRemote/HeartbeatReporter.swift @@ -63,7 +63,7 @@ enum HeartbeatReporter { // MARK: - Anonymous install id (Keychain; separate from the Noise identity) - private static let installAccount = "com.nucleic.remote.installid" + private static let installAccount = "xyz.blakeslee.nucleic.remote.installid" private static func installID() -> String { if let data = keychainRead(installAccount), let id = String(data: data, encoding: .utf8) { diff --git a/NucleicRemote/NucleicRemote/Info.plist b/NucleicRemote/NucleicRemote/Info.plist index f5d6516..8eb7f6c 100644 --- a/NucleicRemote/NucleicRemote/Info.plist +++ b/NucleicRemote/NucleicRemote/Info.plist @@ -2,10 +2,6 @@ - NSCameraUsageDescription - Scan the pairing QR code shown on your Mac. - NSLocalNetworkUsageDescription - Connect to your Mac running Nucleic on the local network. NSBonjourServices _nucleic._tcp diff --git a/NucleicRemote/NucleicRemote/Models/IdentityStore.swift b/NucleicRemote/NucleicRemote/Models/IdentityStore.swift index 57e8724..84c8c8c 100644 --- a/NucleicRemote/NucleicRemote/Models/IdentityStore.swift +++ b/NucleicRemote/NucleicRemote/Models/IdentityStore.swift @@ -17,7 +17,7 @@ struct PairedHost: Codable, Equatable { /// Loads/persists this device's long-term `DeviceIdentity` (Keychain) and the pinned host /// (UserDefaults). The identity is generated once on first launch and reused thereafter. enum IdentityStore { - private static let keychainAccount = "com.nucleic.remote.identity" + private static let keychainAccount = "xyz.blakeslee.nucleic.remote.identity" private static let pairedHostKey = "nucleic.pairedHost" private static let deviceIDKey = "nucleic.deviceID" diff --git a/NucleicRemote/NucleicRemote/Views/PairingScannerView.swift b/NucleicRemote/NucleicRemote/Views/PairingScannerView.swift index 99dd3db..a2e36ff 100644 --- a/NucleicRemote/NucleicRemote/Views/PairingScannerView.swift +++ b/NucleicRemote/NucleicRemote/Views/PairingScannerView.swift @@ -4,8 +4,8 @@ import NucleicProtocol import os /// Filterable scanner diagnostics — in Console.app / Xcode, filter by subsystem -/// `com.nucleic.remote` (category `scanner`) or search the "📷" marker. -private let scannerLog = Logger(subsystem: "com.nucleic.remote", category: "scanner") +/// `xyz.blakeslee.nucleic.remote` (category `scanner`) or search the "📷" marker. +private let scannerLog = Logger(subsystem: "xyz.blakeslee.nucleic.remote", category: "scanner") /// Why the live camera feed isn't showing, so the scanner never sits on a silent black screen. enum ScannerCameraState: Equatable { diff --git a/NucleicRemote/app-logo-file.icon/Assets/logo-v1-dark 2.png b/NucleicRemote/app-logo-file.icon/Assets/logo-v1-dark 2.png new file mode 100644 index 0000000..e89858a Binary files /dev/null and b/NucleicRemote/app-logo-file.icon/Assets/logo-v1-dark 2.png differ diff --git a/NucleicRemote/app-logo-file.icon/icon.json b/NucleicRemote/app-logo-file.icon/icon.json new file mode 100644 index 0000000..8527fff --- /dev/null +++ b/NucleicRemote/app-logo-file.icon/icon.json @@ -0,0 +1,37 @@ +{ + "fill" : "system-light", + "groups" : [ + { + "hidden" : false, + "layers" : [ + { + "glass" : false, + "hidden" : false, + "image-name" : "logo-v1-dark 2.png", + "name" : "logo-v1-dark 2", + "position" : { + "scale" : 0.25, + "translation-in-points" : [ + 0, + 0 + ] + } + } + ], + "shadow" : { + "kind" : "neutral", + "opacity" : 0.6 + }, + "translucency" : { + "enabled" : true, + "value" : 0.2 + } + } + ], + "supported-platforms" : { + "circles" : [ + "watchOS" + ], + "squares" : "shared" + } +} \ No newline at end of file