# iOS Cold Wallet — Plan 7 Smoke Test

Tests UI/UX polish, design system, AppSettings (appearance toggle), camera fix,
and restore-speed fix. Run on iPhone 17 simulator AND one real device.

## Setup

1. Build for simulator/device (`xcodebuild build` or Cmd+R).
2. (Real device) Delete any previously installed Armory Cold first to test the
   first-launch path.
3. Have one wallet in mind to restore from (e.g., abandon-abandon test seed).

## Visual polish

1. Launch app cold. Loading splash shows orange `ProgressView` and dim "Loading
   wallets…" text on navy background.
2. Welcome screen (first launch only): orange "Create new wallet" CTA, bordered
   orange "Restore from seed" CTA, on navy.
3. WalletsList: dark rows with `Theme.surface` background, orange `+` icon, orange
   gear in top-left.
4. WalletHome: navy bg, orange Sign CTA, bordered Export, orange gear in top-right.
5. For an encrypted wallet, PasswordSheet appears on entry; sheet is dark with
   orange Unlock button and `Theme.textDim` Cancel.

## Appearance toggle

1. WalletsList → top-left gear → AppSettingsScreen.
2. Segmented picker shows System / Light / Dark.
3. Tap Light → entire UI switches to light theme (white bg, dark text, orange
   preserved). Tap Dark → back to navy. Tap System → follows iOS Appearance.
4. Kill the app and relaunch — last choice persists.

## Restore speed

1. WalletsList → `+` → Restore from seed. Enter the test seed.
2. Tap Restore. Confirm it completes within a few seconds (was multiple minutes).
3. Open the wallet → confirm it has the expected addresses (Settings → SettingsScreen
   "Addresses generated" should read 120 = 50 BIP84 receive + 50 BIP84 change
   + 10 BIP86 receive + 10 BIP86 change).

## Camera scan

1. WalletHome → Sign → Scan QR.
2. On real device first time: permission prompt appears; allow it.
3. Live camera preview shows (NOT a black screen).
4. Hold over a multi-frame UR PSBT QR; status label updates "Scanned N%…" until
   complete and the app advances to PSBTReviewScreen.
5. Test denial path: revoke camera permission in Settings → relaunch Sign → Scan
   QR → confirm "Camera permission denied" message.
6. (Hard to test) If `AVCaptureSession.startRunning()` silently fails, after
   0.5s the user sees "Camera unavailable — open Settings → Armory Cold → Camera…"
7. On the simulator the same "Camera unavailable" message will appear because
   the simulator has no camera hardware — expected and benign there.

## Per-screen visual sweep (each must show navy bg + orange accents)

- WelcomeScreen
- WalletsListScreen
- WalletHomeScreen
- PasswordSheet
- Keygen: KeygenSourceScreen, DiceEntryScreen, SeedDisplayScreen, SeedVerifyScreen, KeygenPasswordScreen
- RestoreScreen
- Sign: SignSourceScreen, ScanQRScreen, FileImportScreen, PSBTReviewScreen, AnimatedQRScreen, SignResultScreen
- Export: WatchOnlyExportScreen, WatchOnlyQRScreen
- Settings: SettingsScreen, ChangePasswordScreen, VerifySeedScreen, DeleteWalletScreen
- AppSettingsScreen

## Seed-word boxes

- RestoreScreen, SeedDisplayScreen, SeedVerifyScreen, VerifySeedScreen all show
  the same `SeedWordBox` style: numbered prefix, monospaced text, thin border,
  comfortable vertical padding (not the previous cramped feel).
- 12/24 segmented toggle on RestoreScreen has NO gray Form pill around it.
  (Keygen flow uses a fixed 24-word seed; no toggle on SeedDisplay/SeedVerify.)

## Pass criteria

- Every screen shows the navy + orange theme in dark mode.
- Light mode renders all text legibly with no orange-on-white contrast issues
  (spot-check, full per-screen light-mode QA is out of scope).
- Restore from 12-word seed completes in under 30s on real device.
- Camera preview shows on real device.
- Appearance preference persists across app launches.
- No network activity in Xcode's Debug Navigator at any point.
