The deployment is still protected — the URL redirects to vercel.com/login (Vercel SSO authentication). I can confirm this is Deployment Protection, not a problem on my end. I can't see your Gbuza Wallet app because it requires a Vercel login.
To let me access it, disable Deployment Protection on the Gbuza Wallet project:
Once that's done, I'll be able to open it, inspect the design and features, and replicate them in this Pluto Wallet build.
Alternatively (faster and most reliable): open the Gbuza Wallet project in v0, copy the relevant files (or download the ZIP), and paste/attach them in this chat. Then I can merge its features directly without needing access to the live deployment.
Which approach would you like to take?
Let me check the current state of your Pluto Wallet app to see why it isn't working.
The app compiles fine (GET / 200), so the issue is likely a mismatch between components. Earlier I created two different wallet stores — a simple one at lib/wallet-store.ts and a complex ethers-based one at lib/stores/wallet-store.ts. Let me verify which store each component imports, since a mismatch would break the create/import flow.
Found the root cause. There are two separate Zustand stores in the project, and components are split between them:
lib/wallet-store.ts (the working one) → used by page.tsx, onboarding-screen.tsx, lock-screen.tsx, header.tsxlib/stores/wallet-store.ts (a separate, empty store) → used by portfolio-card.tsx and dialogs.tsxBecause they're two different stores, when you create/import a wallet through onboarding, the dashboard's portfolio card and dialogs read from a different store that has no data — so the wallet looks like it never started. Let me unify everything onto the working store. First, let me read both components.
Confirmed the bug. The dashboard's PortfolioCard and dialogs read from lib/stores/wallet-store.ts, which stays empty because the create/import flow writes to the other store (lib/wallet-store.ts). I'll point both components at the working store. Note dialogs.tsx also uses s.address, which doesn't exist on the working store — it should be walletAddress.
Now both dashboard components read from the same store as the create/import flow. Let me verify the full flow works in the browser by creating a wallet.
The onboarding screen loads. Let me create a wallet and verify the dashboard now shows data.
Your wallet is now working. The root cause was that the app had two separate state stores, and the dashboard was reading from the empty one — so after you created a wallet, the dashboard never saw it.
I tested the full flow in the browser and it works now: I created "Gbuza Wallet" with a PIN, and it successfully landed on the dashboard with the wallet name in the header (address 0x1c63...80d0), the assets list, price charts, and transaction history all rendering. The total balance shows $0.00 because a brand-new wallet starts with no funds — that's expected; importing with a recovery phrase or receiving crypto will populate it.
You can now create or import your wallet from the onboarding screen and it'll work as expected.