diff --git a/apps/.i18n/native-source.json b/apps/.i18n/native-source.json index ec724b7d3c8a..cff7b52f11d6 100644 --- a/apps/.i18n/native-source.json +++ b/apps/.i18n/native-source.json @@ -9587,7 +9587,7 @@ }, { "kind": "ui-call", - "line": 1075, + "line": 1077, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Voice Wake", "surface": "apple", @@ -9595,7 +9595,7 @@ }, { "kind": "ui-call", - "line": 1078, + "line": 1080, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Talk Mode", "surface": "apple", @@ -9603,7 +9603,7 @@ }, { "kind": "ui-call", - "line": 1086, + "line": 1088, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Speech Language", "surface": "apple", @@ -9611,7 +9611,7 @@ }, { "kind": "ui-call", - "line": 1094, + "line": 1096, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Speakerphone", "surface": "apple", @@ -9619,7 +9619,7 @@ }, { "kind": "ui-named-argument", - "line": 1099, + "line": 1101, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Wake Words", "surface": "apple", @@ -9627,7 +9627,7 @@ }, { "kind": "ui-call", - "line": 1121, + "line": 1123, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Provider", "surface": "apple", @@ -9635,7 +9635,7 @@ }, { "kind": "ui-call", - "line": 1129, + "line": 1131, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Realtime Voice", "surface": "apple", @@ -9643,7 +9643,7 @@ }, { "kind": "ui-call", - "line": 1130, + "line": 1132, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Gateway Default", "surface": "apple", @@ -9651,7 +9651,7 @@ }, { "kind": "ui-call", - "line": 1140, + "line": 1142, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Voice Mode", "surface": "apple", @@ -9659,7 +9659,7 @@ }, { "kind": "ui-call", - "line": 1142, + "line": 1144, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Active Voice", "surface": "apple", @@ -9667,7 +9667,7 @@ }, { "kind": "ui-call", - "line": 1145, + "line": 1147, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Last Voice Issue", "surface": "apple", @@ -9675,7 +9675,7 @@ }, { "kind": "ui-call", - "line": 1148, + "line": 1150, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Transport", "surface": "apple", @@ -9683,7 +9683,7 @@ }, { "kind": "ui-call", - "line": 1150, + "line": 1152, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "API Key", "surface": "apple", @@ -9691,7 +9691,7 @@ }, { "kind": "ui-call", - "line": 1161, + "line": 1163, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Show Talk Control", "surface": "apple", @@ -9699,7 +9699,7 @@ }, { "kind": "ui-call", - "line": 1164, + "line": 1166, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Default Share Instruction", "surface": "apple", @@ -9707,7 +9707,7 @@ }, { "kind": "ui-call", - "line": 1172, + "line": 1174, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Run Share Self-Test", "surface": "apple", @@ -9715,7 +9715,7 @@ }, { "kind": "ui-call", - "line": 1194, + "line": 1196, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Discovery Debug Logs", "surface": "apple", @@ -9723,7 +9723,7 @@ }, { "kind": "ui-call", - "line": 1197, + "line": 1199, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Debug Screen Status", "surface": "apple", @@ -9731,7 +9731,7 @@ }, { "kind": "ui-named-argument", - "line": 1201, + "line": 1203, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Discovery Logs", "surface": "apple", @@ -9739,7 +9739,7 @@ }, { "kind": "ui-call", - "line": 1211, + "line": 1213, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Device Name", "surface": "apple", @@ -9747,7 +9747,7 @@ }, { "kind": "ui-call", - "line": 1214, + "line": 1216, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "Instance ID", "surface": "apple", @@ -9755,7 +9755,7 @@ }, { "kind": "conditional-branch", - "line": 1254, + "line": 1256, "path": "apps/ios/Sources/Design/SettingsProTabSections.swift", "source": "On", "surface": "apple", diff --git a/apps/ios/Sources/Design/SettingsProTabSections.swift b/apps/ios/Sources/Design/SettingsProTabSections.swift index 4eff0d9475db..f48c965ef0b2 100644 --- a/apps/ios/Sources/Design/SettingsProTabSections.swift +++ b/apps/ios/Sources/Design/SettingsProTabSections.swift @@ -1058,12 +1058,14 @@ extension SettingsProTab { SecureField("", text: text) .font(OpenClawType.subhead) .textFieldStyle(.roundedBorder) + .accessibilityLabel(placeholder) if text.wrappedValue.isEmpty { Text(placeholder) .font(OpenClawType.subheadSemiBold) .foregroundStyle(.tertiary) .padding(.horizontal, 8) .allowsHitTesting(false) + .accessibilityHidden(true) } } .font(OpenClawType.subhead) diff --git a/apps/ios/Tests/OpenClawTypographyTests.swift b/apps/ios/Tests/OpenClawTypographyTests.swift index 3a9569a17df3..2b152f342feb 100644 --- a/apps/ios/Tests/OpenClawTypographyTests.swift +++ b/apps/ios/Tests/OpenClawTypographyTests.swift @@ -168,6 +168,12 @@ struct OpenClawTypographyTests { #expect(settingsSections.contains("func gatewaySecureField")) #expect(settingsSections.contains("self.gatewaySecureField(\"Gateway Auth Token\"")) #expect(settingsSections.contains("self.gatewaySecureField(\"Gateway Password\"")) + let gatewaySecureField = try Self.extract( + settingsSections, + from: "func gatewaySecureField", + to: " var voiceFeatureCard") + #expect(gatewaySecureField.contains(".accessibilityLabel(placeholder)")) + #expect(gatewaySecureField.contains(".accessibilityHidden(true)")) #expect(settingsSections.contains("Picker(selection: self.$selectedAgentPickerId)")) #expect(settingsSections.contains("Text(\"Agent\")"))