From ebb3d8dab499116ec68a7799e705c83b03bcc9c8 Mon Sep 17 00:00:00 2001 From: LeonardSEO <130681849+LeonardSEO@users.noreply.github.com> Date: Wed, 21 Oct 2026 16:30:55 +0200 Subject: [PATCH] Describe a 5/MG offload that served no history instead of calling history sync experimental The history chip now states the observed fact, and the Android add-device note uses the text and translations Apple already ships. Copy only. --- Strand/Resources/Localizable.xcstrings | 122 +----------------- Strand/Screens/TodayView.swift | 4 +- .../main/java/com/noop/ui/AddDeviceWizard.kt | 7 +- .../app/src/main/res/values-de/strings.xml | 4 +- .../app/src/main/res/values-es/strings.xml | 4 +- .../app/src/main/res/values-fr/strings.xml | 4 +- .../app/src/main/res/values-it/strings.xml | 4 +- .../app/src/main/res/values-pl/strings.xml | 4 +- .../src/main/res/values-pt-rPT/strings.xml | 4 +- .../app/src/main/res/values-ru/strings.xml | 4 +- .../app/src/main/res/values-zh/strings.xml | 4 +- android/app/src/main/res/values/strings.xml | 4 +- 12 files changed, 30 insertions(+), 139 deletions(-) diff --git a/Strand/Resources/Localizable.xcstrings b/Strand/Resources/Localizable.xcstrings index 7f227851a7..ec9202e607 100644 --- a/Strand/Resources/Localizable.xcstrings +++ b/Strand/Resources/Localizable.xcstrings @@ -55795,64 +55795,9 @@ } } }, - "Connected. History sync is experimental on 5.0.": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Verbunden. Verlaufssynchronisierung ist auf 5.0 experimentell." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "Conectada. La sincronización del historial es experimental en la 5.0." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "Connecté. La synchronisation de l'historique est expérimentale sur la 5.0." - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "Connessa. La sincronizzazione della cronologia è sperimentale su 5.0." - } - }, - "pt-PT": { - "stringUnit": { - "state": "translated", - "value": "Ligado. A sincronização do histórico é experimental na versão 5.0." - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Подключено. Синхронизация истории на 5.0 экспериментальная." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "已连接。5.0 上的历史同步为实验性功能。" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "已連接。歷史同步在 5.0 上仍屬實驗性。" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Połączony. Synchronizacja historii jest eksperymentalna w wersji 5.0." - } - } - } - }, + "Connected. The last sync brought no history from this 5.0 strap.": { "localizations": { + "de": {"stringUnit": {"state": "translated", "value": "Verbunden. Die letzte Synchronisierung brachte keinen Verlauf von diesem 5.0-Armband."}}, "es": {"stringUnit": {"state": "translated", "value": "Conectado. La última sincronización no trajo historial de esta pulsera 5.0."}}, "fr": {"stringUnit": {"state": "translated", "value": "Connecté. La dernière synchronisation n'a rapporté aucun historique de ce bracelet 5.0."}}, "it": {"stringUnit": {"state": "translated", "value": "Connesso. L'ultima sincronizzazione non ha portato cronologia da questa fascia 5.0."}}, "pl": {"stringUnit": {"state": "translated", "value": "Połączono. Ostatnia synchronizacja nie przyniosła historii z tej opaski 5.0."}}, "pt-PT": {"stringUnit": {"state": "translated", "value": "Ligado. A última sincronização não trouxe histórico desta pulseira 5.0."}}, "ru": {"stringUnit": {"state": "translated", "value": "Подключено. Последняя синхронизация не принесла истории с этого браслета 5.0."}}, "zh-Hans": {"stringUnit": {"state": "translated", "value": "已连接。上次同步未从这条 5.0 手环获取到历史记录。"}}, "zh-Hant": {"stringUnit": {"state": "translated", "value": "已連線。上次同步未從這條 5.0 手環取得歷史記錄。"}} + } }, "Connected. New strap data is written automatically, with periodic background refresh when iOS allows it.": { "localizations": { "de": { @@ -83383,64 +83328,9 @@ } } }, - "History sync is experimental on 5.0.": { - "localizations": { - "de": { - "stringUnit": { - "state": "translated", - "value": "Verlaufssynchronisierung ist auf 5.0 experimentell." - } - }, - "es": { - "stringUnit": { - "state": "translated", - "value": "La sincronización del historial es experimental en la 5.0." - } - }, - "fr": { - "stringUnit": { - "state": "translated", - "value": "La synchronisation de l'historique est expérimentale sur 5.0." - } - }, - "it": { - "stringUnit": { - "state": "translated", - "value": "La sincronizzazione della cronologia è sperimentale su 5.0." - } - }, - "pt-PT": { - "stringUnit": { - "state": "translated", - "value": "A sincronização do histórico é experimental na versão 5.0." - } - }, - "ru": { - "stringUnit": { - "state": "translated", - "value": "Синхронизация истории экспериментальна на 5.0." - } - }, - "zh-Hans": { - "stringUnit": { - "state": "translated", - "value": "历史同步在 5.0 上属实验性。" - } - }, - "zh-Hant": { - "stringUnit": { - "state": "translated", - "value": "歷史同步在 5.0 上屬實驗性。" - } - }, - "pl": { - "stringUnit": { - "state": "translated", - "value": "Synchronizacja historii jest eksperymentalna w wersji 5.0." - } - } - } - }, + "The last sync brought no history from this 5.0 strap.": { "localizations": { + "de": {"stringUnit": {"state": "translated", "value": "Die letzte Synchronisierung brachte keinen Verlauf von diesem 5.0-Armband."}}, "es": {"stringUnit": {"state": "translated", "value": "La última sincronización no trajo historial de esta pulsera 5.0."}}, "fr": {"stringUnit": {"state": "translated", "value": "La dernière synchronisation n'a rapporté aucun historique de ce bracelet 5.0."}}, "it": {"stringUnit": {"state": "translated", "value": "L'ultima sincronizzazione non ha portato cronologia da questa fascia 5.0."}}, "pl": {"stringUnit": {"state": "translated", "value": "Ostatnia synchronizacja nie przyniosła historii z tej opaski 5.0."}}, "pt-PT": {"stringUnit": {"state": "translated", "value": "A última sincronização não trouxe histórico desta pulseira 5.0."}}, "ru": {"stringUnit": {"state": "translated", "value": "Последняя синхронизация не принесла истории с этого браслета 5.0."}}, "zh-Hans": {"stringUnit": {"state": "translated", "value": "上次同步未从这条 5.0 手环获取到历史记录。"}}, "zh-Hant": {"stringUnit": {"state": "translated", "value": "上次同步未從這條 5.0 手環取得歷史記錄。"}} + } }, "History synced": { "localizations": { "de": { diff --git a/Strand/Screens/TodayView.swift b/Strand/Screens/TodayView.swift index 4935abfd9c..ea9ea78224 100644 --- a/Strand/Screens/TodayView.swift +++ b/Strand/Screens/TodayView.swift @@ -5917,7 +5917,7 @@ enum RecordingState: Equatable { case .recording: return "Your strap is connected and saving data." case .lastSynced: return "Reconnect to pull the latest." case .notRecording: return "Strap not connected. Tap to connect." - case .historyExperimental: return "History sync is experimental on 5.0." + case .historyExperimental: return "The last sync brought no history from this 5.0 strap." case .connectedNoData: return "No live heart rate or synced history yet this session." } } @@ -5932,7 +5932,7 @@ enum RecordingState: Equatable { case .notRecording: return String(localized: "Not recording. Strap not connected. Tap to connect.") case .historyExperimental: - return String(localized: "Connected. History sync is experimental on 5.0.") + return String(localized: "Connected. The last sync brought no history from this 5.0 strap.") case .connectedNoData: return String(localized: "Connected. No live heart rate or synced history yet this session.") } diff --git a/android/app/src/main/java/com/noop/ui/AddDeviceWizard.kt b/android/app/src/main/java/com/noop/ui/AddDeviceWizard.kt index bf3d5a9c72..408239bd7d 100644 --- a/android/app/src/main/java/com/noop/ui/AddDeviceWizard.kt +++ b/android/app/src/main/java/com/noop/ui/AddDeviceWizard.kt @@ -27,6 +27,7 @@ import androidx.compose.material.icons.filled.Close import androidx.compose.material.icons.filled.FavoriteBorder import androidx.compose.material.icons.filled.FileDownload import androidx.compose.material.icons.filled.GraphicEq +import androidx.compose.material.icons.filled.Info import androidx.compose.material.icons.filled.PhonelinkErase import androidx.compose.material.icons.filled.Science import androidx.compose.material.icons.filled.Warning @@ -862,16 +863,16 @@ private fun PrepStep(type: DeviceType, onScan: () -> Unit) { modifier = Modifier .fillMaxWidth() .clip(RoundedCornerShape(12.dp)) - .background(Palette.statusWarning.copy(alpha = 0.10f)) + .background(Palette.accent.copy(alpha = 0.10f)) .padding(12.dp), horizontalArrangement = Arrangement.spacedBy(10.dp), verticalAlignment = Alignment.Top, ) { - Icon(Icons.Filled.Science, contentDescription = null, tint = Palette.statusWarning, modifier = Modifier.size(18.dp)) + Icon(Icons.Filled.Info, contentDescription = null, tint = Palette.accent, modifier = Modifier.size(18.dp)) Text( uiString(R.string.l10n_add_device_wizard_whoop_5_0_mg_support_is_e452e686), style = NoopType.footnote, - color = Palette.statusWarning, + color = Palette.textSecondary, ) } } else if (type.isExperimental) { diff --git a/android/app/src/main/res/values-de/strings.xml b/android/app/src/main/res/values-de/strings.xml index 8399bc377c..96770bdb5c 100644 --- a/android/app/src/main/res/values-de/strings.xml +++ b/android/app/src/main/res/values-de/strings.xml @@ -227,7 +227,7 @@ Erneut versuchen Dateiimport verwenden Wir konnten diesen Ring nicht übernehmen. - Die Unterstützung für WHOOP 5.0 / MG ist neuer und in NOOP noch experimentell. + WHOOP 5.0/MG unterstützt Live-Daten und Bandverlauf. Protokollwerkzeuge sind separat im Testcenter. WHOOP ist NOOPs primäres, voll unterstütztes Band. Andere Herzfrequenzgurte streamen Live-Herzfrequenz und HRV, aber nicht WHOOPs tiefere Schlaf- und Erholungsdaten. Mehr moreGroupChevron @@ -1987,7 +1987,7 @@ Dein Strap ist verbunden und speichert Daten. Verbinde neu, um das Neueste zu laden. Strap nicht verbunden. Tippe zum Verbinden. - Verlaufssynchronisierung ist auf 5.0 experimentell. + Die letzte Synchronisierung brachte keinen Verlauf von diesem 5.0-Armband. Noch keine Live-Herzfrequenz und kein synchronisierter Verlauf in dieser Sitzung. Kalibrierung Wird morgens fortgesetzt diff --git a/android/app/src/main/res/values-es/strings.xml b/android/app/src/main/res/values-es/strings.xml index 20aed28131..c31ae0835a 100644 --- a/android/app/src/main/res/values-es/strings.xml +++ b/android/app/src/main/res/values-es/strings.xml @@ -45,7 +45,7 @@ Inténtalo de nuevo Usar importación de archivos No pudimos tomar el control de este anillo. - La compatibilidad con WHOOP 5.0 / MG es más nueva y sigue siendo experimental en NOOP. + WHOOP 5.0/MG admite datos en directo e historial. Las herramientas de protocolo están aparte en el Centro de pruebas. WHOOP es la banda principal y totalmente compatible de NOOP. Otras bandas de frecuencia cardíaca transmiten frecuencia cardíaca y VFC en vivo, pero no los datos más profundos de sueño y recuperación de WHOOP. Más másGroupChevron @@ -1955,7 +1955,7 @@ Tu pulsera está conectada y guardando datos. Reconecta para extraer lo más reciente. Pulsera no conectada. Toca para conectar. - La sincronización del historial es experimental en la 5.0. + La última sincronización no trajo historial de esta pulsera 5.0. Aún no hay frecuencia cardíaca en vivo ni historial sincronizado en esta sesión. Calibrando Se reanuda por la mañana diff --git a/android/app/src/main/res/values-fr/strings.xml b/android/app/src/main/res/values-fr/strings.xml index bd1c4cc3b1..5459f79331 100644 --- a/android/app/src/main/res/values-fr/strings.xml +++ b/android/app/src/main/res/values-fr/strings.xml @@ -45,7 +45,7 @@ Réessayer Utiliser l\'import de fichier Nous n\'avons pas pu prendre le contrôle de cet anneau. - La prise en charge du WHOOP 5.0 / MG est plus récente et encore expérimentale dans NOOP. + WHOOP 5.0/MG gère les données en direct et l’historique. Les outils de protocole sont séparés dans le Centre de test. WHOOP est le bracelet principal et entièrement pris en charge par NOOP. Les autres bracelets de fréquence cardiaque diffusent la fréquence cardiaque et la VFC en direct, mais pas les données plus poussées de sommeil et de récupération de WHOOP. Plus plus de GroupeChevron @@ -1973,7 +1973,7 @@ Votre bracelet est connecté et enregistre les données. Reconnectez-vous pour récupérer les dernières données. Bracelet non connecté. Touchez pour vous connecter. - La synchronisation de l\'historique est expérimentale sur 5.0. + La dernière synchronisation n\'a rapporté aucun historique de ce bracelet 5.0. Aucune fréquence cardiaque en direct ni historique synchronisé durant cette session. Calibration en cours Reprend le matin diff --git a/android/app/src/main/res/values-it/strings.xml b/android/app/src/main/res/values-it/strings.xml index 1a47561f99..ca9ccfccbc 100644 --- a/android/app/src/main/res/values-it/strings.xml +++ b/android/app/src/main/res/values-it/strings.xml @@ -296,7 +296,7 @@ Riprova Usa l\'importazione da file Non siamo riusciti a prendere il controllo di questo anello. - Il supporto per WHOOP 5.0 / MG è più recente e ancora sperimentale in NOOP. + WHOOP 5.0/MG supporta i dati in tempo reale e la cronologia della fascia. Gli strumenti di ricerca sul protocollo sono separati nel Centro test. WHOOP è la fascia principale e pienamente supportata di NOOP. Le altre fasce per la frequenza cardiaca trasmettono la frequenza cardiaca in diretta e l\'HRV, ma non i dati più approfonditi sul sonno e sul recupero di WHOOP. Altro moreGroupChevron @@ -2042,7 +2042,7 @@ La tua fascia è connessa e sta salvando i dati. Riconnettiti per recuperare i dati più recenti. Fascia non connessa. Tocca per connettere. - La sincronizzazione della cronologia è sperimentale su 5.0. + L\'ultima sincronizzazione non ha portato cronologia da questa fascia 5.0. Ancora nessuna frequenza cardiaca in diretta né cronologia sincronizzata in questa sessione. Calibrazione Riprende al mattino diff --git a/android/app/src/main/res/values-pl/strings.xml b/android/app/src/main/res/values-pl/strings.xml index b5e9c52de8..43a5aba26c 100644 --- a/android/app/src/main/res/values-pl/strings.xml +++ b/android/app/src/main/res/values-pl/strings.xml @@ -210,7 +210,7 @@ Spróbuj ponownie Użyj importu plików Nie mogliśmy przejąć tego pierścienia. - Obsługa WHOOP 5.0 / MG jest nowsza i wciąż eksperymentalna w NOOP. + WHOOP 5.0/MG obsługuje dane na żywo i historię paska. Narzędzia badawcze protokołu są dostępne osobno w Centrum Testowym. WHOOP jest głównym, w pełni obsługiwanym pasmem NOOP. Inne paski do pomiaru tętna przesyłają na żywo tętno i dane HRV, ale nie dane dotyczące głębszego snu i regeneracji WHOOP. Więcej więcejGrupaChevron @@ -1944,7 +1944,7 @@ Twój pasek jest podłączony i zapisuje dane. Połącz się ponownie, aby pobrać najnowsze. Pasek nie jest podłączony. Kliknij, aby się połączyć. - Synchronizacja historii jest eksperymentalna w wersji 5.0. + Ostatnia synchronizacja nie przyniosła historii z tej opaski 5.0. W tej sesji nie ma jeszcze tętna na żywo ani zsynchronizowanej historii. Kalibracja Wznowi się rano diff --git a/android/app/src/main/res/values-pt-rPT/strings.xml b/android/app/src/main/res/values-pt-rPT/strings.xml index b64877aeb3..110165698c 100644 --- a/android/app/src/main/res/values-pt-rPT/strings.xml +++ b/android/app/src/main/res/values-pt-rPT/strings.xml @@ -210,7 +210,7 @@ Tente novamente Usar importação de ficheiros Não poderíamos assumir este anel. - O suporte ao WHOOP 5.0/MG é mais recente e ainda experimental no NOOP. + WHOOP 5.0/MG suporta dados em direto e histórico. As ferramentas de protocolo estão separadas no Centro de testes. WHOOP é a banda principal e totalmente suportada do NOOP. Outras gamas de frequência cardíaca transmitem a frequência cardíaca e a VFC em direto, mas não os dados de sono e recuperação mais profundos do WHOOP. Mais moreGroupChevron @@ -1948,7 +1948,7 @@ A tua bracelete está conectada e a guardar dados. Volte a ligar para obter o mais recente. Correia não ligada. Toque para ligar. - A sincronização do histórico é experimental na versão 5.0. + A última sincronização não trouxe histórico desta bracelete 5.0. Ainda não há frequência cardíaca em direto nem histórico sincronizado nesta sessão. A calibrar Retoma de manhã diff --git a/android/app/src/main/res/values-ru/strings.xml b/android/app/src/main/res/values-ru/strings.xml index 6fbec7268f..bfd45cd0a4 100644 --- a/android/app/src/main/res/values-ru/strings.xml +++ b/android/app/src/main/res/values-ru/strings.xml @@ -287,7 +287,7 @@ Повторить Использовать импорт файла Не удалось перехватить управление этим кольцом. - Поддержка WHOOP 5.0 / MG в NOOP новее и всё ещё экспериментальна. + WHOOP 5.0/MG поддерживает данные в реальном времени и историю браслета. Инструменты исследования протокола вынесены в Тестовый центр. WHOOP — основной, полностью поддерживаемый браслет NOOP. Другие пульсометры передают живой пульс и ВСР, но не более глубокие данные WHOOP о сне и восстановлении. Ещё Пока нет записанных измерений. @@ -1947,7 +1947,7 @@ Ваш браслет подключён и сохраняет данные. Переподключитесь, чтобы получить последние данные. Браслет не подключён. Нажмите, чтобы подключить. - Синхронизация истории экспериментальна на 5.0. + Последняя синхронизация не принесла истории с этого браслета 5.0. Пока нет ни пульса в реальном времени, ни синхронизированной истории в этой сессии. Калибровка Возобновится утром diff --git a/android/app/src/main/res/values-zh/strings.xml b/android/app/src/main/res/values-zh/strings.xml index 75a9e8a04f..c695ba692b 100644 --- a/android/app/src/main/res/values-zh/strings.xml +++ b/android/app/src/main/res/values-zh/strings.xml @@ -207,7 +207,7 @@ 重试 使用文件导入 抱歉,我们无法接管这枚戒指。 - 对 WHOOP 5.0 (MG) 的支持在 NOOP 中仍处于实验阶段。 + WHOOP 5.0/MG 支持实时数据和手环历史。协议研究工具单独位于测试中心。 WHOOP 是 NOOP 首要且完全支持的核心设备。其他心率带只能提供基础的实时心率流。 更多 更多 @@ -1877,7 +1877,7 @@ 你的手环已连接并正在保存数据。 重新连接以拉取最新内容。 手环未连接。点击以连接。 - 历史同步在 5.0 上属实验性。 + 上次同步未从这条 5.0 手环获取到历史记录。 本次连接尚无实时心率或已同步的历史记录。 校准中 早晨恢复 diff --git a/android/app/src/main/res/values/strings.xml b/android/app/src/main/res/values/strings.xml index 5ae979343a..25008a2301 100644 --- a/android/app/src/main/res/values/strings.xml +++ b/android/app/src/main/res/values/strings.xml @@ -325,7 +325,7 @@ Try again Use file import We could not take over this ring. - WHOOP 5.0 / MG support is newer and still experimental in NOOP. + WHOOP 5.0 / MG supports live data and strap history. Protocol-research tools are available separately in Test Centre. WHOOP is NOOP\'s primary, fully-supported band. Other heart-rate straps stream live heart rate and HRV, but not WHOOP\'s deeper sleep and recovery data. More moreGroupChevron @@ -2094,7 +2094,7 @@ Your strap is connected and saving data. Reconnect to pull the latest. Strap not connected. Tap to connect. - History sync is experimental on 5.0. + The last sync brought no history from this 5.0 strap. No live heart rate or synced history yet this session. Calibrating Resumes in the morning