Repository navigation
Upgrade ts-sdk 0.4.16 - boltz-swap 0.3.17 - #539
Conversation
|
Warning Rate limit exceeded
Your organization is not enrolled in usage-based pricing. Contact your admin to enable usage-based pricing to continue reviews beyond the rate limit, or try again in 38 minutes and 1 seconds. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Deploying wallet-bitcoin with
|
| Latest commit: |
2d3efdf
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://c6d59be5.wallet-bitcoin.pages.dev |
| Branch Preview URL: | https://upgrade-ts-sdk-0-4-16-boltz.wallet-bitcoin.pages.dev |
Deploying wallet-mutinynet with
|
| Latest commit: |
2d3efdf
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://279fd013.arkade-wallet.pages.dev |
| Branch Preview URL: | https://upgrade-ts-sdk-0-4-16-boltz.arkade-wallet.pages.dev |
ghost
left a comment
There was a problem hiding this comment.
Review: Upgrade ts-sdk 0.4.16 / boltz-swap 0.3.17
Wallet diff: trivially correct — version bumps in package.json + lockfile only. No wallet code changes. Integrity hashes updated correctly; boltz-swap@0.3.17 correctly peers with sdk@0.4.16.
Upstream changes included in this bump
I reviewed all upstream PRs shipping with these versions. Three are protocol-critical:
1. ts-sdk#405 — fix(unroll): derive complete-unroll sequence from CSV timelock
Critical bugfix. src/wallet/unroll.ts was hardcoding sequence: 0xffffffff - 1 (= 0xfffffffe, RBF-signaling only) instead of encoding the actual CSV timelock via BIP-68. This means unroll transactions could have been accepted by miners before the relative timelock expired, undermining the exit path's safety guarantee. Now uses timelockToSequence(exit.params.timelock) to derive the correct BIP-68 nSequence. ✅ Correct fix.
2. ts-sdk#423 — fix(intent): set proof tx lockTime to 0
Correctness fix. src/intent/index.ts was computing lockTime = Math.max(...inputs.map(i => i.sequence || 0)), which copied BIP-68 relative sequence values (e.g., 4195486) into nLockTime (an absolute field). For BIP-322 proof transactions that are never broadcast, this is semantically wrong and could cause signature verification mismatches between signer and verifier when CSV leaves are involved. Now hardcodes lockTime: 0 per BIP-322 convention. ✅ Good tests added (test/intent.test.ts).
3. boltz-swap#121 — fix: include recoverable VTXOs in submarine refunds
Fund recovery fix. src/arkade-swaps.ts only queried spendableOnly: true VTXOs for refunds, missing VTXOs in "recoverable" state (e.g., past their CSV timelock but not yet settled). Now queries both spendableOnly and recoverableOnly in parallel, deduplicates by ${txid}:${vout}, and iterates over the merged set. Error diagnostics improved: distinguishes "not found" / "already spent" / "no refundable VTXOs yet". ✅ Comprehensive test updates.
Non-critical upstream changes: typedoc improvements (ts-sdk#420), regtest version bump (ts-sdk#419), default invoice description (boltz-swap#113).
Verdict
LGTM. All three protocol-critical upstream fixes are correct, well-tested, and improve safety:
- The unroll sequence fix (#405) closes a real timelock enforcement gap in exit paths
- The intent lockTime fix (#423) prevents signer/verifier mismatch on CSV-spending inputs
- The VTXO refund fix (#121) prevents funds from being stuck in non-refundable limbo
🤖 Reviewed by Arkana
Deploying tmp-boltz-upstream-mainnet-arkade-wallet with
|
| Latest commit: |
2d3efdf
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://8e02e9e3.tmp-boltz-upstream-mainnet-arkade-wallet.pages.dev |
| Branch Preview URL: | https://upgrade-ts-sdk-0-4-16-boltz.tmp-boltz-upstream-mainnet-arkade-wallet.pages.dev |
* remove ionic/normalize and ion-button * rebbit fixes * feat(wallet): prefix fiat amounts with currency symbols (#535) Amounts previously rendered with a trailing ISO code (`100.00 USD`, `50.00 EUR`) now use the common Unicode currency symbol as a prefix: `$100.00`, `€50.00`, `£25.00`, `¥1,000`. Currencies without a widely-used single-char symbol (CHF, CNY) keep the trailing-code form, so CNY does not collide with JPY's `¥`. The new formatters live alongside the existing generic ones: - `prettyFiatAmount(amount, currency)` and `prettyFiatHide(value, currency)` in `src/lib/format.ts` take the `Fiats` enum as a typed parameter. - The generic `prettyAmount` / `prettyHide` are intentionally left untouched so asset tickers (e.g. a stablecoin named `USD`) that flow through those helpers keep their trailing-code format. - Decimals are derived from the currency via `fiatDecimalsFor` in `src/lib/fiat.ts` (JPY = 0, others = 2) — shared between `FiatContext` and `prettyFiatAmount` so call sites no longer need to pass `fiatDecimals()`. Touched displays: hero balance (`Balance.tsx`), transaction list rows (`TransactionsList.tsx`), amount picker (`Keyboard.tsx`), transaction details (`Details.tsx`), Send/Receive/Notes success screens, and Send form available caption. Amount input labels (`InputAmount.tsx`) also use the symbol when available. Side fix: `Details.tsx` previously called `prettyAmount` without passing `fiatDecimals()`, hardcoding 2 decimals. JPY now renders as `¥174` / `¥0` in the transaction details instead of `174.00 JPY` / `0.00 JPY`. Hero alignment: the eye-toggle button wrapper now omits an empty unit `<Text>` when the symbol is inlined into the balance, and the button sits inside a `alignItems: center` flex container next to the unit text — keeping the icon centered with the smaller ISO code in the CHF case and snug against the balance in the `$7.30` case. Tests: - New coverage for `prettyFiatAmount` and `prettyFiatHide` in `src/test/lib/format.test.ts` (symbol + trailing-code + JPY 0-decimals). - Existing `prettyAmount` / `prettyHide` tests unchanged — the generic helpers still behave the same. - UI assertions updated to match the new rendered text: `src/test/screens/wallet/index.test.tsx` → `$0.00` `src/test/e2e/init.test.ts` → `$0.00` `src/test/e2e/keyboard.test.ts` → symbol-prefix regex Co-authored-by: Sahil Chaturvedi <sahilc0@users.noreply.github.com> Co-authored-by: João Bordalo <bordalix@users.noreply.github.com> * Upgrade ts-sdk 0.4.16 - boltz-swap 0.3.17 (#539) * reverse logs in csv export (#546) * reverse logs in csv export * fix * avoid mutating the React state array * Extra tests (#548) * close copy sheet after copy * lint * test swaps in receive * Prevent swap after receival (#547) * Prevent swap after receival * fix * more removals * increase viewport size in tests * more removals * more removals * fixes * fixes * fixes * fix * remove ion-refresher * Merge branch 'master' into remove_ion-button * fix swap page (#549) * fix swap page * lint * add tests * Upgrade ts-sdk 0.4.17 - boltz-swap 0.3.18 (#551) * fix(receive): add spacing between button row and share button (#552) The vertical gap between the Add amount/Copy buttons and the Share button was too tight. Changed FlexCol gap from 0 to 0.75rem. Co-authored-by: Sahil Chaturvedi <sahilc0@users.noreply.github.com> * Revert "Upgrade ts-sdk 0.4.17 - boltz-swap 0.3.18 (#551)" (#553) This reverts commit 1752cc8. * Upgrade ts-sdk 0.4.17 - boltz-swap 0.3.18 (#551) * Revert "Upgrade ts-sdk 0.4.17 - boltz-swap 0.3.18 (#551)" (#553) This reverts commit 1752cc8. * Upgrade ts-sdk 0.4.18 - boltz-swap 0.3.19 (#554) * add git commit to chatwoot custom attributes (#563) * add lnurl tests (#564) * lint * add lnurl tests Co-authored-by: Copilot <copilot@github.com> --------- Co-authored-by: Copilot <copilot@github.com> * fix(ui): top-align tx history rows when assets are present (#537) * fix(ui): top-align tx history rows when assets are present When a transaction has assets, the right column (sats + fiat + asset info) is taller than the left column (icon + label + date). The outer FlexRow used alignItems 'center' by default, pushing the sats amount above the label text. Switch to alignItems 'start' so both columns begin at the same vertical position. Also adds explicit 'between' to the outer FlexRow and removes a dead alignItems on the non-flex wrapper div. * show only 2 coins in the rigth side of a tx in txs list (#550) --------- Co-authored-by: João Bordalo <bordalix@users.noreply.github.com> * final removal Co-authored-by: Copilot <copilot@github.com> * Upgrade ts-sdk 0.4.19 - boltz-swap 0.3.20 (#565) * lint * fix box-sizing Co-authored-by: Copilot <copilot@github.com> * .label styles Co-authored-by: Copilot <copilot@github.com> * fix branta lint error (#568) * works on refresher Co-authored-by: Copilot <copilot@github.com> * fix unit tests Co-authored-by: Copilot <copilot@github.com> * remove ionic/react * fix label alignment * DRY: AssetCard Co-authored-by: Copilot <copilot@github.com> * fix inputAmount --------- Co-authored-by: Sahil Chaturvedi <sahilchaturvedi@protonmail.com> Co-authored-by: Sahil Chaturvedi <sahilc0@users.noreply.github.com> Co-authored-by: pietro909 <2094604+pietro909@users.noreply.github.com> Co-authored-by: Copilot <copilot@github.com> Co-authored-by: Andrew Camilleri <evilkukka@gmail.com>
No description provided.