From 8bf2bc629be76bf037182768adfc24301996d2ad Mon Sep 17 00:00:00 2001 From: Taksh Date: Fri, 31 Jul 2026 14:02:29 +0300 Subject: [PATCH 1/3] docs: explain BLE wake-on-proximity accessory prompt MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clarify the iOS “accessory would like to open bitchat” modal in Bluetooth usage strings and App Info privacy copy (#1427). --- bitchat/Info.plist | 4 ++-- bitchat/Views/AppInfoView.swift | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/bitchat/Info.plist b/bitchat/Info.plist index 57ddfa11..c2bf1840 100644 --- a/bitchat/Info.plist +++ b/bitchat/Info.plist @@ -36,9 +36,9 @@ LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSBluetoothAlwaysUsageDescription - bitchat uses Bluetooth to create a secure mesh network for chatting with nearby users. + bitchat uses Bluetooth to create a secure mesh with nearby users. While backgrounded, a nearby peer may ask iOS to reopen bitchat so the mesh can reach you — that system prompt is expected. NSBluetoothPeripheralUsageDescription - bitchat uses Bluetooth to discover and connect with other bitchat users nearby. + bitchat uses Bluetooth to discover and connect with nearby users. Background reconnects can show an iOS “accessory would like to open bitchat” prompt; allow it to stay reachable, or dismiss if you prefer not to wake. NSCameraUsageDescription bitchat uses the camera to scan QR codes to verify peers. NSLocationWhenInUseUsageDescription diff --git a/bitchat/Views/AppInfoView.swift b/bitchat/Views/AppInfoView.swift index cb99fbac..101f8973 100644 --- a/bitchat/Views/AppInfoView.swift +++ b/bitchat/Views/AppInfoView.swift @@ -221,6 +221,21 @@ struct AppInfoView: View { title: "app_info.privacy.ephemeral.title", description: "app_info.privacy.ephemeral.description" ) + /// Explains the iOS 26 “accessory would like to open bitchat” + /// modal from wake-on-proximity (#1427 / #1396). + static let wakeProximity = AppInfoFeatureInfo( + icon: "antenna.radiowaves.left.and.right", + resolvedTitle: String( + localized: "app_info.privacy.wake_proximity.title", + defaultValue: "Background mesh wake", + comment: "App Info privacy feature title explaining BLE wake-on-proximity" + ), + resolvedDescription: String( + localized: "app_info.privacy.wake_proximity.description", + defaultValue: "while closed, nearby peers may reopen bitchat over bluetooth so the mesh can reach you — the ios “accessory would like to open bitchat” prompt is that wake, and is safe to allow", + comment: "App Info privacy feature description for the iOS accessory wake modal" + ) + ) static let panic = AppInfoFeatureInfo( icon: "hand.raised.fill", title: "app_info.privacy.panic.title", @@ -814,6 +829,8 @@ struct AppInfoView: View { FeatureRow(info: Strings.Privacy.ephemeral) + FeatureRow(info: Strings.Privacy.wakeProximity) + FeatureRow(info: Strings.Privacy.panic) } From 744bb808656dd920bbf63fc145cf53a43ca26104 Mon Sep 17 00:00:00 2001 From: Taksh Date: Fri, 31 Jul 2026 17:48:03 +0300 Subject: [PATCH 2/3] Address Jack review on BLE wake-on-proximity labeling (#1574). MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit House copy: people not users; lowercase App Info title; attribute wake arming to bitchat (iOS completes when a peer returns). Trim the peripheral usage string — the iOS 26 accessory modal does not show plist text. --- bitchat/Info.plist | 4 ++-- bitchat/Views/AppInfoView.swift | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/bitchat/Info.plist b/bitchat/Info.plist index c2bf1840..032dc510 100644 --- a/bitchat/Info.plist +++ b/bitchat/Info.plist @@ -36,9 +36,9 @@ LSMinimumSystemVersion $(MACOSX_DEPLOYMENT_TARGET) NSBluetoothAlwaysUsageDescription - bitchat uses Bluetooth to create a secure mesh with nearby users. While backgrounded, a nearby peer may ask iOS to reopen bitchat so the mesh can reach you — that system prompt is expected. + bitchat uses Bluetooth to create a secure mesh with nearby people. While backgrounded, bitchat may arm reconnects that iOS completes when a peer returns into range — that system prompt is expected. NSBluetoothPeripheralUsageDescription - bitchat uses Bluetooth to discover and connect with nearby users. Background reconnects can show an iOS “accessory would like to open bitchat” prompt; allow it to stay reachable, or dismiss if you prefer not to wake. + bitchat uses Bluetooth to discover and connect with nearby people. NSCameraUsageDescription bitchat uses the camera to scan QR codes to verify peers. NSLocationWhenInUseUsageDescription diff --git a/bitchat/Views/AppInfoView.swift b/bitchat/Views/AppInfoView.swift index 101f8973..e180a527 100644 --- a/bitchat/Views/AppInfoView.swift +++ b/bitchat/Views/AppInfoView.swift @@ -222,17 +222,19 @@ struct AppInfoView: View { description: "app_info.privacy.ephemeral.description" ) /// Explains the iOS 26 “accessory would like to open bitchat” - /// modal from wake-on-proximity (#1427 / #1396). + /// modal from wake-on-proximity (#1427 / #1396). The system modal + /// text is Apple-controlled (Info.plist usage strings are not + /// shown there); this App Info row is the honest in-app label. static let wakeProximity = AppInfoFeatureInfo( icon: "antenna.radiowaves.left.and.right", resolvedTitle: String( localized: "app_info.privacy.wake_proximity.title", - defaultValue: "Background mesh wake", + defaultValue: "background mesh wake", comment: "App Info privacy feature title explaining BLE wake-on-proximity" ), resolvedDescription: String( localized: "app_info.privacy.wake_proximity.description", - defaultValue: "while closed, nearby peers may reopen bitchat over bluetooth so the mesh can reach you — the ios “accessory would like to open bitchat” prompt is that wake, and is safe to allow", + defaultValue: "while closed, bitchat arms bluetooth reconnects so ios can reopen the app when a peer returns into range — the “accessory would like to open bitchat” prompt is that wake, and is safe to allow", comment: "App Info privacy feature description for the iOS accessory wake modal" ) )