[#501] Profile page — layout, routing, and identity resolution#506
[#501] Profile page — layout, routing, and identity resolution#506realproject7 merged 4 commits intomainfrom
Conversation
- Create /profile/[address] route with header identity (Farcaster + ERC-8004 agent metadata), Human/AI badge, and tabs for Stories, Portfolio, and Activity - Add getAgentMetadata() to lib/contracts/erc8004.ts for resolving on-chain agent name, description, model, genre - Add fetchAgentMetadata() server action to lib/actions.ts - Update WriterIdentity, WriterIdentityClient, and FarcasterAvatar to link to /profile/[address] instead of external Farcaster - Link donor addresses in writer dashboard to profile pages Fixes #501 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
- Remove unused useEffect, useMemo, useInfiniteQuery imports - Gate Human/AI badge on !agentLoading to prevent brief "Human" flash before agent metadata resolves Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: REQUEST CHANGES
Summary
The new profile route is a solid start, but the PR still misses key acceptance criteria around sitewide profile linking and complete identity resolution.
Findings
-
[high] Sitewide profile linking is still incomplete. The discovery card author, donate preview recipient, and connected-wallet identity still render without linking to
/profile/[address], so the ticket's "every wallet name/username displayed anywhere on the site links to/profile/[address]" acceptance criterion is not met.- File:
src/components/StoryCard.tsx:102 - File:
src/components/DonateWidget.tsx:171 - File:
src/components/ConnectWallet.tsx:52 - Suggestion: Remove the
linkProfile={false}opt-outs and restructure the story card footer so the author name has its own profile link instead of living inside the enclosing story link.
- File:
-
[medium] ERC-8004 model metadata will be blank for agents registered through the existing SDK path.
getAgentMetadata()only readsllmModel, but the SDK serializes the field asmodel, so the profile page will fail to show the required agent model for those existing registrations.- File:
lib/contracts/erc8004.ts:121 - File:
packages/sdk/src/client.ts:403 - Suggestion: Accept both
llmModelandmodelwhen parsingagentURI, or standardize the schema in both writer and reader paths before merging.
- File:
-
[medium] Farcaster bio is still not resolved or displayed. The Farcaster lookup type has no bio field, and the profile header currently re-renders
displayNameunder a "Farcaster bio" comment, which does not satisfy the route requirement to resolve avatar, username, and bio.- File:
lib/farcaster.ts:10 - File:
src/app/profile/[address]/page.tsx:167 - Suggestion: Extend the Farcaster lookup payload to return bio and render that value in the header when present.
- File:
Decision
Requesting changes because the current implementation still fails the sitewide linking requirement and has incomplete identity metadata for both Farcaster users and some ERC-8004 agents.
- StoryCard: add profile-linked author below notebook card (inside-card author stays unlinked to avoid nested <a> tags) - DonateWidget: enable profile linking on writer avatar - ConnectWallet: link connected identity to /profile/[address] - ERC-8004: read both `llmModel` and `model` fields for SDK compat - Farcaster: add `bio` field to FarcasterProfile, populate from both Steemhunt and Neynar APIs - Profile page: show Farcaster bio instead of displayName Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: REQUEST CHANGES
Summary
Two of the earlier issues are fixed, but the PR still misses the sitewide linking requirement in the story card itself and still does not render the agent registration date in the profile header.
Findings
-
[high] The discovery card still displays an unlinked author inside the notebook. Adding a second linked author below the card does not satisfy the ticket's requirement that every displayed wallet name/username link to
/profile/[address], because the original displayed author at the bottom of the notebook remains plain text.- File:
src/components/StoryCard.tsx:102 - Suggestion: Remove the unlinked
linkProfile={false}author inside the notebook, or make that displayed author itself link to the profile page.
- File:
-
[medium] The profile header still omits the agent registration date even though the layout requirements call for agent metadata including model, genre, and registration date. The page parses
registeredAt, but the header only renders model and genre.- File:
src/app/profile/[address]/page.tsx:158 - Suggestion: Render
registeredAtwhen present, or explain why existing agent metadata cannot reliably provide it.
- File:
Decision
Requesting changes because the current PR still falls short of the explicit sitewide-linking requirement and the specified AI agent metadata layout.
- StoryCard: remove unlinked author from inside notebook cover (author is now only shown below card with profile link — no more plain-text wallet names anywhere) - Profile header: display agent registeredAt date alongside model/genre Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
project7-interns
left a comment
There was a problem hiding this comment.
Verdict: APPROVE
Summary
The requested fixes are now in place. The story card no longer shows an unlinked author, the profile header renders the agent registration date, and the shared identity components now point displayed wallet names and usernames at /profile/[address].
Findings
- None.
Decision
Approve because the profile route, identity resolution, Human/AI distinction, Farcaster profile link, and sitewide profile linking now match issue #501.
Summary
/profile/[address]route with identity header resolving both Farcaster (avatar, @username) and ERC-8004 agent metadata (name, description, model, genre)getAgentMetadata()tolib/contracts/erc8004.ts— readsagentIdByWallet→agentURIand parses the JSON metadataWriterIdentity,WriterIdentityClient, andFarcasterAvatarcomponents to link every displayed wallet name/username to/profile/[address]Test plan
/profile/<known-address>— verify identity header renders with Farcaster avatar/username/profile/<agent-address>— verify AI Agent badge and agent metadata (model, genre) display/profile/[address]/profile/[address]/profile/[address]Fixes #501
🤖 Generated with Claude Code