This commit is contained in:
Max Goedjen 2024-01-04 17:26:18 -08:00
parent de959345ed
commit f583a3c263
No known key found for this signature in database
4 changed files with 163 additions and 21 deletions

View File

@ -610,6 +610,7 @@
STRIP_INSTALLED_PRODUCT = NO; STRIP_INSTALLED_PRODUCT = NO;
STRIP_SWIFT_SYMBOLS = NO; STRIP_SWIFT_SYMBOLS = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
}; };
name = Debug; name = Debug;
@ -668,6 +669,7 @@
STRIP_INSTALLED_PRODUCT = NO; STRIP_INSTALLED_PRODUCT = NO;
STRIP_SWIFT_SYMBOLS = NO; STRIP_SWIFT_SYMBOLS = NO;
SWIFT_COMPILATION_MODE = wholemodule; SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-O"; SWIFT_OPTIMIZATION_LEVEL = "-O";
}; };
name = Release; name = Release;
@ -831,6 +833,7 @@
STRIP_INSTALLED_PRODUCT = NO; STRIP_INSTALLED_PRODUCT = NO;
STRIP_SWIFT_SYMBOLS = NO; STRIP_SWIFT_SYMBOLS = NO;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_OPTIMIZATION_LEVEL = "-Onone";
}; };
name = Test; name = Test;

View File

@ -1,6 +1,9 @@
{ {
"sourceLanguage" : "en", "sourceLanguage" : "en",
"strings" : { "strings" : {
"" : {
},
"\n" : { "\n" : {
}, },
@ -17,7 +20,10 @@
} }
} }
}, },
"agent_running_notice_detail_body" : { "Add it For Me" : {
},
"agent_running_notice_detail_description" : {
"localizations" : { "localizations" : {
"en" : { "en" : {
"stringUnit" : { "stringUnit" : {
@ -47,7 +53,7 @@
} }
} }
}, },
"app_not_in_applications_notice_detail_body" : { "app_not_in_applications_notice_detail_description" : {
"localizations" : { "localizations" : {
"en" : { "en" : {
"stringUnit" : { "stringUnit" : {
@ -67,7 +73,7 @@
} }
} }
}, },
"Authentication not required when Mac is unlocked" : { "Cancel" : {
}, },
"Confirm Name:" : { "Confirm Name:" : {
@ -76,14 +82,132 @@
"Create a new one by clicking here." : { "Create a new one by clicking here." : {
}, },
"Create a New Secret" : { "create_secret_cancel_buton" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "create_secret_cancel"
}
}
}
},
"create_secret_create_button" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Create"
}
}
}
},
"create_secret_legacy_notify_description" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Authentication not required when Mac is unlocked"
}
}
}
},
"create_secret_legacy_require_authentication_description" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Requires Authentication (Biometrics or Password) before each use"
}
}
}
},
"create_secret_name_label" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Name:"
}
}
}
},
"create_secret_name_placeholder" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Shhhhh"
}
}
}
},
"create_secret_notify_description" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "No authentication is required while your Mac is unlocked, but you will be notified when a secret is used."
}
}
}
},
"create_secret_notify_title" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Notify"
}
}
}
},
"create_secret_require_authentication_description" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "You will be required to authenticate using Touch ID, Apple Watch, or password before each use."
}
}
}
},
"create_secret_require_authentication_title" : {
"extractionState" : "manual",
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Require Authentication"
}
}
}
},
"create_secret_title" : {
"localizations" : {
"en" : {
"stringUnit" : {
"state" : "translated",
"value" : "Create a New Secret"
}
}
}
}, },
"Delete" : { "Delete" : {
}, },
"Delete %@?" : { "Delete %@?" : {
},
"Don't Delete" : {
},
"Help" : {
}, },
"If you delete %@, you will not be able to recover it. Type \"%@\" to confirm." : { "If you delete %@, you will not be able to recover it. Type \"%@\" to confirm." : {
"localizations" : { "localizations" : {
@ -95,7 +219,19 @@
} }
} }
}, },
"Name:" : { "If you're looking to add one to your Mac, the YubiKey 5 Series are great." : {
},
"If you're trying to set up a third party app, check out the FAQ." : {
},
"Ignore" : {
},
"Key" : {
"extractionState" : "manual"
},
"New Secret" : {
}, },
"No Secrets" : { "No Secrets" : {
@ -103,15 +239,15 @@
}, },
"No Secure Storage Available" : { "No Secure Storage Available" : {
},
"Read more about this here." : {
}, },
"Release Notes" : { "Release Notes" : {
}, },
"Rename" : { "Rename" : {
},
"Requires Authentication (Biometrics or Password) before each use" : {
}, },
"Secret Agent Is Not Running" : { "Secret Agent Is Not Running" : {
@ -142,6 +278,9 @@
}, },
"Type your new name for \"%@\" below." : { "Type your new name for \"%@\" below." : {
},
"Update" : {
}, },
"Use your Smart Card's management tool to create a secret." : { "Use your Smart Card's management tool to create a secret." : {

View File

@ -152,7 +152,7 @@ extension ContentView {
Text("agent_running_notice_detail_title") Text("agent_running_notice_detail_title")
.font(.title) .font(.title)
.padding(5) .padding(5)
Text("agent_running_notice_detail_body") Text("agent_running_notice_detail_description")
.frame(width: 300) .frame(width: 300)
} }
.padding() .padding()
@ -178,7 +178,7 @@ extension ContentView {
.resizable() .resizable()
.aspectRatio(contentMode: .fit) .aspectRatio(contentMode: .fit)
.frame(width: 64) .frame(width: 64)
Text("app_not_in_applications_notice_detail_body") Text("app_not_in_applications_notice_detail_description")
.frame(maxWidth: 300) .frame(maxWidth: 300)
} }
.padding() .padding()

View File

@ -14,28 +14,28 @@ struct CreateSecretView<StoreType: SecretStoreModifiable>: View {
HStack { HStack {
VStack { VStack {
HStack { HStack {
Text("Create a New Secret") Text("create_secret_title")
.font(.largeTitle) .font(.largeTitle)
Spacer() Spacer()
} }
HStack { HStack {
Text("Name:") Text("create_secret_name_label")
TextField("Shhhhh", text: $name) TextField("create_secret_name_placeholder", text: $name)
.focusable() .focusable()
} }
if #available(macOS 12.0, *) { if #available(macOS 12.0, *) {
ThumbnailPickerView(items: [ ThumbnailPickerView(items: [
ThumbnailPickerView.Item(value: true, name: "Require Authentication", description: "You will be required to authenticate using Touch ID, Apple Watch, or password before each use.", thumbnail: AuthenticationView()), ThumbnailPickerView.Item(value: true, name: "create_secret_require_authentication_title", description: "create_secret_require_authentication_description", thumbnail: AuthenticationView()),
ThumbnailPickerView.Item(value: false, name: "Notify", ThumbnailPickerView.Item(value: false, name: "create_secret_notify_title",
description: "No authentication is required while your Mac is unlocked, but you will be notified when a secret is used.", description: "create_secret_notify_description",
thumbnail: NotificationView()) thumbnail: NotificationView())
], selection: $requiresAuthentication) ], selection: $requiresAuthentication)
} else { } else {
HStack { HStack {
VStack(spacing: 20) { VStack(spacing: 20) {
Picker("", selection: $requiresAuthentication) { Picker("", selection: $requiresAuthentication) {
Text("Requires Authentication (Biometrics or Password) before each use").tag(true) Text("create_secret_legacy_require_authentication_description").tag(true)
Text("Authentication not required when Mac is unlocked").tag(false) Text("create_secret_legacy_notify_description").tag(false)
} }
.pickerStyle(RadioGroupPickerStyle()) .pickerStyle(RadioGroupPickerStyle())
Spacer(minLength: 10) Spacer(minLength: 10)
@ -46,11 +46,11 @@ struct CreateSecretView<StoreType: SecretStoreModifiable>: View {
} }
HStack { HStack {
Spacer() Spacer()
Button("Cancel") { Button("create_secret_cancel_buton") {
showing = false showing = false
} }
.keyboardShortcut(.cancelAction) .keyboardShortcut(.cancelAction)
Button("Create", action: save) Button("create_secret_create_button", action: save)
.disabled(name.isEmpty) .disabled(name.isEmpty)
.keyboardShortcut(.defaultAction) .keyboardShortcut(.defaultAction)
} }