WIP:
Context:
This epic delivers on-chain profile primitives (names, avatars, bios) that users own completely.
The system leverages the session wallet flow for fee-sponsored updates: users establish an AuthZ delegation on first profile edit, which grants the treasury wallet authority to post profile memos on their behalf with FeeGrant coverage. Subsequent updates require only a session signer confirmation (no gas costs, no wallet popups beyond the initial setup).
End-to-End Flow (v1):
- User navigates to profile settings
- Enters desired name, builds avatar, writes bio
- Clicks "Save": if no session active, AuthZ dialog appears explaining fee delegation (one-time)
- User approves AuthZ grant (primary wallet signs, treasury authorized for time set)
- UI shows "Saving..." with optimistic profile display
- Session signer (or direct wallet if no grant) submits bank sends with RegisterName/RegisterPicture/RegisterBio memos
- Transactions broadcast (delegated send path uses FeeGrant, so no user gas cost after initial grant)
- Reader receives transactions → parses memos → posts to API
- API stores profile data (name, avatar, bio indexed by address)
- Propagates updates to all UI surfaces
- User sees final confirmed state; profile now visible to all community
Acceptance Criteria:
General:
Validation:
Notes:
- Profile memos fit within 512-byte memo limit (avatars compressed as hex-encoded pixel data)
- Names are not unique; multiple users can share "Alice Bob"
- UI should reuse existing AuthZ tooling (
useAuthzGrant, useAuthzGrants, useAuthzRevoke, TMAAuthzView.vue)
- Prefer session wallet over direct wallet signing to hide complexity
- Reader must have RegisterName/RegisterPicture/RegisterBio handlers registered (not yet implemented; mirror
packages/reader-main/src/messages/* pattern)
- API /profile endpoint should cache frequently accessed profiles
- Consider future namespacing/verification system separately
WIP:
Context:
This epic delivers on-chain profile primitives (names, avatars, bios) that users own completely.
The system leverages the session wallet flow for fee-sponsored updates: users establish an AuthZ delegation on first profile edit, which grants the treasury wallet authority to post profile memos on their behalf with FeeGrant coverage. Subsequent updates require only a session signer confirmation (no gas costs, no wallet popups beyond the initial setup).
End-to-End Flow (v1):
Acceptance Criteria:
General:
useAuthzGrants/useSessionWalletstate and walks user through grant setup if not activedither.RegisterNamememo and displayed throughout UI instead of truncated addressesdither.RegisterPicturememodither.RegisterBiomemo and rendered on profile pagesValidation:
Notes:
useAuthzGrant,useAuthzGrants,useAuthzRevoke,TMAAuthzView.vue)packages/reader-main/src/messages/*pattern)