Tier: M (2-4 days) | Type: feature
Context. Every wallet today derives exactly one stealth meta-address per chain, so personal, freelance, and DAO flows all merge into one activity stream. Users repeatedly ask to compartmentalize. Derive multiple profiles from the same wallet signature by domain-separating the STEALTH_SIGNING_MESSAGE per profile label, and let users flip between them in the header.
Scope.
- Profile store:
{ id, label, chain, createdAt, colorTag } under src/store/profilesStore.tsx.
- Extend
StealthKeysContext to key derived keys by active profile id.
- Header profile switcher (avatar dot + label) next to the network chip.
- Activity, Portfolio, Send, Receive all read from the active profile.
- New-profile flow re-signs with a domain-separated message and never re-uses the default keys.
Acceptance.
Files. src/context/StealthKeysContext.tsx, src/store/profilesStore.tsx (new), src/components/ProfileSwitcher.tsx (new), src/components/Header.tsx.
Tier: M (2-4 days) | Type: feature
Context. Every wallet today derives exactly one stealth meta-address per chain, so personal, freelance, and DAO flows all merge into one activity stream. Users repeatedly ask to compartmentalize. Derive multiple profiles from the same wallet signature by domain-separating the
STEALTH_SIGNING_MESSAGEper profile label, and let users flip between them in the header.Scope.
{ id, label, chain, createdAt, colorTag }undersrc/store/profilesStore.tsx.StealthKeysContextto key derived keys by active profile id.Acceptance.
Files.
src/context/StealthKeysContext.tsx,src/store/profilesStore.tsx(new),src/components/ProfileSwitcher.tsx(new),src/components/Header.tsx.