diff options
| -rw-r--r-- | src/i18n.js | 14 | ||||
| -rw-r--r-- | tools/ark/custody-ui-test.js | 8 |
2 files changed, 12 insertions, 10 deletions
diff --git a/src/i18n.js b/src/i18n.js index d3817b6..8e816e2 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -777,13 +777,13 @@ const STR = { arkFeeChain: 'On-chain fee', arkFeeService: 'Service fee', arkCoinsExpired: 'expired', - arkCoinsHeld: 'held by coinos', + arkCoinsHeld: 'held by Coinos', arkCustodyTitle: 'Custody', - arkCustodyDesc: 'Each Spending coin carries a timelock of about {days} days. Renewing a coin before it runs out keeps your right to bring it on-chain without coinos, and costs a share of a round’s mining fee. coinos keeps honoring coins past their timelock, so renewing is a choice:', - arkCustodyCustodial: 'coinos holds my coins', - arkCustodyCustodialDesc: 'Nothing renews and no renewal fees are paid. Past its timelock a coin is held by coinos, like a balance on the old coinos: paying, receiving and withdrawing keep working, but bringing it on-chain needs coinos’s cooperation.', + arkCustodyDesc: 'Each coin carries a timelock of about {days} days. Until it runs out, you can bring the coin on-chain yourself, without Coinos. Renewing a coin before then keeps that right for another {days} days and costs a share of a round’s mining fee. Coinos keeps honoring coins past their timelock, so renewing is a choice:', + arkCustodyCustodial: 'Coinos holds my coins once they expire', + arkCustodyCustodialDesc: 'Nothing renews and no renewal fees are paid. A coin keeps its own exit until its timelock runs out. After that it is held by Coinos, like a balance on the old Coinos: paying, receiving and withdrawing keep working, but bringing it on-chain needs Coinos’s cooperation.', arkCustodySelf: 'Keep my own exit', - arkCustodySelfDesc: 'Coins renew in the last hours before their timelock ends — the cheapest moment — so you can always exit on your own. Roughly once every {days} days per coin.', + arkCustodySelfDesc: 'Coins renew in the last hours before their timelock ends — the cheapest moment — so you can always exit on your own, without Coinos. Roughly once every {days} days per coin.', arkCustodyExit: 'Keep my exit cheap', arkCustodyExitDesc: 'Every transfer adds a hop to a coin’s history, and a unilateral exit pays one on-chain transaction per hop. This renews near expiry too, and also as soon as a coin’s history is {hops} hops deep, so bringing any coin on-chain stays close to a fresh coin’s price. Only for coins worth it: never more than a tenth of a coin on its renewal.', arkCustodyCostNone: 'no fees', @@ -791,8 +791,8 @@ const STR = { arkCustodyCostExit: '{base} near expiry, {pct} + {base} when early', arkCustodySaved: 'Custody choice saved', arkCustodyNotHere: 'This server does not honor coins past their timelock, so they renew automatically here.', - arkExitNoneExitable: 'Every coin has passed its timelock, so there is nothing a unilateral exit can take on-chain: coinos holds them now. Renewing restores your own exit; withdrawing with coinos’s cooperation works as before.', - arkCoinsRenewDescCustodial: 'With “coinos holds my coins”, nothing renews on its own. A renewal replaces the selected coins with a single fresh one in the next round ({every}) and restores your own exit for them. Every renewal costs a flat {base} toward the round’s on-chain fee, plus a share that depends on how close each coin is to its timelock. The closer, the cheaper:', + arkExitNoneExitable: 'Every coin has passed its timelock, so there is nothing a unilateral exit can take on-chain: Coinos holds them now. Renewing restores your own exit; withdrawing with Coinos’s cooperation works as before.', + arkCoinsRenewDescCustodial: 'With “Coinos holds my coins once they expire”, nothing renews on its own. A renewal replaces the selected coins with a single fresh one in the next round ({every}) and restores your own exit for them. Every renewal costs a flat {base} toward the round’s on-chain fee, plus a share that depends on how close each coin is to its timelock. The closer, the cheaper:', noteForeignKind: 'A kind {kind} event this app doesn’t show.', zapRowText: 'zapped {n} sats', pollVoter: '{n} vote', diff --git a/tools/ark/custody-ui-test.js b/tools/ark/custody-ui-test.js index 20035ac..0b55d1c 100644 --- a/tools/ark/custody-ui-test.js +++ b/tools/ark/custody-ui-test.js @@ -77,16 +77,18 @@ try { let tx = await text(); assert.match(tx, /Custody/); - assert.match(tx, /coinos holds my coins[\s\S]*no fees/); + assert.match(tx, /Coinos holds my coins once they expire[\s\S]*no fees/); + assert.match(tx, /keeps its own exit until its timelock runs out/); + assert.doesNotMatch(tx, /Spending coin carries/); assert.match(tx, /Keep my own exit[\s\S]*300 sats per renewal/); assert.match(tx, /Keep my exit cheap[\s\S]*300 sats near expiry, 0\.2% \+ 300 sats when early/); assert.match(tx, /4 hops deep/); const checked = await page.$$eval('.ark-custody input[type=radio]', (els) => els.filter((e) => e.checked).map((e) => e.value)); assert.deepEqual(checked, ['custodial'], 'coinos holds the coins by default'); assert.equal(await page.evaluate(() => coopFeature.getCustody()), 'custodial'); - assert.match(tx, /held by coinos/, 'the coin past its timelock is held, not "expired"'); + assert.match(tx, /held by Coinos/, 'the coin past its timelock is held, not "expired"'); assert.doesNotMatch(tx, /\bexpired\b/); - assert.match(tx, /With “coinos holds my coins”, nothing renews on its own/); + assert.match(tx, /With “Coinos holds my coins once they expire”, nothing renews on its own/); if (process.env.SHOT) await page.screenshot({ path: process.env.SHOT, fullPage: true }); console.log('✓ the custody card: three tiers with their prices, coinos holding by default, a past-timelock coin shown as held'); |
