Skip to content

epic: Trezor Hardware Wallet UI #998

Description

@ovitrif

Design: Figma — Trezor Screens

Related (iOS): synonymdev/bitkit-ios#589

Context

Bitkit is adding a Hardware Wallet balance type alongside Savings (on-chain) and Spending (Lightning), backed by Trezor. The hardware balance is a watch-only view of funds held on a paired Trezor: Bitkit displays the amount and the device's on-chain activity but never holds the keys. Removing a device just stops Bitkit from displaying its balance.

The home-screen parents already exist (Savings/Spending tiles, suggestion carousel, Settings list), but the hardware/Trezor side of each is missing.

Device naming & connection indicator

  • Display name = label ?: model ?: "Trezor"label is the device name set on the Trezor (editable on-device / in Trezor Suite), model is the hardware model (e.g. "Safe 3" / "Safe 7").
  • The Figma "LABEL FUNDS" field is a Bitkit-side display name for the balance, defaulting to the resolved device name; persisted per device so the user can rename within Bitkit without touching the device.
  • Connection indicator = connection type (Bluetooth or USB), tinted green while the device is currently connected. Figma examples: bluetooth · usb.

Subtasks

  • 1. #1024 Home Screen hardware-wallet updates — (a) full-width device row below the Savings|Spending tiles (<device name> [conn-type indicator, green when connected] ₿ <balance>, blue BTC icon; empty state ₿ 0), hardware funds included in the headline total, device activity merged into the home activity list; (b) new "HARDWARE / Connect device" suggestion card in the carousel → opens the Connect Hardware flow.
  • 2. #1025 Hardware Wallet detail screen — Savings/Spending-style overview: top bar = device name + blue BTC icon; balance header; Transfer To Spending button; grouped activity list; Remove <device name> → confirm dialog ("Don't worry, your funds are safe and your coins won't be deleted. Bitkit will simply stop displaying the amounts in the wallet." / Cancel / Remove). Empty state = ₿ 0, Send/Receive only.
  • 3. #1026 Hardware Wallet settings — (a) new row in Settings ▸ General ▸ Payments, value = paired-device count → (b) Hardware Wallets Settings Screen: list of paired devices (name + balance + green connection indicator when connected + per-row delete) + Add Hardware Wallet button → Connect flow.
  • 4. #1027 Connect Hardware flow (bottom-modal, 4 steps) — Intro (ADD YOUR HARDWARE WALLET) → Searching (SEARCHING FOR DEVICES, USB or Bluetooth) → Found (FOUND TREZOR, pair prompt) → Paired (PAIRED TREZOR, editable LABEL FUNDS field defaulting to the device name, Finish). Entered from the suggestion card or from Hardware Wallets Settings ▸ Add.
  • 5. #1028 Transfer to Spending from HW device flow (top-level-screens navigation, 4 steps) — watch-only: channel funding is a send signed on the Trezor device. Amount (numpad; AVAILABLE = savings limit; 25% shortcut; MAX = savings − fees/reserve or the Blocktank limit; over-max resets + error toast) → Review & Sign (SIGN WITH YOUR DEVICE; network/service fees, to-spending, total; Open Trezor Connect; disconnected → "Reconnect Hardware Device" error) → Transaction Signed (checkmark; auto-forwards after a short delay) → Processing Payment (existing frame). Figma frame.
  • 6. #1029 Bitkit Core support for hardware wallet activities — integrate Core wallet-scoped activity support after refactor: move walletId to v2 activity models bitkit-core#112 and fix: add wallet-scoped backup migrations bitkit-core#113: persist watcher activities and transaction details with the shared hardware wallet id, load details/tags through Core using the activity wallet id, and keep global list/search scoped so normal Bitkit and hardware-wallet activity only merge where the UI expects it.
  • 7. #1046 Hardware Wallet Data Backup & Restore — after fix: add wallet-scoped backup migrations bitkit-core#113 lands, update the app Activity/Metadata VSS restore so Core-owned activity JSON is migrated/imported by Core before typed decode, then rewrite VSS with migrated/current Core entries. The app owns the VSS envelope, not Core model migration.
  • 8. #1030 Hardware wallet connection reliability and UX polish — improve reconnection reliability, handle passphrase-enabled wallets explicitly, improve pairing-code/PIN retry states, optimise Bitkit's Trezor ping cadence so the app backs off while the device is waiting for user action, and route Trezor-related logs through the normal app log capture.
  • 9. #1038 Hardware wallet emulator E2E coverage — UI test hooks (testTags / accessibility IDs), current journey docs, and a hardware-wallet E2E shard so connect / transfer flows are runnable by AI agents and in CI, driven by a Trezor emulator rather than a physical device.

Implementation notes are in the comment below.

Metadata

Metadata

Assignees

Labels

epicGroup of tickets
No fields configured for Feature.

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions