diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 514c0443..671a3838 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -6316,7 +6316,7 @@ "Direct Message Help" : { }, - "Direct messages are using the new public key infrastructure to encrypt the message." : { + "Direct messages are using the new public key infrastructure for encryption." : { }, "Direct messages are using the shared key for the channel." : { @@ -10790,9 +10790,6 @@ }, "Key" : { - }, - "Key does not match the public key that was used previously, delete the node and let it negotatiate keys again." : { - }, "Key Mapping" : { diff --git a/Meshtastic.xcodeproj/project.pbxproj b/Meshtastic.xcodeproj/project.pbxproj index 58f16fe5..2c59e43b 100644 --- a/Meshtastic.xcodeproj/project.pbxproj +++ b/Meshtastic.xcodeproj/project.pbxproj @@ -1649,7 +1649,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.4.2; + MARKETING_VERSION = 2.5.0; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; @@ -1684,7 +1684,7 @@ "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 2.4.2; + MARKETING_VERSION = 2.5.0; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient; PRODUCT_NAME = "$(TARGET_NAME)"; SUPPORTS_MACCATALYST = YES; @@ -1716,7 +1716,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.4.2; + MARKETING_VERSION = 2.5.0; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1749,7 +1749,7 @@ "@executable_path/Frameworks", "@executable_path/../../Frameworks", ); - MARKETING_VERSION = 2.4.2; + MARKETING_VERSION = 2.5.0; PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/Meshtastic/Enums/RoutingError.swift b/Meshtastic/Enums/RoutingError.swift index b47a15f9..c7588b0c 100644 --- a/Meshtastic/Enums/RoutingError.swift +++ b/Meshtastic/Enums/RoutingError.swift @@ -73,11 +73,11 @@ enum RoutingError: Int, CaseIterable, Identifiable { case .noInterface: return Color.red case .maxRetransmit: - return Color.red + return Color.orange case .noChannel: return Color.orange case .tooLarge: - return Color.orange + return Color.red case .noResponse: return Color.orange case .dutyCycleLimit: @@ -92,6 +92,39 @@ enum RoutingError: Int, CaseIterable, Identifiable { return Color.red } } + var canRetry: Bool { + switch self { + + case .none: + return false + case .noRoute: + return false + case .gotNak: + return false + case .timeout: + return true + case .noInterface: + return false + case .maxRetransmit: + return true + case .noChannel: + return true + case .tooLarge: + return false + case .noResponse: + return true + case .dutyCycleLimit: + return true + case .badRequest: + return false + case .notAuthorized: + return false + case .pkiFailed: + return false + case .pkiUnknownPubkey: + return false + } + } func protoEnumValue() -> Routing.Error { switch self { diff --git a/Meshtastic/Views/Helpers/Help/DirectMessagesHelp.swift b/Meshtastic/Views/Helpers/Help/DirectMessagesHelp.swift index f4f8bda3..fd0f0414 100644 --- a/Meshtastic/Views/Helpers/Help/DirectMessagesHelp.swift +++ b/Meshtastic/Views/Helpers/Help/DirectMessagesHelp.swift @@ -13,7 +13,7 @@ struct DirectMessagesHelp: View { var body: some View { ScrollView { - Text("Direct Message Help") + Label("Direct Message Help", systemImage: "questionmark.circle") .font(.title) .padding(.vertical) VStack(alignment: .leading) { diff --git a/Meshtastic/Views/Helpers/Help/LockLegend.swift b/Meshtastic/Views/Helpers/Help/LockLegend.swift index adfa91b5..9c5d216b 100644 --- a/Meshtastic/Views/Helpers/Help/LockLegend.swift +++ b/Meshtastic/Views/Helpers/Help/LockLegend.swift @@ -34,7 +34,7 @@ struct LockLegend: View { Text("Public Key Encryption") .fontWeight(.semibold) } - Text("Direct messages are using the new public key infrastructure to encrypt the message.") + Text("Direct messages are using the new public key infrastructure for encryption.") .allowsTightening(/*@START_MENU_TOKEN@*/true/*@END_MENU_TOKEN@*/) .font(.callout) .fixedSize(horizontal: false, vertical: true) diff --git a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift index e8eeeecd..8a78c08c 100644 --- a/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift +++ b/Meshtastic/Views/Nodes/Helpers/NodeDetail.swift @@ -51,7 +51,7 @@ struct NodeDetail: View { Text("Public Key Mismatch") .font(.title3) .foregroundStyle(.red) - Text("Key does not match the public key that was used previously, delete the node and let it negotatiate keys again.") + Text("The public key does not match the recorded key. You may delete the node and let it exchange keys again, but this may indicate a more serious security problem. Contact the user through another trusted channel, to determine if the key change was due to a factory reset or other intentional action.") .font(.caption) .foregroundStyle(.red) } diff --git a/Meshtastic/Views/Settings/Firmware.swift b/Meshtastic/Views/Settings/Firmware.swift index d76b1503..9a450775 100644 --- a/Meshtastic/Views/Settings/Firmware.swift +++ b/Meshtastic/Views/Settings/Firmware.swift @@ -13,7 +13,7 @@ struct Firmware: View { @Environment(\.managedObjectContext) var context @EnvironmentObject var bleManager: BLEManager var node: NodeInfoEntity? - @State var minimumVersion = "2.4.3" + @State var minimumVersion = "2.4.2" @State var version = "" @State private var currentDevice: DeviceHardware? @State private var latestStable: FirmwareRelease?