You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(frontend): finalize signer toast copy (calmer, less technical)
unavailable: 'Signing is temporarily unavailable. Please try again shortly.'
limit_reached: 'You've reached your signing limit. Please try again shortly.'
Drops the chain list and the 'we're working on a fix' admission so the outage
message reads neutrally (not like an incident on our side); the two now share a
cadence and closing. Synced the quoted copy in spec + PRODUCT.md.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/ai/PRODUCT.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -77,8 +77,8 @@ Every paid chain-fusion-signer call fires a `cfs_sign` Plausible event on **both
77
77
78
78
**User-facing behavior when signing can't be paid for.** When a signing call fails because the chain-fusion signer can't be paid (a `SignerCanisterPaymentError`), every affected flow — sending BTC/ETH/SOL, WalletConnect signing, and OpenCryptoPay payments — shows a calm message instead of the raw `Ledger error: …` text, distinguishing two cases:
79
79
80
-
-**Wallet-wide outage** (e.g. the backend is out of cycles): "we're temporarily unable to sign… working on a fix" (`sign.error.unavailable`).
81
-
-**Per-user signing limit** (the caller's ICRC-2 allowance towards the signer is exhausted — `isSignerCanisterAllowanceError`, detected from a nested `InsufficientAllowance` in the ledger error): "you've reached your current signing limit… try again later" (`sign.error.limit_reached`). In this case OISY also kicks off a best-effort background `allow_signing` re-grant (`replenishSignerAllowance`), so the next attempt can usually succeed without a page reload — unless the user has hit the `allow_signing` rate limit (the real per-user cap). The original operation is **not** auto-retried; the user retries it.
80
+
-**Wallet-wide outage** (e.g. the backend is out of cycles): a neutral "Signing is temporarily unavailable. Please try again shortly." (`sign.error.unavailable`).
81
+
-**Per-user signing limit** (the caller's ICRC-2 allowance towards the signer is exhausted — `isSignerCanisterAllowanceError`, detected from a nested `InsufficientAllowance` in the ledger error): "You've reached your signing limit. Please try again shortly." (`sign.error.limit_reached`). In this case OISY also kicks off a best-effort background `allow_signing` re-grant (`replenishSignerAllowance`), so the next attempt can usually succeed without a page reload — unless the user has hit the `allow_signing` rate limit (the real per-user cap). The original operation is **not** auto-retried; the user retries it.
82
82
83
83
This is centralised in the `toastsSignerUnavailableOr` helper (`toasts.store.ts`), which the catch sites route through; genuine user errors (invalid address, insufficient token balance, gas) keep their existing specific messages. Swap flows already surface a generic failure message and so were left unchanged.
"unavailable": "We're temporarily unable to sign Bitcoin, Ethereum and Solana transactions and messages. We're aware of the issue and working on a fix. Please try again soon.",
150
-
"limit_reached": "You've reached your current limit for signing transactions and messages. Please wait a little while and try again."
149
+
"unavailable": "Signing is temporarily unavailable. Please try again shortly.",
150
+
"limit_reached": "You've reached your signing limit. Please try again shortly."
Copy file name to clipboardExpand all lines: src/frontend/src/lib/i18n/en.json
+2-2Lines changed: 2 additions & 2 deletions
Original file line number
Diff line number
Diff line change
@@ -1931,8 +1931,8 @@
1931
1931
},
1932
1932
"sign": {
1933
1933
"error": {
1934
-
"unavailable": "We're temporarily unable to sign Bitcoin, Ethereum and Solana transactions and messages. We're aware of the issue and working on a fix. Please try again soon.",
1935
-
"limit_reached": "You've reached your current limit for signing transactions and messages. Please wait a little while and try again."
1934
+
"unavailable": "Signing is temporarily unavailable. Please try again shortly.",
1935
+
"limit_reached": "You've reached your signing limit. Please try again shortly."
0 commit comments