Skip to content

Feat/btc replace cancel lwm#14445

Merged
qperrot merged 1 commit intodevelopfrom
feat/btc-replace-cancel-lwm
Mar 5, 2026
Merged

Feat/btc replace cancel lwm#14445
qperrot merged 1 commit intodevelopfrom
feat/btc-replace-cancel-lwm

Conversation

@qperrot
Copy link
Contributor

@qperrot qperrot commented Feb 13, 2026

✅ Checklist

  • npx changeset was attached.
  • Covered by automatic tests.
  • Impact of the changes:
    • ...

📝 Description

Front to speedup/cancel Bitcoin transaction, the same way we do for Ethereum

❓ Context


🧐 Checklist for the PR Reviewers

  • The code aligns with the requirements described in the linked JIRA or GitHub issue.
  • The PR description clearly documents the changes made and explains any technical trade-offs or design decisions.
  • There are no undocumented trade-offs, technical debt, or maintainability issues.
  • The PR has been tested thoroughly, and any potential edge cases have been considered and handled.
  • Any new dependencies have been justified and documented.
  • Performance considerations have been taken into account. (changes have been profiled or benchmarked if necessary)

@vercel
Copy link

vercel bot commented Feb 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
web-tools Ready Ready Preview, Comment Mar 5, 2026 1:44pm
3 Skipped Deployments
Project Deployment Actions Updated (UTC)
ledger-live-github-bot Ignored Ignored Preview Mar 5, 2026 1:44pm
native-ui-storybook Ignored Ignored Preview Mar 5, 2026 1:44pm
react-ui-storybook Ignored Ignored Preview Mar 5, 2026 1:44pm

Request Review

@live-github-bot live-github-bot bot added mobile Has changes in LLM common Has changes in live-common ledgerjs Has changes in the ledgerjs open source libs coin-modules labels Feb 13, 2026
@qperrot qperrot changed the base branch from develop to feat/btc-replace-cancel February 13, 2026 13:01
@qperrot qperrot marked this pull request as ready for review February 13, 2026 13:02
@qperrot qperrot requested review from a team as code owners February 13, 2026 13:02
Copilot AI review requested due to automatic review settings February 13, 2026 13:02
Comment on lines +145 to +147
mainAccount.currency.blockAvgTime
? mainAccount.currency.blockAvgTime * 100
: getEnv("DEFAULT_TRANSACTION_POLLING_INTERVAL"),

Check failure

Code scanning / CodeQL

Resource exhaustion High

This creates a timer with a user-controlled duration from a
user-provided value
.
This creates a timer with a user-controlled duration from a
user-provided value
.
This creates a timer with a user-controlled duration from a
user-provided value
.

Copilot Autofix

AI 13 days ago

In general, to fix resource-exhaustion risks from timers whose durations can be influenced by external input, we should clamp the computed delay to a reasonable range: enforce a minimum (e.g., 0) and a maximum (e.g., several minutes), and possibly fall back to a safe default if the value is invalid. This prevents malicious or buggy inputs from creating extremely long-running timers or huge numbers of pending timeouts/intervals.

For this specific case, we should adjust the setInterval in MethodSelection.tsx so that the delay is derived from a bounded value. Today it uses either mainAccount.currency.blockAvgTime * 100 or getEnv("DEFAULT_TRANSACTION_POLLING_INTERVAL") directly. We can compute a pollingInterval variable, normalize it to a number, and then clamp it between a small minimum and a reasonable maximum (for example, 1 second and 10 minutes). We then pass this safe pollingInterval to setInterval. This keeps existing behavior for normal values (typical Bitcoin blockAvgTime is small, and the env default is likely a modest delay) while protecting against arbitrarily large values injected via envs or unexpected currency definitions.

Concretely, within apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/MethodSelection.tsx, inside the useEffect that defines setTransactionHasBeenValidatedCallback, we will:

  • Introduce a const rawInterval = ... expression that mirrors the existing ternary choice.
  • Compute const pollingInterval = Math.min(MAX, Math.max(MIN, Number(rawInterval) || DEFAULT)); with chosen constants (defined immediately above in the same scope to avoid broader changes).
  • Use pollingInterval as the second argument to setInterval.
    No other files need modification, since the other alert variants either already use fixed delays (setTimeout(..., 0)) or are test-specific message passing without affecting timers.

Suggested changeset 1
apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/MethodSelection.tsx

Autofix patch

Autofix patch
Run the following command in your local git repository to apply this patch
cat << 'EOF' | git apply
diff --git a/apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/MethodSelection.tsx b/apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/MethodSelection.tsx
--- a/apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/MethodSelection.tsx
+++ b/apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/MethodSelection.tsx
@@ -139,13 +139,21 @@
       }
     };
 
+    // Determine a safe polling interval based on currency average block time or env default.
+    const rawInterval = mainAccount.currency.blockAvgTime
+      ? mainAccount.currency.blockAvgTime * 100
+      : getEnv("DEFAULT_TRANSACTION_POLLING_INTERVAL");
+    // Clamp the interval to avoid excessively long or invalid durations.
+    const MIN_POLLING_INTERVAL_MS = 1000; // 1 second
+    const MAX_POLLING_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes
+    const numericInterval = Number(rawInterval);
+    const pollingInterval =
+      Number.isFinite(numericInterval) && numericInterval > 0
+        ? Math.min(MAX_POLLING_INTERVAL_MS, Math.max(MIN_POLLING_INTERVAL_MS, numericInterval))
+        : MIN_POLLING_INTERVAL_MS;
+
     setTransactionHasBeenValidatedCallback();
-    const intervalId = setInterval(
-      () => setTransactionHasBeenValidatedCallback(),
-      mainAccount.currency.blockAvgTime
-        ? mainAccount.currency.blockAvgTime * 100
-        : getEnv("DEFAULT_TRANSACTION_POLLING_INTERVAL"),
-    );
+    const intervalId = setInterval(() => setTransactionHasBeenValidatedCallback(), pollingInterval);
 
     return () => {
       clearInterval(intervalId);
EOF
@@ -139,13 +139,21 @@
}
};

// Determine a safe polling interval based on currency average block time or env default.
const rawInterval = mainAccount.currency.blockAvgTime
? mainAccount.currency.blockAvgTime * 100
: getEnv("DEFAULT_TRANSACTION_POLLING_INTERVAL");
// Clamp the interval to avoid excessively long or invalid durations.
const MIN_POLLING_INTERVAL_MS = 1000; // 1 second
const MAX_POLLING_INTERVAL_MS = 10 * 60 * 1000; // 10 minutes
const numericInterval = Number(rawInterval);
const pollingInterval =
Number.isFinite(numericInterval) && numericInterval > 0
? Math.min(MAX_POLLING_INTERVAL_MS, Math.max(MIN_POLLING_INTERVAL_MS, numericInterval))
: MIN_POLLING_INTERVAL_MS;

setTransactionHasBeenValidatedCallback();
const intervalId = setInterval(
() => setTransactionHasBeenValidatedCallback(),
mainAccount.currency.blockAvgTime
? mainAccount.currency.blockAvgTime * 100
: getEnv("DEFAULT_TRANSACTION_POLLING_INTERVAL"),
);
const intervalId = setInterval(() => setTransactionHasBeenValidatedCallback(), pollingInterval);

return () => {
clearInterval(intervalId);
Copilot is powered by AI and may make mistakes. Always verify output.
Copy link
Contributor Author

Choose a reason for hiding this comment

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

mainAccount.currency.blockAvgTime * 100 is enought
it's about 5min

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds Bitcoin “edit transaction” (RBF) capabilities—speed up and cancel—spanning the coin-bitcoin module, Live Common integrations (stuck/editable ops), feature-flagging, and a dedicated Ledger Live Mobile flow/UI.

Changes:

  • Introduces Bitcoin RBF helpers + editTransaction API surface (patch building, validation, fee bump rules, confirmation polling).
  • Extends sync/operation logic to track inputs and filter replaced/unconfirmed operations and related UTXOs.
  • Adds Mobile UI flow (method selection + summary + navigation wiring) gated behind a new editBitcoinTx feature flag.

Reviewed changes

Copilot reviewed 68 out of 70 changed files in this pull request and generated 9 comments.

Show a summary per file
File Description
pnpm-lock.yaml Adds @ledgerhq/coin-bitcoin workspace link to mobile importer.
libs/ledgerjs/packages/types-live/src/feature.ts Adds editBitcoinTx feature flag type.
libs/ledger-live-common/src/operation.ts Routes editable/stuck op logic to bitcoin coin-module operation helpers.
libs/ledger-live-common/src/featureFlags/defaultFeatures.ts Defines default editBitcoinTx flag (disabled) with params.
libs/env/src/env.ts Adds BITCOIN_STUCK_TRANSACTION_TIMEOUT + typo fix in ETH description.
libs/coin-modules/coin-evm/src/operation.ts Comment typo fix (“weather” → “whether”).
libs/coin-modules/coin-bitcoin/src/wallet-btc/xpub.ts RBF-aware tx building + script/address handling updates.
libs/coin-modules/coin-bitcoin/src/wallet-btc/wallet.ts Computes min replacement fee for conflicts; adds tx block height accessor.
libs/coin-modules/coin-bitcoin/src/wallet-btc/utils.ts Adds scriptToAddress + incremental fee floor helper.
libs/coin-modules/coin-bitcoin/src/wallet-btc/pickingstrategies/Merge.ts Filters out UTXOs whose parent tx hex can’t be fetched.
libs/coin-modules/coin-bitcoin/src/wallet-btc/pickingstrategies/DeepFirst.ts Filters out UTXOs whose parent tx hex can’t be fetched.
libs/coin-modules/coin-bitcoin/src/wallet-btc/pickingstrategies/CoinSelect.ts Filters out UTXOs whose parent tx hex can’t be fetched.
libs/coin-modules/coin-bitcoin/src/wallet-btc/index.ts Extracts getWalletAccount into dedicated module export.
libs/coin-modules/coin-bitcoin/src/wallet-btc/getWalletAccount.ts New helper to avoid circular deps.
libs/coin-modules/coin-bitcoin/src/wallet-btc/explorer/types.ts Adds getTxBlockHeight to explorer interface.
libs/coin-modules/coin-bitcoin/src/wallet-btc/explorer/index.ts Implements getTxBlockHeight via /tx/:hash.
libs/coin-modules/coin-bitcoin/src/wallet-btc/tests/xpub.unit.test.ts Minor formatting cleanup.
libs/coin-modules/coin-bitcoin/src/wallet-btc/tests/xpub.pickingStrategies.integration.test.ts Updates fixture tx hashes used by tests.
libs/coin-modules/coin-bitcoin/src/wallet-btc/tests/utils.test.ts Adds unit tests for incremental fee floor + scriptToAddress.
libs/coin-modules/coin-bitcoin/src/wallet-btc/tests/rbfReplaceCancel.integ.test.ts New RBF integration test suite (cancel/speedup flows + history filtering).
libs/coin-modules/coin-bitcoin/src/wallet-btc/tests/fixtures/rbf.fixtures.ts New fixture builder for RBF tx hex/id generation.
libs/coin-modules/coin-bitcoin/src/types.ts Adds replaceTxId + EditType type.
libs/coin-modules/coin-bitcoin/src/transaction.ts Serializes/deserializes replaceTxId.
libs/coin-modules/coin-bitcoin/src/synchronisation.ts Adds input tracking + filters replaced ops & related UTXOs; recomputes balance from filtered UTXOs.
libs/coin-modules/coin-bitcoin/src/synchronisation.test.ts Updates/removeReplaced expectations; adds two-weeks filtering behavior coverage.
libs/coin-modules/coin-bitcoin/src/rbfHelpers.ts New helpers to compute RBF minimum bump fees, conflicts, and fee-rate requirements.
libs/coin-modules/coin-bitcoin/src/rbfHelpers.test.ts Unit tests for RBF helpers.
libs/coin-modules/coin-bitcoin/src/prepareTransaction.ts Auto-populates excludeUTXOs for unfetchable tx parents.
libs/coin-modules/coin-bitcoin/src/operation.ts New bitcoin operation helpers (editable/stuck/stuck-op selection).
libs/coin-modules/coin-bitcoin/src/logic.ts Adds extra.inputs when mapping tx → operations.
libs/coin-modules/coin-bitcoin/src/getTransactionStatus.ts Special-cases amount-required validation for RBF cancel intent.
libs/coin-modules/coin-bitcoin/src/editTransaction/isTransactionConfirmed.ts New confirmation check using explorer tx block height.
libs/coin-modules/coin-bitcoin/src/editTransaction/isStrategyDisabled.ts New fee-strategy disabling rule based on minimum bump.
libs/coin-modules/coin-bitcoin/src/editTransaction/index.ts Exports editTransaction API surface.
libs/coin-modules/coin-bitcoin/src/editTransaction/hasMinimumFunds.ts New “has enough funds to bump” checks.
libs/coin-modules/coin-bitcoin/src/editTransaction/getTransactionStatus.ts Validates edited tx fee bump and merges into status.
libs/coin-modules/coin-bitcoin/src/editTransaction/getMinEditTransactionFees.ts Defines minimum bump rule (>=10% and >= +1 sat/vB).
libs/coin-modules/coin-bitcoin/src/editTransaction/getFormattedFeeFields.ts Formats fee fields for UI display.
libs/coin-modules/coin-bitcoin/src/editTransaction/getEditTransactionPatch.ts Builds cancel/speedup patch and bumps to at least “fast” network fee.
libs/coin-modules/coin-bitcoin/src/createTransaction.ts Defaults BTC transactions to rbf: true.
libs/coin-modules/coin-bitcoin/src/cache.ts Includes replaceTxId in fee-calculation cache key.
libs/coin-modules/coin-bitcoin/src/buildTransaction.ts Passes replaceTx context + conflicting pending ops into wallet builder.
libs/coin-modules/coin-bitcoin/src/buildRbfTransaction.ts Builds baseline speedup/cancel intents from on-chain tx hex + local wallet data.
libs/coin-modules/coin-bitcoin/src/buildRbfTransaction.test.ts Unit tests for intent builder behavior.
libs/coin-modules/coin-bitcoin/src/buildOptimisticOperation.ts Allows attaching transactionRaw into optimistic op.
libs/coin-modules/coin-bitcoin/src/tests/unit/editTransaction/isTransactionConfirmed.test.ts Unit tests for confirmation check.
libs/coin-modules/coin-bitcoin/src/tests/unit/editTransaction/isStrategyDisabled.test.ts Unit tests for strategy disabling rule.
libs/coin-modules/coin-bitcoin/src/tests/unit/editTransaction/hasMinimumFunds.test.ts Unit tests for minimum funds checks.
libs/coin-modules/coin-bitcoin/src/tests/unit/editTransaction/getTransactionStatus.test.ts Unit tests for edited-tx status validation.
libs/coin-modules/coin-bitcoin/src/tests/unit/editTransaction/getMinEditTransactionFees.test.ts Unit tests for min bump fee rule.
libs/coin-modules/coin-bitcoin/src/tests/unit/editTransaction/getEditTransactionPatch.test.ts Unit tests for patch building + network fee bump.
libs/coin-modules/coin-bitcoin/.unimportedrc.json Marks newly-added entrypoints as intentionally present.
libs/coin-framework/src/operation.ts Adds isOldestBitcoinPendingOperation.
apps/ledger-live-mobile/src/utils/urls.tsx Adds urls.editBitcoinTx.learnMore placeholder.
apps/ledger-live-mobile/src/screens/Account/ListHeaderComponent.tsx Sorts editable pending ops by date for BTC; sequence for EVM.
apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/TransactionAlreadyValidatedError.tsx New error screen for already-confirmed tx.
apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/MethodSelection.tsx New BTC edit method selection screen + polling.
apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/EditTransactionSummary.tsx New BTC edit summary screen + validation integration.
apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/EditTransactionParamList.ts New navigation param types for BTC edit flow.
apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/EditTransactionNavigator.tsx Adds a dedicated navigator stack for BTC edit flow.
apps/ledger-live-mobile/src/families/bitcoin/EditTransactionFlow/EditOperationPanel.tsx Adds feature-gated CTA panel for BTC edit.
apps/ledger-live-mobile/src/families/bitcoin/EditOperationPanel.tsx Exposes BTC edit panel for sync-families dispatch.
apps/ledger-live-mobile/src/const/navigation.ts Adds BTC edit screen + navigator names.
apps/ledger-live-mobile/src/components/RootNavigator/types/BaseNavigator.ts Wires BTC edit navigator type into BaseNavigator stack params.
apps/ledger-live-mobile/src/components/RootNavigator/BaseNavigator.tsx Registers BTC edit navigator in the root stack.
apps/ledger-live-mobile/src/components/EditOperationCard.tsx Supports routing to BTC edit flow (in addition to EVM).
apps/ledger-live-mobile/package.json Adds @ledgerhq/coin-bitcoin dependency.
.changeset/slimy-cobras-study.md Changeset for coin-bitcoin/live-common/live-env minors.
.changeset/dull-knives-live.md Changeset for types-live/live-mobile/live-common/coin-framework minors.
Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)

libs/coin-modules/coin-bitcoin/src/prepareTransaction.ts:88

  • In prepareTransaction, the early return only compares excludeUTXOs array length. If the set/content of exclusions changes (same length, different items/order), this returns the old transaction and never updates excludeUTXOs, so coin selection can still use unfetchable/stale UTXOs. Consider doing a deep equality check (e.g., compare normalized "hash-outputIndex" sets) instead of only length.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@qperrot qperrot force-pushed the feat/btc-replace-cancel branch from 39a0418 to 9c12c70 Compare February 13, 2026 14:13
@qperrot qperrot force-pushed the feat/btc-replace-cancel-lwm branch from 98edb32 to be33bfa Compare February 13, 2026 14:16
@github-actions
Copy link
Contributor

github-actions bot commented Feb 13, 2026

⚠️ E2E tests are required

Changes detected require e2e testing before merge (even before asking for any review).

📱 Mobile

-> Run Mobile E2E

  • Select "Run workflow"
  • Branch: feat/btc-replace-cancel-lwm
  • Device: nanoX

@qperrot qperrot force-pushed the feat/btc-replace-cancel branch 7 times, most recently from c5191f2 to eb972a2 Compare February 17, 2026 09:10
Copilot AI review requested due to automatic review settings February 17, 2026 09:16
@qperrot qperrot force-pushed the feat/btc-replace-cancel-lwm branch from be33bfa to 74cfcf4 Compare February 17, 2026 09:16
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 23 out of 24 changed files in this pull request and generated 3 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

@qperrot qperrot force-pushed the feat/btc-replace-cancel-lwm branch from d56cb7b to 87cfb66 Compare February 20, 2026 11:00
Copilot AI review requested due to automatic review settings February 20, 2026 11:27
@qperrot qperrot force-pushed the feat/btc-replace-cancel-lwm branch from 906738d to af8d6ee Compare February 20, 2026 11:27
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 23 out of 24 changed files in this pull request and generated 4 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

Comment on lines +132 to +143
const setTransactionHasBeenValidatedCallback = async () => {
const walletAccount = (mainAccount as BitcoinAccount).bitcoinResources?.walletAccount;
if (!walletAccount) return;
const hasBeenConfirmed = await isTransactionConfirmed(walletAccount, operation.hash);
if (hasBeenConfirmed) {
clearInterval(intervalId);
setTransactionHasBeenValidated(true);
}
};

setTransactionHasBeenValidatedCallback();
const intervalId = setInterval(
Copy link

Copilot AI Feb 20, 2026

Choose a reason for hiding this comment

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

The variable intervalId is referenced on line 137 before it's declared on line 143. This creates a Temporal Dead Zone (TDZ) error in JavaScript when setTransactionHasBeenValidatedCallback is called immediately on line 142. The callback will try to access intervalId in the clearInterval call, but the variable doesn't exist yet, causing a ReferenceError if the transaction is already confirmed. Declare intervalId with let before defining the callback function.

Copilot uses AI. Check for mistakes.
@qperrot qperrot force-pushed the feat/btc-replace-cancel branch 3 times, most recently from 9532f21 to 8b3f260 Compare February 23, 2026 10:40
Copilot AI review requested due to automatic review settings February 23, 2026 10:47
@qperrot qperrot force-pushed the feat/btc-replace-cancel-lwm branch from b603665 to 51f6182 Compare February 23, 2026 10:47
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 41 out of 43 changed files in this pull request and generated 5 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

@qperrot qperrot force-pushed the feat/btc-replace-cancel branch from 82531ff to 9bb0f4b Compare February 23, 2026 12:52
@qperrot qperrot force-pushed the feat/btc-replace-cancel-lwm branch from 51f6182 to 4ec3841 Compare February 23, 2026 12:55
Copilot AI review requested due to automatic review settings February 23, 2026 13:01
@qperrot qperrot force-pushed the feat/btc-replace-cancel-lwm branch from 4ec3841 to 44a98ee Compare February 23, 2026 13:01
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 39 out of 40 changed files in this pull request and generated 8 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 90 out of 92 changed files in this pull request and generated 10 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported
Comments suppressed due to low confidence (1)

libs/coin-modules/coin-bitcoin/src/wallet-btc/xpub.ts:68

  • BuildTxParams, BuildTxSelection, and Transaction are declared/imported twice in this file. These redeclarations will fail compilation; remove the duplicated blocks and keep a single source of truth for each type/import.

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 22 out of 23 changed files in this pull request and generated 3 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 21 out of 22 changed files in this pull request and generated 3 comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

gre-ledger
gre-ledger previously approved these changes Feb 26, 2026
* @param date The date of the transaction to edit
* @returns true if the date corresponds to the oldest pending operation
*/
export const isOldestBitcoinPendingOperation = (account: Account, date: Date): boolean => {
Copy link
Contributor

Choose a reason for hiding this comment

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

Maybe we should rename the function above isOldestEvmPendingOperation for better differentiation then

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 21 out of 22 changed files in this pull request and generated 1 comment.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 17 out of 18 changed files in this pull request and generated no new comments.

Files not reviewed (1)
  • pnpm-lock.yaml: Language not supported

You can also share your feedback on Copilot code review. Take the survey.

@sonarqubecloud
Copy link

sonarqubecloud bot commented Mar 5, 2026

Quality Gate Failed Quality Gate failed

Failed conditions
5.8% Coverage on New Code (required ≥ 80%)
36.6% Duplication on New Code (required ≤ 3%)
7 New Code Smells (required ≤ 1)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

mobile Has changes in LLM skip-sync-check

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants