Skip to content

feat(wallet): dashboard parity — top bar, welcome banner, pill, inline tx#549

Merged
barrydeen merged 4 commits into
barrydeen:mainfrom
dmnyc:feat/wallet-dashboard-parity
May 20, 2026
Merged

feat(wallet): dashboard parity — top bar, welcome banner, pill, inline tx#549
barrydeen merged 4 commits into
barrydeen:mainfrom
dmnyc:feat/wallet-dashboard-parity

Conversation

@dmnyc
Copy link
Copy Markdown
Contributor

@dmnyc dmnyc commented May 18, 2026

Third slice of the wallet cross-platform parity work — see
WALLET_PARITY.md §3 (parity doc landing in a forthcoming PR).

Summary

Reshape the wallet home screen to match the iOS layout.

  • Top bar — Spark+Breez (or NWC) brand logo on the left, refresh
    • settings icons on the right. The wallet branding moves up from
      the bottom "powered by" footer; the standalone refresh button that
      used to live under the balance number is gone.
  • Welcome banner — default (nsec-derived) wallets get a tappable
    card with a key icon, title "Your default wallet is secured by
    your key"
    , and body explaining the nsec-as-backup property. Tap
    routes to the recovery-phrase screen so users can also save the
    seed locally. Hides once `seedBackupAcked` flips. Custom wallets
    keep the existing amber seed-not-viewed nudge and red backup-
    missing warning.
  • Lightning address pill — collapsed surface chip with bolt icon
    prefix, tap-to-copy. Replaces the bare primary-color text line.
    Setup CTA (when no address is registered) renders as the same pill
    shape with an outlined accent border.
  • Send / Receive — circular 64dp accent-tinted buttons in a
    single centered row (was 72dp on primary container). Extracted as
    `WalletActionButton`.
  • Recent transactions footer — anchored to the bottom of the
    dashboard. "RECENT" header + "View all ^" affordance with the
    most-recent transaction visible inline. Tap any of it to expand
    to the full transactions screen.

The dashboard preloads recent transactions on connect via a
`LaunchedEffect` so the inline footer has data without the user
having to visit the transactions screen first.

iOS counterpart

This layout already ships on iOS; brings Android visually in line.

Test plan

  • Spark wallet: brand logo + refresh + settings render in the top
    bar; the old bottom "Powered by" footer is gone.
  • NWC wallet: NWC logo replaces the Spark+Breez logo in the top bar.
  • Default wallet with !seedBackupAcked: welcome banner shows; tap
    routes to recovery phrase; banner disappears after acking.
  • Custom wallet with !seedBackupAcked: existing amber nudge shows
    (NOT the welcome banner).
  • Custom wallet with backupMissing: existing red warning shows.
  • Lightning address pill renders with bolt prefix; tap copies to
    clipboard.
  • No address registered: setup pill with accent outline routes to
    LightningAddressSetup.
  • After sending or receiving a payment, the inline transaction row
    reflects it on next Home visit.
  • Tap "View all" → full transactions screen opens.

…ll, inline transactions

Reshape the wallet home screen to match the iOS layout per
WALLET_PARITY.md §3.

Changes:

  • Top bar — Spark+Breez (or NWC) brand logo on the left, refresh
    + settings icons on the right. The wallet branding moves up from
    the bottom "powered by" footer; the standalone refresh button
    that used to live under the balance number is gone.
  • Welcome banner — default (nsec-derived) wallets get a tappable
    card with a key icon, title "Your default wallet is secured by
    your key", and body explaining the nsec-as-backup property. Tap
    routes to the recovery-phrase screen so users can also save the
    seed locally. Hides once seedBackupAcked flips. Custom wallets
    keep the existing amber seed-not-viewed nudge and red backup-
    missing warning.
  • Lightning address pill — collapsed surface chip with bolt icon
    prefix, tap-to-copy. Replaces the bare primary-color text line.
    Setup CTA (when no address is registered) renders as the same
    pill shape with an outlined accent border.
  • Send / Receive — circular 64dp accent-tinted buttons in a single
    centered row (was 72dp on primary container). Extracted as
    WalletActionButton.
  • Recent transactions footer — anchored to the bottom of the
    dashboard. "RECENT" header + "View all ^" affordance with the
    most-recent transaction visible inline. Tap any of it to expand
    to the full transactions screen.

The dashboard preloads recent transactions on connect via a
LaunchedEffect so the inline footer has data without the user
having to visit the transactions screen first.

iOS counterpart: this layout already ships on iOS; brings Android
visually in line.
dmnyc and others added 3 commits May 18, 2026 08:09
…et Info expandable

Three iOS-parity additions to the wallet dashboard + settings.

1. Hide the top "← Wallet" app-bar on the Home dashboard. The bottom
   nav is the entry point, the dashboard's own logo + refresh +
   settings row plays the role of a toolbar, and the iOS app doesn't
   carry a redundant title strip either. Sub-pages still render the
   app-bar so back-nav stays reachable.

2. Render the NWC node alias to the right of the NWC logo in the
   dashboard top bar. The alias is fetched once post-connect via
   NIP-47 `get_info` (new request type in `Nip47.kt`), cached on
   `NwcRepository.nodeAlias`. NWC drawable also painted in its
   brand palette (warm orange + purple accent) so the top-bar mark
   matches iOS instead of rendering as a tinted black silhouette.

3. New Wallet Info expandable card in settings for both modes.
   Collapsed shows just the brand mark (+ alias on NWC) with a
   chevron; tap expands the per-mode detail rows:
   • Spark — Wallet ID (identity pubkey, truncated, copy), Network,
     SDK version.
   • NWC — Service pubkey, Client pubkey, Relay, Encryption,
     Lightning address (if set), Supported methods (chips).
   Spark identity pubkey is captured from the existing `getInfo()`
   call so no extra SDK roundtrip is needed. NWC connection metadata
   is exposed via a new `NwcRepository.ConnectionInfo` data class,
   updated whenever the connection string is parsed or encryption
   is renegotiated.
Hiding the app-bar removed the only thing providing top-edge spacing,
so the brand logo + refresh + settings row collided with the system
status icons. Reintroduce a clean inset on the Home content's root
Column via `statusBarsPadding()`; sub-pages keep their own app-bar,
which already supplies the equivalent gap.
…-parity

# Conflicts:
#	app/src/main/kotlin/com/wisp/app/ui/screen/WalletScreen.kt
@barrydeen barrydeen merged commit 30b9966 into barrydeen:main May 20, 2026
@dmnyc dmnyc deleted the feat/wallet-dashboard-parity branch May 20, 2026 15:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants