Skip to content

chore: backmerge main into develop post v1.1016.0#12165

Closed
gomesalexandre wants to merge 9 commits intodevelopfrom
main
Closed

chore: backmerge main into develop post v1.1016.0#12165
gomesalexandre wants to merge 9 commits intodevelopfrom
main

Conversation

@gomesalexandre
Copy link
Contributor

@gomesalexandre gomesalexandre commented Mar 13, 2026

Backmerge main into develop after v1.1016.0 release cycle completed. Required to fix the merge base for the prerelease v1.1017.0 PR (#12163).

Summary by CodeRabbit

  • New Features

    • Added Solana serialized transaction signing support across wallet integrations.
    • Enabled Bebop swaps on Solana with improved transaction handling.
    • Introduced Bitcoin transaction speed-up via Replace-by-Fee (RBF).
    • Added transaction replacement tracking and history display.
  • Bug Fixes

    • Corrected account balance refresh behavior after swaps.
  • Documentation

    • Added comprehensive project guidelines, release process, and agent tooling documentation.
  • Chores

    • Updated npm/pnpm workspace configuration and removed legacy dependencies.

0xApotheosis and others added 9 commits March 10, 2026 09:18
* fix: copy patches dir in public-api Dockerfile for pnpm install

pnpm requires the patches directory during install (not just scripts)
because patched dependencies are referenced in the lockfile. The
--ignore-scripts flag alone doesn't prevent pnpm from reading patch
files during dependency resolution.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: add .railwayignore to reduce snapshot size for public-api deploys

Railway's "Failed to snapshot repository" error is caused by the repo
being too large (~74MB tracked files). This excludes frontend source,
images, tests, and other files not needed for the public-api Dockerfile
build from Railway's pre-build snapshot.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Revert "fix: add .railwayignore to reduce snapshot size for public-api deploys"

This reverts commit 473f2d3.

* Revert "fix: copy patches dir in public-api Dockerfile for pnpm install"

This reverts commit a0618c1.

* fix: unrug Railway CI - copy patches dir and add .railwayignore (#12099)

* fix: unrug public-api Railway CI - copy patches dir and add .railwayignore

Two fixes for Railway deployment failures:

1. Copy patches/ directory in Dockerfile before pnpm install - pnpm
   requires patch files during install even with --ignore-scripts because
   patched dependencies are referenced in the lockfile.

2. Add .railwayignore to reduce repo snapshot size - Railway's "Failed to
   snapshot repository" error was caused by the repo being ~74MB of tracked
   files. Excludes frontend source, images, tests, and other files not
   needed for the public-api Docker build.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: add patches dir to swap-widget Dockerfile and update .railwayignore

The swap-widget Dockerfile had the same missing patches/ dir bug as
public-api — pnpm install fails with ENOENT for patched dependencies.
Also add swap-widget *.md exception to .railwayignore.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>

* fix: use copy package-import-method in Docker to avoid pnpm ENOENT (#12100)

* fix: use copy package-import-method in Docker to avoid pnpm ENOENT

pnpm's default hard-link strategy fails intermittently on Docker's
overlay filesystem with "ENOENT: rename _tmp -> secp256k1". Setting
package-import-method=copy via env var (Docker-only, doesn't affect
local dev .npmrc) fixes the atomic rename race condition.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: add retry loop for pnpm install in Docker builds

The ENOENT rename failure persists even with package-import-method=copy
because pnpm's hoisting/linking phase still does atomic renames that
race on Docker's overlay filesystem. Since it's intermittent and all
packages are cached in the store after the first attempt, a retry with
clean node_modules is fast and reliable.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: restrict swap-widget tsconfig types to prevent auto-discovery

Without an explicit `types` field, TypeScript auto-discovers all
@types/* packages hoisted to root node_modules. The deprecated stub
@types/ethereumjs-util (from hdwallet-ledger devDeps) has no .d.ts
files, causing TS2688 during Docker builds. Restricting to
["vite/client"] matches the pattern used by the root tsconfig.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>

* feat: speed up stuck btc transactions via rbf (#11885)

* fix: railway build with pnpm (#12107)

* feat: thorchain solana lp integration (#12037)

* fix: narrow YieldExplainers action prop type to remove unused claim variant (#12073)

* fix: always refresh account balances after swap completion (#12106)

* chore: unify claude and codex instruction entrypoints (#12119)

* feat: idempotent release script state machine (#12110)

* feat: bebop solana swapper take 2 (#12111)

* chore: remove unused @chainflip/rpc and @chainflip/extrinsics deps (#12109)

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: gomes-bot <[email protected]>
Co-authored-by: kevin <[email protected]>
Co-authored-by: gomes <[email protected]>
Co-authored-by: NeOMakinG <[email protected]>
* chore: prerelease v1.1016.0 (#12127)

* fix: copy patches dir in public-api Dockerfile for pnpm install

pnpm requires the patches directory during install (not just scripts)
because patched dependencies are referenced in the lockfile. The
--ignore-scripts flag alone doesn't prevent pnpm from reading patch
files during dependency resolution.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: add .railwayignore to reduce snapshot size for public-api deploys

Railway's "Failed to snapshot repository" error is caused by the repo
being too large (~74MB tracked files). This excludes frontend source,
images, tests, and other files not needed for the public-api Dockerfile
build from Railway's pre-build snapshot.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* Revert "fix: add .railwayignore to reduce snapshot size for public-api deploys"

This reverts commit 473f2d3.

* Revert "fix: copy patches dir in public-api Dockerfile for pnpm install"

This reverts commit a0618c1.

* fix: unrug Railway CI - copy patches dir and add .railwayignore (#12099)

* fix: unrug public-api Railway CI - copy patches dir and add .railwayignore

Two fixes for Railway deployment failures:

1. Copy patches/ directory in Dockerfile before pnpm install - pnpm
   requires patch files during install even with --ignore-scripts because
   patched dependencies are referenced in the lockfile.

2. Add .railwayignore to reduce repo snapshot size - Railway's "Failed to
   snapshot repository" error was caused by the repo being ~74MB of tracked
   files. Excludes frontend source, images, tests, and other files not
   needed for the public-api Docker build.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: add patches dir to swap-widget Dockerfile and update .railwayignore

The swap-widget Dockerfile had the same missing patches/ dir bug as
public-api — pnpm install fails with ENOENT for patched dependencies.
Also add swap-widget *.md exception to .railwayignore.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>

* fix: use copy package-import-method in Docker to avoid pnpm ENOENT (#12100)

* fix: use copy package-import-method in Docker to avoid pnpm ENOENT

pnpm's default hard-link strategy fails intermittently on Docker's
overlay filesystem with "ENOENT: rename _tmp -> secp256k1". Setting
package-import-method=copy via env var (Docker-only, doesn't affect
local dev .npmrc) fixes the atomic rename race condition.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: add retry loop for pnpm install in Docker builds

The ENOENT rename failure persists even with package-import-method=copy
because pnpm's hoisting/linking phase still does atomic renames that
race on Docker's overlay filesystem. Since it's intermittent and all
packages are cached in the store after the first attempt, a retry with
clean node_modules is fast and reliable.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

* fix: restrict swap-widget tsconfig types to prevent auto-discovery

Without an explicit `types` field, TypeScript auto-discovers all
@types/* packages hoisted to root node_modules. The deprecated stub
@types/ethereumjs-util (from hdwallet-ledger devDeps) has no .d.ts
files, causing TS2688 during Docker builds. Restricting to
["vite/client"] matches the pattern used by the root tsconfig.

Co-Authored-By: Claude Opus 4.6 <[email protected]>

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>

* feat: speed up stuck btc transactions via rbf (#11885)

* fix: railway build with pnpm (#12107)

* feat: thorchain solana lp integration (#12037)

* fix: narrow YieldExplainers action prop type to remove unused claim variant (#12073)

* fix: always refresh account balances after swap completion (#12106)

* chore: unify claude and codex instruction entrypoints (#12119)

* feat: idempotent release script state machine (#12110)

* feat: bebop solana swapper take 2 (#12111)

* chore: remove unused @chainflip/rpc and @chainflip/extrinsics deps (#12109)

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: gomes-bot <[email protected]>
Co-authored-by: kevin <[email protected]>
Co-authored-by: gomes <[email protected]>
Co-authored-by: NeOMakinG <[email protected]>

* fix: bebop solana signing + thorchain solana lp compute budget (#12132)

* fix: bebop solana signing + reject amm-routed quotes (#12147)

* fix: cherry-pick #12148 - bebop solana ghost tx + malformed amm routes (#12151)

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: gomes-bot <[email protected]>
Co-authored-by: kevin <[email protected]>
Co-authored-by: gomes <[email protected]>
Co-authored-by: NeOMakinG <[email protected]>
chore: release v1.1016.0 (#12128)

* chore: prerelease v1.1016.0 (#12127)

* fix: copy patches dir in public-api Dockerfile for pnpm install

pnpm requires the patches directory during install (not just scripts)
because patched dependencies are referenced in the lockfile. The
--ignore-scripts flag alone doesn't prevent pnpm from reading patch
files during dependency resolution.



* fix: add .railwayignore to reduce snapshot size for public-api deploys

Railway's "Failed to snapshot repository" error is caused by the repo
being too large (~74MB tracked files). This excludes frontend source,
images, tests, and other files not needed for the public-api Dockerfile
build from Railway's pre-build snapshot.



* Revert "fix: add .railwayignore to reduce snapshot size for public-api deploys"

This reverts commit 473f2d3.

* Revert "fix: copy patches dir in public-api Dockerfile for pnpm install"

This reverts commit a0618c1.

* fix: unrug Railway CI - copy patches dir and add .railwayignore (#12099)

* fix: unrug public-api Railway CI - copy patches dir and add .railwayignore

Two fixes for Railway deployment failures:

1. Copy patches/ directory in Dockerfile before pnpm install - pnpm
   requires patch files during install even with --ignore-scripts because
   patched dependencies are referenced in the lockfile.

2. Add .railwayignore to reduce repo snapshot size - Railway's "Failed to
   snapshot repository" error was caused by the repo being ~74MB of tracked
   files. Excludes frontend source, images, tests, and other files not
   needed for the public-api Docker build.



* fix: add patches dir to swap-widget Dockerfile and update .railwayignore

The swap-widget Dockerfile had the same missing patches/ dir bug as
public-api — pnpm install fails with ENOENT for patched dependencies.
Also add swap-widget *.md exception to .railwayignore.



---------



* fix: use copy package-import-method in Docker to avoid pnpm ENOENT (#12100)

* fix: use copy package-import-method in Docker to avoid pnpm ENOENT

pnpm's default hard-link strategy fails intermittently on Docker's
overlay filesystem with "ENOENT: rename _tmp -> secp256k1". Setting
package-import-method=copy via env var (Docker-only, doesn't affect
local dev .npmrc) fixes the atomic rename race condition.



* fix: add retry loop for pnpm install in Docker builds

The ENOENT rename failure persists even with package-import-method=copy
because pnpm's hoisting/linking phase still does atomic renames that
race on Docker's overlay filesystem. Since it's intermittent and all
packages are cached in the store after the first attempt, a retry with
clean node_modules is fast and reliable.



* fix: restrict swap-widget tsconfig types to prevent auto-discovery

Without an explicit `types` field, TypeScript auto-discovers all
@types/* packages hoisted to root node_modules. The deprecated stub
@types/ethereumjs-util (from hdwallet-ledger devDeps) has no .d.ts
files, causing TS2688 during Docker builds. Restricting to
["vite/client"] matches the pattern used by the root tsconfig.



---------



* feat: speed up stuck btc transactions via rbf (#11885)

* fix: railway build with pnpm (#12107)

* feat: thorchain solana lp integration (#12037)

* fix: narrow YieldExplainers action prop type to remove unused claim variant (#12073)

* fix: always refresh account balances after swap completion (#12106)

* chore: unify claude and codex instruction entrypoints (#12119)

* feat: idempotent release script state machine (#12110)

* feat: bebop solana swapper take 2 (#12111)

* chore: remove unused @chainflip/rpc and @chainflip/extrinsics deps (#12109)

---------







* fix: bebop solana signing + thorchain solana lp compute budget (#12132)

* fix: bebop solana signing + reject amm-routed quotes (#12147)

* fix: cherry-pick #12148 - bebop solana ghost tx + malformed amm routes (#12151)

---------

Co-authored-by: Claude Opus 4.6 <[email protected]>
Co-authored-by: gomes-bot <[email protected]>
Co-authored-by: kevin <[email protected]>
Co-authored-by: gomes <[email protected]>
Co-authored-by: NeOMakinG <[email protected]>
@gomesalexandre gomesalexandre requested a review from a team as a code owner March 13, 2026 17:12
@coderabbitai
Copy link
Contributor

coderabbitai bot commented Mar 13, 2026

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: fc42551e-be80-4469-8063-793079a505ab

📥 Commits

Reviewing files that changed from the base of the PR and between ff0aa68 and d74d93f.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (72)
  • .claude/guidelines/beads-rules.md
  • .claude/guidelines/global-rules.md
  • .claude/guidelines/pr-rules.md
  • .claude/guidelines/project-rules.md
  • .claude/programming-guidelines.md
  • .claude/test-scenarios/README.md
  • .codex/config.toml
  • .codex/skills
  • .npmrc
  • .railwayignore
  • AGENTS.md
  • AGENTS.md
  • CLAUDE.md
  • RELEASE.md
  • e2e/fixtures/bebop-solana-swap.yaml
  • package.json
  • packages/chain-adapters/src/utxo/UtxoBaseAdapter.ts
  • packages/hdwallet-core/src/solana.ts
  • packages/hdwallet-gridplus/src/gridplus.ts
  • packages/hdwallet-gridplus/src/solana.ts
  • packages/hdwallet-ledger/src/ledger.ts
  • packages/hdwallet-ledger/src/solana.ts
  • packages/hdwallet-native/src/solana.ts
  • packages/hdwallet-phantom/src/phantom.ts
  • packages/hdwallet-phantom/src/solana.ts
  • packages/hdwallet-trezor/src/solana.ts
  • packages/hdwallet-trezor/src/trezor.ts
  • packages/hdwallet-vultisig/src/solana.ts
  • packages/hdwallet-vultisig/src/vultisig.ts
  • packages/public-api/Dockerfile
  • packages/public-api/Dockerfile.dockerignore
  • packages/swap-widget/Dockerfile
  • packages/swapper/src/swappers/BebopSwapper/BebopSwapper.ts
  • packages/swapper/src/swappers/BebopSwapper/endpoints.ts
  • packages/swapper/src/swappers/BebopSwapper/executeSolanaMessage.ts
  • packages/swapper/src/swappers/BebopSwapper/getBebopSolanaTradeQuote/getBebopSolanaTradeQuote.ts
  • packages/swapper/src/swappers/BebopSwapper/getBebopSolanaTradeRate/getBebopSolanaTradeRate.ts
  • packages/swapper/src/swappers/BebopSwapper/types.ts
  • packages/swapper/src/swappers/BebopSwapper/utils/fetchFromBebop.ts
  • packages/swapper/src/swappers/BebopSwapper/utils/helpers/helpers.ts
  • packages/swapper/src/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.ts
  • packages/swapper/src/thorchain-utils/solana/constants.ts
  • packages/swapper/src/types.ts
  • pnpm-workspace.yaml
  • scripts/release.test.ts
  • scripts/release.ts
  • src/assets/translations/en/main.json
  • src/components/Layout/Header/ActionCenter/ActionCenter.tsx
  • src/components/Layout/Header/ActionCenter/components/ActionStatusIcon.tsx
  • src/components/Layout/Header/ActionCenter/components/ActionStatusTag.tsx
  • src/components/Layout/Header/ActionCenter/components/GenericTransactionActionCard.tsx
  • src/components/Layout/Header/ActionCenter/components/Notifications/GenericTransactionNotification.tsx
  • src/components/Layout/Header/ActionCenter/components/SpeedUpModal.tsx
  • src/components/Layout/Header/ActionCenter/components/speedUpUtils.test.ts
  • src/components/Layout/Header/ActionCenter/components/speedUpUtils.ts
  • src/components/Modals/QrCode/Form.tsx
  • src/components/Modals/Send/Form.tsx
  • src/components/Modals/Send/hooks/useCompleteSendFlow.tsx
  • src/components/Modals/Send/hooks/useFormSend/useFormSend.tsx
  • src/components/Modals/Send/utils.ts
  • src/components/MultiHopTrade/components/TradeConfirm/hooks/useTradeExecution.tsx
  • src/components/MultiHopTrade/components/TradeConfirm/hooks/useTradeNetworkFeeCryptoBaseUnit.tsx
  • src/components/TransactionHistoryRows/TransactionCommon.tsx
  • src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx
  • src/hooks/useActionCenterSubscribers/useSwapActionSubscriber.tsx
  • src/hooks/useLocaleFormatter/useLocaleFormatter.test.tsx
  • src/lib/tradeExecution.ts
  • src/lib/utils/thorchain/index.ts
  • src/pages/ThorChainLP/components/AddLiquidity/AddLiquidityInput.tsx
  • src/pages/ThorChainLP/components/LpType.tsx
  • src/pages/Yields/components/YieldExplainers.tsx
  • src/state/slices/actionSlice/types.ts

Disabled knowledge base sources:

  • Linear integration is disabled

You can enable these sources in your CodeRabbit configuration.


📝 Walkthrough

Walkthrough

This pull request introduces comprehensive enhancements across multiple domains: Solana serialized transaction signing capabilities across all wallet adapters, Bebop DEX support for Solana swaps, Bitcoin Replace-By-Fee (RBF) transaction acceleration via UI modal, and a substantial refactor of the release automation script with state-machine-based workflows. Additionally, documentation and build configuration are reorganized to support new agent tooling and Docker build improvements.

Changes

Cohort / File(s) Summary
Documentation & Guidelines
.claude/guidelines/*, AGENTS.md, CLAUDE.md, RELEASE.md
New documentation framework introducing Beads workflow rules, global coding guidelines, PR-specific xstate requirements, ShapeShift project rules, and release process documentation. CLAUDE.md delegated to AGENTS.md.
Build & Configuration
.npmrc, .railwayignore, pnpm-workspace.yaml, .codex/config.toml, .codex/skills, packages/public-api/Dockerfile, packages/swap-widget/Dockerfile
Removed npm hoisting config from .npmrc, expanded .railwayignore ignore patterns, added pnpm workspace config, updated Dockerfiles with patches directory, retry logic, and separate postinstall caching for openapi-generator-cli.
Package Management
package.json
Removed @chainflip/rpc and @chainflip/extrinsics dependencies.
Solana Wallet Signing Enhancement
packages/hdwallet-core/src/solana.ts, packages/hdwallet-gridplus/src/solana.ts, packages/hdwallet-gridplus/src/gridplus.ts, packages/hdwallet-ledger/src/solana.ts, packages/hdwallet-ledger/src/ledger.ts, packages/hdwallet-native/src/solana.ts, packages/hdwallet-phantom/src/solana.ts, packages/hdwallet-phantom/src/phantom.ts, packages/hdwallet-trezor/src/solana.ts, packages/hdwallet-trezor/src/trezor.ts, packages/hdwallet-vultisig/src/solana.ts, packages/hdwallet-vultisig/src/vultisig.ts
Added solanaSignSerializedTx interface and implementations across all wallet adapters to support signing of pre-serialized Solana VersionedTransactions with fallback handling for partially-signed transactions.
Bebop Solana Swap Support
packages/swapper/src/swappers/BebopSwapper/*, packages/swapper/src/swappers/BebopSwapper/getBebopSolanaTradeQuote/*, packages/swapper/src/swappers/BebopSwapper/getBebopSolanaTradeRate/*
New Solana trading path for Bebop swapper with quote/rate fetching, unsigned message generation, and execution via serialized transaction signing. Includes chain type mapping, token conversion, and Solana-specific safety validation.
Bitcoin RBF Transaction Speed-Up
src/components/Layout/Header/ActionCenter/components/SpeedUpModal.tsx, src/components/Layout/Header/ActionCenter/components/speedUpUtils.ts, src/components/Layout/Header/ActionCenter/components/speedUpUtils.test.ts, packages/chain-adapters/src/utxo/UtxoBaseAdapter.ts
New speed-up modal and utility functions enabling Bitcoin UTXO RBF with fee rate adjustment, virtual size calculation, input resolution, and replacement transaction signing/broadcasting. Includes comprehensive test coverage.
Transaction Metadata & Action State
src/state/slices/actionSlice/types.ts, src/components/Modals/Send/hooks/useCompleteSendFlow.tsx, src/components/Modals/Send/hooks/useFormSend/useFormSend.tsx, src/components/Modals/Send/utils.ts, src/hooks/useActionCenterSubscribers/useSendActionSubscriber.tsx
Extended ActionStatus with Replaced state; added BTC RBF metadata types; updated send flow to capture and propagate RBF metadata; added action linking for replaced transactions with original/replacement references.
Transaction UI & Action Center
src/components/Layout/Header/ActionCenter/ActionCenter.tsx, src/components/Layout/Header/ActionCenter/components/ActionStatusIcon.tsx, src/components/Layout/Header/ActionCenter/components/ActionStatusTag.tsx, src/components/Layout/Header/ActionCenter/components/GenericTransactionActionCard.tsx, src/components/Layout/Header/ActionCenter/components/Notifications/GenericTransactionNotification.tsx, src/components/TransactionHistoryRows/TransactionCommon.tsx
Added speed-up action support, replaced transaction status indicator/tag rendering, replacement/original transaction link displays, and RBF eligibility detection with speed-up button integration.
Trade Execution & Fee Handling
src/lib/tradeExecution.ts, src/components/MultiHopTrade/components/TradeConfirm/hooks/useTradeExecution.tsx, src/components/MultiHopTrade/components/TradeConfirm/hooks/useTradeNetworkFeeCryptoBaseUnit.tsx, packages/swapper/src/types.ts, packages/swapper/src/swappers/ThorchainSwapper/utils/poolAssetHelpers/poolAssetHelpers.ts
Added Solana message execution path in TradeExecution; Bebop Solana gasless fee handling; extended Swapper/SwapperApi types for Solana messages; case-insensitive THORChain pool asset mapping.
Release Automation
scripts/release.ts, scripts/release.test.ts
Major refactor introducing ReleaseState and HotfixState machines with explicit state transitions, PR handling, tagging, and backmerge flows. New exported utilities for state derivation, PR extraction, and prompt building with comprehensive test suite.
Translations & Tests
src/assets/translations/en/main.json, e2e/fixtures/bebop-solana-swap.yaml, src/components/Modals/QrCode/Form.tsx, src/pages/ThorChainLP/components/*, src/pages/Yields/components/YieldExplainers.tsx, src/hooks/useLocaleFormatter/useLocaleFormatter.test.tsx
Added speed-up transaction translations, Bebop Solana e2e test fixture, test identifiers for LP deposit and type selector, narrowed YieldExplainers action prop type, and case-insensitive ICU locale formatting test assertion.
Infrastructure & Utilities
.claude/test-scenarios/README.md, packages/swapper/src/thorchain-utils/solana/constants.ts, src/lib/utils/thorchain/index.ts, src/hooks/useActionCenterSubscribers/useSwapActionSubscriber.tsx
Added Solana memo handling in send/fee utilities; clarified test-scenarios scope; introduced Solana constants for THORChain; unconditional sell/buy account balance refresh post-swap.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant SpeedUpModal as SpeedUp Modal
    participant UTXOAdapter as UTXO Adapter
    participant Wallet as Wallet (GridPlus/Ledger/etc)
    participant Blockchain as Bitcoin Network

    User->>SpeedUpModal: Initiate speed-up (adjust fee rate)
    SpeedUpModal->>UTXOAdapter: Fetch original tx & UTXOs
    UTXOAdapter->>Blockchain: Get transaction data
    Blockchain-->>UTXOAdapter: Transaction details
    UTXOAdapter-->>SpeedUpModal: Original tx, inputs, UTXOs

    SpeedUpModal->>SpeedUpModal: Reconstruct replacement tx with new fee rate
    SpeedUpModal->>Wallet: Sign replacement transaction (RBF)
    Wallet-->>SpeedUpModal: Signed replacement tx

    SpeedUpModal->>Blockchain: Broadcast replacement tx
    Blockchain-->>SpeedUpModal: Confirmation (txHash)

    SpeedUpModal->>SpeedUpModal: Update action state: original Replaced, new tx pending
    SpeedUpModal-->>User: Speed-up complete
Loading
sequenceDiagram
    participant App as Frontend App
    participant Swapper as Bebop Swapper
    participant Wallet as Solana Wallet
    participant Bebop as Bebop API

    App->>Swapper: getTradeQuote (Solana sell asset)
    Swapper->>Bebop: fetchBebopSolanaQuote
    Bebop-->>Swapper: Quote with serialized tx & blockhash
    Swapper-->>App: TradeQuote with bebopSolanaSerializedTx

    App->>Swapper: getUnsignedSolanaMessage
    Swapper-->>App: SolanaMessageToSign (serialized tx, quoteId)

    App->>Wallet: solanaSignSerializedTx (serialized tx)
    Wallet->>Wallet: Deserialize & sign transaction
    Wallet-->>App: Signed transaction (signatures)

    App->>Swapper: executeSolanaMessage (signed, callbacks)
    Swapper->>Bebop: Submit order with signature
    Bebop-->>Swapper: Order confirmation (txHash)
    Swapper-->>App: Execution complete (txHash)
Loading

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~75 minutes

Suggested reviewers

  • 0xApotheosis

Poem

🐰 Hops with glee through Solana's tree,
RBF speeds up the fee,
Bebop swaps with signatures grand,
Release scripts now firmly planned!
From wallets to trades, the changes align,
A magical refactor—simply divine!

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch main
📝 Coding Plan
  • Generate coding plan for human review comments

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.

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