diff --git a/.github/workflows/no_print_in_dart.yaml b/.github/workflows/no_print_in_dart.yaml
index b321a9cc9..b1c356c31 100644
--- a/.github/workflows/no_print_in_dart.yaml
+++ b/.github/workflows/no_print_in_dart.yaml
@@ -11,7 +11,7 @@ jobs:
       - name: Check for print() statements in dart code (use printV() instead)
         if: github.event_name == 'pull_request'
         run: |
-          GIT_GREP_OUT="$(git grep ' print(' | (grep .dart: || test $? = 1) | (grep -v print_verbose.dart || test $? = 1) || true)"
+          GIT_GREP_OUT="$(git grep ' print(' | (grep .dart: || test $? = 1) | (grep -v print_verbose.dart || test $? = 1) | (grep -v print_verbose_dummy.dart || test $? = 1) || true)"
           [[ "x$GIT_GREP_OUT" == "x" ]] && exit 0
           echo "$GIT_GREP_OUT"
           echo "There are .dart files which use print() statements"
diff --git a/assets/text/Monerocom_Release_Notes.txt b/assets/text/Monerocom_Release_Notes.txt
index d1f91139b..5b2a9f873 100644
--- a/assets/text/Monerocom_Release_Notes.txt
+++ b/assets/text/Monerocom_Release_Notes.txt
@@ -1,3 +1,5 @@
-UI/UX enhancements
-Stability improvements
+Add background sync to Monero
+Enhance Backup files
+Improve app usability and user experience
+User interface enhancements
 Bug fixes
\ No newline at end of file
diff --git a/assets/text/Release_Notes.txt b/assets/text/Release_Notes.txt
index 0f8118b4e..1a5986bd4 100644
--- a/assets/text/Release_Notes.txt
+++ b/assets/text/Release_Notes.txt
@@ -1 +1,8 @@
-Update for Zano's Hard fork
\ No newline at end of file
+Add background sync to Monero
+Add Decred Wallet
+Remove Haven Wallet
+Fix and Improve Solana Wallet
+Enhance Backup files
+Improve app usability and user experience
+User interface enhancements
+Bug fixes
\ No newline at end of file
diff --git a/cw_bitcoin/pubspec.lock b/cw_bitcoin/pubspec.lock
index 1ad7b0c60..09870224c 100644
--- a/cw_bitcoin/pubspec.lock
+++ b/cw_bitcoin/pubspec.lock
@@ -29,10 +29,10 @@ packages:
     dependency: transitive
     description:
       name: asn1lib
-      sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
+      sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.9"
+    version: "1.5.8"
   async:
     dependency: transitive
     description:
@@ -129,18 +129,18 @@ packages:
     dependency: transitive
     description:
       name: build_config
-      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.2"
+    version: "1.1.1"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
       url: "https://pub.dev"
     source: hosted
-    version: "4.0.4"
+    version: "4.0.2"
   build_resolvers:
     dependency: "direct dev"
     description:
@@ -495,10 +495,10 @@ packages:
     dependency: transitive
     description:
       name: http_parser
-      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
       url: "https://pub.dev"
     source: hosted
-    version: "4.1.2"
+    version: "4.0.2"
   intl:
     dependency: "direct main"
     description:
@@ -794,10 +794,10 @@ packages:
     dependency: transitive
     description:
       name: pubspec_parse
-      sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+      sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.0"
+    version: "1.4.0"
   quiver:
     dependency: transitive
     description:
@@ -882,10 +882,10 @@ packages:
     dependency: transitive
     description:
       name: shelf
-      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
       url: "https://pub.dev"
     source: hosted
-    version: "1.4.2"
+    version: "1.4.1"
   shelf_web_socket:
     dependency: transitive
     description:
@@ -1117,5 +1117,5 @@ packages:
     source: hosted
     version: "2.2.2"
 sdks:
-  dart: ">=3.6.0 <4.0.0"
+  dart: ">=3.5.0 <4.0.0"
   flutter: ">=3.24.0"
diff --git a/cw_core/lib/utils/print_verbose.dart b/cw_core/lib/utils/print_verbose.dart
index de7cc8557..42014d609 100644
--- a/cw_core/lib/utils/print_verbose.dart
+++ b/cw_core/lib/utils/print_verbose.dart
@@ -1,4 +1,5 @@
 import 'dart:math';
+import 'package:flutter/foundation.dart';
 
 void printV(dynamic content) {
   CustomTrace programInfo = CustomTrace(StackTrace.current);
@@ -20,7 +21,7 @@ class CustomTrace {
     try {
       _parseTrace();
     } catch (e) {
-      print("Unable to parse trace (printV): $e");
+      if (kDebugMode) print("Unable to parse trace (printV): $e");
     }
   }
 
@@ -80,7 +81,7 @@ class CustomTrace {
       columnStr = columnStr.replaceFirst(")", "");
       this.columnNumber = int.tryParse(columnStr);
     } catch (e) {
-      print("Unable to parse trace (printV): $e");
+      if (kDebugMode) print("Unable to parse trace (printV): $e");
     }
   }
 }
diff --git a/cw_core/pubspec.lock b/cw_core/pubspec.lock
index 4ba8df5c5..36bba72b6 100644
--- a/cw_core/pubspec.lock
+++ b/cw_core/pubspec.lock
@@ -34,10 +34,10 @@ packages:
     dependency: transitive
     description:
       name: asn1lib
-      sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
+      sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.9"
+    version: "1.5.8"
   async:
     dependency: transitive
     description:
@@ -67,50 +67,50 @@ packages:
     dependency: transitive
     description:
       name: build
-      sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0
+      sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0"
       url: "https://pub.dev"
     source: hosted
-    version: "2.4.2"
+    version: "2.4.1"
   build_config:
     dependency: transitive
     description:
       name: build_config
-      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.2"
+    version: "1.1.1"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
       url: "https://pub.dev"
     source: hosted
-    version: "4.0.4"
+    version: "4.0.2"
   build_resolvers:
     dependency: "direct dev"
     description:
       name: build_resolvers
-      sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0
+      sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a"
       url: "https://pub.dev"
     source: hosted
-    version: "2.4.4"
+    version: "2.4.2"
   build_runner:
     dependency: "direct dev"
     description:
       name: build_runner
-      sha256: "058fe9dce1de7d69c4b84fada934df3e0153dd000758c4d65964d0166779aa99"
+      sha256: "028819cfb90051c6b5440c7e574d1896f8037e3c96cf17aaeb054c9311cfbf4d"
       url: "https://pub.dev"
     source: hosted
-    version: "2.4.15"
+    version: "2.4.13"
   build_runner_core:
     dependency: transitive
     description:
       name: build_runner_core
-      sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021"
+      sha256: f8126682b87a7282a339b871298cc12009cb67109cfa1614d6436fb0289193e0
       url: "https://pub.dev"
     source: hosted
-    version: "8.0.0"
+    version: "7.3.2"
   built_collection:
     dependency: transitive
     description:
@@ -212,10 +212,10 @@ packages:
     dependency: transitive
     description:
       name: dart_style
-      sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820"
+      sha256: "7856d364b589d1f08986e140938578ed36ed948581fbc3bc9aef1805039ac5ab"
       url: "https://pub.dev"
     source: hosted
-    version: "2.3.8"
+    version: "2.3.7"
   decimal:
     dependency: "direct main"
     description:
@@ -342,10 +342,10 @@ packages:
     dependency: transitive
     description:
       name: http_parser
-      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
       url: "https://pub.dev"
     source: hosted
-    version: "4.1.2"
+    version: "4.0.2"
   intl:
     dependency: "direct main"
     description:
@@ -599,10 +599,10 @@ packages:
     dependency: transitive
     description:
       name: pubspec_parse
-      sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+      sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.0"
+    version: "1.4.0"
   rational:
     dependency: transitive
     description:
@@ -615,18 +615,18 @@ packages:
     dependency: transitive
     description:
       name: shelf
-      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
       url: "https://pub.dev"
     source: hosted
-    version: "1.4.2"
+    version: "1.4.1"
   shelf_web_socket:
     dependency: transitive
     description:
       name: shelf_web_socket
-      sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
+      sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67
       url: "https://pub.dev"
     source: hosted
-    version: "3.0.0"
+    version: "2.0.1"
   sky_engine:
     dependency: transitive
     description: flutter
@@ -809,5 +809,5 @@ packages:
     source: hosted
     version: "3.1.3"
 sdks:
-  dart: ">=3.6.0 <4.0.0"
+  dart: ">=3.5.0 <4.0.0"
   flutter: ">=3.24.0"
diff --git a/cw_decred/lib/api/libdcrwallet.dart b/cw_decred/lib/api/libdcrwallet.dart
index 6a26e64c6..b5e5bbe73 100644
--- a/cw_decred/lib/api/libdcrwallet.dart
+++ b/cw_decred/lib/api/libdcrwallet.dart
@@ -3,7 +3,6 @@ import 'dart:ffi';
 import 'dart:io';
 import 'dart:async';
 import 'dart:isolate';
-import 'package:flutter/foundation.dart';
 import 'package:cw_core/utils/print_verbose.dart';
 import 'package:cw_decred/api/libdcrwallet_bindings.dart';
 import 'package:cw_decred/api/util.dart';
@@ -79,10 +78,12 @@ class Libwallet {
         switch (method) {
           case "initlibdcrwallet":
             final logDir = args["logdir"] ?? "";
+            final level = args["level"] ?? "";
             final cLogDir = logDir.toCString();
+            final cLevel = level.toCString();
             executePayloadFn(
-              fn: () => dcrwalletApi.initialize(cLogDir),
-              ptrsToFree: [cLogDir],
+              fn: () => dcrwalletApi.initialize(cLogDir, cLevel),
+              ptrsToFree: [cLogDir, cLevel],
             );
             break;
           case "createwallet":
@@ -300,7 +301,7 @@ class Libwallet {
             break;
           case "shutdown":
             final name = args["name"] ?? "";
-            final cName = name.toCString();
+            // final cName = name.toCString();
             executePayloadFn(
               fn: () => dcrwalletApi.shutdown(),
               ptrsToFree: [],
@@ -326,8 +327,8 @@ class Libwallet {
 
   // initLibdcrwallet initializes libdcrwallet using the provided logDir and gets
   // it ready for use. This must be done before attempting to create, load or use
-  // a wallet.
-  Future<void> initLibdcrwallet(String logDir) async {
+  // a wallet. An empty string can be used to log to stdout and create no log files.
+  Future<void> initLibdcrwallet(String logDir, String level) async {
     if (_closed) throw StateError('Closed');
     final completer = Completer<Object?>.sync();
     final id = _idCounter++;
@@ -335,6 +336,7 @@ class Libwallet {
     final req = {
       "method": "initlibdcrwallet",
       "logdir": logDir,
+      "level": level,
     };
     _commands.send((id, req));
     await completer.future;
@@ -463,7 +465,11 @@ class Libwallet {
     };
     _commands.send((id, req));
     final res = await completer.future as PayloadResult;
-    return jsonDecode(res.payload);
+    try {
+      return jsonDecode(res.payload);
+    } catch (_) {
+      return {};
+    }
   }
 
   Future<String> estimateFee(String walletName, int numBlocks) async {
diff --git a/cw_decred/lib/wallet.dart b/cw_decred/lib/wallet.dart
index 028ba6cda..db30ab373 100644
--- a/cw_decred/lib/wallet.dart
+++ b/cw_decred/lib/wallet.dart
@@ -380,7 +380,7 @@ abstract class DecredWalletBase
         totalAmt = totalIn;
       } else if (out.cryptoAmount != null) {
         final coins = double.parse(out.cryptoAmount!);
-        amt = (coins * 1e8).toInt();
+        amt = (coins * 1e8).round();
       }
       totalAmt += amt;
       final o = {
@@ -415,7 +415,7 @@ abstract class DecredWalletBase
     };
     final fee = decoded["fee"] ?? 0;
     if (sendAll) {
-      totalAmt = (totalAmt - fee).toInt();
+      totalAmt = (totalAmt - fee).round();
     }
     return DecredPendingTransaction(
         txid: decoded["txid"] ?? "", amount: totalAmt, fee: fee, rawHex: signedHex, send: send);
@@ -475,36 +475,41 @@ abstract class DecredWalletBase
   }
 
   Future<Map<String, DecredTransactionInfo>> fetchFiveTransactions(int from) async {
-    final res = await _libwallet.listTransactions(walletInfo.name, from.toString(), "5");
-    final decoded = json.decode(res);
-    var txs = <String, DecredTransactionInfo>{};
-    for (final d in decoded) {
-      final txid = uniqueTxID(d["txid"] ?? "", d["vout"] ?? 0);
-      var direction = TransactionDirection.outgoing;
-      if (d["category"] == "receive") {
-        direction = TransactionDirection.incoming;
+    try {
+      final res = await _libwallet.listTransactions(walletInfo.name, from.toString(), "5");
+      final decoded = json.decode(res);
+      var txs = <String, DecredTransactionInfo>{};
+      for (final d in decoded) {
+        final txid = uniqueTxID(d["txid"] ?? "", d["vout"] ?? 0);
+        var direction = TransactionDirection.outgoing;
+        if (d["category"] == "receive") {
+          direction = TransactionDirection.incoming;
+        }
+        final amountDouble = d["amount"] ?? 0.0;
+        final amount = (amountDouble * 1e8).round().abs();
+        final feeDouble = d["fee"] ?? 0.0;
+        final fee = (feeDouble * 1e8).round().abs();
+        final confs = d["confirmations"] ?? 0;
+        final sendTime = d["time"] ?? 0;
+        final height = d["height"] ?? 0;
+        final txInfo = DecredTransactionInfo(
+          id: txid,
+          amount: amount,
+          fee: fee,
+          direction: direction,
+          isPending: confs == 0,
+          date: DateTime.fromMillisecondsSinceEpoch(sendTime * 1000, isUtc: false),
+          height: height,
+          confirmations: confs,
+          to: d["address"] ?? "",
+        );
+        txs[txid] = txInfo;
       }
-      final amountDouble = d["amount"] ?? 0.0;
-      final amount = (amountDouble * 1e8).toInt().abs();
-      final feeDouble = d["fee"] ?? 0.0;
-      final fee = (feeDouble * 1e8).toInt().abs();
-      final confs = d["confirmations"] ?? 0;
-      final sendTime = d["time"] ?? 0;
-      final height = d["height"] ?? 0;
-      final txInfo = DecredTransactionInfo(
-        id: txid,
-        amount: amount,
-        fee: fee,
-        direction: direction,
-        isPending: confs == 0,
-        date: DateTime.fromMillisecondsSinceEpoch(sendTime * 1000, isUtc: false),
-        height: height,
-        confirmations: confs,
-        to: d["address"] ?? "",
-      );
-      txs[txid] = txInfo;
+      return txs;
+    } catch (e) {
+      printV(e);
+      return {};
     }
-    return txs;
   }
 
   // uniqueTxID combines the tx id and vout to create a unique id.
@@ -612,21 +617,25 @@ abstract class DecredWalletBase
   }
 
   Future<void> fetchUnspents() async {
-    final res = await _libwallet.listUnspents(walletInfo.name);
-    final decoded = json.decode(res);
-    var unspents = <Unspent>[];
-    for (final d in decoded) {
-      final spendable = d["spendable"] ?? false;
-      if (!spendable) {
-        continue;
+    try {
+      final res = await _libwallet.listUnspents(walletInfo.name);
+      final decoded = json.decode(res);
+      var unspents = <Unspent>[];
+      for (final d in decoded) {
+        final spendable = d["spendable"] ?? false;
+        if (!spendable) {
+          continue;
+        }
+        final amountDouble = d["amount"] ?? 0.0;
+        final amount = (amountDouble * 1e8).round().abs();
+        final utxo = Unspent(d["address"] ?? "", d["txid"] ?? "", amount, d["vout"] ?? 0, null);
+        utxo.isChange = d["ischange"] ?? false;
+        unspents.add(utxo);
       }
-      final amountDouble = d["amount"] ?? 0.0;
-      final amount = (amountDouble * 1e8).toInt().abs();
-      final utxo = Unspent(d["address"] ?? "", d["txid"] ?? "", amount, d["vout"] ?? 0, null);
-      utxo.isChange = d["ischange"] ?? false;
-      unspents.add(utxo);
+      _unspents = unspents;
+    } catch (e) {
+      printV(e);
     }
-    _unspents = unspents;
   }
 
   List<Unspent> unspents() {
diff --git a/cw_decred/lib/wallet_addresses.dart b/cw_decred/lib/wallet_addresses.dart
index 10970b2d6..860a576d9 100644
--- a/cw_decred/lib/wallet_addresses.dart
+++ b/cw_decred/lib/wallet_addresses.dart
@@ -1,4 +1,5 @@
 import 'dart:convert';
+import 'package:cw_core/utils/print_verbose.dart';
 import 'package:mobx/mobx.dart';
 
 import 'package:cw_core/address_info.dart';
@@ -103,13 +104,18 @@ abstract class DecredWalletAddressesBase extends WalletAddresses with Store {
     if (this.isEnabledAutoGenerateSubaddress) {
       nUnused = "3";
     }
-    final res = await _libwallet.addresses(walletInfo.name, nUsed, nUnused);
-    final decoded = json.decode(res);
-    final usedAddrs = List<String>.from(decoded["used"] ?? []);
-    final unusedAddrs = List<String>.from(decoded["unused"] ?? []);
-    // index is the index of the first unused address.
-    final index = decoded["index"] ?? 0;
-    return new LibAddresses(usedAddrs, unusedAddrs, index);
+    try {
+      final res = await _libwallet.addresses(walletInfo.name, nUsed, nUnused);
+      final decoded = json.decode(res);
+      final usedAddrs = List<String>.from(decoded["used"] ?? []);
+      final unusedAddrs = List<String>.from(decoded["unused"] ?? []);
+      // index is the index of the first unused address.
+      final index = decoded["index"] ?? 0;
+      return new LibAddresses(usedAddrs, unusedAddrs, index);
+    } catch (e) {
+      printV(e);
+      return LibAddresses([], [], 0);
+    }
   }
 
   Future<void> generateNewAddress(String label) async {
diff --git a/cw_decred/lib/wallet_service.dart b/cw_decred/lib/wallet_service.dart
index a54833321..161184b0a 100644
--- a/cw_decred/lib/wallet_service.dart
+++ b/cw_decred/lib/wallet_service.dart
@@ -27,17 +27,16 @@ class DecredWalletService extends WalletService<
   static final pubkeyRestorePathTestnet = "m/44'/1'/0'";
   final mainnet = "mainnet";
   final testnet = "testnet";
-  Libwallet? libwallet;
+  static Libwallet? libwallet;
 
   Future<void> init() async {
     if (libwallet != null) {
       return;
     }
     libwallet = await Libwallet.spawn();
-    // Use the general path for all dcr wallets as the general log directory.
-    // Individual wallet paths may be removed if the wallet is deleted.
-    final dcrLogDir = await pathForWalletDir(name: '', type: WalletType.decred);
-    libwallet!.initLibdcrwallet(dcrLogDir);
+    // Init logging with no directory to force printing to stdout and only
+    // print ERROR level logs.
+    libwallet!.initLibdcrwallet("", "err");
   }
 
   void closeLibwallet() {
diff --git a/cw_decred/pubspec.lock b/cw_decred/pubspec.lock
index 2324e7bd2..f9954fe53 100644
--- a/cw_decred/pubspec.lock
+++ b/cw_decred/pubspec.lock
@@ -75,18 +75,18 @@ packages:
     dependency: transitive
     description:
       name: build_config
-      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.2"
+    version: "1.1.1"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
       url: "https://pub.dev"
     source: hosted
-    version: "4.0.4"
+    version: "4.0.2"
   build_resolvers:
     dependency: "direct dev"
     description:
@@ -365,10 +365,10 @@ packages:
     dependency: transitive
     description:
       name: http_parser
-      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
       url: "https://pub.dev"
     source: hosted
-    version: "4.1.2"
+    version: "4.0.2"
   intl:
     dependency: transitive
     description:
@@ -646,10 +646,10 @@ packages:
     dependency: transitive
     description:
       name: shelf
-      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
       url: "https://pub.dev"
     source: hosted
-    version: "1.4.2"
+    version: "1.4.1"
   shelf_web_socket:
     dependency: transitive
     description:
@@ -848,5 +848,5 @@ packages:
     source: hosted
     version: "2.2.2"
 sdks:
-  dart: ">=3.6.0 <4.0.0"
+  dart: ">=3.5.0 <4.0.0"
   flutter: ">=3.24.0"
diff --git a/cw_monero/lib/api/transaction_history.dart b/cw_monero/lib/api/transaction_history.dart
index 854ee01c3..162b9ac1a 100644
--- a/cw_monero/lib/api/transaction_history.dart
+++ b/cw_monero/lib/api/transaction_history.dart
@@ -161,31 +161,39 @@ Future<PendingTransactionDescription> createTransactionSync(
     );
 }
 
-PendingTransactionDescription createTransactionMultDestSync(
+Future<PendingTransactionDescription> createTransactionMultDest(
     {required List<MoneroOutput> outputs,
     required String paymentId,
     required int priorityRaw,
     int accountIndex = 0,
-    List<String> preferredInputs = const []}) {
+    List<String> preferredInputs = const []}) async {
   
   final dstAddrs = outputs.map((e) => e.address).toList();
   final amounts = outputs.map((e) => monero.Wallet_amountFromString(e.amount)).toList();
 
-  // printV("multDest: dstAddrs: $dstAddrs");
-  // printV("multDest: amounts: $amounts");
+  final waddr = wptr!.address;
+
+  // force reconnection in case the os killed the connection
+  Isolate.run(() async {
+    monero.Wallet_synchronized(Pointer.fromAddress(waddr));
+  });
+
+  final txptr = Pointer<Void>.fromAddress(await Isolate.run(() {
+    return monero.Wallet_createTransactionMultDest(
+      Pointer.fromAddress(waddr),
+      dstAddr: dstAddrs,
+      isSweepAll: false,
+      amounts: amounts,
+      mixinCount: 0,
+      pendingTransactionPriority: priorityRaw,
+      subaddr_account: accountIndex,
+    ).address;
+  }));
 
-  final txptr = monero.Wallet_createTransactionMultDest(
-    wptr!,
-    dstAddr: dstAddrs,
-    isSweepAll: false,
-    amounts: amounts,
-    mixinCount: 0,
-    pendingTransactionPriority: priorityRaw,
-    subaddr_account: accountIndex,
-  );
   if (monero.PendingTransaction_status(txptr) != 0) {
     throw CreationTransactionException(message: monero.PendingTransaction_errorString(txptr));
   }
+
   return PendingTransactionDescription(
     amount: monero.PendingTransaction_amount(txptr),
     fee: monero.PendingTransaction_fee(txptr),
@@ -255,21 +263,6 @@ Future<PendingTransactionDescription> _createTransactionSync(Map args) async {
       preferredInputs: preferredInputs);
 }
 
-PendingTransactionDescription _createTransactionMultDestSync(Map args) {
-  final outputs = args['outputs'] as List<MoneroOutput>;
-  final paymentId = args['paymentId'] as String;
-  final priorityRaw = args['priorityRaw'] as int;
-  final accountIndex = args['accountIndex'] as int;
-  final preferredInputs = args['preferredInputs'] as List<String>;
-
-  return createTransactionMultDestSync(
-      outputs: outputs,
-      paymentId: paymentId,
-      priorityRaw: priorityRaw,
-      accountIndex: accountIndex,
-      preferredInputs: preferredInputs);
-}
-
 Future<PendingTransactionDescription> createTransaction(
         {required String address,
         required int priorityRaw,
@@ -286,21 +279,6 @@ Future<PendingTransactionDescription> createTransaction(
       'preferredInputs': preferredInputs
     });
 
-Future<PendingTransactionDescription> createTransactionMultDest(
-        {required List<MoneroOutput> outputs,
-        required int priorityRaw,
-        String paymentId = '',
-        int accountIndex = 0,
-        List<String> preferredInputs = const []}) async =>
-    _createTransactionMultDestSync({
-      'outputs': outputs,
-      'paymentId': paymentId,
-      'priorityRaw': priorityRaw,
-      'accountIndex': accountIndex,
-      'preferredInputs': preferredInputs
-    });
-
-
 class Transaction {
   final String displayLabel;
   late final String subaddressLabel = monero.Wallet_getSubaddressLabel(
diff --git a/cw_monero/lib/api/wallet_manager.dart b/cw_monero/lib/api/wallet_manager.dart
index bfebe4247..0dcb3c851 100644
--- a/cw_monero/lib/api/wallet_manager.dart
+++ b/cw_monero/lib/api/wallet_manager.dart
@@ -89,11 +89,7 @@ void createWalletSync(
     throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
   }
 
-  monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
-  status = monero.Wallet_status(newWptr);
-  if (status != 0) {
-    throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
-  }
+  setupBackgroundSync(password, newWptr);
 
   wptr = newWptr;
   monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.passphrase", value: passphrase);
@@ -186,13 +182,6 @@ void restoreWalletFromKeysSync(
         message: monero.Wallet_errorString(newWptr));
   }
 
-  
-  monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
-  status = monero.Wallet_status(newWptr);
-  if (status != 0) {
-    throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
-  }
-
   // CW-712 - Try to restore deterministic wallet first, if the view key doesn't
   // match the view key provided
   if (spendKey != "") {
@@ -216,12 +205,8 @@ void restoreWalletFromKeysSync(
         throw WalletRestoreFromKeysException(
             message: monero.Wallet_errorString(newWptr));
       }
-        
-      monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
-      status = monero.Wallet_status(newWptr);
-      if (status != 0) {
-        throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
-      }
+
+      setupBackgroundSync(password, newWptr);
     }
   }
 
@@ -267,12 +252,8 @@ void restoreWalletFromPolyseedWithOffset(
   monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed);
   monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.passphrase", value: seedOffset);
   monero.Wallet_store(wptr!);
-    
-  monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
-  status = monero.Wallet_status(newWptr);
-  if (status != 0) {
-    throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
-  }
+
+  setupBackgroundSync(password, newWptr);
   storeSync();
 
   openedWalletsByPath[path] = wptr!;
@@ -323,12 +304,8 @@ void restoreWalletFromSpendKeySync(
   monero.Wallet_setCacheAttribute(wptr!, key: "cakewallet.seed", value: seed);
 
   storeSync();
-  
-  monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
-  status = monero.Wallet_status(newWptr);
-  if (status != 0) {
-    throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
-  }
+
+  setupBackgroundSync(password, newWptr);
 
   openedWalletsByPath[path] = wptr!;
   _lastOpenedWallet = path;
@@ -361,13 +338,6 @@ Future<void> restoreWalletFromHardwareWallet(
     throw WalletRestoreFromSeedException(message: error);
   }
 
-  // TODO: Check with upstream if we can use background sync here
-  // monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
-  // status = monero.Wallet_status(newWptr);
-  // if (status != 0) {
-  //   throw WalletCreationException(message: monero.Wallet_errorString(newWptr));
-  // }
-
   wptr = newWptr;
   _lastOpenedWallet = path;
   openedWalletsByPath[path] = wptr!;
@@ -437,12 +407,8 @@ Future<void> loadWallet(
       printV("loadWallet:"+err);
       throw WalletOpeningException(message: err);
     }
-    monero.Wallet_setupBackgroundSync(newWptr, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
-    status = monero.Wallet_status(newWptr);
-    if (status != 0) {
-      final err = monero.Wallet_errorString(newWptr);
-      printV("loadWallet:"+err);
-      throw WalletOpeningException(message: err);
+    if (deviceType == 0) {
+      setupBackgroundSync(password, newWptr);
     }
 
     wptr = newWptr;
@@ -451,6 +417,17 @@ Future<void> loadWallet(
   }
 }
 
+void setupBackgroundSync(String password, Pointer<Void>? wptrOverride) {
+  if (isViewOnlyBySpendKey(wptrOverride)) {
+    return;
+  }
+  monero.Wallet_setupBackgroundSync(wptrOverride ?? wptr!, backgroundSyncType: 2, walletPassword: password, backgroundCachePassword: '');
+  if (monero.Wallet_status(wptrOverride ?? wptr!) != 0) {
+    // We simply ignore the error.
+    printV("setupBackgroundSync: ${monero.Wallet_errorString(wptrOverride ?? wptr!)}");
+  }
+}
+
 void _createWallet(Map<String, dynamic> args) {
   final path = args['path'] as String;
   final password = args['password'] as String;
@@ -591,4 +568,4 @@ Future<void> restoreFromSpendKey(
 
 bool isWalletExist({required String path}) => _isWalletExist(path);
 
-bool isViewOnlyBySpendKey() => int.tryParse(monero.Wallet_secretSpendKey(wptr!)) == 0;
+bool isViewOnlyBySpendKey(Pointer<Void>? wptrOverride) => int.tryParse(monero.Wallet_secretSpendKey(wptrOverride ?? wptr!)) == 0;
diff --git a/cw_monero/lib/monero_wallet.dart b/cw_monero/lib/monero_wallet.dart
index db4d30ee8..0a56c5cbc 100644
--- a/cw_monero/lib/monero_wallet.dart
+++ b/cw_monero/lib/monero_wallet.dart
@@ -233,18 +233,14 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
       return;
     }
     isBackgroundSyncRunning = true;
-    int status = monero.Wallet_status(wptr!);
-    if (status != 0) {
-      final err = monero.Wallet_errorString(wptr!);
-      throw Exception("unable to setup background sync: $err");
-    }
     await save();
 
     monero.Wallet_startBackgroundSync(wptr!);
-    status = monero.Wallet_status(wptr!);
+    final status = monero.Wallet_status(wptr!);
     if (status != 0) {
       final err = monero.Wallet_errorString(wptr!);
-      throw Exception("unable to start background sync: $err");
+      isBackgroundSyncRunning = false;
+      printV("startBackgroundSync: $err");
     }
     await save();
     await init();
@@ -260,9 +256,9 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
       printV("Stopping background sync");
       await save();
       monero.Wallet_stopBackgroundSync(wptr!, '');
-      await save();
       isBackgroundSyncRunning = false;
     }
+    await save();
   }
 
   @action
@@ -406,6 +402,7 @@ abstract class MoneroWalletBase extends WalletBase<MoneroBalance,
               outputs: moneroOutputs,
               priorityRaw: _credentials.priority.serialize(),
               accountIndex: walletAddresses.account!.id,
+              paymentId: "",
               preferredInputs: inputs);
     } else {
       final output = outputs.first;
diff --git a/cw_monero/pubspec.lock b/cw_monero/pubspec.lock
index 019c9f437..c808e5edb 100644
--- a/cw_monero/pubspec.lock
+++ b/cw_monero/pubspec.lock
@@ -29,10 +29,10 @@ packages:
     dependency: transitive
     description:
       name: asn1lib
-      sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
+      sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.9"
+    version: "1.5.8"
   async:
     dependency: transitive
     description:
@@ -78,18 +78,18 @@ packages:
     dependency: transitive
     description:
       name: build_config
-      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.2"
+    version: "1.1.1"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
       url: "https://pub.dev"
     source: hosted
-    version: "4.0.4"
+    version: "4.0.2"
   build_resolvers:
     dependency: "direct dev"
     description:
@@ -384,10 +384,10 @@ packages:
     dependency: transitive
     description:
       name: http_parser
-      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
       url: "https://pub.dev"
     source: hosted
-    version: "4.1.2"
+    version: "4.0.2"
   intl:
     dependency: "direct main"
     description:
@@ -682,10 +682,10 @@ packages:
     dependency: transitive
     description:
       name: pubspec_parse
-      sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+      sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.0"
+    version: "1.4.0"
   rational:
     dependency: transitive
     description:
@@ -706,10 +706,10 @@ packages:
     dependency: transitive
     description:
       name: shelf
-      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
       url: "https://pub.dev"
     source: hosted
-    version: "1.4.2"
+    version: "1.4.1"
   shelf_web_socket:
     dependency: transitive
     description:
@@ -924,5 +924,5 @@ packages:
     source: hosted
     version: "3.1.3"
 sdks:
-  dart: ">=3.6.0 <4.0.0"
+  dart: ">=3.5.0 <4.0.0"
   flutter: ">=3.24.0"
diff --git a/cw_nano/pubspec.lock b/cw_nano/pubspec.lock
index 0891588f2..ca8b61974 100644
--- a/cw_nano/pubspec.lock
+++ b/cw_nano/pubspec.lock
@@ -29,10 +29,10 @@ packages:
     dependency: transitive
     description:
       name: asn1lib
-      sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
+      sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.9"
+    version: "1.5.8"
   async:
     dependency: transitive
     description:
@@ -94,18 +94,18 @@ packages:
     dependency: transitive
     description:
       name: build_config
-      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.2"
+    version: "1.1.1"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
       url: "https://pub.dev"
     source: hosted
-    version: "4.0.4"
+    version: "4.0.2"
   build_resolvers:
     dependency: transitive
     description:
@@ -397,10 +397,10 @@ packages:
     dependency: transitive
     description:
       name: http_parser
-      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
       url: "https://pub.dev"
     source: hosted
-    version: "4.1.2"
+    version: "4.0.2"
   intl:
     dependency: transitive
     description:
@@ -679,10 +679,10 @@ packages:
     dependency: transitive
     description:
       name: pubspec_parse
-      sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+      sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.0"
+    version: "1.4.0"
   rational:
     dependency: transitive
     description:
@@ -751,10 +751,10 @@ packages:
     dependency: transitive
     description:
       name: shelf
-      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
       url: "https://pub.dev"
     source: hosted
-    version: "1.4.2"
+    version: "1.4.1"
   shelf_web_socket:
     dependency: transitive
     description:
@@ -945,5 +945,5 @@ packages:
     source: hosted
     version: "3.1.3"
 sdks:
-  dart: ">=3.6.0 <4.0.0"
+  dart: ">=3.5.0 <4.0.0"
   flutter: ">=3.24.0"
diff --git a/cw_wownero/pubspec.lock b/cw_wownero/pubspec.lock
index 6d4493874..404060e43 100644
--- a/cw_wownero/pubspec.lock
+++ b/cw_wownero/pubspec.lock
@@ -29,10 +29,10 @@ packages:
     dependency: transitive
     description:
       name: asn1lib
-      sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
+      sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.9"
+    version: "1.5.8"
   async:
     dependency: transitive
     description:
@@ -70,18 +70,18 @@ packages:
     dependency: transitive
     description:
       name: build_config
-      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.2"
+    version: "1.1.1"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
       url: "https://pub.dev"
     source: hosted
-    version: "4.0.4"
+    version: "4.0.2"
   build_resolvers:
     dependency: "direct dev"
     description:
@@ -360,10 +360,10 @@ packages:
     dependency: transitive
     description:
       name: http_parser
-      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
       url: "https://pub.dev"
     source: hosted
-    version: "4.1.2"
+    version: "4.0.2"
   intl:
     dependency: "direct main"
     description:
@@ -634,10 +634,10 @@ packages:
     dependency: transitive
     description:
       name: pubspec_parse
-      sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+      sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.0"
+    version: "1.4.0"
   rational:
     dependency: transitive
     description:
@@ -650,10 +650,10 @@ packages:
     dependency: transitive
     description:
       name: shelf
-      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
       url: "https://pub.dev"
     source: hosted
-    version: "1.4.2"
+    version: "1.4.1"
   shelf_web_socket:
     dependency: transitive
     description:
@@ -844,5 +844,5 @@ packages:
     source: hosted
     version: "3.1.3"
 sdks:
-  dart: ">=3.6.0 <4.0.0"
+  dart: ">=3.5.0 <4.0.0"
   flutter: ">=3.24.0"
diff --git a/cw_zano/pubspec.lock b/cw_zano/pubspec.lock
index 74ec7206f..50835ed3f 100644
--- a/cw_zano/pubspec.lock
+++ b/cw_zano/pubspec.lock
@@ -29,10 +29,10 @@ packages:
     dependency: transitive
     description:
       name: asn1lib
-      sha256: "1c296cd268f486cabcc3930e9b93a8133169305f18d722916e675959a88f6d2c"
+      sha256: "4bae5ae63e6d6dd17c4aac8086f3dec26c0236f6a0f03416c6c19d830c367cf5"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.9"
+    version: "1.5.8"
   async:
     dependency: transitive
     description:
@@ -70,18 +70,18 @@ packages:
     dependency: transitive
     description:
       name: build_config
-      sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33"
+      sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1
       url: "https://pub.dev"
     source: hosted
-    version: "1.1.2"
+    version: "1.1.1"
   build_daemon:
     dependency: transitive
     description:
       name: build_daemon
-      sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa"
+      sha256: "79b2aef6ac2ed00046867ed354c88778c9c0f029df8a20fe10b5436826721ef9"
       url: "https://pub.dev"
     source: hosted
-    version: "4.0.4"
+    version: "4.0.2"
   build_resolvers:
     dependency: "direct dev"
     description:
@@ -357,10 +357,10 @@ packages:
     dependency: transitive
     description:
       name: http_parser
-      sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
+      sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b"
       url: "https://pub.dev"
     source: hosted
-    version: "4.1.2"
+    version: "4.0.2"
   intl:
     dependency: "direct main"
     description:
@@ -631,10 +631,10 @@ packages:
     dependency: transitive
     description:
       name: pubspec_parse
-      sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
+      sha256: "81876843eb50dc2e1e5b151792c9a985c5ed2536914115ed04e9c8528f6647b0"
       url: "https://pub.dev"
     source: hosted
-    version: "1.5.0"
+    version: "1.4.0"
   rational:
     dependency: transitive
     description:
@@ -647,10 +647,10 @@ packages:
     dependency: transitive
     description:
       name: shelf
-      sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
+      sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4
       url: "https://pub.dev"
     source: hosted
-    version: "1.4.2"
+    version: "1.4.1"
   shelf_web_socket:
     dependency: transitive
     description:
@@ -841,5 +841,5 @@ packages:
     source: hosted
     version: "3.1.3"
 sdks:
-  dart: ">=3.6.0 <4.0.0"
+  dart: ">=3.5.0 <4.0.0"
   flutter: ">=3.24.0"
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index fc70b4fb6..d3ba59827 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -2,9 +2,7 @@ PODS:
   - connectivity_plus (0.0.1):
     - Flutter
     - ReachabilitySwift
-  - CryptoSwift (1.8.3)
-  - cw_mweb (0.0.1):
-    - Flutter
+  - CryptoSwift (1.8.4)
   - cw_decred (0.0.1):
     - Flutter
   - cw_mweb (0.0.1):
@@ -80,9 +78,9 @@ PODS:
   - permission_handler_apple (9.3.0):
     - Flutter
   - ReachabilitySwift (5.2.4)
-  - SDWebImage (5.19.7):
-    - SDWebImage/Core (= 5.19.7)
-  - SDWebImage/Core (5.19.7)
+  - SDWebImage (5.20.0):
+    - SDWebImage/Core (= 5.20.0)
+  - SDWebImage/Core (5.20.0)
   - sensitive_clipboard (0.0.1):
     - Flutter
   - share_plus (0.0.1):
@@ -106,7 +104,6 @@ PODS:
 DEPENDENCIES:
   - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`)
   - CryptoSwift
-  - cw_mweb (from `.symlinks/plugins/cw_mweb/ios`)
   - cw_decred (from `.symlinks/plugins/cw_decred/ios`)
   - cw_mweb (from `.symlinks/plugins/cw_mweb/ios`)
   - device_display_brightness (from `.symlinks/plugins/device_display_brightness/ios`)
@@ -147,8 +144,6 @@ SPEC REPOS:
 EXTERNAL SOURCES:
   connectivity_plus:
     :path: ".symlinks/plugins/connectivity_plus/ios"
-  cw_mweb:
-    :path: ".symlinks/plugins/cw_mweb/ios"
   cw_decred:
     :path: ".symlinks/plugins/cw_decred/ios"
   cw_mweb:
@@ -203,41 +198,40 @@ EXTERNAL SOURCES:
     :path: ".symlinks/plugins/wakelock_plus/ios"
 
 SPEC CHECKSUMS:
-  connectivity_plus: 481668c94744c30c53b8895afb39159d1e619bdf
-  CryptoSwift: 967f37cea5a3294d9cce358f78861652155be483
-  cw_decred: a02cf30175a46971c1e2fa22c48407534541edc6
-  cw_mweb: 3aea2fb35b2bd04d8b2d21b83216f3b8fb768d85
-  device_display_brightness: 04374ebd653619292c1d996f00f42877ea19f17f
-  device_info_plus: 335f3ce08d2e174b9fdc3db3db0f4e3b1f66bd89
-  devicelocale: bd64aa714485a8afdaded0892c1e7d5b7f680cf8
+  connectivity_plus: bf0076dd84a130856aa636df1c71ccaff908fa1d
+  CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90
+  cw_decred: 9c0e1df74745b51a1289ec5e91fb9e24b68fa14a
+  cw_mweb: 22cd01dfb8ad2d39b15332006f22046aaa8352a3
+  device_display_brightness: 1510e72c567a1f6ce6ffe393dcd9afd1426034f7
+  device_info_plus: c6fb39579d0f423935b0c9ce7ee2f44b71b9fce6
+  devicelocale: 35ba84dc7f45f527c3001535d8c8d104edd5d926
   DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c
   DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60
-  fast_scanner: 2cb1ad3e69e645e9980fb4961396ce5804caa3e3
-  file_picker: 9b3292d7c8bc68c8a7bf8eb78f730e49c8efc517
+  fast_scanner: 44c00940355a51258cd6c2085734193cd23d95bc
+  file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655
   Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7
-  flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99
-  flutter_local_authentication: 989278c681612f1ee0e36019e149137f114b9d7f
-  flutter_mailer: 3a8cd4f36c960fb04528d5471097270c19fec1c4
-  flutter_secure_storage: 2c2ff13db9e0a5647389bff88b0ecac56e3f3418
-  fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1
-  in_app_review: 5596fe56fab799e8edb3561c03d053363ab13457
-  integration_test: 4a889634ef21a45d28d50d622cf412dc6d9f586e
+  flutter_inappwebview_ios: 6f63631e2c62a7c350263b13fa5427aedefe81d4
+  flutter_local_authentication: 1172a4dd88f6306dadce067454e2c4caf07977bb
+  flutter_mailer: 2ef5a67087bc8c6c4cefd04a178bf1ae2c94cd83
+  flutter_secure_storage: 23fc622d89d073675f2eaa109381aefbcf5a49be
+  fluttertoast: 21eecd6935e7064cc1fcb733a4c5a428f3f24f0f
+  in_app_review: a31b5257259646ea78e0e35fc914979b0031d011
+  integration_test: 252f60fa39af5e17c3aa9899d35d908a0721b573
   OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94
-  package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499
-  path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
-  permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d
+  package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
+  path_provider_foundation: 2b6b4c569c0fb62ec74538f866245ac84301af46
+  permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
   ReachabilitySwift: 32793e867593cfc1177f5d16491e3a197d2fccda
-  SDWebImage: 8a6b7b160b4d710e2a22b6900e25301075c34cb3
-  sensitive_clipboard: 161e9abc3d56b3131309d8a321eb4690a803c16b
-  share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
-  shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
-  sp_scanner: b1bc9321690980bdb44bba7ec85d5543e716d1b5
+  SDWebImage: 73c6079366fea25fa4bb9640d5fb58f0893facd8
+  sensitive_clipboard: d4866e5d176581536c27bb1618642ee83adca986
+  share_plus: 8b6f8b3447e494cca5317c8c3073de39b3600d1f
+  shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78
+  sp_scanner: eaa617fa827396b967116b7f1f43549ca62e9a12
   SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4
-  Toast: 1f5ea13423a1e6674c4abdac5be53587ae481c4e
-  uni_links: ed8c961e47ed9ce42b6d91e1de8049e38a4b3152
-  universal_ble: ff19787898040d721109c6324472e5dd4bc86adc
-  url_launcher_ios: 694010445543906933d732453a59da0a173ae33d
-  wakelock_plus: 04623e3f525556020ebd4034310f20fe7fda8b49
+  uni_links: d97da20c7701486ba192624d99bffaaffcfc298a
+  universal_ble: cf52a7b3fd2e7c14d6d7262e9fdadb72ab6b88a6
+  url_launcher_ios: 5334b05cef931de560670eeae103fd3e431ac3fe
+  wakelock_plus: 373cfe59b235a6dd5837d0fb88791d2f13a90d56
 
 PODFILE CHECKSUM: e448f662d4c41f0c0b1ccbb78afd57dbf895a597
 
diff --git a/lib/buy/onramper/onramper_buy_provider.dart b/lib/buy/onramper/onramper_buy_provider.dart
index 5480ab2cd..1fd72cccb 100644
--- a/lib/buy/onramper/onramper_buy_provider.dart
+++ b/lib/buy/onramper/onramper_buy_provider.dart
@@ -222,8 +222,7 @@ class OnRamperBuyProvider extends BuyProvider {
       '${prefix}defaultAmount': amount.toString(),
       if (paymentMethod != null) '${prefix}defaultPaymentMethod': paymentMethod,
       'onlyOnramps': quote.rampId,
-      'networkWallets': '$defaultCrypto:$cryptoCurrencyAddress',
-      'walletAddress': cryptoCurrencyAddress,
+      'networkWallets': '${quote.cryptoCurrency.fullName?.toUpperCase()}:$cryptoCurrencyAddress',
       'supportSwap': "false",
       'primaryColor': primaryColor,
       'secondaryColor': secondaryColor,
diff --git a/lib/monero/cw_monero.dart b/lib/monero/cw_monero.dart
index aa6fafc6b..a955e1d98 100644
--- a/lib/monero/cw_monero.dart
+++ b/lib/monero/cw_monero.dart
@@ -422,6 +422,6 @@ class CWMonero extends Monero {
   }
 
   bool isViewOnly() {
-    return isViewOnlyBySpendKey();
+    return isViewOnlyBySpendKey(null);
   }
 }
diff --git a/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart b/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
index cef313780..d453a698f 100644
--- a/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
+++ b/lib/src/screens/dashboard/pages/balance/crypto_balance_widget.dart
@@ -315,7 +315,7 @@ class CryptoBalanceWidget extends StatelessWidget {
                   Padding(
                     padding: const EdgeInsets.fromLTRB(16, 0, 16, 8),
                     child: InfoCard(
-                      title: S.of(context).decred_info_title,
+                      title: S.of(context).synchronizing,
                       description: S.of(context).decred_info_card_details,
                       image: 'assets/images/dcr_icon.png',
                       leftButtonTitle: S.of(context).litecoin_mweb_dismiss,
diff --git a/lib/src/screens/send/send_page.dart b/lib/src/screens/send/send_page.dart
index 69e4bd02a..d02d246fa 100644
--- a/lib/src/screens/send/send_page.dart
+++ b/lib/src/screens/send/send_page.dart
@@ -36,7 +36,6 @@ import 'package:cake_wallet/utils/responsive_layout_util.dart';
 import 'package:cake_wallet/utils/show_pop_up.dart';
 import 'package:cake_wallet/view_model/send/output.dart';
 import 'package:cw_core/utils/print_verbose.dart';
-import 'package:cw_core/unspent_coin_type.dart';
 import 'package:cw_core/wallet_type.dart';
 import 'package:cake_wallet/view_model/send/send_view_model.dart';
 import 'package:cake_wallet/view_model/send/send_view_model_state.dart';
@@ -164,8 +163,6 @@ class SendPage extends BasePage {
                 });
       });
 
-  bool _bottomSheetOpened = false;
-
   @override
   Widget body(BuildContext context) {
     _setEffects(context);
@@ -400,6 +397,7 @@ class SendPage extends BasePage {
                           return LoadingPrimaryButton(
                             key: ValueKey('send_page_send_button_key'),
                             onPressed: () async {
+                              FocusManager.instance.primaryFocus?.unfocus();
                               if (sendViewModel.state is IsExecutingState) return;
                               if (_formKey.currentState != null &&
                                   !_formKey.currentState!.validate()) {
diff --git a/lib/src/screens/settings/privacy_page.dart b/lib/src/screens/settings/privacy_page.dart
index 238e58eab..5a22f622a 100644
--- a/lib/src/screens/settings/privacy_page.dart
+++ b/lib/src/screens/settings/privacy_page.dart
@@ -42,7 +42,7 @@ class PrivacyPage extends BasePage {
               ),
               SettingsChoicesCell(
                 ChoicesListItem<ExchangeApiMode>(
-                  title: S.current.exchange,
+                  title: S.current.swap,
                   items: ExchangeApiMode.all,
                   selectedItem: _privacySettingsViewModel.exchangeStatus,
                   onItemSelected: (ExchangeApiMode mode) =>
diff --git a/lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart b/lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart
index 84997b34e..a5bdafc7c 100644
--- a/lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart
+++ b/lib/src/widgets/bottom_sheet/confirm_sending_bottom_sheet_widget.dart
@@ -3,6 +3,7 @@ import 'package:cake_wallet/src/widgets/standard_slide_button_widget.dart';
 import 'package:cake_wallet/themes/extensions/balance_page_theme.dart';
 import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
 import 'package:cake_wallet/themes/extensions/filter_theme.dart';
+import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
 import 'package:cake_wallet/themes/theme_base.dart';
 import 'package:cake_wallet/view_model/send/output.dart';
 import 'package:cw_core/crypto_currency.dart';
@@ -71,6 +72,12 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
       decoration: TextDecoration.none,
     );
 
+    final tileBackgroundColor = currentTheme.type == ThemeType.light
+        ? Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor
+        : currentTheme.type == ThemeType.oled
+        ? Colors.black.withOpacity(0.5)
+        : Theme.of(context).extension<FilterTheme>()!.buttonColor;
+
     Widget content = Padding(
       padding: EdgeInsets.fromLTRB(8, 0, showScrollbar ? 16 : 8, 8),
       child: Column(
@@ -86,6 +93,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
                 amount: '',
                 address: paymentIdValue!,
                 itemSubTitleTextStyle: itemSubTitleTextStyle,
+                tileBackgroundColor: tileBackgroundColor,
               ),
             ),
           StandardTile(
@@ -94,6 +102,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
             itemTitleTextStyle: itemTitleTextStyle,
             itemSubTitle: fiatAmountValue,
             itemSubTitleTextStyle: itemSubTitleTextStyle,
+            tileBackgroundColor: tileBackgroundColor,
           ),
           const SizedBox(height: 8),
           StandardTile(
@@ -102,6 +111,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
             itemTitleTextStyle: itemTitleTextStyle,
             itemSubTitle: feeFiatAmount,
             itemSubTitleTextStyle: itemSubTitleTextStyle,
+            tileBackgroundColor: tileBackgroundColor,
           ),
           const SizedBox(height: 8),
           Column(
@@ -130,6 +140,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
                           isBatchSending: isBatchSending,
                           itemTitleTextStyle: itemTitleTextStyle,
                           itemSubTitleTextStyle: itemSubTitleTextStyle,
+                          tileBackgroundColor: tileBackgroundColor,
                         )
                       : AddressTile(
                           itemTitle: 'Address',
@@ -139,6 +150,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
                           amount: _amount,
                           address: _address,
                           itemSubTitleTextStyle: itemSubTitleTextStyle,
+                          tileBackgroundColor: tileBackgroundColor,
                         );
                 },
               ),
@@ -154,6 +166,7 @@ class ConfirmSendingBottomSheet extends BaseBottomSheet {
                     isBatchSending: true,
                     itemTitleTextStyle: itemTitleTextStyle,
                     itemSubTitleTextStyle: itemSubTitleTextStyle,
+                    tileBackgroundColor: tileBackgroundColor,
                   ),
                 ),
             ],
@@ -214,6 +227,7 @@ class StandardTile extends StatelessWidget {
     required this.itemTitleTextStyle,
     this.itemSubTitle,
     required this.itemSubTitleTextStyle,
+    required this.tileBackgroundColor,
   });
 
   final String itemTitle;
@@ -221,14 +235,14 @@ class StandardTile extends StatelessWidget {
   final TextStyle itemTitleTextStyle;
   final String? itemSubTitle;
   final TextStyle itemSubTitleTextStyle;
+  final Color tileBackgroundColor;
 
   @override
   Widget build(BuildContext context) {
     return Container(
       padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8),
-      decoration: BoxDecoration(
-          borderRadius: BorderRadius.circular(10),
-          color: Theme.of(context).extension<FilterTheme>()!.buttonColor),
+      decoration:
+          BoxDecoration(borderRadius: BorderRadius.circular(10), color: tileBackgroundColor),
       child: Row(
         mainAxisAlignment: MainAxisAlignment.spaceBetween,
         children: [
@@ -258,6 +272,7 @@ class AddressTile extends StatelessWidget {
     required this.amount,
     required this.address,
     required this.itemSubTitleTextStyle,
+    required this.tileBackgroundColor,
   });
 
   final String itemTitle;
@@ -267,6 +282,7 @@ class AddressTile extends StatelessWidget {
   final String amount;
   final String address;
   final TextStyle itemSubTitleTextStyle;
+  final Color tileBackgroundColor;
 
   @override
   Widget build(BuildContext context) {
@@ -283,7 +299,7 @@ class AddressTile extends StatelessWidget {
       padding: const EdgeInsets.symmetric(horizontal: 14, vertical: 8),
       decoration: BoxDecoration(
         borderRadius: BorderRadius.circular(10),
-        color: Theme.of(context).extension<FilterTheme>()!.buttonColor,
+        color: tileBackgroundColor,
       ),
       child: Column(
         crossAxisAlignment: CrossAxisAlignment.start,
@@ -343,6 +359,7 @@ class AddressExpansionTile extends StatelessWidget {
     required this.isBatchSending,
     required this.itemTitleTextStyle,
     required this.itemSubTitleTextStyle,
+    required this.tileBackgroundColor,
   });
 
   final String contactType;
@@ -353,6 +370,7 @@ class AddressExpansionTile extends StatelessWidget {
   final bool isBatchSending;
   final TextStyle itemTitleTextStyle;
   final TextStyle itemSubTitleTextStyle;
+  final Color tileBackgroundColor;
 
   @override
   Widget build(BuildContext context) {
@@ -369,7 +387,7 @@ class AddressExpansionTile extends StatelessWidget {
     return Container(
       decoration: BoxDecoration(
         borderRadius: BorderRadius.all(Radius.circular(10)),
-        color: Theme.of(context).extension<FilterTheme>()!.buttonColor,
+        color: tileBackgroundColor,
       ),
       child: Theme(
         data: Theme.of(context).copyWith(dividerColor: Colors.transparent),
@@ -383,7 +401,9 @@ class AddressExpansionTile extends StatelessWidget {
             title: Row(
               mainAxisAlignment: MainAxisAlignment.spaceBetween,
               children: [
-                Expanded(child: Text(isBatchSending ? name : contactType, style: itemTitleTextStyle, softWrap: true)),
+                Expanded(
+                    child: Text(isBatchSending ? name : contactType,
+                        style: itemTitleTextStyle, softWrap: true)),
                 Text(isBatchSending ? amount : name,
                     style: TextStyle(
                       fontSize: 14,
diff --git a/lib/src/widgets/standard_slide_button_widget.dart b/lib/src/widgets/standard_slide_button_widget.dart
index e777155aa..57271b6b5 100644
--- a/lib/src/widgets/standard_slide_button_widget.dart
+++ b/lib/src/widgets/standard_slide_button_widget.dart
@@ -1,6 +1,7 @@
 import 'package:cake_wallet/themes/extensions/cake_text_theme.dart';
 import 'package:cake_wallet/themes/extensions/filter_theme.dart';
 import 'package:cake_wallet/themes/extensions/menu_theme.dart';
+import 'package:cake_wallet/themes/extensions/sync_indicator_theme.dart';
 import 'package:cake_wallet/themes/theme_base.dart';
 import 'package:flutter/material.dart';
 
@@ -33,13 +34,17 @@ class _StandardSlideButtonState extends State<StandardSlideButton> {
       final double effectiveMaxWidth = maxWidth - 2 * sideMargin;
       const double sliderWidth = 42.0;
 
+      final tileBackgroundColor = widget.currentTheme.type == ThemeType.light
+          ? Theme.of(context).extension<SyncIndicatorTheme>()!.syncedBackgroundColor
+          : widget.currentTheme.type == ThemeType.oled
+          ? Colors.black.withOpacity(0.5)
+          : Theme.of(context).extension<FilterTheme>()!.buttonColor;
+
       return Container(
         height: widget.height,
         decoration: BoxDecoration(
             borderRadius: BorderRadius.circular(10),
-            color: widget.currentTheme.type == ThemeType.light || widget.currentTheme.type == ThemeType.bright
-                ?  Theme.of(context).disabledColor
-                : widget.currentTheme.type == ThemeType.oled ? Colors.black : Theme.of(context).extension<CakeMenuTheme>()!.backgroundColor),
+            color: tileBackgroundColor),
         child: Stack(
           alignment: Alignment.centerLeft,
           children: [
@@ -74,11 +79,11 @@ class _StandardSlideButtonState extends State<StandardSlideButton> {
                   height: widget.height - 8,
                   decoration: BoxDecoration(
                     borderRadius: BorderRadius.circular(10),
-                    color: widget.currentTheme.type == ThemeType.bright ? Theme.of(context).extension<CakeMenuTheme>()!.backgroundColor : Theme.of(context).extension<FilterTheme>()!.buttonColor,
+                    color: Theme.of(context).extension<CakeTextTheme>()!.titleColor,
                   ),
                   alignment: Alignment.center,
                   child: Icon(Icons.arrow_forward,
-                      color: Theme.of(context).extension<CakeTextTheme>()!.titleColor),
+                      color: widget.currentTheme.type == ThemeType.bright ? Theme.of(context).extension<CakeMenuTheme>()!.backgroundColor : Theme.of(context).extension<FilterTheme>()!.buttonColor),
                 ),
               ),
             )
diff --git a/lib/view_model/dashboard/dashboard_view_model.dart b/lib/view_model/dashboard/dashboard_view_model.dart
index 29ccedef2..a07ba26ef 100644
--- a/lib/view_model/dashboard/dashboard_view_model.dart
+++ b/lib/view_model/dashboard/dashboard_view_model.dart
@@ -266,7 +266,8 @@ abstract class DashboardViewModelBase with Store {
     reaction((_) => appStore.wallet, (wallet) {
       _onWalletChange(wallet);
       _checkMweb();
-      showDecredInfoCard = wallet?.type == WalletType.decred;
+      showDecredInfoCard = wallet?.type == WalletType.decred &&
+          sharedPreferences.getBool(PreferencesKey.showDecredInfoCard) != false;
     });
 
     _transactionDisposer?.reaction.dispose();
@@ -792,7 +793,7 @@ abstract class DashboardViewModelBase with Store {
             (List<TransactionInfo> txs) {
 
           transactions.clear();
-          
+
           transactions.addAll(
             txs.where((tx) {
               if (wallet.type == WalletType.monero) {
diff --git a/lib/view_model/node_list/node_create_or_edit_view_model.dart b/lib/view_model/node_list/node_create_or_edit_view_model.dart
index 8fbe174e3..7e4e73915 100644
--- a/lib/view_model/node_list/node_create_or_edit_view_model.dart
+++ b/lib/view_model/node_list/node_create_or_edit_view_model.dart
@@ -1,7 +1,6 @@
 import 'package:cake_wallet/core/execution_state.dart';
 import 'package:cake_wallet/entities/qr_scanner.dart';
 import 'package:cake_wallet/store/settings_store.dart';
-import 'package:cw_core/utils/print_verbose.dart';
 import 'package:flutter/cupertino.dart';
 import 'package:hive/hive.dart';
 import 'package:mobx/mobx.dart';
diff --git a/macos/Podfile.lock b/macos/Podfile.lock
index cc6ae6e3b..689f0ea03 100644
--- a/macos/Podfile.lock
+++ b/macos/Podfile.lock
@@ -3,7 +3,6 @@ PODS:
     - FlutterMacOS
     - ReachabilitySwift
   - cw_mweb (0.0.1):
-  - cw_decred (0.0.1):
     - FlutterMacOS
   - device_info_plus (0.0.1):
     - FlutterMacOS
@@ -46,7 +45,6 @@ PODS:
 DEPENDENCIES:
   - connectivity_plus (from `Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos`)
   - cw_mweb (from `Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos`)
-  - cw_decred (from `Flutter/ephemeral/.symlinks/plugins/cw_decred/macos`)
   - device_info_plus (from `Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos`)
   - devicelocale (from `Flutter/ephemeral/.symlinks/plugins/devicelocale/macos`)
   - fast_scanner (from `Flutter/ephemeral/.symlinks/plugins/fast_scanner/macos`)
@@ -74,10 +72,6 @@ EXTERNAL SOURCES:
     :path: Flutter/ephemeral/.symlinks/plugins/connectivity_plus/macos
   cw_mweb:
     :path: Flutter/ephemeral/.symlinks/plugins/cw_mweb/macos
-  cw_decred:
-    :path: Flutter/ephemeral/.symlinks/plugins/cw_decred/macos
-  cw_monero:
-    :path: Flutter/ephemeral/.symlinks/plugins/cw_monero/macos
   device_info_plus:
     :path: Flutter/ephemeral/.symlinks/plugins/device_info_plus/macos
   devicelocale:
@@ -114,8 +108,6 @@ EXTERNAL SOURCES:
 SPEC CHECKSUMS:
   connectivity_plus: 18d3c32514c886e046de60e9c13895109866c747
   cw_mweb: 7440b12ead811dda972a9918442ea2a458e8742c
-  cw_monero: ec03de55a19c4a2b174ea687e0f4202edc716fa4
-  cw_decred: 0c93fbeb31bd97a6ad4ec5680960af0943bfca78
   device_info_plus: 5401765fde0b8d062a2f8eb65510fb17e77cf07f
   devicelocale: 9f0f36ac651cabae2c33f32dcff4f32b61c38225
   fast_scanner: d31bae07e2653403a69dac99fb710c1722b16a97
diff --git a/res/values/strings_ar.arb b/res/values/strings_ar.arb
index 64089065d..686f8c8ce 100644
--- a/res/values/strings_ar.arb
+++ b/res/values/strings_ar.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "يتم المزامنة",
   "sync_status_timed_out": "نفد وقته",
   "sync_status_unsupported": "عقدة غير مدعومة",
+  "synchronizing": "المزامنة",
   "syncing_wallet_alert_content": "قد لا يكتمل رصيدك وقائمة المعاملات الخاصة بك حتى تظهر عبارة “SYNCHRONIZED“ في الأعلى. انقر / اضغط لمعرفة المزيد.",
   "syncing_wallet_alert_title": "محفظتك تتم مزامنتها",
   "template": "قالب",
diff --git a/res/values/strings_bg.arb b/res/values/strings_bg.arb
index 24b6e2640..a7b9a27f1 100644
--- a/res/values/strings_bg.arb
+++ b/res/values/strings_bg.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "СИНХРОНИЗИРАНЕ",
   "sync_status_timed_out": "ВРЕМЕТО ИЗТЕЧЕ",
   "sync_status_unsupported": "Неподдържан възел",
+  "synchronizing": "Синхронизиране",
   "syncing_wallet_alert_content": "Списъкът ви с баланс и транзакции може да не е пълен, докато в горната част не пише „СИНХРОНИЗИРАН“. Кликнете/докоснете, за да научите повече.",
   "syncing_wallet_alert_title": "Вашият портфейл се синхронизира",
   "template": "Шаблон",
diff --git a/res/values/strings_cs.arb b/res/values/strings_cs.arb
index 9dbc99d5c..7458b219a 100644
--- a/res/values/strings_cs.arb
+++ b/res/values/strings_cs.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "SYNCHRONIZUJI",
   "sync_status_timed_out": "ČAS VYPRŠEL",
   "sync_status_unsupported": "Nepodporovaný uzel",
+  "synchronizing": "Synchronizace",
   "syncing_wallet_alert_content": "Váš seznam zůstatků a transakcí nemusí být úplný, dokud nebude nahoře uvedeno „SYNCHRONIZOVANÉ“. Kliknutím/klepnutím se dozvíte více.",
   "syncing_wallet_alert_title": "Vaše peněženka se synchronizuje",
   "template": "Šablona",
diff --git a/res/values/strings_de.arb b/res/values/strings_de.arb
index 54303caf3..d25e02494 100644
--- a/res/values/strings_de.arb
+++ b/res/values/strings_de.arb
@@ -823,6 +823,7 @@
   "sync_status_syncronizing": "SYNCHRONISIERE",
   "sync_status_timed_out": "Zeitlich abgestimmt",
   "sync_status_unsupported": "Nicht unterstützter Knoten",
+  "synchronizing": "Synchronisierung",
   "syncing_wallet_alert_content": "Ihr Kontostand und Ihre Transaktionsliste sind möglicherweise erst vollständig, wenn oben „SYNCHRONISIERT“ steht. Klicken/tippen Sie, um mehr zu erfahren.",
   "syncing_wallet_alert_title": "Ihr Wallet wird synchronisiert",
   "template": "Vorlage",
diff --git a/res/values/strings_en.arb b/res/values/strings_en.arb
index 85103162d..238f36fda 100644
--- a/res/values/strings_en.arb
+++ b/res/values/strings_en.arb
@@ -823,6 +823,7 @@
   "sync_status_syncronizing": "SYNCHRONIZING",
   "sync_status_timed_out": "TIMED OUT",
   "sync_status_unsupported": "UNSUPPORTED NODE",
+  "synchronizing": "Synchronizing",
   "syncing_wallet_alert_content": "Your balance and transaction list may not be complete until it says “SYNCHRONIZED” at the top. Click/tap to learn more.",
   "syncing_wallet_alert_title": "Your wallet is syncing",
   "template": "Template",
diff --git a/res/values/strings_es.arb b/res/values/strings_es.arb
index cd63e5a3d..1252324ee 100644
--- a/res/values/strings_es.arb
+++ b/res/values/strings_es.arb
@@ -823,6 +823,7 @@
   "sync_status_syncronizing": "SINCRONIZANDO",
   "sync_status_timed_out": "CADUCADO",
   "sync_status_unsupported": "Nodo no compatible",
+  "synchronizing": "Sincronización",
   "syncing_wallet_alert_content": "Es posible que su lista de saldo y transacciones no esté completa hasta que diga \"SINCRONIZADO\" en la parte superior. Haga clic/toque para obtener más información.",
   "syncing_wallet_alert_title": "Tu billetera se está sincronizando",
   "template": "Plantilla",
diff --git a/res/values/strings_fr.arb b/res/values/strings_fr.arb
index 309319277..f726aab7a 100644
--- a/res/values/strings_fr.arb
+++ b/res/values/strings_fr.arb
@@ -303,7 +303,7 @@
   "etherscan_history": "Historique Etherscan",
   "event": "Événement",
   "events": "Événements",
-  "exchange": "Échange",
+  "exchange": "Acheter / Vendre",
   "exchange_incorrect_current_wallet_for_xmr": "Si vous souhaitez échanger des XMR depuis le solde Monero de votre Cake Wallet, veuillez d'abord passer à votre portefeuille Monero.",
   "exchange_new_template": "Nouveau modèle d'échange",
   "exchange_provider_unsupported": "${providerName} n'est plus pris en charge !",
@@ -756,8 +756,8 @@
   "shared_seed_wallet_groups": "Groupes de portefeuilles partagés",
   "show": "Montrer",
   "show_address_book_popup": "Afficher la fenêtre contextuelle du carnet d'adresses",
-  "show_balance": "Longue presse pour montrer l'équilibre",
-  "show_balance_toast": "Longue appuyez sur pour masquer ou afficher l'équilibre",
+  "show_balance": "Appuyez longtemps pour afficher votre solde",
+  "show_balance_toast": "Appuyez longtemps pour masquer ou afficher votre solde",
   "show_details": "Afficher les détails",
   "show_keys": "Visualiser la phrase secrète (seed) et les clefs",
   "show_market_place": "Afficher la place de marché",
@@ -782,7 +782,7 @@
   "silent_payments_scanned_tip": "SCANNEZ POUR DONNER ! (${tip})",
   "silent_payments_scanning": "Scan des paiements silencieux",
   "silent_payments_settings": "Paramètres de paiement silencieux",
-  "single_seed_wallets_group": "Portefeuilles de semences simples",
+  "single_seed_wallets_group": "Portefeuilles de mots-clés (seed) simples",
   "slidable": "Glissable",
   "solana_create_associated_token_account_exception": "Création d'erreur Création de jetons associés pour l'adresse détenue.",
   "solana_no_associated_token_account_exception": "Il n'y a pas de compte de jeton associé pour cette adresse.",
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "SYNCHRONISATION EN COURS",
   "sync_status_timed_out": "FIN DU TEMPS",
   "sync_status_unsupported": "Nœud non pris en charge",
+  "synchronizing": "Synchronisation",
   "syncing_wallet_alert_content": "Votre solde et votre liste de transactions peuvent ne pas être à jour tant que la mention « SYNCHRONISÉ » n'apparaît en haut de l'écran. Cliquez/appuyez pour en savoir plus.",
   "syncing_wallet_alert_title": "Votre portefeuille (wallet) est en cours de synchronisation",
   "template": "Modèle",
@@ -943,7 +944,7 @@
   "variable_pair_not_supported": "Cette paire variable n'est pas prise en charge avec les échanges sélectionnés",
   "verification": "Vérification",
   "verify_message": "Vérifier le message",
-  "verify_seed": "Vérifiez les semences",
+  "verify_seed": "Vérifiez les mots-clés (seed)",
   "verify_with_2fa": "Vérifier avec Cake 2FA",
   "version": "Version ${currentVersion}",
   "view_all": "Voir tout",
diff --git a/res/values/strings_ha.arb b/res/values/strings_ha.arb
index 4ae70f8dd..1f8962b52 100644
--- a/res/values/strings_ha.arb
+++ b/res/values/strings_ha.arb
@@ -824,6 +824,7 @@
   "sync_status_syncronizing": "KWAFI",
   "sync_status_timed_out": "ATED Out",
   "sync_status_unsupported": "Ba a Taimako ba",
+  "synchronizing": "Aikiɓaɓaƙe",
   "syncing_wallet_alert_content": "Ma'aunin ku da lissafin ma'amala bazai cika ba har sai an ce \"SYNCHRONIZED\" a saman. Danna/matsa don ƙarin koyo.",
   "syncing_wallet_alert_title": "Walat ɗin ku yana aiki tare",
   "template": "Samfura",
diff --git a/res/values/strings_hi.arb b/res/values/strings_hi.arb
index de15f45b6..3c30f82fd 100644
--- a/res/values/strings_hi.arb
+++ b/res/values/strings_hi.arb
@@ -824,6 +824,7 @@
   "sync_status_syncronizing": "सिंक्रनाइज़ करने",
   "sync_status_timed_out": "समय समााप्त",
   "sync_status_unsupported": "असमर्थित नोड",
+  "synchronizing": "सिंक्रनाइज़ करना",
   "syncing_wallet_alert_content": "आपकी शेष राशि और लेनदेन सूची तब तक पूरी नहीं हो सकती जब तक कि शीर्ष पर \"सिंक्रनाइज़्ड\" न लिखा हो। अधिक जानने के लिए क्लिक/टैप करें।",
   "syncing_wallet_alert_title": "आपका वॉलेट सिंक हो रहा है",
   "template": "खाका",
diff --git a/res/values/strings_hr.arb b/res/values/strings_hr.arb
index 48da3833a..cbb9f0f89 100644
--- a/res/values/strings_hr.arb
+++ b/res/values/strings_hr.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "SINKRONIZIRANJE",
   "sync_status_timed_out": "ISTEKLO",
   "sync_status_unsupported": "Nepodržani čvor",
+  "synchronizing": "Sinkronizirajući",
   "syncing_wallet_alert_content": "Vaš saldo i popis transakcija možda neće biti potpuni sve dok na vrhu ne piše \"SINKRONIZIRANO\". Kliknite/dodirnite da biste saznali više.",
   "syncing_wallet_alert_title": "Vaš novčanik se sinkronizira",
   "template": "Predložak",
diff --git a/res/values/strings_hy.arb b/res/values/strings_hy.arb
index ee1c997b0..e39390939 100644
--- a/res/values/strings_hy.arb
+++ b/res/values/strings_hy.arb
@@ -820,6 +820,7 @@
   "sync_status_syncronizing": "ՀԱՄԱԺԱՄԵՑՎՈՒՄ Է",
   "sync_status_timed_out": "Ժամանակը սպառվեց",
   "sync_status_unsupported": "ՉԱՋԱԿՑՎՈՂ ՀԱՆԳՈՒՅՑ,",
+  "synchronizing": "Համաժամանակող",
   "syncing_wallet_alert_content": "Ձեր հաշիվը և գործարքների ցանկը կարող են լինել անավարտ մինչև վերին մասում գրված լինի “ՀԱՂՈՒՄ”։ Սեղմեք/դիպեք ուսումնասիրելու համար։",
   "syncing_wallet_alert_title": "Ձեր դրամապանակը համաժամացվում է",
   "template": "Տարբերակ",
diff --git a/res/values/strings_id.arb b/res/values/strings_id.arb
index f9a231112..f6041fcb9 100644
--- a/res/values/strings_id.arb
+++ b/res/values/strings_id.arb
@@ -825,6 +825,7 @@
   "sync_status_syncronizing": "SEDANG SINKRONISASI",
   "sync_status_timed_out": "WAKTU HABIS",
   "sync_status_unsupported": "Node yang tidak didukung",
+  "synchronizing": "Sinkronisasi",
   "syncing_wallet_alert_content": "Saldo dan daftar transaksi Anda mungkin belum lengkap sampai tertulis “SYNCHRONIZED” di bagian atas. Klik/ketuk untuk mempelajari lebih lanjut.",
   "syncing_wallet_alert_title": "Dompet Anda sedang disinkronkan",
   "template": "Template",
diff --git a/res/values/strings_it.arb b/res/values/strings_it.arb
index 25d02d9d0..8209f532a 100644
--- a/res/values/strings_it.arb
+++ b/res/values/strings_it.arb
@@ -823,6 +823,7 @@
   "sync_status_syncronizing": "SINCRONIZZAZIONE",
   "sync_status_timed_out": "TIMED OUT",
   "sync_status_unsupported": "NODO NON SUPPORTATO",
+  "synchronizing": "Sincronizzazione",
   "syncing_wallet_alert_content": "Il saldo e l'elenco delle transazioni potrebbero non essere completi fin quando non viene visualizzato \"SINCRONIZZATO\" in alto. Clicca/tocca per saperne di più.",
   "syncing_wallet_alert_title": "Il tuo portafoglio si sta sincronizzando",
   "template": "Modello",
diff --git a/res/values/strings_ja.arb b/res/values/strings_ja.arb
index 6a3a5da72..af7ab6502 100644
--- a/res/values/strings_ja.arb
+++ b/res/values/strings_ja.arb
@@ -823,6 +823,7 @@
   "sync_status_syncronizing": "同期",
   "sync_status_timed_out": "タイムアウトしました",
   "sync_status_unsupported": "サポートされていないノード",
+  "synchronizing": "同期",
   "syncing_wallet_alert_content": "上部に「同期済み」と表示されるまで、残高と取引リストが完了していない可能性があります。詳細については、クリック/タップしてください。",
   "syncing_wallet_alert_title": "ウォレットは同期中です",
   "template": "テンプレート",
diff --git a/res/values/strings_ko.arb b/res/values/strings_ko.arb
index d16e18a53..6386cf7c1 100644
--- a/res/values/strings_ko.arb
+++ b/res/values/strings_ko.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "동기화",
   "sync_status_timed_out": "시간 초과",
   "sync_status_unsupported": "지원되지 않은 노드",
+  "synchronizing": "동기화",
   "syncing_wallet_alert_content": "상단에 \"동기화됨\"이라고 표시될 때까지 잔액 및 거래 목록이 완전하지 않을 수 있습니다. 자세히 알아보려면 클릭/탭하세요.",
   "syncing_wallet_alert_title": "지갑 동기화 중",
   "template": "주형",
diff --git a/res/values/strings_my.arb b/res/values/strings_my.arb
index d7ba8d7a6..31e5335b5 100644
--- a/res/values/strings_my.arb
+++ b/res/values/strings_my.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "ထပ်တူပြုခြင်း။",
   "sync_status_timed_out": "ထွက်အချိန်ကုန်",
   "sync_status_unsupported": "node မထောက်ပံ့ node ကို",
+  "synchronizing": "ထပ်တူပြုခြင်း",
   "syncing_wallet_alert_content": "သင်၏လက်ကျန်နှင့် ငွေပေးငွေယူစာရင်းသည် ထိပ်တွင် \"Synchronizeed\" ဟုပြောသည်အထိ မပြီးမြောက်နိုင်ပါ။ ပိုမိုလေ့လာရန် နှိပ်/နှိပ်ပါ။",
   "syncing_wallet_alert_title": "သင့်ပိုက်ဆံအိတ်ကို စင့်ခ်လုပ်နေပါသည်။",
   "template": "ပုံစံခွက်",
diff --git a/res/values/strings_nl.arb b/res/values/strings_nl.arb
index 55e588f62..a15d55c09 100644
--- a/res/values/strings_nl.arb
+++ b/res/values/strings_nl.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "SYNCHRONISEREN",
   "sync_status_timed_out": "Uitgeput",
   "sync_status_unsupported": "Niet ondersteund knooppunt",
+  "synchronizing": "Synchronisatie",
   "syncing_wallet_alert_content": "Uw saldo- en transactielijst is mogelijk pas compleet als er bovenaan 'GESYNCHRONISEERD' staat. Klik/tik voor meer informatie.",
   "syncing_wallet_alert_title": "Uw portemonnee wordt gesynchroniseerd",
   "template": "Sjabloon",
diff --git a/res/values/strings_pl.arb b/res/values/strings_pl.arb
index cb4f09982..51aad7be2 100644
--- a/res/values/strings_pl.arb
+++ b/res/values/strings_pl.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "SYNCHRONIZACJA",
   "sync_status_timed_out": "PRZEKROCZONO LIMIT CZASU",
   "sync_status_unsupported": "Nieobsługiwany węzeł",
+  "synchronizing": "Synchronizacja",
   "syncing_wallet_alert_content": "Twoje saldo i lista transakcji mogą nie być kompletne, dopóki u góry nie pojawi się napis „SYNCHRONIZOWANY”. Kliknij/stuknij, aby dowiedzieć się więcej.",
   "syncing_wallet_alert_title": "Twój portfel się synchronizuje",
   "template": "Szablon",
diff --git a/res/values/strings_pt.arb b/res/values/strings_pt.arb
index 2fb3bac5f..4774e917e 100644
--- a/res/values/strings_pt.arb
+++ b/res/values/strings_pt.arb
@@ -824,6 +824,7 @@
   "sync_status_syncronizing": "SINCRONIZANDO",
   "sync_status_timed_out": "TEMPO ESGOTADO",
   "sync_status_unsupported": "Nó não suportado",
+  "synchronizing": "Sincronizando",
   "syncing_wallet_alert_content": "Seu saldo e lista de transações podem não estar completos até que diga “SYNCHRONIZED” no topo. Clique/toque para saber mais.",
   "syncing_wallet_alert_title": "Sua carteira está sincronizando",
   "template": "Modelo",
diff --git a/res/values/strings_ru.arb b/res/values/strings_ru.arb
index 4173ad6d5..d06a001d2 100644
--- a/res/values/strings_ru.arb
+++ b/res/values/strings_ru.arb
@@ -823,6 +823,7 @@
   "sync_status_syncronizing": "СИНХРОНИЗАЦИЯ",
   "sync_status_timed_out": "ВРЕМЯ ВЫШЛО",
   "sync_status_unsupported": "Неподдерживаемый узел",
+  "synchronizing": "Синхронизация",
   "syncing_wallet_alert_content": "Ваш баланс и список транзакций могут быть неполными, пока вверху не будет написано «СИНХРОНИЗИРОВАНО». Щелкните/коснитесь, чтобы узнать больше.",
   "syncing_wallet_alert_title": "Ваш кошелек синхронизируется",
   "template": "Шаблон",
diff --git a/res/values/strings_th.arb b/res/values/strings_th.arb
index acd70c554..aa92d9171 100644
--- a/res/values/strings_th.arb
+++ b/res/values/strings_th.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "กำลังซิงโครไนซ์",
   "sync_status_timed_out": "หมดเวลา",
   "sync_status_unsupported": "โหนดที่ไม่ได้รับการสนับสนุน",
+  "synchronizing": "การซิงโครไนซ์",
   "syncing_wallet_alert_content": "รายการยอดเงินและธุรกรรมของคุณอาจไม่สมบูรณ์จนกว่าจะมีข้อความว่า “ซิงโครไนซ์” ที่ด้านบน คลิก/แตะเพื่อเรียนรู้เพิ่มเติม่",
   "syncing_wallet_alert_title": "กระเป๋าสตางค์ของคุณกำลังซิงค์",
   "template": "แบบฟอร์ม",
diff --git a/res/values/strings_tl.arb b/res/values/strings_tl.arb
index a378ff3ea..f2087c573 100644
--- a/res/values/strings_tl.arb
+++ b/res/values/strings_tl.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "PAG-SYNCHRONIZE",
   "sync_status_timed_out": "NAG-TIME OUT",
   "sync_status_unsupported": "HINDI SUPORTADONG NODE",
+  "synchronizing": "Pag -synchronize",
   "syncing_wallet_alert_content": "Ang iyong balanse at listahan ng transaksyon ay maaaring hindi kumpleto hanggang sa sabihin nito na \"NAKA-SYNCHRONIZE\" sa tuktok. Mag-click/tap upang malaman ang higit pa.",
   "syncing_wallet_alert_title": "Ang iyong wallet ay nag-sync",
   "template": "Template",
diff --git a/res/values/strings_tr.arb b/res/values/strings_tr.arb
index 8011401dc..44cb64b69 100644
--- a/res/values/strings_tr.arb
+++ b/res/values/strings_tr.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "SENKRONİZE EDİLİYOR",
   "sync_status_timed_out": "ZAMAN AŞIMINA UĞRADI",
   "sync_status_unsupported": "Desteklenmeyen düğüm",
+  "synchronizing": "Senkronize etme",
   "syncing_wallet_alert_content": "Bakiyeniz ve işlem listeniz, en üstte \"SENKRONİZE EDİLDİ\" yazana kadar tamamlanmamış olabilir. Daha fazla bilgi edinmek için tıklayın/dokunun.",
   "syncing_wallet_alert_title": "Cüzdanınız senkronize ediliyor",
   "template": "Şablon",
diff --git a/res/values/strings_uk.arb b/res/values/strings_uk.arb
index 8227d581f..2e250dd05 100644
--- a/res/values/strings_uk.arb
+++ b/res/values/strings_uk.arb
@@ -823,6 +823,7 @@
   "sync_status_syncronizing": "СИНХРОНІЗАЦІЯ",
   "sync_status_timed_out": "ТАЙМ-АУТ",
   "sync_status_unsupported": "Непідтримуваний вузол",
+  "synchronizing": "Синхронізація",
   "syncing_wallet_alert_content": "Ваш баланс та список транзакцій може бути неповним, доки вгорі не буде написано «СИНХРОНІЗОВАНО». Натисніть/торкніться, щоб дізнатися більше.",
   "syncing_wallet_alert_title": "Ваш гаманець синхронізується",
   "template": "Шаблон",
diff --git a/res/values/strings_ur.arb b/res/values/strings_ur.arb
index 307340a21..6684fb2f3 100644
--- a/res/values/strings_ur.arb
+++ b/res/values/strings_ur.arb
@@ -824,6 +824,7 @@
   "sync_status_syncronizing": "مطابقت پذیری",
   "sync_status_timed_out": "وقت ختم",
   "sync_status_unsupported": "غیر تعاون یافتہ نوڈ",
+  "synchronizing": "ہم آہنگی",
   "syncing_wallet_alert_content": "آپ کے بیلنس اور لین دین کی فہرست اس وقت تک مکمل نہیں ہو سکتی جب تک کہ یہ سب سے اوپر \"SYNCRONIZED\" نہ کہے۔ مزید جاننے کے لیے کلک/تھپتھپائیں۔",
   "syncing_wallet_alert_title": "آپ کا بٹوہ مطابقت پذیر ہو رہا ہے۔",
   "template": "سانچے",
diff --git a/res/values/strings_vi.arb b/res/values/strings_vi.arb
index c2935e9a0..45ffac20e 100644
--- a/res/values/strings_vi.arb
+++ b/res/values/strings_vi.arb
@@ -819,6 +819,7 @@
   "sync_status_syncronizing": "ĐANG ĐỒNG BỘ",
   "sync_status_timed_out": "HẾT THỜI GIAN",
   "sync_status_unsupported": "NÓT KHÔNG ĐƯỢC HỖ TRỢ",
+  "synchronizing": "Đồng bộ hóa",
   "syncing_wallet_alert_content": "Số dư và danh sách giao dịch của bạn có thể không đầy đủ cho đến khi nó hiển thị “ĐÃ ĐỒNG BỘ” ở trên cùng. Nhấn vào đây để tìm hiểu thêm.",
   "syncing_wallet_alert_title": "Ví của bạn đang đồng bộ",
   "template": "Mẫu",
diff --git a/res/values/strings_yo.arb b/res/values/strings_yo.arb
index b97fbb757..1d754b366 100644
--- a/res/values/strings_yo.arb
+++ b/res/values/strings_yo.arb
@@ -823,6 +823,7 @@
   "sync_status_syncronizing": "Ń MÚDỌ́GBA",
   "sync_status_timed_out": "Ti akoko jade",
   "sync_status_unsupported": "Ile-igbimọ ti ko ni atilẹyin",
+  "synchronizing": "Mimuuṣiṣẹpọ",
   "syncing_wallet_alert_content": "Iwontunws.funfun rẹ ati atokọ idunadura le ma pari titi ti yoo fi sọ “SYNCHRONIZED” ni oke. Tẹ/tẹ ni kia kia lati ni imọ siwaju sii.",
   "syncing_wallet_alert_title": "Apamọwọ rẹ n muṣiṣẹpọ",
   "template": "Àwòṣe",
diff --git a/res/values/strings_zh.arb b/res/values/strings_zh.arb
index e1767a28f..7325cb5f0 100644
--- a/res/values/strings_zh.arb
+++ b/res/values/strings_zh.arb
@@ -822,6 +822,7 @@
   "sync_status_syncronizing": "正在同步",
   "sync_status_timed_out": "时间到",
   "sync_status_unsupported": "不支持的节点",
+  "synchronizing": "同步",
   "syncing_wallet_alert_content": "您的余额和交易列表可能不完整,直到顶部显示“已同步”。单击/点击以了解更多信息。",
   "syncing_wallet_alert_title": "您的钱包正在同步",
   "template": "模板",
diff --git a/scripts/android/app_env.sh b/scripts/android/app_env.sh
index 597c0aa9a..13cae2000 100644
--- a/scripts/android/app_env.sh
+++ b/scripts/android/app_env.sh
@@ -14,15 +14,15 @@ TYPES=($MONERO_COM $CAKEWALLET)
 APP_ANDROID_TYPE=$1
 
 MONERO_COM_NAME="Monero.com"
-MONERO_COM_VERSION="1.20.3"
-MONERO_COM_BUILD_NUMBER=115
+MONERO_COM_VERSION="1.21.0"
+MONERO_COM_BUILD_NUMBER=116
 MONERO_COM_BUNDLE_ID="com.monero.app"
 MONERO_COM_PACKAGE="com.monero.app"
 MONERO_COM_SCHEME="monero.com"
 
 CAKEWALLET_NAME="Cake Wallet"
-CAKEWALLET_VERSION="4.23.4"
-CAKEWALLET_BUILD_NUMBER=249
+CAKEWALLET_VERSION="4.24.0"
+CAKEWALLET_BUILD_NUMBER=252
 CAKEWALLET_BUNDLE_ID="com.cakewallet.cake_wallet"
 CAKEWALLET_PACKAGE="com.cakewallet.cake_wallet"
 CAKEWALLET_SCHEME="cakewallet"
diff --git a/scripts/android/build_decred.sh b/scripts/android/build_decred.sh
index d7b2fdb6b..75ed45aca 100755
--- a/scripts/android/build_decred.sh
+++ b/scripts/android/build_decred.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
 
 set -e
 cd "$(dirname "$0")"
@@ -7,10 +7,10 @@ cd "$(dirname "$0")"
 CW_DECRED_DIR=$(realpath ../..)/cw_decred
 LIBWALLET_PATH="${PWD}/decred/libwallet"
 LIBWALLET_URL="https://github.com/decred/libwallet.git"
-LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d"
+LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
 
-if [ -e $LIBWALLET_PATH ]; then
-       rm -fr $LIBWALLET_PATH/{*,.*} || true
+if [[ -e $LIBWALLET_PATH ]]; then
+    rm -fr $LIBWALLET_PATH || true
 fi
 mkdir -p $LIBWALLET_PATH || true
 
@@ -32,7 +32,7 @@ then
     echo "You have these versions installed on your system currently:"
     ls ${ANDROID_HOME}/ndk/ | cat | awk '{ print "- " $1 }'
     echo "echo > ~/.zprofile"
-    echo "echo 'export ANDROID_NDK_CERSION=..... > ~/.zprofile"
+    echo "echo 'export ANDROID_NDK_VERSION=..... > ~/.zprofile"
     exit 1
 fi
 
@@ -65,7 +65,7 @@ do
     esac
 
     # PATH="${TOOLCHAIN_BASE_DIR}_${arch}/bin:${ORIGINAL_PATH}"
-    if [ -e ./build ]; then
+    if [[ -e ./build ]]; then
         rm -fr ./build
     fi
 
diff --git a/scripts/ios/app_env.sh b/scripts/ios/app_env.sh
index 1c1579830..985a48971 100644
--- a/scripts/ios/app_env.sh
+++ b/scripts/ios/app_env.sh
@@ -12,13 +12,13 @@ TYPES=($MONERO_COM $CAKEWALLET)
 APP_IOS_TYPE=$1
 
 MONERO_COM_NAME="Monero.com"
-MONERO_COM_VERSION="1.20.3"
-MONERO_COM_BUILD_NUMBER=113
+MONERO_COM_VERSION="1.21.0"
+MONERO_COM_BUILD_NUMBER=114
 MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
 
 CAKEWALLET_NAME="Cake Wallet"
-CAKEWALLET_VERSION="4.23.4"
-CAKEWALLET_BUILD_NUMBER=302
+CAKEWALLET_VERSION="4.24.0"
+CAKEWALLET_BUILD_NUMBER=305
 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
 
 
diff --git a/scripts/ios/build_decred.sh b/scripts/ios/build_decred.sh
index e6b13d0da..6860c7776 100755
--- a/scripts/ios/build_decred.sh
+++ b/scripts/ios/build_decred.sh
@@ -1,12 +1,12 @@
-#!/bin/sh
+#!/bin/bash
 set -e
 . ./config.sh
 LIBWALLET_PATH="${EXTERNAL_IOS_SOURCE_DIR}/libwallet"
 LIBWALLET_URL="https://github.com/decred/libwallet.git"
-LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d"
+LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
 
-if [ -e $LIBWALLET_PATH ]; then
-       rm -fr $LIBWALLET_PATH
+if [[ -e $LIBWALLET_PATH ]]; then
+    rm -fr $LIBWALLET_PATH
 fi
 mkdir -p $LIBWALLET_PATH
 git clone $LIBWALLET_URL $LIBWALLET_PATH
@@ -17,8 +17,8 @@ SYSROOT=`xcrun --sdk iphoneos --show-sdk-path`
 CLANG="clang -target arm64-apple-ios -isysroot ${SYSROOT}"
 CLANGXX="clang++ -target arm64-apple-ios -isysroot ${SYSROOT}"
 
-if [ -e ./build ]; then
-       rm -fr ./build
+if [[ -e ./build ]]; then
+    rm -fr ./build
 fi
 CGO_ENABLED=1 GOOS=ios GOARCH=arm64 CC=$CLANG CXX=$CLANGXX \
 go build -v -buildmode=c-archive -o ./build/libdcrwallet.a ./cgo || exit 1
diff --git a/scripts/linux/app_env.sh b/scripts/linux/app_env.sh
index ef1747ba6..9d97b63cb 100755
--- a/scripts/linux/app_env.sh
+++ b/scripts/linux/app_env.sh
@@ -14,8 +14,8 @@ if [ -n "$1" ]; then
 fi
 
 CAKEWALLET_NAME="Cake Wallet"
-CAKEWALLET_VERSION="1.13.4"
-CAKEWALLET_BUILD_NUMBER=49
+CAKEWALLET_VERSION="1.14.0"
+CAKEWALLET_BUILD_NUMBER=50
 
 if ! [[ " ${TYPES[*]} " =~ " ${APP_LINUX_TYPE} " ]]; then
     echo "Wrong app type."
diff --git a/scripts/macos/app_config.sh b/scripts/macos/app_config.sh
index c10116136..641a7b46b 100755
--- a/scripts/macos/app_config.sh
+++ b/scripts/macos/app_config.sh
@@ -36,7 +36,7 @@ case $APP_MACOS_TYPE in
         $MONERO_COM)
 		CONFIG_ARGS="--monero";;
         $CAKEWALLET)
-		CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero --decred";;
+		CONFIG_ARGS="--monero --bitcoin --ethereum --polygon --nano --bitcoinCash --solana --tron --wownero";;
 esac
 
 cp -rf pubspec_description.yaml pubspec.yaml
diff --git a/scripts/macos/app_env.sh b/scripts/macos/app_env.sh
index 7410ee3a3..4ac64ba42 100755
--- a/scripts/macos/app_env.sh
+++ b/scripts/macos/app_env.sh
@@ -16,13 +16,13 @@ if [ -n "$1" ]; then
 fi
 
 MONERO_COM_NAME="Monero.com"
-MONERO_COM_VERSION="1.10.3"
-MONERO_COM_BUILD_NUMBER=45
+MONERO_COM_VERSION="1.11.0"
+MONERO_COM_BUILD_NUMBER=46
 MONERO_COM_BUNDLE_ID="com.cakewallet.monero"
 
 CAKEWALLET_NAME="Cake Wallet"
-CAKEWALLET_VERSION="1.16.4"
-CAKEWALLET_BUILD_NUMBER=107
+CAKEWALLET_VERSION="1.17.0"
+CAKEWALLET_BUILD_NUMBER=108
 CAKEWALLET_BUNDLE_ID="com.fotolockr.cakewallet"
 
 if ! [[ " ${TYPES[*]} " =~ " ${APP_MACOS_TYPE} " ]]; then
diff --git a/scripts/macos/build_decred.sh b/scripts/macos/build_decred.sh
index d4b7d4d65..e7e5d492f 100755
--- a/scripts/macos/build_decred.sh
+++ b/scripts/macos/build_decred.sh
@@ -4,7 +4,7 @@
 
 LIBWALLET_PATH="${EXTERNAL_MACOS_SOURCE_DIR}/libwallet"
 LIBWALLET_URL="https://github.com/decred/libwallet.git"
-LIBWALLET_VERSION="87b2769538db3065b334d247b25774593fc6443d"
+LIBWALLET_VERSION="dba5327d35cb5d5d1ff113b780869deee154511f"
 
 echo "======================= DECRED LIBWALLET ========================="
 
diff --git a/scripts/windows/build_exe_installer.iss b/scripts/windows/build_exe_installer.iss
index 211017eff..3f433e1ae 100644
--- a/scripts/windows/build_exe_installer.iss
+++ b/scripts/windows/build_exe_installer.iss
@@ -1,5 +1,5 @@
 #define MyAppName "Cake Wallet"
-#define MyAppVersion "0.4.4"
+#define MyAppVersion "0.5.0"
 #define MyAppPublisher "Cake Labs LLC"
 #define MyAppURL "https://cakewallet.com/"
 #define MyAppExeName "CakeWallet.exe"
diff --git a/tool/append_translation.dart b/tool/append_translation.dart
index 8ef646502..b4c975599 100644
--- a/tool/append_translation.dart
+++ b/tool/append_translation.dart
@@ -1,4 +1,3 @@
-import 'package:cw_core/utils/print_verbose.dart';
 
 import 'utils/translation/arb_file_utils.dart';
 import 'utils/translation/translation_constants.dart';
diff --git a/tool/download_moneroc_prebuilds.dart b/tool/download_moneroc_prebuilds.dart
index 378d9293b..8889a1bc1 100644
--- a/tool/download_moneroc_prebuilds.dart
+++ b/tool/download_moneroc_prebuilds.dart
@@ -1,6 +1,6 @@
 import 'dart:io';
 
-import 'package:cw_core/utils/print_verbose.dart';
+import './print_verbose_dummy.dart';
 import 'package:dio/dio.dart';
 import 'package:archive/archive_io.dart';
 
diff --git a/tool/generate_localization.dart b/tool/generate_localization.dart
index 0f9af8366..0e07dc2c3 100644
--- a/tool/generate_localization.dart
+++ b/tool/generate_localization.dart
@@ -1,6 +1,6 @@
 import 'dart:io';
 import 'dart:convert';
-import 'package:cw_core/utils/print_verbose.dart';
+import './print_verbose_dummy.dart';
 
 import 'localization/localization_constants.dart';
 import 'utils/utils.dart';
diff --git a/tool/print_verbose_dummy.dart b/tool/print_verbose_dummy.dart
new file mode 100644
index 000000000..f7286e1f9
--- /dev/null
+++ b/tool/print_verbose_dummy.dart
@@ -0,0 +1 @@
+void printV(dynamic content) => print(content);
\ No newline at end of file
diff --git a/tool/translation_add_lang.dart b/tool/translation_add_lang.dart
index 96f22158d..e3c372a8c 100644
--- a/tool/translation_add_lang.dart
+++ b/tool/translation_add_lang.dart
@@ -1,6 +1,6 @@
 import 'dart:io';
 
-import 'package:cw_core/utils/print_verbose.dart';
+import './print_verbose_dummy.dart';
 
 import 'utils/translation/arb_file_utils.dart';
 import 'utils/translation/translation_constants.dart';
diff --git a/tool/translation_consistence.dart b/tool/translation_consistence.dart
index df24cce15..2cdd358c8 100644
--- a/tool/translation_consistence.dart
+++ b/tool/translation_consistence.dart
@@ -1,6 +1,6 @@
 import 'dart:io';
 
-import 'package:cw_core/utils/print_verbose.dart';
+import './print_verbose_dummy.dart';
 
 import 'utils/translation/arb_file_utils.dart';
 import 'utils/translation/translation_constants.dart';
diff --git a/tool/utils/translation/arb_file_utils.dart b/tool/utils/translation/arb_file_utils.dart
index 0fe31d85d..92a8f6e2e 100644
--- a/tool/utils/translation/arb_file_utils.dart
+++ b/tool/utils/translation/arb_file_utils.dart
@@ -1,7 +1,7 @@
 import 'dart:convert';
 import 'dart:io';
 
-import 'package:cw_core/utils/print_verbose.dart';
+import '../../print_verbose_dummy.dart';
 
 void appendStringToArbFile(String fileName, String name, String text, {bool force = false}) {
   final file = File(fileName);