From 94d40de047714462cb32ecb031a07464a3ee3cef Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Wed, 21 Oct 2026 02:33:31 +0200 Subject: [PATCH 1/3] fix: usdt over-50% warning names the usdt balance --- AGENTS.md | 2 ++ Bitkit/Resources/Localization/ar.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/ca.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/cs.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/de.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/el.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/en.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/es-419.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/es.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/fr.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/it.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/nl.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/pl.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/pt-BR.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/pt.lproj/Localizable.strings | 1 + Bitkit/Resources/Localization/ru.lproj/Localizable.strings | 1 + Bitkit/Views/Wallets/UsdtSendView.swift | 2 +- 17 files changed, 18 insertions(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 76c5271fd..e1ae1f606 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -161,6 +161,8 @@ node scripts/validate-translations.js **Note:** Translations live in this repository. When adding or changing an English string, add or update its translation in every `*.lproj/Localizable.strings` in the same PR. +**Rail-specific copy:** when a shared message needs wording for one payment rail, add a new key with the rail as suffix (`wallet__send_dialog2_usdt` next to `wallet__send_dialog2`) and leave the shared key unchanged. + ### Testing ```bash diff --git a/Bitkit/Resources/Localization/ar.lproj/Localizable.strings b/Bitkit/Resources/Localization/ar.lproj/Localizable.strings index 0bcf440cd..8e40c9d4b 100644 --- a/Bitkit/Resources/Localization/ar.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/ar.lproj/Localizable.strings @@ -1070,6 +1070,7 @@ "wallet__send_yes" = "نعم، أرسل"; "wallet__send_dialog1" = "يبدو أنك ترسل أكثر من 100 دولار. هل تريد المتابعة؟"; "wallet__send_dialog2" = "يبدو أنك ترسل أكثر من 50% من إجمالي رصيدك. هل تريد المتابعة؟"; +"wallet__send_dialog2_usdt" = "يبدو أنك ترسل أكثر من 50% من رصيدك من USDT. هل تريد المتابعة؟"; "wallet__send_dialog3" = "يبدو أن رسوم المعاملة أكثر من 50% من المبلغ الذي ترسله. هل تريد المتابعة؟"; "wallet__send_dialog4" = "يبدو أن رسوم المعاملة أكثر من 10 دولارات. هل تريد المتابعة؟"; "wallet__send_dialog5_title" = "الرسوم منخفضة جدًا محتملاً"; diff --git a/Bitkit/Resources/Localization/ca.lproj/Localizable.strings b/Bitkit/Resources/Localization/ca.lproj/Localizable.strings index 640207c62..3a21ffb3c 100644 --- a/Bitkit/Resources/Localization/ca.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/ca.lproj/Localizable.strings @@ -1187,6 +1187,7 @@ "wallet__send_yes" = "Sí, envia"; "wallet__send_dialog1" = "Sembla que estàs enviant més de 100 $. Vols continuar?"; "wallet__send_dialog2" = "Sembla que estàs enviant més del 50% del teu saldo total. Vols continuar?"; +"wallet__send_dialog2_usdt" = "Sembla que estàs enviant més del 50% del teu saldo de USDT. Vols continuar?"; "wallet__send_dialog3" = "La comissió de la transacció sembla ser més del 50% de l\'import que estàs enviant. Vols continuar?"; "wallet__send_dialog4" = "La comissió de la transacció sembla ser superior a 10 $. Vols continuar?"; "wallet__send_dialog5_title" = "La comissió pot ser massa baixa"; diff --git a/Bitkit/Resources/Localization/cs.lproj/Localizable.strings b/Bitkit/Resources/Localization/cs.lproj/Localizable.strings index b28cb1392..fdbc1d658 100644 --- a/Bitkit/Resources/Localization/cs.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/cs.lproj/Localizable.strings @@ -1294,6 +1294,7 @@ "wallet__send_yes" = "Ano, odeslat"; "wallet__send_dialog1" = "Zdá se, že posíláte více než $100. Přejete si pokračovat?"; "wallet__send_dialog2" = "Zdá se, že posíláte více než 50 % svého celkového zůstatku. Přejete si pokračovat?"; +"wallet__send_dialog2_usdt" = "Zdá se, že posíláte více než 50 % svého zůstatku USDT. Přejete si pokračovat?"; "wallet__send_dialog3" = "Zdá se, že transakční poplatek přesahuje 50 % částky, kterou odesíláte. Přejete si pokračovat?"; "wallet__send_dialog4" = "Transakční poplatek se zdá být vyšší než $10. Přejete si pokračovat?"; "wallet__send_dialog5_title" = "Poplatek je potenciálně příliš nízký"; diff --git a/Bitkit/Resources/Localization/de.lproj/Localizable.strings b/Bitkit/Resources/Localization/de.lproj/Localizable.strings index e082793b2..d3594e185 100644 --- a/Bitkit/Resources/Localization/de.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/de.lproj/Localizable.strings @@ -1292,6 +1292,7 @@ "wallet__send_yes" = "Ja, senden"; "wallet__send_dialog1" = "Es scheint, dass du über $100 sendest. Möchtest du fortfahren?"; "wallet__send_dialog2" = "Es scheint, dass du über 50% deines Gesamtguthabens sendest. Möchtest du fortfahren?"; +"wallet__send_dialog2_usdt" = "Es scheint, dass du über 50% deines USDT-Guthabens sendest. Möchtest du fortfahren?"; "wallet__send_dialog3" = "Die Transaktionsgebühr scheint über 50% des gesendeten Betrags zu liegen. Möchtest du fortfahren?"; "wallet__send_dialog4" = "Die Transaktionsgebühr scheint über $10 zu liegen. Möchtest du fortfahren?"; "wallet__send_dialog5_title" = "Gebühr ist möglicherweise zu niedrig"; diff --git a/Bitkit/Resources/Localization/el.lproj/Localizable.strings b/Bitkit/Resources/Localization/el.lproj/Localizable.strings index a417f60da..26f1ff7d9 100644 --- a/Bitkit/Resources/Localization/el.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/el.lproj/Localizable.strings @@ -1083,6 +1083,7 @@ "wallet__send_yes" = "Ναι, Αποστολή"; "wallet__send_dialog1" = "Φαίνεται ότι στέλνετε πάνω από $100. Θέλετε να συνεχίσετε;"; "wallet__send_dialog2" = "Φαίνεται ότι στέλνετε πάνω από το 50% του συνολικού υπολοίπου σας. Θέλετε να συνεχίσετε;"; +"wallet__send_dialog2_usdt" = "Φαίνεται ότι στέλνετε πάνω από το 50% του υπολοίπου σας σε USDT. Θέλετε να συνεχίσετε;"; "wallet__send_dialog3" = "Το τέλος συναλλαγής φαίνεται να είναι πάνω από το 50% του ποσού που στέλνετε. Θέλετε να συνεχίσετε;"; "wallet__send_dialog4" = "Το τέλος συναλλαγής φαίνεται να είναι πάνω από $10. Θέλετε να συνεχίσετε;"; "wallet__send_dialog5_title" = "Το τέλος είναι πιθανόν πολύ χαμηλό"; diff --git a/Bitkit/Resources/Localization/en.lproj/Localizable.strings b/Bitkit/Resources/Localization/en.lproj/Localizable.strings index 07b8118fb..121f3416f 100644 --- a/Bitkit/Resources/Localization/en.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/en.lproj/Localizable.strings @@ -1308,6 +1308,7 @@ "wallet__send_yes" = "Yes, Send"; "wallet__send_dialog1" = "It appears you are sending over $100. Do you want to continue?"; "wallet__send_dialog2" = "It appears you are sending over 50% of your total balance. Do you want to continue?"; +"wallet__send_dialog2_usdt" = "It appears you are sending over 50% of your USDT balance. Do you want to continue?"; "wallet__send_dialog3" = "The transaction fee appears to be over 50% of the amount you are sending. Do you want to continue?"; "wallet__send_dialog4" = "The transaction fee appears to be over $10. Do you want to continue?"; "wallet__send_dialog5_title" = "Fee is potentially too low"; diff --git a/Bitkit/Resources/Localization/es-419.lproj/Localizable.strings b/Bitkit/Resources/Localization/es-419.lproj/Localizable.strings index ba9bf100c..933d03dc5 100644 --- a/Bitkit/Resources/Localization/es-419.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/es-419.lproj/Localizable.strings @@ -1297,6 +1297,7 @@ "wallet__send_yes" = "Sí, enviar"; "wallet__send_dialog1" = "Parece que está enviando más de 100 dólares. ¿Desea continuar?"; "wallet__send_dialog2" = "Parece que está enviando más del 50% de su saldo total. ¿Desea continuar?"; +"wallet__send_dialog2_usdt" = "Parece que está enviando más del 50% de su saldo de USDT. ¿Desea continuar?"; "wallet__send_dialog3" = "La comisión de transacción parece ser superior al 50% del importe que está enviando. ¿Desea continuar?"; "wallet__send_dialog4" = "La tasa de transacción parece ser superior a 10 dólares. ¿Desea continuar?"; "wallet__send_dialog5_title" = "La tasa es potencialmente demasiado baja"; diff --git a/Bitkit/Resources/Localization/es.lproj/Localizable.strings b/Bitkit/Resources/Localization/es.lproj/Localizable.strings index d9c7913bd..afc1252e6 100644 --- a/Bitkit/Resources/Localization/es.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/es.lproj/Localizable.strings @@ -1204,6 +1204,7 @@ "wallet__send_yes" = "Sí, enviar"; "wallet__send_dialog1" = "Parece que está enviando más de 100 dólares. ¿Desea continuar?"; "wallet__send_dialog2" = "Parece que está enviando más del 50% de su saldo total. ¿Desea continuar?"; +"wallet__send_dialog2_usdt" = "Parece que está enviando más del 50% de su saldo de USDT. ¿Desea continuar?"; "wallet__send_dialog3" = "La comisión de transacción parece ser superior al 50% del importe que está enviando. ¿Desea continuar?"; "wallet__send_dialog4" = "La comisión de transacción parece ser superior a 10 dólares. ¿Desea continuar?"; "wallet__send_dialog5_title" = "La comisión es potencialmente muy baja"; diff --git a/Bitkit/Resources/Localization/fr.lproj/Localizable.strings b/Bitkit/Resources/Localization/fr.lproj/Localizable.strings index 52e840f68..18e61ed52 100644 --- a/Bitkit/Resources/Localization/fr.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/fr.lproj/Localizable.strings @@ -1305,6 +1305,7 @@ "wallet__send_yes" = "Oui, Envoyer"; "wallet__send_dialog1" = "Il apparaît que vous envoyez plus de 100 $. Voulez-vous continuer ?"; "wallet__send_dialog2" = "Il apparaît que vous envoyez plus de 50 % de votre solde total. Voulez-vous continuer ?"; +"wallet__send_dialog2_usdt" = "Il apparaît que vous envoyez plus de 50 % de votre solde USDT. Voulez-vous continuer ?"; "wallet__send_dialog3" = "Les frais de transaction semblent être supérieurs à 50 % du montant que vous envoyez. Voulez-vous continuer ?"; "wallet__send_dialog4" = "Les frais de transaction s\'élèvent à plus de 10 $. Voulez-vous continuer ?"; "wallet__send_dialog5_title" = "Les frais sont sont potentiellement trop faibles"; diff --git a/Bitkit/Resources/Localization/it.lproj/Localizable.strings b/Bitkit/Resources/Localization/it.lproj/Localizable.strings index a65e4b51e..3d638c1b9 100644 --- a/Bitkit/Resources/Localization/it.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/it.lproj/Localizable.strings @@ -1270,6 +1270,7 @@ "wallet__send_yes" = "Si, Invia"; "wallet__send_dialog1" = "Sembra che tu stia inviando più di $100. Vuoi continuare?"; "wallet__send_dialog2" = "Sembra che tu stia inviando più del 50% del suo saldo totale. Vuoi continuare?"; +"wallet__send_dialog2_usdt" = "Sembra che tu stia inviando più del 50% del tuo saldo USDT. Vuoi continuare?"; "wallet__send_dialog3" = "La commissione della transazione sembra essere superiore al 50% dell'importo che stai inviando. Vuoi continuare?"; "wallet__send_dialog4" = "La commissione della transazione sembra essere superiore a $10. Vuoi continuare?"; "wallet__send_dialog5_title" = "Le commissione è potenzialmente troppo bassa"; diff --git a/Bitkit/Resources/Localization/nl.lproj/Localizable.strings b/Bitkit/Resources/Localization/nl.lproj/Localizable.strings index 5db94734b..29f7473ef 100644 --- a/Bitkit/Resources/Localization/nl.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/nl.lproj/Localizable.strings @@ -1300,6 +1300,7 @@ "wallet__send_yes" = "Ja, Verstuur"; "wallet__send_dialog1" = "Het lijkt er op dat u meer dan $100 wilt versturen. Wilt u doorgaan?"; "wallet__send_dialog2" = "Het lijkt er op dat u meer dan 50% van uw totale saldo wil versturen. Wilt u doorgaan?"; +"wallet__send_dialog2_usdt" = "Het lijkt er op dat u meer dan 50% van uw USDT-saldo wil versturen. Wilt u doorgaan?"; "wallet__send_dialog3" = "De transactiekosten lijken meer dan 50% van het totale bedrag wat u wilt versturen. Wilt u doorgaan?"; "wallet__send_dialog4" = "De transactiekosten lijken meer dan $10 te zijn. Wilt u doorgaan?"; "wallet__send_dialog5_title" = "Vergoeding is mogelijk te laag"; diff --git a/Bitkit/Resources/Localization/pl.lproj/Localizable.strings b/Bitkit/Resources/Localization/pl.lproj/Localizable.strings index afcd7b4a1..d5e6c9374 100644 --- a/Bitkit/Resources/Localization/pl.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/pl.lproj/Localizable.strings @@ -1304,6 +1304,7 @@ "wallet__send_yes" = "Tak, wyślij"; "wallet__send_dialog1" = "Wygląda na to, że wysyłasz ponad $100. Czy kontynuować?"; "wallet__send_dialog2" = "Wygląda na to, że wysyłasz ponad 50% swojego salda. Czy kontynuować?"; +"wallet__send_dialog2_usdt" = "Wygląda na to, że wysyłasz ponad 50% swojego salda USDT. Czy kontynuować?"; "wallet__send_dialog3" = "Opłata transakcyjna wynosi ponad 50% wysyłanej kwoty. Czy chcesz kontynuować?"; "wallet__send_dialog4" = "Opłata transakcyjna wynosi ponad 10 USD. Czy chcesz kontynuować?"; "wallet__send_dialog5_title" = "Opłata transakcyjna jest potencjalnie zbyt niska"; diff --git a/Bitkit/Resources/Localization/pt-BR.lproj/Localizable.strings b/Bitkit/Resources/Localization/pt-BR.lproj/Localizable.strings index c84d25a17..1875b0f3a 100644 --- a/Bitkit/Resources/Localization/pt-BR.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/pt-BR.lproj/Localizable.strings @@ -1305,6 +1305,7 @@ "wallet__send_yes" = "Sim, Enviar"; "wallet__send_dialog1" = "Parece que você está enviando mais de US$ 100. Deseja continuar?"; "wallet__send_dialog2" = "Parece que você está enviando mais de 50% do seu saldo total. Deseja continuar?"; +"wallet__send_dialog2_usdt" = "Parece que você está enviando mais de 50% do seu saldo de USDT. Deseja continuar?"; "wallet__send_dialog3" = "A taxa de transação parece ser superior a 50% do valor que você está enviando. Deseja continuar?"; "wallet__send_dialog4" = "A taxa de transação parece ser superior a US$ 10. Deseja continuar?"; "wallet__send_dialog5_title" = "A taxa é potencialmente muito baixa"; diff --git a/Bitkit/Resources/Localization/pt.lproj/Localizable.strings b/Bitkit/Resources/Localization/pt.lproj/Localizable.strings index 3ba9289c8..39183d102 100644 --- a/Bitkit/Resources/Localization/pt.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/pt.lproj/Localizable.strings @@ -1058,6 +1058,7 @@ "wallet__send_yes" = "Sim, Enviar"; "wallet__send_dialog1" = "Parece que você está enviando mais de US$ 100. Deseja continuar?"; "wallet__send_dialog2" = "Parece que você está enviando mais de 50% do seu saldo total. Deseja continuar?"; +"wallet__send_dialog2_usdt" = "Parece que você está enviando mais de 50% do seu saldo de USDT. Deseja continuar?"; "wallet__send_dialog3" = "A taxa de transação parece ser superior a 50% do valor que você está enviando. Deseja continuar?"; "wallet__send_dialog4" = "A taxa de transação parece ser superior a US$ 10. Deseja continuar?"; "wallet__send_dialog5_title" = "A taxa pode ser demasiado baixa"; diff --git a/Bitkit/Resources/Localization/ru.lproj/Localizable.strings b/Bitkit/Resources/Localization/ru.lproj/Localizable.strings index a332ce783..526ba05b1 100644 --- a/Bitkit/Resources/Localization/ru.lproj/Localizable.strings +++ b/Bitkit/Resources/Localization/ru.lproj/Localizable.strings @@ -1289,6 +1289,7 @@ "wallet__send_yes" = "Да, Отправить"; "wallet__send_dialog1" = "Похоже, вы отправляете более 100$. Вы хотите продолжать?"; "wallet__send_dialog2" = "Похоже, вы отправляете более 50% от общего баланса. Вы хотите продолжать?"; +"wallet__send_dialog2_usdt" = "Похоже, вы отправляете более 50% вашего баланса USDT. Вы хотите продолжать?"; "wallet__send_dialog3" = "Комиссия за транзакцию составляет более 50% от суммы, которую вы отправляете. Вы хотите продолжать?"; "wallet__send_dialog4" = "Комиссия за транзакцию составляет более 10$. Вы хотите продолжать?"; "wallet__send_dialog5_title" = "Комиссия может быть слишком низкой"; diff --git a/Bitkit/Views/Wallets/UsdtSendView.swift b/Bitkit/Views/Wallets/UsdtSendView.swift index dd21dbb6a..7d4ad5e47 100644 --- a/Bitkit/Views/Wallets/UsdtSendView.swift +++ b/Bitkit/Views/Wallets/UsdtSendView.swift @@ -702,7 +702,7 @@ struct UsdtSendView: View { guard let quote, !busy, !submitted else { return } var warnings: [String] = [] if let balance = usdt.balance, quote.amount > balance / 2 { - warnings.append("wallet__send_dialog2") + warnings.append("wallet__send_dialog2_usdt") } if settings.warnWhenSendingOver100, quote.amount > 100_000_000 { warnings.append("wallet__send_dialog1") From 4a49042da3ea7f2aeb8fb0e170f5c99622961180 Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Wed, 21 Oct 2026 02:34:06 +0200 Subject: [PATCH 2/3] chore: add changelog fragment --- changelog.d/next/1069.fixed.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog.d/next/1069.fixed.md diff --git a/changelog.d/next/1069.fixed.md b/changelog.d/next/1069.fixed.md new file mode 100644 index 000000000..4e60004aa --- /dev/null +++ b/changelog.d/next/1069.fixed.md @@ -0,0 +1 @@ +USDT sends over half your USDT balance now warn about the USDT balance instead of the total balance. From f69b07814c40e3e375db9f306e01cb7bd6bc501f Mon Sep 17 00:00:00 2001 From: Ovi Trif Date: Wed, 21 Oct 2026 03:19:51 +0200 Subject: [PATCH 3/3] docs: add the usdt over-50% warning to the usdt qa checklist --- Docs/USDT-QA.md | 1 + 1 file changed, 1 insertion(+) diff --git a/Docs/USDT-QA.md b/Docs/USDT-QA.md index 5d5aecd52..0874a7f44 100644 --- a/Docs/USDT-QA.md +++ b/Docs/USDT-QA.md @@ -95,6 +95,7 @@ Reference: [USDT designs](https://www.figma.com/design/ltqvnKiejWj0JQiqtDf2JJ/Bi - [ ] Back out of an unprepared network and verify the displayed network always matches the QR. Return to Arbitrum and verify its original wallet address. - [ ] With a controlled Bitcoin invoice-refresh failure, open USDT Receive and select Savings or Spending. Verify the error offers Try Again instead of remaining on a spinner. Restore the backend and retry; verify the fresh Bitcoin QR appears without the previous amount or note. - [ ] With an authorized incoming transfer or an explicitly identified fixture, verify teal receive confetti, Details and OK; Details opens that transfer. +- [ ] With an authorized send or an explicitly identified fixture, send more than half the USDT balance: the warning reads "It appears you are sending over 50% of your USDT balance. Do you want to continue?", while a bitcoin send over half the total balance keeps the total balance copy. - [ ] With an authorized send or an explicitly identified fixture, check the swipe after warning and PIN prompts: loading and the completed checkmark stay at the right end, the swipe label is hidden, and confirmation keeps its side spacing until the success screen appears. - [ ] Verify bridge review, estimated fees and deposit history round displayed amounts to cents without changing the exact payment, QR or support-export values. Check a nonzero sub-cent value displays <0.01. - [ ] In delayed, failed, refunding, refunded and support-needed bridge details, verify Contact Support and Copy Details are small 40-point buttons in one row, matching Request refund / Hide details. Copy Details retains the full references; Contact Support opens the prefilled report without submitting it.