Problem
frontend/src/components/WalletProvider.tsx registers five StellarWalletsKit modules — FreighterModule, xBullModule, LobstrModule, HanaModule, AlbedoModule — all software/browser-extension or mobile-app wallets. None of them support signing from a hardware device; there's no Ledger (or other hardware wallet) integration.
Why it matters
Every deposit/withdraw transaction here moves real value and, for NEXT_PUBLIC_DEV_SECRET_KEY-style local dev aside, relies on a hot-wallet signature. Users holding meaningful shielded balances have no option to keep the signing key on cold/hardware storage, which is a standard expectation for a wallet-grade product handling non-trivial funds.
Scope
frontend/src/components/WalletProvider.tsx: register a Ledger-capable module (@creit.tech/stellar-wallets-kit supports a Ledger module the same way it supports the five already wired in).
frontend/src/lib/stellar.ts: verify the transaction-signing path handles the async/device-interaction nature of hardware signing (distinct latency/UX from a browser popup).
frontend/src/app/deposit/page.tsx, withdraw/page.tsx, compliance/page.tsx: surface a clear "confirm on your device" state while awaiting a hardware signature, since the existing UI is built around near-instant browser-extension confirmation.
frontend/src/lib/errors.ts: friendly-error handling for hardware-specific failures (device locked, wrong app open, user rejected on-device).
- Tests (mocked Ledger transport) covering the connect and sign paths.
README.md: document Ledger as a supported wallet option.
Acceptance criteria
- A user can connect a Ledger device via StellarWalletsKit and complete a full deposit → withdraw cycle signing every transaction on-device.
- Hardware-specific failure states (locked device, rejection) show a friendly, specific message rather than a generic error.
Problem
frontend/src/components/WalletProvider.tsxregisters fiveStellarWalletsKitmodules —FreighterModule,xBullModule,LobstrModule,HanaModule,AlbedoModule— all software/browser-extension or mobile-app wallets. None of them support signing from a hardware device; there's no Ledger (or other hardware wallet) integration.Why it matters
Every deposit/withdraw transaction here moves real value and, for
NEXT_PUBLIC_DEV_SECRET_KEY-style local dev aside, relies on a hot-wallet signature. Users holding meaningful shielded balances have no option to keep the signing key on cold/hardware storage, which is a standard expectation for a wallet-grade product handling non-trivial funds.Scope
frontend/src/components/WalletProvider.tsx: register a Ledger-capable module (@creit.tech/stellar-wallets-kitsupports a Ledger module the same way it supports the five already wired in).frontend/src/lib/stellar.ts: verify the transaction-signing path handles the async/device-interaction nature of hardware signing (distinct latency/UX from a browser popup).frontend/src/app/deposit/page.tsx,withdraw/page.tsx,compliance/page.tsx: surface a clear "confirm on your device" state while awaiting a hardware signature, since the existing UI is built around near-instant browser-extension confirmation.frontend/src/lib/errors.ts: friendly-error handling for hardware-specific failures (device locked, wrong app open, user rejected on-device).README.md: document Ledger as a supported wallet option.Acceptance criteria