diff --git a/.changeset/blue-files-train.md b/.changeset/blue-files-train.md
deleted file mode 100644
index bc92d727c51d..000000000000
--- a/.changeset/blue-files-train.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-"live-mobile": patch
----
-
-Fix splashscreen on launch
diff --git a/.changeset/bright-icons-explode.md b/.changeset/bright-icons-explode.md
index 6aa3419d326a..615e8620b328 100644
--- a/.changeset/bright-icons-explode.md
+++ b/.changeset/bright-icons-explode.md
@@ -1,5 +1,5 @@
---
-"@ledgerhq/live-common": patch
+"@ledgerhq/live-common": minor
---
add uniswap data
diff --git a/.changeset/chilly-eggs-hammer.md b/.changeset/chilly-eggs-hammer.md
index ba048fb4781b..be6f35a0e37a 100644
--- a/.changeset/chilly-eggs-hammer.md
+++ b/.changeset/chilly-eggs-hammer.md
@@ -1,5 +1,5 @@
---
-"live-mobile": patch
+"live-mobile": minor
---
Fix icon for stake on Tron account screen
diff --git a/.changeset/cyan-experts-raise.md b/.changeset/cyan-experts-raise.md
index e580d41f116b..33c19c9892a1 100644
--- a/.changeset/cyan-experts-raise.md
+++ b/.changeset/cyan-experts-raise.md
@@ -1,5 +1,5 @@
---
-"live-mobile": patch
+"live-mobile": minor
---
MEV Protection
diff --git a/.changeset/few-owls-cross.md b/.changeset/few-owls-cross.md
index c82d39533542..a74d213d08bc 100644
--- a/.changeset/few-owls-cross.md
+++ b/.changeset/few-owls-cross.md
@@ -1,6 +1,6 @@
---
-"ledger-live-desktop": patch
-"live-mobile": patch
+"ledger-live-desktop": minor
+"live-mobile": minor
---
Add a fallback to the provider display name from the firebase JSON if there is no translated title for the given provider. Required to add new providers like Coinbase to EVM staking.
diff --git a/.changeset/five-waves-promise.md b/.changeset/five-waves-promise.md
index 0b5d5c5428dd..422e210d3930 100644
--- a/.changeset/five-waves-promise.md
+++ b/.changeset/five-waves-promise.md
@@ -1,5 +1,5 @@
---
-"live-mobile": patch
+"live-mobile": minor
---
Some icons on allocation screen were not well displayed. So change to use ParentCurrencyIcon component (same as the one on the portfolio)
diff --git a/.changeset/good-boxes-boil.md b/.changeset/good-boxes-boil.md
index 806dbc659ec8..927b7ce58632 100644
--- a/.changeset/good-boxes-boil.md
+++ b/.changeset/good-boxes-boil.md
@@ -1,5 +1,5 @@
---
-"live-mobile": patch
+"live-mobile": minor
---
fix redirecting to GITHUB_ENV in fastfile for ios build and setting the build number correctly for slack notification
diff --git a/.changeset/long-fireants-cheer.md b/.changeset/long-fireants-cheer.md
index adfbad463139..629d89893cbc 100644
--- a/.changeset/long-fireants-cheer.md
+++ b/.changeset/long-fireants-cheer.md
@@ -1,7 +1,7 @@
---
-"@ledgerhq/types-live": patch
-"ledger-live-desktop": patch
-"@ledgerhq/live-common": patch
+"@ledgerhq/types-live": minor
+"ledger-live-desktop": minor
+"@ledgerhq/live-common": minor
---
MEV Protection feature
diff --git a/.changeset/loud-pumas-fix.md b/.changeset/loud-pumas-fix.md
index 304c47daaa8b..18a882f3314c 100644
--- a/.changeset/loud-pumas-fix.md
+++ b/.changeset/loud-pumas-fix.md
@@ -1,5 +1,5 @@
---
-"@ledgerhq/live-common": patch
+"@ledgerhq/live-common": minor
---
enable wallet connect for rsk
diff --git a/.changeset/mean-pugs-hang.md b/.changeset/mean-pugs-hang.md
index f47fd71bad42..70ffc5a7ee5c 100644
--- a/.changeset/mean-pugs-hang.md
+++ b/.changeset/mean-pugs-hang.md
@@ -1,6 +1,6 @@
---
-"ledger-live-desktop": patch
-"live-mobile": patch
+"ledger-live-desktop": minor
+"live-mobile": minor
---
Add discreetMode param for buy/sell
diff --git a/.changeset/metal-walls-rush.md b/.changeset/metal-walls-rush.md
index d588e624e0e5..d6540f36014e 100644
--- a/.changeset/metal-walls-rush.md
+++ b/.changeset/metal-walls-rush.md
@@ -1,6 +1,6 @@
---
"live-mobile": minor
-"@ledgerhq/live-common": patch
+"@ledgerhq/live-common": minor
---
Truncate some coins memo on the recipient step of the send flow
diff --git a/.changeset/mighty-points-hope.md b/.changeset/mighty-points-hope.md
index 6a124bef8407..8bf067f39301 100644
--- a/.changeset/mighty-points-hope.md
+++ b/.changeset/mighty-points-hope.md
@@ -1,5 +1,5 @@
---
-"live-mobile": patch
+"live-mobile": minor
---
Fixes buy/sell navigation paths
diff --git a/.changeset/moody-deers-marry.md b/.changeset/moody-deers-marry.md
new file mode 100644
index 000000000000..dbecdafaf38c
--- /dev/null
+++ b/.changeset/moody-deers-marry.md
@@ -0,0 +1,5 @@
+---
+"ledger-live-desktop": minor
+---
+
+use feature flag for send flow intermediary screen memo tag
diff --git a/.changeset/orange-radios-thank.md b/.changeset/orange-radios-thank.md
index 4872a5450567..d5963d871c56 100644
--- a/.changeset/orange-radios-thank.md
+++ b/.changeset/orange-radios-thank.md
@@ -1,6 +1,6 @@
---
-"ledger-live-desktop": patch
-"live-mobile": patch
+"ledger-live-desktop": minor
+"live-mobile": minor
---
Persistent sync error on LLD after backup deletion from LLM
diff --git a/.changeset/red-bobcats-leave.md b/.changeset/red-bobcats-leave.md
index 0ddafeff1f83..664834b3e2e8 100644
--- a/.changeset/red-bobcats-leave.md
+++ b/.changeset/red-bobcats-leave.md
@@ -1,5 +1,5 @@
---
-"live-mobile": patch
+"live-mobile": minor
---
Remove commas from XRP summary tag
diff --git a/.changeset/rotten-months-glow.md b/.changeset/rotten-months-glow.md
index bfa2fbe74020..906b9e61a6ea 100644
--- a/.changeset/rotten-months-glow.md
+++ b/.changeset/rotten-months-glow.md
@@ -1,5 +1,5 @@
---
-"live-mobile": patch
+"live-mobile": minor
---
Fix crash on non valid memo field in Android
diff --git a/.changeset/seven-nails-knock.md b/.changeset/seven-nails-knock.md
index d0fe858742be..9480511edc95 100644
--- a/.changeset/seven-nails-knock.md
+++ b/.changeset/seven-nails-knock.md
@@ -1,5 +1,5 @@
---
-"ledger-live-desktop": patch
+"ledger-live-desktop": minor
---
Localised URL
diff --git a/.changeset/shaggy-shoes-beg.md b/.changeset/shaggy-shoes-beg.md
index c38fa18b8262..e2dfa29ace1b 100644
--- a/.changeset/shaggy-shoes-beg.md
+++ b/.changeset/shaggy-shoes-beg.md
@@ -1,6 +1,6 @@
---
-"ledger-live-desktop": patch
-"@ledgerhq/live-common": patch
+"ledger-live-desktop": minor
+"@ledgerhq/live-common": minor
---
Add translation for troubleshooting network
diff --git a/.changeset/small-hairs-flow.md b/.changeset/small-hairs-flow.md
index cecf71d211d8..30b715f8e90a 100644
--- a/.changeset/small-hairs-flow.md
+++ b/.changeset/small-hairs-flow.md
@@ -1,6 +1,6 @@
---
-"@ledgerhq/coin-solana": patch
-"@ledgerhq/live-common": patch
+"@ledgerhq/coin-solana": minor
+"@ledgerhq/live-common": minor
---
fix: solana priority fees
diff --git a/.changeset/smart-items-laugh.md b/.changeset/smart-items-laugh.md
index d6a3e6631089..b372a8ffedce 100644
--- a/.changeset/smart-items-laugh.md
+++ b/.changeset/smart-items-laugh.md
@@ -1,6 +1,6 @@
---
-"live-mobile": patch
-"@ledgerhq/live-common": patch
+"live-mobile": minor
+"@ledgerhq/live-common": minor
---
fix: better logic and guard against accessing null db
diff --git a/.changeset/sour-badgers-matter.md b/.changeset/sour-badgers-matter.md
index d5677b2311d3..ed5f2eade927 100644
--- a/.changeset/sour-badgers-matter.md
+++ b/.changeset/sour-badgers-matter.md
@@ -1,5 +1,5 @@
---
-"ledger-live-desktop": patch
+"ledger-live-desktop": minor
---
Optimize content card log impression based on 50% of the card seen
diff --git a/.changeset/sweet-needles-kiss.md b/.changeset/sweet-needles-kiss.md
index 450d91ddf212..2c5841ee8990 100644
--- a/.changeset/sweet-needles-kiss.md
+++ b/.changeset/sweet-needles-kiss.md
@@ -1,5 +1,5 @@
---
-"ledger-live-desktop": patch
+"ledger-live-desktop": minor
---
Redirect users to Recover Login if they have an account as they may be logged out
diff --git a/.changeset/tall-moons-invent.md b/.changeset/tall-moons-invent.md
index 26a8bc9ec8b3..667a222bf1b0 100644
--- a/.changeset/tall-moons-invent.md
+++ b/.changeset/tall-moons-invent.md
@@ -1,7 +1,7 @@
---
-"@ledgerhq/types-live": patch
-"live-mobile": patch
-"@ledgerhq/live-common": patch
+"@ledgerhq/types-live": minor
+"live-mobile": minor
+"@ledgerhq/live-common": minor
---
Add swap live app webview behind feature flag
diff --git a/.changeset/ten-pigs-dress.md b/.changeset/ten-pigs-dress.md
index 3d336c69e954..18df3d07d5e4 100644
--- a/.changeset/ten-pigs-dress.md
+++ b/.changeset/ten-pigs-dress.md
@@ -1,7 +1,7 @@
---
-"@ledgerhq/coin-stacks": patch
-"live-mobile": patch
-"@ledgerhq/live-common": patch
+"@ledgerhq/coin-stacks": minor
+"live-mobile": minor
+"@ledgerhq/live-common": minor
---
support: move stacks to its own coin module
diff --git a/.changeset/tiny-feet-type.md b/.changeset/tiny-feet-type.md
index 437b9b33c4bf..125ce5ede01c 100644
--- a/.changeset/tiny-feet-type.md
+++ b/.changeset/tiny-feet-type.md
@@ -1,6 +1,6 @@
---
-"@ledgerhq/types-live": patch
-"@ledgerhq/live-common": patch
+"@ledgerhq/types-live": minor
+"@ledgerhq/live-common": minor
---
New feature flag for new add account workflow
diff --git a/.changeset/unlucky-boats-bow.md b/.changeset/unlucky-boats-bow.md
index 1ca5936da3af..a9ee6fa621f8 100644
--- a/.changeset/unlucky-boats-bow.md
+++ b/.changeset/unlucky-boats-bow.md
@@ -1,10 +1,10 @@
---
-"@ledgerhq/types-live": patch
-"@ledgerhq/live-countervalues-react": patch
-"ledger-live-desktop": patch
-"live-mobile": patch
-"@ledgerhq/live-common": patch
-"@ledgerhq/live-countervalues": patch
+"@ledgerhq/types-live": minor
+"@ledgerhq/live-countervalues-react": minor
+"ledger-live-desktop": minor
+"live-mobile": minor
+"@ledgerhq/live-common": minor
+"@ledgerhq/live-countervalues": minor
---
Add Granularity rate for Countervalues historical requests cache optimization
diff --git a/.changeset/wild-chefs-smash.md b/.changeset/wild-chefs-smash.md
index 74df9891ef87..b5ee8ec609de 100644
--- a/.changeset/wild-chefs-smash.md
+++ b/.changeset/wild-chefs-smash.md
@@ -1,8 +1,8 @@
---
-"@ledgerhq/coin-filecoin": patch
-"ledger-live-desktop": patch
-"live-mobile": patch
-"@ledgerhq/live-common": patch
+"@ledgerhq/coin-filecoin": minor
+"ledger-live-desktop": minor
+"live-mobile": minor
+"@ledgerhq/live-common": minor
---
support: move filecoin to its own coin module
diff --git a/.github/workflows/changeset-enforce.yml b/.github/workflows/changeset-enforce.yml
new file mode 100644
index 000000000000..7b489745eb0c
--- /dev/null
+++ b/.github/workflows/changeset-enforce.yml
@@ -0,0 +1,43 @@
+name: No patch level changesets
+on:
+ pull_request
+
+jobs:
+ check_changesets:
+ runs-on: ubuntu-22.04
+
+ steps:
+ - name: Checkout repository (feature branch)
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.head_ref }}
+ fetch-depth: 200
+
+ - name: Fetch develop branch
+ run: |
+ git fetch origin develop:develop --depth=1
+
+ - name: Verify develop branch
+ run: git branch --all
+
+ - uses: pnpm/action-setup@v4
+ with:
+ version: 9.12.3
+
+ - name: Install changesets
+ run: pnpm add -g @changesets/cli@2.27.7
+
+ - name: Generate changeset status
+ run: pnpm changeset status --output=changeset-status.json
+
+ - name: Check for patch level changesets
+ run: |
+ PATCH_CHANGESET_IDS=$(jq -r '.changesets[] | select(.releases[].type == "patch") | .id' changeset-status.json)
+ if [ -n "$PATCH_CHANGESET_IDS" ]; then
+ echo "Patch changesets found:"
+ echo "$PATCH_CHANGESET_IDS"
+ echo "❌ Patch level changesets are reserved for hotfixes, use major or minor only"
+ exit 1
+ else
+ echo "✅ No patch level changesets found."
+ fi
\ No newline at end of file
diff --git a/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepRecipient.tsx b/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepRecipient.tsx
index e8b6b509705b..ae00356cea58 100644
--- a/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepRecipient.tsx
+++ b/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepRecipient.tsx
@@ -27,6 +27,7 @@ import { Flex, Text } from "@ledgerhq/react-ui";
import CheckBox from "~/renderer/components/CheckBox";
import { alwaysShowMemoTagInfoSelector } from "~/renderer/reducers/application";
import { toggleShouldDisplayMemoTagInfo } from "~/renderer/actions/application";
+import { useFeature } from "@ledgerhq/live-common/featureFlags/index";
const StepRecipient = ({
t,
@@ -48,6 +49,7 @@ const StepRecipient = ({
}: StepProps) => {
const isMemoTagBoxVisibile = useSelector(memoTagBoxVisibilitySelector);
const forceAutoFocusOnMemoField = useSelector(forceAutoFocusOnMemoFieldSelector);
+ const lldMemoTag = useFeature("lldMemoTag");
if (!status || !account) return null;
@@ -63,7 +65,7 @@ const StepRecipient = ({
currencyName={currencyName}
isNFTSend={isNFTSend}
/>
- {isMemoTagBoxVisibile ? (
+ {isMemoTagBoxVisibile && lldMemoTag?.enabled ? (
) : (
<>
@@ -140,6 +142,7 @@ export const StepRecipientFooter = ({
transaction,
}: StepProps) => {
const dispatch = useDispatch();
+ const lldMemoTag = useFeature("lldMemoTag");
const { errors } = status;
const mainAccount = account ? getMainAccount(account, parentAccount) : null;
const isTerminated = mainAccount && mainAccount.currency.terminated;
@@ -151,6 +154,7 @@ export const StepRecipientFooter = ({
const handleOnNext = async () => {
if (
+ lldMemoTag?.enabled &&
!transaction?.memo &&
MEMO_TAG_COINS.includes(transaction?.family as string) &&
alwaysShowMemoTagInfo
@@ -187,7 +191,7 @@ export const StepRecipientFooter = ({
dispatch(toggleShouldDisplayMemoTagInfo(!alwaysShowMemoTagInfo));
};
- return isMemoTagBoxVisibile ? (
+ return isMemoTagBoxVisibile && lldMemoTag?.enabled ? (
diff --git a/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepSummary.tsx b/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepSummary.tsx
index 17490f4a6d96..d571619ea07a 100644
--- a/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepSummary.tsx
+++ b/apps/ledger-live-desktop/src/renderer/modals/Send/steps/StepSummary.tsx
@@ -29,6 +29,7 @@ import { useMaybeAccountUnit } from "~/renderer/hooks/useAccountUnit";
import { useMaybeAccountName } from "~/renderer/reducers/wallet";
import MemoIcon from "~/renderer/icons/MemoIcon";
import { Flex } from "@ledgerhq/react-ui";
+import { useFeature } from "@ledgerhq/live-common/featureFlags/index";
const FromToWrapper = styled.div``;
const Circle = styled.div`
@@ -63,6 +64,7 @@ const StepSummary = (props: StepProps) => {
const mainAccount = account && getMainAccount(account, parentAccount);
const unit = useMaybeAccountUnit(account);
const accountName = useMaybeAccountName(account);
+ const lldMemoTag = useFeature("lldMemoTag");
if (!account || !mainAccount || !transaction) {
return null;
@@ -171,46 +173,59 @@ const StepSummary = (props: StepProps) => {
- {memo && (
- <>
-
-
-
-
-
-
-
-
-
+ {lldMemoTag?.enabled
+ ? memo && (
+ <>
+
+
+
+
+
+
+
+
+
+
+
+
+ {memo}
+
+
+
+
+
+
+ >
+ )
+ : memo && (
+
+
+
+
+
+
+ {memo}
-
-
- {memo}
-
-
-
+
-
-
- >
- )}
+ )}
{!isNFTSend ? (
diff --git a/apps/ledger-live-mobile/ios/LaunchScreen.storyboard b/apps/ledger-live-mobile/ios/LaunchScreen.storyboard
index a2325a660511..6a4050ab1668 100644
--- a/apps/ledger-live-mobile/ios/LaunchScreen.storyboard
+++ b/apps/ledger-live-mobile/ios/LaunchScreen.storyboard
@@ -1,9 +1,9 @@
-
+
-
+
diff --git a/apps/ledger-live-mobile/ios/ledgerlivemobile/AppDelegate.mm b/apps/ledger-live-mobile/ios/ledgerlivemobile/AppDelegate.mm
index c129fb85c627..ce0b0223e7d3 100644
--- a/apps/ledger-live-mobile/ios/ledgerlivemobile/AppDelegate.mm
+++ b/apps/ledger-live-mobile/ios/ledgerlivemobile/AppDelegate.mm
@@ -22,7 +22,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
// You can add your custom initial props in the dictionary below.
// They will be passed down to the ViewController used by React Native.
self.initialProps = @{};
-
+
RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
moduleName:@"ledgerlivemobile"
@@ -32,16 +32,16 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
// Retrieve the correct GoogleService-Info.plist file name for a given environment
NSString *googleServiceInfoEnvName = [RNCConfig envFor:@"GOOGLE_SERVICE_INFO_NAME"];
NSString *googleServiceInfoName = googleServiceInfoEnvName;
-
+
if ([googleServiceInfoName length] == 0) {
googleServiceInfoName = @"GoogleService-Info";
}
-
+
// Initialize Firebase with the correct GoogleService-Info.plist file
NSString *filePath = [[NSBundle mainBundle] pathForResource:googleServiceInfoName ofType:@"plist"];
FIROptions *options = [[FIROptions alloc] initWithContentsOfFile:filePath];
[FIRApp configureWithOptions:options];
-
+
// Setup Braze
NSString *brazeApiKeyFromEnv = [RNCConfig envFor:@"BRAZE_IOS_API_KEY"];
NSString *brazeCustomEndpointFromEnv = [RNCConfig envFor:@"BRAZE_CUSTOM_ENDPOINT"];
@@ -72,12 +72,14 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(
}
[[BrazeReactUtils sharedInstance] populateInitialUrlFromLaunchOptions:launchOptions];
-
+
[self.window makeKeyAndVisible];
-
+ UIStoryboard *sb = [UIStoryboard storyboardWithName:@"LaunchScreen" bundle:nil];
+ UIViewController *vc = [sb instantiateInitialViewController];
+ rootView.loadingView = vc.view;
+
[super application:application didFinishLaunchingWithOptions:launchOptions];
- [RNSplashScreen show];
-
+
return YES;
}
@@ -145,23 +147,23 @@ - (void) showOverlay{
blurEffectView.frame = [self.window bounds];
blurEffectView.tag = 12345;
logoView.tag = 12346;
-
+
blurEffectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[self.window addSubview:blurEffectView];
[self.window addSubview:logoView];
[self.window bringSubviewToFront:logoView];
-
+
[logoView setContentHuggingPriority:251 forAxis:UILayoutConstraintAxisHorizontal];
[logoView setContentHuggingPriority:251 forAxis:UILayoutConstraintAxisVertical];
logoView.frame = CGRectMake(0, 0, 128, 128);
-
+
logoView.center = CGPointMake(self.window.frame.size.width / 2,self.window.frame.size.height / 2);
}
- (void) hideOverlay{
UIView *blurEffectView = [self.window viewWithTag:12345];
UIView *logoView = [self.window viewWithTag:12346];
-
+
[UIView animateWithDuration:0.5 animations:^{
blurEffectView.alpha = 0;
logoView.alpha = 0;