Commit Diff


commit - 2fa019fcdb07a810253f02630b7d43244b8e6ae3
commit + 980b7e0ab8c573e26a0c3bc6fd7bf654485fb976
blob - 1d7727f6836df33996b61fa8eec8ac9602905853
blob + 91e9feb4cbaeba2fd1858dad3d4c9e4ac291c928
--- apple/Shared/Alias.swift
+++ apple/Shared/Alias.swift
@@ -2,7 +2,7 @@ import Foundation
 import SwiftUI
 
 struct Alias: Hashable, Codable, Identifiable {
-    var id: String
+	var id: String
 	var recipient: String
 	var destination: String
 	var expiry: Date
@@ -10,14 +10,20 @@ struct Alias: Hashable, Codable, Identifiable {
 }
 
 struct fAlias: Hashable, Codable {
-    var Recipient: String
-    var Destination: String
-    var Expiry: String
-    var Note: String
+	var Recipient: String
+	var Destination: String
+	var Expiry: String
+	var Note: String
 }
 
+func parseRFC3339(s: String) -> Date {
+	let rfc3339 = DateFormatter()
+	rfc3339.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
+	return rfc3339.date(from: s) ?? Date(timeIntervalSince1970: 0)
+}
+
 func createAlias(note: String, expiry: Date) -> Void {
-    print("TODO tried to create an alias")
+	print("TODO tried to create an alias")
 }
 
 func deleteAlias(recipient: String) -> Void {
blob - 2e4904004e9ef2d86622b33d5ace5951419d6e77
blob + 74fb80ed4d7f7d140c0a65d5b53f4996f99f8475
--- apple/Shared/AliasData.swift
+++ apple/Shared/AliasData.swift
@@ -21,14 +21,12 @@ func load(_ filename: String) -> [Alias] {
         var faliases: [fAlias]
         var aliases = [Alias]()
         faliases = try decoder.decode([fAlias].self, from: data)
-		let rfc3339 = DateFormatter()
-		rfc3339.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZZZZZ"
 		for fa in faliases {
             let a = Alias(
                 id: fa.Recipient,
 				recipient: fa.Recipient,
 				destination: fa.Destination,
-				expiry: rfc3339.date(from: fa.Expiry) ?? Date(timeIntervalSince1970: 0),
+				expiry: parseRFC3339(s: fa.Expiry),
 				note: fa.Note
 			)
             aliases.append(a)
blob - 9eaba13a4141a66a8956d2c31da261e80e4e8b95
blob + 3632c9650da248b23b71279b22d97097b41c72f1
--- apple/Shared/AliasDetail.swift
+++ apple/Shared/AliasDetail.swift
@@ -1,17 +1,16 @@
 import SwiftUI
 
 struct AliasDetail: View {
-    var alias: Alias
-
-    var body: some View {
-			List {
-				AliasAttribute(key: "Recipient", value: alias.recipient)
-				AliasAttribute(key: "Destination", value: alias.destination)
-				AliasAttribute(key: "Expiry", value: alias.expiry.description)
-				Section(header: Text("Note")) {
-					Text(alias.note)
-				}
+	var alias: Alias
+	var body: some View {
+		List {
+			AliasAttribute(key: "Recipient", value: alias.recipient + "@mailmux.net", selectable: true)
+			AliasAttribute(key: "Destination", value: alias.destination)
+			AliasAttribute(key: "Expiry", value: alias.expiry.description)
+			Section(header: Text("Note")) {
+				Text(alias.note)
 			}
+		}
 			.listStyle(.automatic)
 			.navigationTitle(alias.recipient)
 			.toolbar {
@@ -20,20 +19,33 @@ struct AliasDetail: View {
 						deleteAlias(recipient: alias.recipient)
 					}) {
 						Label("Delete", systemImage: "trash").foregroundColor(.red)
-					}
 				}
 			}
 		}
+	}
 }
 
 struct AliasAttribute: View {
 	var key: String
 	var value: String
+	var selectable: Bool = false
 	var body: some View {
 		HStack {
 			Text(key).bold()
 			Spacer()
-			Text(value)
+			if selectable {
+				Text(value).textSelection(.enabled)
+			} else {
+				Text(value)
+			}
 		}
 	}
 }
+struct AliasDetail_Previews: PreviewProvider {
+	static var previews: some View {
+		Group {
+			AliasDetail(alias: aliases[0])
+			AliasDetail(alias: aliases[1])
+		}
+	}
+}
blob - 6e254c565bfa91f843fd20f222472df2245483d9
blob + b5c1043d0818fe8e6bd5f95920f50fc0c9d8b97a
--- apple/Shared/mailmuxApp.swift
+++ apple/Shared/mailmuxApp.swift
@@ -9,7 +9,7 @@ struct mailmuxApp: App {
         .commands {
             CommandGroup(after: CommandGroupPlacement.newItem) {
                 Button("New Alias...", action: {
-                    print("clicked new from menu")
+                    print("TODO new alias command")
                 })
             }
         }
@@ -28,53 +28,85 @@ struct ContentView: View {
 }
 
 struct AliasList: View {
-    var aliases: [Alias]
-    @State private var createPresented: Bool = false
-    var body: some View {
-        NavigationView {
-            List(aliases) { alias in
-                NavigationLink {
-                    AliasDetail(alias: alias)
-                }
-                label: {
-                    AliasRow(alias: alias)
-                }
-            }
-            .navigationTitle("Aliases")
-            .sheet(isPresented: $createPresented) {
-                Create(presented: $createPresented)
-            }
-            .toolbar {
-				ToolbarItem(placement: .primaryAction) {
-                    Button(action: {
-                        createPresented = true
-                    }) {
-                        Label("Create", systemImage: "plus")
-                    }
-                }
-            }
-        }
-    }
+	@State var aliases: [Alias]
+	@State private var createPresented: Bool = false
+	@State private var settingsPresented: Bool = false
+	@State private var didError: Bool = false
+	var body: some View {
+		NavigationView {
+			List(aliases) { alias in
+				NavigationLink {
+					AliasDetail(alias: alias)
+				} label: {
+				    AliasRow(alias: alias)
+				}
+			}
+			.refreshable {
+				do {
+					aliases = try await getAliases()
+				} catch {
+					print("refresh aliases: \(error)")
+					didError = true
+				}
+			}
+			.navigationTitle("Aliases")
+			.sheet(isPresented: $createPresented) {
+				Create(presented: $createPresented)
+			}
+			#if !os(macOS)
+			.sheet(isPresented: $settingsPresented) {
+				iSettings(presented: $settingsPresented)
+			}
+			#endif
+			.alert("Error", isPresented: $didError) {
+			} message: {
+				Text("Sumting wong!")
+			}
+			.toolbar {
+				ToolbarItem(placement: .automatic) {
+					Button(action: {
+						createPresented = true
+					}) {
+						Label("Create", systemImage: "plus")
+					}
+				}
+				ToolbarItem(placement: .navigation) {
+					Button(action: {
+						settingsPresented = true
+					}) {
+						Label("Settings", systemImage: "gear")
+					}
+				}
+			}
+		}
+	}
 }
 						
 struct CredentialsForm: View {
 	@AppStorage("username") private var username = ""
 	@AppStorage("password") private var password = ""
-
 	var body: some View {
 		Form {
-			TextField(text: $username, prompt: Text("me@example.com")) {
-				Text("Username:")
+			Section(header: Text("Account")) {
+				TextField(text: $username, prompt: Text("me@example.com")) {
+					Text("Username:").bold()
+				}
+				SecureField(text: $password, prompt: Text("Required")) {
+					Text("Password:").bold()
+				}
 			}
-			SecureField(text: $password, prompt: Text("Required")) {
-				Text("Password:")
+			Button(action: {
+				setCredentials(user: username, password: password)
+			}) {
+				Text("Sign in")
 			}
 		}
 	}
 }
 
-struct ContentView_Previews: PreviewProvider {
-    static var previews: some View {
-        ContentView()
-    }
+
+struct AliasList_Previews: PreviewProvider {
+	static var previews: some View {
+		AliasList(aliases: aliases)
+	}
 }
blob - 801d4508191112976ad8efbcbc377429c0926e8c
blob + c611cc2258f0d1a4eb8a067f8aa6e0eb7f8c583e
--- apple/iOS/Create.swift
+++ apple/iOS/Create.swift
@@ -1,33 +1,32 @@
 import SwiftUI
 
 struct Create: View {
-    @Binding var presented: Bool
-    @State private var note = ""
-    @State private var expiry = Date()
-    var body: some View {
-        NavigationView {
-            Form {
-                DatePicker("Expiry:", selection: $expiry, in: PartialRangeFrom(Date()))
-                Section(header: Text("Note")) {
-                    TextEditor(text: $note)
-                }
-            }
-            .toolbar {
-                ToolbarItem(placement: .confirmationAction) {
-                    Button("Create", action: {
-                        createAlias(note: note, expiry: expiry)
-                        presented = false
-                    })
-                    .keyboardShortcut(.return)
-                }
-                ToolbarItem(placement: .cancellationAction) {
-                    Button("Cancel", action: {
-                        presented = false
-                    })
-                    .keyboardShortcut(.cancelAction)
-                }
-            }
-
-        }
-    }
+	@Binding var presented: Bool
+	@State private var note = ""
+	@State private var expiry = Date()
+	var body: some View {
+		NavigationView {
+			Form {
+				DatePicker("Expiry:", selection: $expiry, in: PartialRangeFrom(Date()))
+				Section(header: Text("Note")) {
+					TextEditor(text: $note)
+				}
+			}
+				.toolbar {
+					ToolbarItem(placement: .confirmationAction) {
+						Button("Create", action: {
+							createAlias(note: note, expiry: expiry)
+							presented = false
+						})
+							.keyboardShortcut(.return)
+					}
+					ToolbarItem(placement: .cancellationAction) {
+						Button("Cancel", action: {
+							presented = false
+						})
+							.keyboardShortcut(.cancelAction)
+					}
+				}
+		}
+	}
 }
blob - 983e6002d278b14e1d2d88402e885aa98ebdb151
blob + 097b7d37e87391a913a330ac0e27c6fa4f56d14a
--- apple/macOS/Preferences.swift
+++ apple/macOS/Preferences.swift
@@ -2,12 +2,12 @@ import SwiftUI
 
 struct Preferences: View {
     var body: some View {
-        Spacer()
-        HStack {
-            Spacer()
-            CredentialsForm()
-            Spacer()
-        }
-        Spacer()
+        CredentialsForm()
     }
 }
+
+struct Preferences_Previews: PreviewProvider {
+    static var previews: some View {
+        Preferences()
+    }
+}
blob - a3f6560f003e204b3f28e611394adc841c641f48
blob + 26fdb94e6e24f1d8ef95816bdf90bb852204db0c
--- apple/mailmux.xcodeproj/project.pbxproj
+++ apple/mailmux.xcodeproj/project.pbxproj
@@ -7,27 +7,25 @@
 	objects = {
 
 /* Begin PBXBuildFile section */
-		405422A8282E36E700B778CF /* Tests_iOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422A7282E36E700B778CF /* Tests_iOS.swift */; };
-		405422AA282E36E700B778CF /* Tests_iOSLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422A9282E36E700B778CF /* Tests_iOSLaunchTests.swift */; };
-		405422B4282E36E700B778CF /* Tests_macOS.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422B3282E36E700B778CF /* Tests_macOS.swift */; };
-		405422B6282E36E700B778CF /* Tests_macOSLaunchTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422B5282E36E700B778CF /* Tests_macOSLaunchTests.swift */; };
 		405422B8282E36E700B778CF /* mailmuxApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4054228F282E36E400B778CF /* mailmuxApp.swift */; };
 		405422BB282E36E700B778CF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 40542291282E36E700B778CF /* Assets.xcassets */; };
 		405422BC282E36E700B778CF /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 40542291282E36E700B778CF /* Assets.xcassets */; };
-		405422D4282E38A100B778CF /* AliasList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422CB282E38A100B778CF /* AliasList.swift */; };
 		405422D5282E38A100B778CF /* aliases.json in Resources */ = {isa = PBXBuildFile; fileRef = 405422CC282E38A100B778CF /* aliases.json */; };
-		405422D8282E38A100B778CF /* AliasData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422CF282E38A100B778CF /* AliasData.swift */; };
 		405422DA282E38A100B778CF /* Alias.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422D1282E38A100B778CF /* Alias.swift */; };
 		405422DC282E38A100B778CF /* AliasRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422D3282E38A100B778CF /* AliasRow.swift */; };
+		4065B9132872DB4000D3C169 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4065B9122872DB4000D3C169 /* Client.swift */; };
+		4065B9142872DB4000D3C169 /* Client.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4065B9122872DB4000D3C169 /* Client.swift */; };
 		4068C10D282E730300455B04 /* mailmuxApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4054228F282E36E400B778CF /* mailmuxApp.swift */; };
 		4068C10E282E730600455B04 /* Alias.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422D1282E38A100B778CF /* Alias.swift */; };
-		4068C10F282E730900455B04 /* AliasData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422CF282E38A100B778CF /* AliasData.swift */; };
 		4068C110282E730C00455B04 /* AliasRow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422D3282E38A100B778CF /* AliasRow.swift */; };
-		4068C111282E730F00455B04 /* AliasList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 405422CB282E38A100B778CF /* AliasList.swift */; };
 		4068C113282E732E00455B04 /* aliases.json in Resources */ = {isa = PBXBuildFile; fileRef = 405422CC282E38A100B778CF /* aliases.json */; };
 		4068C115282E74A300455B04 /* Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4068C114282E74A300455B04 /* Create.swift */; };
 		408C2D95282E8DEF00540E59 /* Create.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408C2D94282E8DEF00540E59 /* Create.swift */; };
-		408C2D97282E9B1600540E59 /* Settings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408C2D96282E9B1600540E59 /* Settings.swift */; };
+		408C2D97282E9B1600540E59 /* iSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408C2D96282E9B1600540E59 /* iSettings.swift */; };
+		40B1755B2872B38700F545A1 /* AliasDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B175592872B38700F545A1 /* AliasDetail.swift */; };
+		40B1755C2872B38700F545A1 /* AliasDetail.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B175592872B38700F545A1 /* AliasDetail.swift */; };
+		40B1755D2872B38700F545A1 /* AliasData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B1755A2872B38700F545A1 /* AliasData.swift */; };
+		40B1755E2872B38700F545A1 /* AliasData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40B1755A2872B38700F545A1 /* AliasData.swift */; };
 		40E153E5282E6CF900D30F9B /* Preferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40E153E4282E6CF900D30F9B /* Preferences.swift */; };
 /* End PBXBuildFile section */
 
@@ -55,19 +53,17 @@
 		4054229C282E36E700B778CF /* mailmux.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = mailmux.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		4054229E282E36E700B778CF /* macOS.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = macOS.entitlements; sourceTree = "<group>"; };
 		405422A3282E36E700B778CF /* Tests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
-		405422A7282E36E700B778CF /* Tests_iOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOS.swift; sourceTree = "<group>"; };
-		405422A9282E36E700B778CF /* Tests_iOSLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_iOSLaunchTests.swift; sourceTree = "<group>"; };
 		405422AF282E36E700B778CF /* Tests macOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Tests macOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
-		405422B3282E36E700B778CF /* Tests_macOS.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOS.swift; sourceTree = "<group>"; };
-		405422B5282E36E700B778CF /* Tests_macOSLaunchTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Tests_macOSLaunchTests.swift; sourceTree = "<group>"; };
-		405422CB282E38A100B778CF /* AliasList.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AliasList.swift; path = Shared/AliasList.swift; sourceTree = SOURCE_ROOT; };
 		405422CC282E38A100B778CF /* aliases.json */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.json; name = aliases.json; path = Shared/aliases.json; sourceTree = SOURCE_ROOT; };
-		405422CF282E38A100B778CF /* AliasData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AliasData.swift; path = Shared/AliasData.swift; sourceTree = SOURCE_ROOT; };
 		405422D1282E38A100B778CF /* Alias.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Alias.swift; path = Shared/Alias.swift; sourceTree = SOURCE_ROOT; };
 		405422D3282E38A100B778CF /* AliasRow.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = AliasRow.swift; path = Shared/AliasRow.swift; sourceTree = SOURCE_ROOT; };
+		4065B9122872DB4000D3C169 /* Client.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Client.swift; sourceTree = "<group>"; };
+		4065B9182873105700D3C169 /* mailmux--iOS--Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = "mailmux--iOS--Info.plist"; sourceTree = "<group>"; };
 		4068C114282E74A300455B04 /* Create.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Create.swift; sourceTree = "<group>"; };
 		408C2D94282E8DEF00540E59 /* Create.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Create.swift; sourceTree = "<group>"; };
-		408C2D96282E9B1600540E59 /* Settings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Settings.swift; sourceTree = "<group>"; };
+		408C2D96282E9B1600540E59 /* iSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = iSettings.swift; sourceTree = "<group>"; };
+		40B175592872B38700F545A1 /* AliasDetail.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AliasDetail.swift; sourceTree = "<group>"; };
+		40B1755A2872B38700F545A1 /* AliasData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AliasData.swift; sourceTree = "<group>"; };
 		40E153E4282E6CF900D30F9B /* Preferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Preferences.swift; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -106,11 +102,10 @@
 		40542289282E36E400B778CF = {
 			isa = PBXGroup;
 			children = (
+				4065B9182873105700D3C169 /* mailmux--iOS--Info.plist */,
 				408C2D93282E8DE400540E59 /* iOS */,
 				4054228E282E36E400B778CF /* Shared */,
 				4054229D282E36E700B778CF /* macOS */,
-				405422A6282E36E700B778CF /* Tests iOS */,
-				405422B2282E36E700B778CF /* Tests macOS */,
 				40542297282E36E700B778CF /* Products */,
 			);
 			sourceTree = "<group>";
@@ -118,13 +113,14 @@
 		4054228E282E36E400B778CF /* Shared */ = {
 			isa = PBXGroup;
 			children = (
+				40B1755A2872B38700F545A1 /* AliasData.swift */,
+				40B175592872B38700F545A1 /* AliasDetail.swift */,
 				4054228F282E36E400B778CF /* mailmuxApp.swift */,
 				405422D1282E38A100B778CF /* Alias.swift */,
-				405422CF282E38A100B778CF /* AliasData.swift */,
 				405422D3282E38A100B778CF /* AliasRow.swift */,
-				405422CB282E38A100B778CF /* AliasList.swift */,
 				40542291282E36E700B778CF /* Assets.xcassets */,
 				405422CC282E38A100B778CF /* aliases.json */,
+				4065B9122872DB4000D3C169 /* Client.swift */,
 			);
 			path = Shared;
 			sourceTree = "<group>";
@@ -149,31 +145,13 @@
 				4054229E282E36E700B778CF /* macOS.entitlements */,
 			);
 			path = macOS;
-			sourceTree = "<group>";
-		};
-		405422A6282E36E700B778CF /* Tests iOS */ = {
-			isa = PBXGroup;
-			children = (
-				405422A7282E36E700B778CF /* Tests_iOS.swift */,
-				405422A9282E36E700B778CF /* Tests_iOSLaunchTests.swift */,
-			);
-			path = "Tests iOS";
 			sourceTree = "<group>";
 		};
-		405422B2282E36E700B778CF /* Tests macOS */ = {
-			isa = PBXGroup;
-			children = (
-				405422B3282E36E700B778CF /* Tests_macOS.swift */,
-				405422B5282E36E700B778CF /* Tests_macOSLaunchTests.swift */,
-			);
-			path = "Tests macOS";
-			sourceTree = "<group>";
-		};
 		408C2D93282E8DE400540E59 /* iOS */ = {
 			isa = PBXGroup;
 			children = (
 				408C2D94282E8DEF00540E59 /* Create.swift */,
-				408C2D96282E9B1600540E59 /* Settings.swift */,
+				408C2D96282E9B1600540E59 /* iSettings.swift */,
 			);
 			path = iOS;
 			sourceTree = "<group>";
@@ -259,7 +237,7 @@
 			attributes = {
 				BuildIndependentTargetsInParallel = 1;
 				LastSwiftUpdateCheck = 1330;
-				LastUpgradeCheck = 1330;
+				LastUpgradeCheck = 1340;
 				TargetAttributes = {
 					40542295282E36E700B778CF = {
 						CreatedOnToolsVersion = 13.3.1;
@@ -339,12 +317,13 @@
 			buildActionMask = 2147483647;
 			files = (
 				4068C10E282E730600455B04 /* Alias.swift in Sources */,
-				4068C10F282E730900455B04 /* AliasData.swift in Sources */,
 				4068C10D282E730300455B04 /* mailmuxApp.swift in Sources */,
 				4068C110282E730C00455B04 /* AliasRow.swift in Sources */,
-				408C2D97282E9B1600540E59 /* Settings.swift in Sources */,
+				40B1755B2872B38700F545A1 /* AliasDetail.swift in Sources */,
+				408C2D97282E9B1600540E59 /* iSettings.swift in Sources */,
+				40B1755D2872B38700F545A1 /* AliasData.swift in Sources */,
+				4065B9132872DB4000D3C169 /* Client.swift in Sources */,
 				408C2D95282E8DEF00540E59 /* Create.swift in Sources */,
-				4068C111282E730F00455B04 /* AliasList.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -355,10 +334,11 @@
 				405422DA282E38A100B778CF /* Alias.swift in Sources */,
 				405422DC282E38A100B778CF /* AliasRow.swift in Sources */,
 				405422B8282E36E700B778CF /* mailmuxApp.swift in Sources */,
-				405422D4282E38A100B778CF /* AliasList.swift in Sources */,
 				40E153E5282E6CF900D30F9B /* Preferences.swift in Sources */,
+				40B1755C2872B38700F545A1 /* AliasDetail.swift in Sources */,
 				4068C115282E74A300455B04 /* Create.swift in Sources */,
-				405422D8282E38A100B778CF /* AliasData.swift in Sources */,
+				4065B9142872DB4000D3C169 /* Client.swift in Sources */,
+				40B1755E2872B38700F545A1 /* AliasData.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -366,8 +346,6 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				405422AA282E36E700B778CF /* Tests_iOSLaunchTests.swift in Sources */,
-				405422A8282E36E700B778CF /* Tests_iOS.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -375,8 +353,6 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				405422B6282E36E700B778CF /* Tests_macOSLaunchTests.swift in Sources */,
-				405422B4282E36E700B778CF /* Tests_macOS.swift in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -512,8 +488,10 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
+				DEVELOPMENT_TEAM = F4N9NM3A34;
 				ENABLE_PREVIEWS = YES;
 				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = "mailmux--iOS--Info.plist";
 				INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@@ -541,8 +519,10 @@
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_STYLE = Automatic;
 				CURRENT_PROJECT_VERSION = 1;
+				DEVELOPMENT_TEAM = F4N9NM3A34;
 				ENABLE_PREVIEWS = YES;
 				GENERATE_INFOPLIST_FILE = YES;
+				INFOPLIST_FILE = "mailmux--iOS--Info.plist";
 				INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
 				INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
 				INFOPLIST_KEY_UILaunchScreen_Generation = YES;
@@ -570,6 +550,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;
+				CODE_SIGN_IDENTITY = "-";
 				CODE_SIGN_STYLE = Automatic;
 				COMBINE_HIDPI_IMAGES = YES;
 				CURRENT_PROJECT_VERSION = 1;
@@ -596,6 +577,7 @@
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
 				CODE_SIGN_ENTITLEMENTS = macOS/macOS.entitlements;
+				CODE_SIGN_IDENTITY = "-";
 				CODE_SIGN_STYLE = Automatic;
 				COMBINE_HIDPI_IMAGES = YES;
 				CURRENT_PROJECT_VERSION = 1;
blob - 3faa664ef66e1539df9d1ad48962039e29646a90
blob + fd5f9d334fc2cad45a7aca9bb50ed491edc9438d
Binary files apple/mailmux.xcodeproj/project.xcworkspace/xcuserdata/otl.xcuserdatad/UserInterfaceState.xcuserstate and apple/mailmux.xcodeproj/project.xcworkspace/xcuserdata/otl.xcuserdatad/UserInterfaceState.xcuserstate differ
blob - b5c30e0501b4caeb0bff655b62f2d7aa147d29df
blob + 90b11a1af0b92840e9c1fa46043973b41f47f7ad
--- apple/mailmux.xcodeproj/xcuserdata/otl.xcuserdatad/xcschemes/xcschememanagement.plist
+++ apple/mailmux.xcodeproj/xcuserdata/otl.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -15,5 +15,18 @@
 			<integer>0</integer>
 		</dict>
 	</dict>
+	<key>SuppressBuildableAutocreation</key>
+	<dict>
+		<key>4054229B282E36E700B778CF</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+		<key>405422AE282E36E700B778CF</key>
+		<dict>
+			<key>primary</key>
+			<true/>
+		</dict>
+	</dict>
 </dict>
 </plist>