Merge branch '2.6.1' into missing-translation-keys

This commit is contained in:
Garth Vander Houwen 2025-05-06 10:48:40 -07:00 committed by GitHub
commit 2dd3ec2174
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
28 changed files with 1069 additions and 1288 deletions

File diff suppressed because it is too large Load diff

View file

@ -1785,7 +1785,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.6.0;
MARKETING_VERSION = 2.6.1;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES;
@ -1818,7 +1818,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.6.0;
MARKETING_VERSION = 2.6.1;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient;
PRODUCT_NAME = "$(TARGET_NAME)";
SUPPORTS_MACCATALYST = YES;
@ -1849,7 +1849,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.6.0;
MARKETING_VERSION = 2.6.1;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
@ -1881,7 +1881,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 2.6.0;
MARKETING_VERSION = 2.6.1;
PRODUCT_BUNDLE_IDENTIFIER = gvh.MeshtasticClient.Widgets;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";

View file

@ -21,15 +21,15 @@ enum MeshMapTypes: Int, CaseIterable, Identifiable {
case .standard:
return "Standard".localized
case .mutedStandard:
return "standard.muted".localized
return "Standard Muted".localized
case .hybrid:
return "hybrid".localized
return "Hybrid".localized
case .hybridFlyover:
return "hybrid.flyover".localized
return "Hybrid Flyover".localized
case .satellite:
return "satellite".localized
return "Satellite".localized
case .satelliteFlyover:
return "satellite.flyover".localized
return "Satellite Flyover".localized
}
}
func MKMapTypeValue() -> MKMapType {

View file

@ -32,31 +32,31 @@ enum RoutingError: Int, CaseIterable, Identifiable {
switch self {
case .none:
return "routing.acknowledged".localized
return "Acknowledged".localized
case .noRoute:
return "routing.noroute".localized
return "No Route".localized
case .gotNak:
return "routing.gotnak".localized
return "Received a negative acknowledgment".localized
case .timeout:
return "routing.timeout".localized
return "Timeout".localized
case .noInterface:
return "routing.nointerface".localized
return "No Interface".localized
case .maxRetransmit:
return "routing.maxretransmit".localized
return "Max Retransmission Reached".localized
case .noChannel:
return "routing.nochannel".localized
return "No Channel".localized
case .tooLarge:
return "routing.toolarge".localized
return "The packet is too large".localized
case .noResponse:
return "routing.noresponse".localized
return "No Response".localized
case .dutyCycleLimit:
return "routing.dutycyclelimit".localized
return "Regional Duty Cycle Limit Reached".localized
case .badRequest:
return "routing.badRequest".localized
return "Bad Request".localized
case .notAuthorized:
return "routing.notauthorized".localized
return "Not Authorized".localized
case .pkiFailed:
return "routing.pkifailed".localized
return "Encrypted Send Failed".localized
case .pkiUnknownPubkey:
return "Unknown public key".localized
case .adminBadSessionKey:

View file

@ -227,6 +227,7 @@ func upsertNodeInfoPacket (packet: MeshPacket, context: NSManagedObjectContext)
let myInfoEntity = MyInfoEntity(context: context)
myInfoEntity.myNodeNum = Int64(packet.from)
myInfoEntity.rebootCount = 0
newNode.myInfo = myInfoEntity
do {
try context.save()
Logger.data.info("💾 [NodeInfo] Saved a NodeInfo for node number: \(packet.from.toHex(), privacy: .public)")
@ -236,7 +237,6 @@ func upsertNodeInfoPacket (packet: MeshPacket, context: NSManagedObjectContext)
let nsError = error as NSError
Logger.data.error("💥 [MyInfoEntity] Error Inserting New Core Data: \(nsError, privacy: .public)")
}
newNode.myInfo = myInfoEntity
} else {
// Update an existing node
@ -1101,7 +1101,7 @@ func upsertExternalNotificationModuleConfigPacket(config: ModuleConfig.ExternalN
func upsertPaxCounterModuleConfigPacket(config: ModuleConfig.PaxcounterConfig, nodeNum: Int64, sessionPasskey: Data? = Data(), context: NSManagedObjectContext) {
let logString = String.localizedStringWithFormat("mesh.log.paxcounter.config %@".localized, String(nodeNum))
let logString = String.localizedStringWithFormat("PAX Counter config received: %@".localized, String(nodeNum))
Logger.data.info("🧑‍🤝‍🧑 \(logString, privacy: .public)")
let fetchNodeInfoRequest = NodeInfoEntity.fetchRequest()

View file

@ -144,7 +144,7 @@ struct ChannelList: View {
context.refresh(myInfo, mergeChanges: true)
channelSelection = nil
} label: {
Text("delete")
Text("Delete")
}
}
}

View file

@ -104,7 +104,7 @@ struct MessageContextMenuItems: View {
Button(role: .destructive) {
isShowingDeleteConfirmation = true
} label: {
Text("delete")
Text("Delete")
Image(systemName: "trash")
}
}

View file

@ -65,7 +65,7 @@ struct Messages: View {
TipView(MessagesTip(), arrowEdge: .top)
}
.navigationTitle("messages")
.navigationTitle("Messages")
.navigationBarTitleDisplayMode(.large)
.navigationBarItems(leading: MeshtasticLogo())
} content: {

View file

@ -187,7 +187,7 @@ struct UserList: View {
deleteUserMessages(user: userSelection!, context: context)
context.refresh(node!.user!, mergeChanges: true)
} label: {
Text("delete")
Text("Delete")
}
}
}

View file

@ -110,7 +110,7 @@ struct DetectionSensorLog: View {
exportString = detectionsToCsv(detections: chartData)
isExporting = true
} label: {
Label("save", systemImage: "square.and.arrow.down")
Label("Save", systemImage: "square.and.arrow.down")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -222,7 +222,7 @@ struct DeviceMetricsLog: View {
exportString = telemetryToCsvFile(telemetry: deviceMetrics, metricsType: 0)
isExporting = true
} label: {
Label("save", systemImage: "square.and.arrow.down")
Label("Save", systemImage: "square.and.arrow.down")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -145,7 +145,7 @@ struct EnvironmentMetricsLog: View {
exportString = telemetryToCsvFile(telemetry: environmentMetrics, metricsType: 1)
isExporting = true
} label: {
Label("save", systemImage: "square.and.arrow.down")
Label("Save", systemImage: "square.and.arrow.down")
.imageScale(imageScale)
}
.buttonStyle(.bordered)

View file

@ -52,7 +52,7 @@ struct PositionPopover: View {
/// Time
Label {
if idiom != .phone {
Text("heard".localized + ":")
Text("Heard".localized + ":")
}
Text(position.time?.lastHeard ?? "unknown")
.foregroundColor(.primary)

View file

@ -235,7 +235,7 @@ struct WaypointForm: View {
})
}
label: {
Label("delete", systemImage: "trash")
Label("Delete", systemImage: "trash")
.foregroundColor(.red)
}
.buttonStyle(.bordered)

View file

@ -187,7 +187,7 @@ struct PaxCounterLog: View {
exportString = paxToCsvFile(pax: pax)
isExporting = true
} label: {
Label("save", systemImage: "square.and.arrow.down")
Label("Save", systemImage: "square.and.arrow.down")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -67,7 +67,7 @@ struct TraceRouteLog: View {
Logger.data.error("\(error.localizedDescription, privacy: .public)")
}
} label: {
Label("delete", systemImage: "trash")
Label("Delete", systemImage: "trash")
}
}
}

View file

@ -41,7 +41,7 @@ struct AppData: View {
Logger.services.error("🗑️ Delete file error: \(error, privacy: .public)")
}
} label: {
Label("delete", systemImage: "trash")
Label("Delete", systemImage: "trash")
}
}
} icon: {
@ -61,7 +61,7 @@ struct AppData: View {
Logger.services.error("🗑️ Delete file error: \(error, privacy: .public)")
}
} label: {
Label("delete", systemImage: "trash")
Label("Delete", systemImage: "trash")
}
}
} icon: {

View file

@ -84,7 +84,7 @@ struct AppLog: View {
.foregroundStyle(value.level.color)
}
.width(min: 85, max: 110)
TableColumn("log.category", value: \.category)
TableColumn("Category", value: \.category)
.width(min: 80, max: 130)
TableColumn("Message", value: \.composedMessage) { value in
Text(value.composedMessage)

View file

@ -219,7 +219,7 @@ struct Channels: View {
hasChanges = false
}
} label: {
Label("save", systemImage: "square.and.arrow.down")
Label("Save", systemImage: "square.and.arrow.down")
}
.disabled(bleManager.connectedPeripheral == nil)// || !hasChanges)// !hasValidKey)
.buttonStyle(.bordered)

View file

@ -22,7 +22,7 @@ struct PaxCounterConfig: View {
var body: some View {
Form {
ConfigHeader(title: "config.module.paxcounter.title", config: \.powerConfig, node: node, onAppear: setPaxValues)
ConfigHeader(title: "PAX Counter Config", config: \.powerConfig, node: node, onAppear: setPaxValues)
Section {
Toggle(isOn: $enabled) {

View file

@ -45,7 +45,7 @@ struct RangeTestConfig: View {
.font(.callout)
Toggle(isOn: $save) {
Label("save", systemImage: "square.and.arrow.down.fill")
Label("Save", systemImage: "square.and.arrow.down.fill")
Text("Saves a CSV with the range test message details, currently only available on ESP32 devices with a web server.")
}
.toggleStyle(SwitchToggleStyle(tint: .accentColor))

View file

@ -12,7 +12,7 @@ struct SaveConfigButton: View {
Button {
isPresentingSaveConfirm = true
} label: {
Label("save", systemImage: "square.and.arrow.down")
Label("Save", systemImage: "square.and.arrow.down")
}
.disabled(bleManager.connectedPeripheral == nil || !hasChanges)
.buttonStyle(.bordered)

View file

@ -107,7 +107,7 @@ struct LogDetail: View {
/// Category
Label {
HStack {
Text("log.category".localized + ":")
Text("Category".localized + ":")
.font(idiom == .phone ? .caption : .title)
.frame(width: idiom == .phone ? 115 : 190, alignment: .trailing)
Text(log.category)

View file

@ -154,7 +154,7 @@ struct Routes: View {
Logger.data.error("\(error.localizedDescription, privacy: .public)")
}
} label: {
Label("delete", systemImage: "trash")
Label("Delete", systemImage: "trash")
}
}
@ -215,7 +215,7 @@ struct Routes: View {
.buttonBorderShape(.capsule)
.controlSize(.large)
Button("save") {
Button("Save") {
selectedRoute?.name = name
selectedRoute?.notes = notes
selectedRoute?.enabled = enabled
@ -279,7 +279,7 @@ struct Routes: View {
exportString = routeToCsvFile(locations: selectedRoute!.locations!.array as? [LocationEntity] ?? [])
isExporting = true
} label: {
Label("export", systemImage: "square.and.arrow.down")
Label("Export", systemImage: "square.and.arrow.down")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -43,7 +43,7 @@ struct SaveChannelQRCode: View {
showError = true
}
} label: {
Label("save", systemImage: "square.and.arrow.down")
Label("Save", systemImage: "square.and.arrow.down")
}
.buttonStyle(.bordered)
.buttonBorderShape(.capsule)

View file

@ -105,7 +105,7 @@ struct Settings: View {
}
var deviceConfigurationSection: some View {
Section("device.configuration") {
Section("Device Configuration") {
NavigationLink(value: SettingsNavigationState.user) {
Label {
Text("User")

View file

@ -141,7 +141,7 @@ struct UserConfig: View {
Button {
isPresentingSaveConfirm = true
} label: {
Label("save", systemImage: "square.and.arrow.down")
Label("Save", systemImage: "square.and.arrow.down")
}
.disabled(bleManager.connectedPeripheral == nil || !hasChanges)
.buttonStyle(.bordered)

@ -1 +1 @@
Subproject commit 27fac39141d99fe727a0a1824c5397409b1aea75
Subproject commit 068646653e8375fc145988026ad242a3cf70f7ab