Skip to content

Stealth account labeling + personal organization #20

@truthixify

Description

@truthixify

Labels: Stellar Wave, stellar, feature, ux, drips, help-wanted
Tier: M (2–4 days)
Type: feature / UX

Context

The Receive page shows every detected stealth address as a truncated string. After a few weeks of activity, users have dozens of these and no way to remember which one was "the rent payment" vs. "the freelance gig" vs. "the random tip." Even though stealth addresses are meant to not be linked, the user's own private labels are a legitimate UX affordance.

This is purely client-side — no labels ever leave the user's browser.

Scope

  1. Storage: per stealth-address private notes in localStorage keyed by ${walletPubkey}:${stealthAddress}:
    type StealthLabel = {
      stealthAddress: string
      label: string          // user-chosen
      tags: string[]         // optional
      hiddenAt?: timestamp   // user can "archive" entries
      createdAt: timestamp
    }
  2. Receive page UI:
    • Inline editable label field next to each stealth-address row (click pencil icon → text input → save on blur or Enter).
    • Tag chips below the label; clicking a chip filters the list to that tag.
    • "Hide" action per row to declutter (still findable via "show hidden" toggle).
    • Search input at the top filters by label substring or tag.
  3. Privacy warning:
    • On first label save, show a one-time tooltip: "Labels are stored only in this browser. Clear browser data = lose labels. Wraith never sees them."
  4. Import / export:
    • "Export labels" → downloads JSON file.
    • "Import labels" → file picker → merges (with conflict prompt).

Constraints

  • Labels must NEVER leak to network calls (no telemetry, no error reporting with label data, no Sentry breadcrumbs).
  • Storage is per-wallet — disconnecting and connecting a different wallet shows an empty label store.
  • Label text length cap (e.g., 64 chars) to prevent UI breakage.

Acceptance criteria

  • Labeling implemented and persistent across reloads.
  • Search + tag filter working.
  • Hide / archive flow.
  • Export / import JSON.
  • Privacy warning on first save.

Why this matters

A wallet without categorization is a spreadsheet. Even a power user has a memory budget — letting them write down "what was this for?" turns the Receive page from a haystack into a notebook.

Metadata

Metadata

Assignees

Labels

Stellar WaveIssues in the Stellar wave programdripsFunded via Drips NetworkfeatureNew feature workhelp wantedExtra attention is neededstellarTouches Stellar / Soroban codeuxUser experience

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions