diff --git a/Localizable.xcstrings b/Localizable.xcstrings index 2881b290..99a00727 100644 --- a/Localizable.xcstrings +++ b/Localizable.xcstrings @@ -23713,18 +23713,15 @@ } } }, - "Version %@ includes breaking changes to devices and the client apps. Only nodes version %@ and above are supported." : { + "Version %@ includes substantial network optimizations and extensive changes to devices and client apps. Only nodes version %@ and above are supported." : { "localizations" : { "en" : { "stringUnit" : { "state" : "new", - "value" : "Version %1$@ includes breaking changes to devices and the client apps. Only nodes version %2$@ and above are supported." + "value" : "Version %1$@ includes substantial network optimizations and extensive changes to devices and client apps. Only nodes version %2$@ and above are supported." } } } - }, - "Version 1.2 End of life (EOL) Info" : { - }, "Version: %@ (%@) " : { "localizations" : { @@ -24065,4 +24062,4 @@ } }, "version" : "1.0" -} +} \ No newline at end of file diff --git a/Meshtastic/Assets.xcassets/HELTECV3.imageset/Contents.json b/Meshtastic/Assets.xcassets/HELTECV3.imageset/Contents.json index 98595042..42c0472b 100644 --- a/Meshtastic/Assets.xcassets/HELTECV3.imageset/Contents.json +++ b/Meshtastic/Assets.xcassets/HELTECV3.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "Heltec_turq.png", + "filename" : "heltec-v3-case.svg", "idiom" : "universal" } ], diff --git a/Meshtastic/Assets.xcassets/HELTECV3.imageset/Heltec_turq.png b/Meshtastic/Assets.xcassets/HELTECV3.imageset/Heltec_turq.png deleted file mode 100644 index c4454bcc..00000000 Binary files a/Meshtastic/Assets.xcassets/HELTECV3.imageset/Heltec_turq.png and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/HELTECV3.imageset/heltec-v3-case.svg b/Meshtastic/Assets.xcassets/HELTECV3.imageset/heltec-v3-case.svg new file mode 100644 index 00000000..1b1d3c55 --- /dev/null +++ b/Meshtastic/Assets.xcassets/HELTECV3.imageset/heltec-v3-case.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Meshtastic/Assets.xcassets/LILYGOTBEAMS3CORE.imageset/Contents.json b/Meshtastic/Assets.xcassets/LILYGOTBEAMS3CORE.imageset/Contents.json deleted file mode 100644 index 892d20eb..00000000 --- a/Meshtastic/Assets.xcassets/LILYGOTBEAMS3CORE.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "tbeam_supreme.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Meshtastic/Assets.xcassets/LILYGOTBEAMS3CORE.imageset/tbeam_supreme.png b/Meshtastic/Assets.xcassets/LILYGOTBEAMS3CORE.imageset/tbeam_supreme.png deleted file mode 100644 index 6a618653..00000000 Binary files a/Meshtastic/Assets.xcassets/LILYGOTBEAMS3CORE.imageset/tbeam_supreme.png and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/Contents.json b/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/Contents.json index 2f074381..fe8b1d15 100644 --- a/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/Contents.json +++ b/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "nano_g2_ultra_product_image.jpg", + "filename" : "nano-g2-ultra.svg", "idiom" : "universal" } ], diff --git a/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/nano-g2-ultra.svg b/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/nano-g2-ultra.svg new file mode 100644 index 00000000..6dbe47af --- /dev/null +++ b/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/nano-g2-ultra.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/nano_g2_ultra_product_image.jpg b/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/nano_g2_ultra_product_image.jpg deleted file mode 100644 index 18f2b472..00000000 Binary files a/Meshtastic/Assets.xcassets/NANOG2ULTRA.imageset/nano_g2_ultra_product_image.jpg and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/TBEAM.imageset/Contents.json b/Meshtastic/Assets.xcassets/STATIONG2.imageset/Contents.json similarity index 76% rename from Meshtastic/Assets.xcassets/TBEAM.imageset/Contents.json rename to Meshtastic/Assets.xcassets/STATIONG2.imageset/Contents.json index 64a09f22..dc823045 100644 --- a/Meshtastic/Assets.xcassets/TBEAM.imageset/Contents.json +++ b/Meshtastic/Assets.xcassets/STATIONG2.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "tbeam.png", + "filename" : "station-g2.svg", "idiom" : "universal" } ], diff --git a/Meshtastic/Assets.xcassets/STATIONG2.imageset/station-g2.svg b/Meshtastic/Assets.xcassets/STATIONG2.imageset/station-g2.svg new file mode 100644 index 00000000..8d2e0aed --- /dev/null +++ b/Meshtastic/Assets.xcassets/STATIONG2.imageset/station-g2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Meshtastic/Assets.xcassets/TBEAM.imageset/tbeam.png b/Meshtastic/Assets.xcassets/TBEAM.imageset/tbeam.png deleted file mode 100644 index 75fec7be..00000000 Binary files a/Meshtastic/Assets.xcassets/TBEAM.imageset/tbeam.png and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/TECHO.imageset/Contents.json b/Meshtastic/Assets.xcassets/TECHO.imageset/Contents.json deleted file mode 100644 index f380b7af..00000000 --- a/Meshtastic/Assets.xcassets/TECHO.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Meshtastic/Assets.xcassets/TECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1.png b/Meshtastic/Assets.xcassets/TECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1.png deleted file mode 100644 index 7b2f9f96..00000000 Binary files a/Meshtastic/Assets.xcassets/TECHO.imageset/LILYGO-TTGO-SoftRF-T-Echo-NRF52840-LoRa-SX1262-433-868-915MHz-Wireless-Module-L76K-GPS-1.png and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/TLORABOARD.imageset/Contents.json b/Meshtastic/Assets.xcassets/TLORABOARD.imageset/Contents.json deleted file mode 100644 index f8356864..00000000 --- a/Meshtastic/Assets.xcassets/TLORABOARD.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Meshtastic/Assets.xcassets/TLORABOARD.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.png b/Meshtastic/Assets.xcassets/TLORABOARD.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.png deleted file mode 100644 index ff3da639..00000000 Binary files a/Meshtastic/Assets.xcassets/TLORABOARD.imageset/LILYGO-TTGO-LoRa32-V2-1-1-6-Version-433-868-915Mhz-ESP32-LoRa-OLED-0-96.jpg_Q90.jpg_.webp.png and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/TLORAV1.imageset/Contents.json b/Meshtastic/Assets.xcassets/TLORAV1.imageset/Contents.json deleted file mode 100644 index 093c722d..00000000 --- a/Meshtastic/Assets.xcassets/TLORAV1.imageset/Contents.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "images" : [ - { - "filename" : "TLORA_olive 1.png", - "idiom" : "universal" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} diff --git a/Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_olive 1.png b/Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_olive 1.png deleted file mode 100644 index e8980a2c..00000000 Binary files a/Meshtastic/Assets.xcassets/TLORAV1.imageset/TLORA_olive 1.png and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/UNSET.imageset/Contents.json b/Meshtastic/Assets.xcassets/UNSET.imageset/Contents.json index 04be44d5..4508d9cd 100644 --- a/Meshtastic/Assets.xcassets/UNSET.imageset/Contents.json +++ b/Meshtastic/Assets.xcassets/UNSET.imageset/Contents.json @@ -1,7 +1,7 @@ { "images" : [ { - "filename" : "play_store_icon_114px-2.png", + "filename" : "unknown.svg", "idiom" : "universal" } ], diff --git a/Meshtastic/Assets.xcassets/UNSET.imageset/play_store_icon_114px-2.png b/Meshtastic/Assets.xcassets/UNSET.imageset/play_store_icon_114px-2.png deleted file mode 100644 index 79cf0e00..00000000 Binary files a/Meshtastic/Assets.xcassets/UNSET.imageset/play_store_icon_114px-2.png and /dev/null differ diff --git a/Meshtastic/Assets.xcassets/UNSET.imageset/unknown.svg b/Meshtastic/Assets.xcassets/UNSET.imageset/unknown.svg new file mode 100644 index 00000000..8e74fbc5 --- /dev/null +++ b/Meshtastic/Assets.xcassets/UNSET.imageset/unknown.svg @@ -0,0 +1,189 @@ + + diff --git a/Meshtastic/Extensions/CoreData/UserEntityExtension.swift b/Meshtastic/Extensions/CoreData/UserEntityExtension.swift index 8c49b322..099d910d 100644 --- a/Meshtastic/Extensions/CoreData/UserEntityExtension.swift +++ b/Meshtastic/Extensions/CoreData/UserEntityExtension.swift @@ -37,7 +37,7 @@ extension UserEntity { var hardwareImage: String? { guard let hwModel else { return nil } switch hwModel { - case "HELTECV1", "HELTECV3", "HELTECV20", "HELTECV21": + case "HELTECV3": return "HELTECV3" case "HELTECWIRELESSPAPER", "HELTECWIRELESSPAPERV10": return "HELTECWIRELESSPAPER" @@ -45,8 +45,6 @@ extension UserEntity { return "HELTECWIRELESSTRACKER" case "HELTECWSLV3": return "HELTECWSLV3" - case "LILYGOTBEAMSCORE": - return "LILYGOTBEAMS3CORE" case "NANOG1", "NANOG1EXPLORER": return "NANOG1" case "NANOG2ULTRA": @@ -59,14 +57,6 @@ extension UserEntity { return "SOLAR_NODE" case "STATIONG1": return "STATIONG1" - case "ТВЕАМ", "TBEAMVOP7": - return "ТВЕАМ" - case "TECHO": - return "TECHO" - case "TLORAV1", "TLORAV11P3": - return "TLORAV1" - case "TLORAV2", "TLORAT3S3", "TLORAV211P6", "TLORAV211P8": - return "TLORABOARD" case "UNPHONE": return "UNPHONE" default: @@ -74,7 +64,6 @@ extension UserEntity { } } } - public func createUser(num: Int64, context: NSManagedObjectContext) -> UserEntity { let newUser = UserEntity(context: context) newUser.num = Int64(num) diff --git a/Meshtastic/Extensions/String.swift b/Meshtastic/Extensions/String.swift index b001f2eb..b97ad1c5 100644 --- a/Meshtastic/Extensions/String.swift +++ b/Meshtastic/Extensions/String.swift @@ -65,7 +65,6 @@ extension String { .replacingOccurrences(of: "([a-z])([A-Z](?=[A-Z])[a-z]*)", with: "$1 $2", options: .regularExpression) .replacingOccurrences(of: "([A-Z])([A-Z][a-z])", with: "$1 $2", options: .regularExpression) .replacingOccurrences(of: "([a-z])([A-Z][a-z])", with: "$1 $2", options: .regularExpression) - .replacingOccurrences(of: "([a-z])([A-Z][a-z])", with: "$1 $2", options: .regularExpression) } var length: Int { diff --git a/Meshtastic/Helpers/MeshPackets.swift b/Meshtastic/Helpers/MeshPackets.swift index a5cfa7ba..04088e69 100644 --- a/Meshtastic/Helpers/MeshPackets.swift +++ b/Meshtastic/Helpers/MeshPackets.swift @@ -876,6 +876,9 @@ func textMessageAppPacket( if fetchedUsers.first(where: { $0.num == packet.to }) != nil && packet.to != Constants.maximumNodeNum { if !storeForwardBroadcast { newMessage.toUser = fetchedUsers.first(where: { $0.num == packet.to }) + } else { + /// Make a new to user if they are unknown + newMessage.toUser = createUser(num: Int64(truncatingIfNeeded: packet.to), context: context) } } if fetchedUsers.first(where: { $0.num == packet.from }) != nil { @@ -903,11 +906,14 @@ func textMessageAppPacket( newMessage.fromUser?.publicKey = packet.publicKey } } - if packet.rxTime > 0 { - newMessage.fromUser?.userNode?.lastHeard = Date(timeIntervalSince1970: TimeInterval(Int64(packet.rxTime))) - } else { - newMessage.fromUser?.userNode?.lastHeard = Date() - } + } else { + /// Make a new from user if they are unknown + newMessage.fromUser = createUser(num: Int64(truncatingIfNeeded: packet.to), context: context) + } + if packet.rxTime > 0 { + newMessage.fromUser?.userNode?.lastHeard = Date(timeIntervalSince1970: TimeInterval(Int64(packet.rxTime))) + } else { + newMessage.fromUser?.userNode?.lastHeard = Date() } newMessage.messagePayload = messageText newMessage.messagePayloadMarkdown = generateMessageMarkdown(message: messageText!) diff --git a/Meshtastic/Views/Bluetooth/InvalidVersion.swift b/Meshtastic/Views/Bluetooth/InvalidVersion.swift index 291722f4..ba94e7c1 100644 --- a/Meshtastic/Views/Bluetooth/InvalidVersion.swift +++ b/Meshtastic/Views/Bluetooth/InvalidVersion.swift @@ -41,7 +41,7 @@ struct InvalidVersion: View { .font(.title3) .foregroundColor(.orange) .padding(.bottom) - Text("Version \(minimumVersion) includes breaking changes to devices and the client apps. Only nodes version \(minimumVersion) and above are supported.") + Text("Version \(minimumVersion) includes substantial network optimizations and extensive changes to devices and client apps. Only nodes version \(minimumVersion) and above are supported.") .font(.callout) .padding([.leading, .trailing, .bottom])