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
- 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
}
- 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.
- 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."
- 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
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.
Labels:
Stellar Wave,stellar,feature,ux,drips,help-wantedTier: 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
localStoragekeyed by${walletPubkey}:${stealthAddress}:Constraints
Acceptance criteria
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.