From 625d27ee6c21749f9b3c55e2b2ef887a6df83967 Mon Sep 17 00:00:00 2001
From: Gohlub <62673775+Gohlub@users.noreply.github.com>
Date: Thu, 26 Feb 2026 11:21:11 -0500
Subject: [PATCH 1/6] UI for v0-to-v1 migration, WIP
---
extension/popup/Router.tsx | 12 +
extension/popup/assets/transferv0_icon.svg | 3 +
extension/popup/assets/wallet-icon-yellow.svg | 3 +
extension/popup/screens/SettingsScreen.tsx | 5 +
.../popup/screens/V0MigrationIntroScreen.tsx | 65 ++++
.../popup/screens/V0MigrationReviewScreen.tsx | 99 ++++++
.../popup/screens/V0MigrationSetupScreen.tsx | 317 ++++++++++++++++++
.../screens/V0MigrationSubmittedScreen.tsx | 72 ++++
extension/popup/store.ts | 51 +++
9 files changed, 627 insertions(+)
create mode 100644 extension/popup/assets/transferv0_icon.svg
create mode 100644 extension/popup/assets/wallet-icon-yellow.svg
create mode 100644 extension/popup/screens/V0MigrationIntroScreen.tsx
create mode 100644 extension/popup/screens/V0MigrationReviewScreen.tsx
create mode 100644 extension/popup/screens/V0MigrationSetupScreen.tsx
create mode 100644 extension/popup/screens/V0MigrationSubmittedScreen.tsx
diff --git a/extension/popup/Router.tsx b/extension/popup/Router.tsx
index 7069c2c..55f18df 100644
--- a/extension/popup/Router.tsx
+++ b/extension/popup/Router.tsx
@@ -36,6 +36,10 @@ import { WalletSettingsScreen } from './screens/WalletSettingsScreen';
import { WalletStylingScreen } from './screens/WalletStylingScreen';
import { AboutScreen } from './screens/AboutScreen';
import { RecoveryPhraseScreen } from './screens/RecoveryPhraseScreen';
+import { V0MigrationIntroScreen } from './screens/V0MigrationIntroScreen';
+import { V0MigrationSetupScreen } from './screens/V0MigrationSetupScreen';
+import { V0MigrationReviewScreen } from './screens/V0MigrationReviewScreen';
+import { V0MigrationSubmittedScreen } from './screens/V0MigrationSubmittedScreen';
export function Router() {
const { currentScreen } = useStore();
@@ -85,6 +89,14 @@ export function Router() {
return ;
case 'recovery-phrase':
return ;
+ case 'v0-migration-intro':
+ return ;
+ case 'v0-migration-setup':
+ return ;
+ case 'v0-migration-review':
+ return ;
+ case 'v0-migration-submitted':
+ return ;
// Transactions
case 'send':
diff --git a/extension/popup/assets/transferv0_icon.svg b/extension/popup/assets/transferv0_icon.svg
new file mode 100644
index 0000000..de28f13
--- /dev/null
+++ b/extension/popup/assets/transferv0_icon.svg
@@ -0,0 +1,3 @@
+
diff --git a/extension/popup/assets/wallet-icon-yellow.svg b/extension/popup/assets/wallet-icon-yellow.svg
new file mode 100644
index 0000000..a7d9356
--- /dev/null
+++ b/extension/popup/assets/wallet-icon-yellow.svg
@@ -0,0 +1,3 @@
+
diff --git a/extension/popup/screens/SettingsScreen.tsx b/extension/popup/screens/SettingsScreen.tsx
index 10e102c..e15ab17 100644
--- a/extension/popup/screens/SettingsScreen.tsx
+++ b/extension/popup/screens/SettingsScreen.tsx
@@ -4,6 +4,7 @@ import ThemeIcon from '../assets/theme-icon.svg';
import RpcSettingsIcon from '../assets/rpc-settings-icon.svg';
import KeyIcon from '../assets/key-icon.svg';
import ClockIcon from '../assets/clock-icon.svg';
+import TransferV0Icon from '../assets/transferv0_icon.svg';
import { CloseIcon } from '../components/icons/CloseIcon';
import { ChevronRightIcon } from '../components/icons/ChevronRightIcon';
import AboutIcon from '../assets/settings-gear-icon.svg';
@@ -30,6 +31,9 @@ export function SettingsScreen() {
function handleAbout() {
navigate('about');
}
+ function handleTransferV0() {
+ navigate('v0-migration-intro');
+ }
const Row = ({ icon, label, onClick }: { icon: string; label: string; onClick: () => void }) => (
+
diff --git a/extension/popup/screens/V0MigrationIntroScreen.tsx b/extension/popup/screens/V0MigrationIntroScreen.tsx
new file mode 100644
index 0000000..f25b36d
--- /dev/null
+++ b/extension/popup/screens/V0MigrationIntroScreen.tsx
@@ -0,0 +1,65 @@
+import { useStore } from '../store';
+import { ChevronLeftIcon } from '../components/icons/ChevronLeftIcon';
+import TransferV0Icon from '../assets/transferv0_icon.svg';
+
+export function V0MigrationIntroScreen() {
+ const { navigate, resetV0MigrationDraft } = useStore();
+
+ function handleBack() {
+ navigate('settings');
+ }
+
+ function handleStart() {
+ resetV0MigrationDraft();
+ navigate('v0-migration-setup');
+ }
+
+ return (
+
+
+
+
Transfer v0 funds
+
+
+
+
+
+
+
v0 Funds Migration
+
+ Transfer your balance from V0 to V1
+
+
+
+
+
+ The network has upgraded. If your wallet was created before October 25, 2025{' '}
+ (block 39,000), your funds need to be migrated to remain accessible on the current
+ network.
+
+
+ This process transfers your full balance from your v0 wallet to v1. It only takes a
+ moment.
+