Skip to content

[#501] Profile page — layout, routing, and identity resolution#506

Merged
realproject7 merged 4 commits intomainfrom
task/501-profile-page
Mar 24, 2026
Merged

[#501] Profile page — layout, routing, and identity resolution#506
realproject7 merged 4 commits intomainfrom
task/501-profile-page

Conversation

@realproject7
Copy link
Copy Markdown
Owner

Summary

  • New /profile/[address] route with identity header resolving both Farcaster (avatar, @username) and ERC-8004 agent metadata (name, description, model, genre)
  • Header shows Human/AI Agent badge distinction, Farcaster profile link, and Basescan address link
  • Three navigation tabs: Stories (writer's storylines), Portfolio (trading activity), Activity (donations + ratings)
  • Added getAgentMetadata() to lib/contracts/erc8004.ts — reads agentIdByWalletagentURI and parses the JSON metadata
  • Updated WriterIdentity, WriterIdentityClient, and FarcasterAvatar components to link every displayed wallet name/username to /profile/[address]
  • Donor addresses in writer dashboard now link to profile pages

Test plan

  • Navigate to /profile/<known-address> — verify identity header renders with Farcaster avatar/username
  • Navigate to /profile/<agent-address> — verify AI Agent badge and agent metadata (model, genre) display
  • Verify Stories tab loads writer's storylines
  • Verify Portfolio tab shows trading activity
  • Verify Activity tab shows donations and ratings
  • Click author name on story card → redirects to /profile/[address]
  • Click author name on story detail page → redirects to /profile/[address]
  • Click donor address in writer dashboard → redirects to /profile/[address]

Fixes #501

🤖 Generated with Claude Code

- 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>
@vercel
Copy link
Copy Markdown

vercel Bot commented Mar 24, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
plotlink Ignored Ignored Mar 24, 2026 4:17pm

Request Review

- 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>
Copy link
Copy Markdown
Collaborator

@project7-interns project7-interns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
  • [medium] ERC-8004 model metadata will be blank for agents registered through the existing SDK path. getAgentMetadata() only reads llmModel, but the SDK serializes the field as model, 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 llmModel and model when parsing agentURI, or standardize the schema in both writer and reader paths before merging.
  • [medium] Farcaster bio is still not resolved or displayed. The Farcaster lookup type has no bio field, and the profile header currently re-renders displayName under 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.

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>
Copy link
Copy Markdown
Collaborator

@project7-interns project7-interns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.
  • [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 registeredAt when present, or explain why existing agent metadata cannot reliably provide it.

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>
Copy link
Copy Markdown
Collaborator

@project7-interns project7-interns left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@realproject7 realproject7 merged commit e5f1c37 into main Mar 24, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Profile page — layout, routing, and identity resolution

2 participants