Skip to content

Upgrade ts-sdk 0.4.16 - boltz-swap 0.3.17 - #539

Merged
pietro909 merged 1 commit into
masterfrom
upgrade-ts-sdk-0.4.16-boltz-swap-0.3.17
Apr 17, 2026
Merged

pietro909 merged 1 commit into
masterfrom
upgrade-ts-sdk-0.4.16-boltz-swap-0.3.17

Conversation

@pietro909

Copy link
Copy Markdown
Contributor

No description provided.

@coderabbitai

coderabbitai Bot commented Apr 17, 2026

Copy link
Copy Markdown
Contributor

Warning

Rate limit exceeded

@pietro909 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 38 minutes and 1 seconds before requesting another review.

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 @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 18acdd5d-fb71-4252-86f0-c19e9b1d7474

📥 Commits

Reviewing files that changed from the base of the PR and between d81d96a and 2d3efdf.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (1)
  • package.json
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch upgrade-ts-sdk-0.4.16-boltz-swap-0.3.17

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying wallet-bitcoin with  Cloudflare Pages  Cloudflare Pages

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

View logs

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying wallet-mutinynet with  Cloudflare Pages  Cloudflare Pages

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

View logs

@ghost ghost left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

⚠️ Human review required — these touch protocol-critical paths (unroll/exit, transaction signing, VTXO refunds). Approving the wallet bump itself, but a human should sign off given the upstream impact on forfeit/exit safety.

🤖 Reviewed by Arkana

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying tmp-boltz-upstream-mainnet-arkade-wallet with  Cloudflare Pages  Cloudflare Pages

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

View logs

@pietro909
pietro909 requested a review from bordalix April 17, 2026 08:30
@pietro909
pietro909 merged commit 71606f6 into master Apr 17, 2026
6 checks passed
bordalix added a commit that referenced this pull request Apr 28, 2026
* 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>
@bordalix
bordalix deleted the upgrade-ts-sdk-0.4.16-boltz-swap-0.3.17 branch May 18, 2026 16:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants