Skip to content

fix: show full addresses on join requests; tighten table user display - #1331

Open
Megha-Dev-19 wants to merge 3 commits into
mainfrom
fix/user-address-display-and-hover
Open

fix: show full addresses on join requests; tighten table user display#1331
Megha-Dev-19 wants to merge 3 commits into
mainfrom
fix/user-address-display-and-hover

Conversation

@Megha-Dev-19

@Megha-Dev-19 Megha-Dev-19 commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator

Fix address/name display issues raised by Olha.
When profile image is not available, show address only instead of name+address display.


🐗 Auto-generated by Codaban

Summary

This PR refactors the User and UserWithData components to support a new truncateAddress prop, allowing callers to opt out of middle-ellipsis address truncation and display full addresses. It also introduces a TooltipUser wrapper pattern across several table and cell components to simplify how user addresses are rendered with tooltips, removing redundant profile lookups and display name resolution logic from individual cells.

Key Changes

  • components/user.tsx

    • Added a truncateAddress prop (default true) to both User and UserWithData, controlling whether addresses are truncated with middle ellipsis or shown in full with break-all.
    • Extracted address rendering into a shared addressNode that handles truncation, highlight, and non-truncation cases.
    • Adjusted container width classes to use max-w-full when truncation is disabled.
    • Exported TooltipUser for use as a lightweight tooltip wrapper around arbitrary address content.
  • Member review & join requests

    • Set truncateAddress={false} in MemberReviewStep and JoinRequestsAssignStep to show full addresses in those contexts.
    • Removed the withHoverCard prop usage in join requests in favor of the new truncation control.
  • Activity table

    • Replaced User with TooltipUser wrapping an Address component for both "from" and "to" columns, simplifying rendering and removing profile-based display logic.
  • Proposals table

    • Replaced User with TooltipUser + Address for the proposer column.
  • Batch payment expanded view

    • Added withHoverCard to the User component for recipient display.
  • Transaction cells (function-call, staking, token)

    • Removed useProfile calls and resolveUserDisplayName usage from FunctionCallCell, StakingCell, and TokenCell, instead displaying raw addresses directly.
    • Simplified TokenCell to always render an Address component inside TooltipUser, eliminating the name-vs-address branching logic.

@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

🎬 E2E report — visual review

✅ E2E tests passed · commit e6d0979

▶ Open the live report — every test recorded as a
video, plus traces and screenshots. Videos stream in the browser;
no download needed. Use it to review the behaviour this PR produces.

Hosted on GitHub Pages (nothing committed to git) · rebuilt on every push · workflow run

@Megha-Dev-19
Megha-Dev-19 marked this pull request as ready for review August 14, 2026 10:35
@codaban

codaban Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Saw the PR — kicking off a deep review now. Grab a coffee; this one's going to take a minute.

Auto-review is configurable in Settings → Auto-review; comment stop review to turn it off for this PR.

@codaban

codaban Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor
  • 🔧 Fix all 4 findings — tick and I'll address them in a follow-up commit

Or tick a specific finding above, or comment @codaban iterate / address.

@codaban codaban Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🐗 Codaban — deep review

Half is good, half of it isn't. The table cells (activity-table, proposals-table) really did need trimming — <User> with 8+8 truncation was eating the column — and swapping in a <TooltipUser> + shorter <Address> is the right call there. But the same scalpel got carried into the proposal-detail subtitles and quietly undid PR #1308, which three days ago added resolved profile-name rendering to the transaction-cell rows. So TokenCell, FunctionCallCell, and StakingCell now show raw account ids in venues that have all the horizontal space in the world, and only TokenCell's subtitle still has the tooltip to recover the friendly name. The <TooltipUser triggerProps={{ asChild: false }}> overrides in proposals-table/activity-table are also no-ops — that's already the Tooltip default. Approve-faithfully on the join-request / member-review additions; the proposal-cell side wants a rethink before this lands.

Verdict: 🔴 Request changes — 4 new findings to address.

🎯 Review effort: 2/5 · ~20 min

  • 4 new findings
📝 Walkthrough
File Change
nt-fe/components/user.tsx Adds truncateAddress prop (default true) on User + UserWithData; extends displayAddress handling so nearcom:-prefixed visible address still feeds explorer/profile with the bare id; centralises addressNode so the same render path is shared by truncate / no-truncate / highlight branches.
nt-fe/app/(treasury)/[treasuryId]/members/components/member-review-step.tsx Passes truncateAddress={false} so each review row shows the full member id, not the trimmed 8+8.
nt-fe/app/(treasury)/[treasuryId]/members/join-requests/page.tsx Same: truncateAddress={false} on the assign-step row so the join-request account id displays fully.
nt-fe/features/activity/components/activity-table.tsx From/To columns re-implemented as <TooltipUser> wrapping a plain <Address> — drops the inner profile fetch path through <User> and shows the bare truncated id with hover-card treatment instead of name+address.
nt-fe/features/proposals/components/proposals-table.tsx Requester cell likewise re-implemented as <TooltipUser> wrapping <Address>; same pattern as activity-table.
nt-fe/features/proposals/components/expanded-view/batch-payment-expanded.tsx Adds withHoverCard to the recipient <User> inside the collapsed-trigger row so the per-recipient summary shows a tooltip card on hover.
nt-fe/features/proposals/components/transaction-cell/token-cell.tsx Removed the profile-fetch + resolveUserDisplayName branch; subtitle is now always the formatted receiver address with 6+6 truncation regardless of whether a profile name exists.
nt-fe/features/proposals/components/transaction-cell/function-call-cell.tsx Deleted the useProfile + resolveUserDisplayName block; the {receiver} interpolation to i18n now passes data.receiver verbatim.
nt-fe/features/proposals/components/transaction-cell/staking-cell.tsx Removed its useProfile + resolveUserDisplayName block; t('validatorSubtitle', { address: validator }) is now invoked with the raw validator id.
📋 Findings (4)

1. nt-fe/features/proposals/components/transaction-cell/token-cell.tsx:73🎯 Correctness | 🟠 Major | 👍 Worth it

Subtitle in the proposal-detail TokenCell no longer surfaces a resolved profile name as it did until this PR. Previously the cell rendered <span className="min-w-0 truncate block">{displayName}</span> when the receiver had a profile (so 'Greg' showed up where the receiver was greg.near); the new code renders <Address displayReceiver prefixLength={6} suffixLength={6} /> for every case. The PR title frames the change as 'tighten table user display', but TokenCell is the subtitle inside ExpandedView, not a constrained table column — there is room, and reverting this takes away the only place the friendly name was rendered inline. Net result: a labelled-by-name user now reads greg.near (or nearcom:greg.near) everywhere in the proposal detail. Only the surrounding TooltipUser keeps the profile name a hover away, which is fine when the cell has the tooltip — but the non-isUser/non-TooltipUser path that was reachable before is also using the raw address now, with no hover-card fallback at all. Verified by reading token-cell.tsx lines 38–87 and the version that the diff removed. PR #1308 ('prefer DB profile and treasury names in account displays') added this friendly-name rendering on Aug 11; this diff rolls it back for this exact cell four days later, with no i18n / product reason named in the body.

2. nt-fe/features/proposals/components/transaction-cell/function-call-cell.tsx:13🎯 Correctness | 🟠 Major | 👍 Worth it

Removed the useProfile + resolveUserDisplayName and now passes data.receiver straight into t("onReceiver", { receiver: data.receiver }). The subtitle of a function-call row in ExpandedView therefore always shows the raw contract account id (e.g. 'on some-dex.near') where it used to show the resolved name when one was on file (e.g. 'on Some Dex'). Same regression as token-cell.tsx for the same stated reason, except there is no TooltipUser wrapper here to recover the friendly name — <TitleSubtitleCell> renders a plain <div>. Anyone glancing at the proposals table to verify a function-call destination has to manually match the raw id against their address-book entry with no in-page affordance. Verified by reading function-call-cell.tsx:11-14 and the deleted block at HEAD~1 lines 12-19.

3. nt-fe/features/proposals/components/transaction-cell/staking-cell.tsx:41🎯 Correctness | 🟠 Major | 👍 Worth it

Removed the validator useProfile + resolveUserDisplayName block; the validator subtitle in ExpandedView now reads as t('validatorSubtitle', { address: validator }) with the raw validator account id (e.g. 'staking with aurora-validator.near'). Same regression profile as the sibling cells — a validator that has a profile/address-book entry used to render its name, and the cell no longer has any hover-card wrapper that would surface the resolved name. The PR description names 'tighten table user display', but StakingCell is also a subtitle inside ExpandedView, not a table column. Verified by reading staking-cell.tsx:1-65 and comparing to the deleted block at HEAD~1 lines 35-44.

4. nt-fe/features/proposals/components/proposals-table.tsx:345🎨 Style | 🟡 Minor | 🔹 Nitpick

triggerProps={{ asChild: false }} is a no-op override — Tooltip already sets asChild to false as the default, then spreads triggerProps after, so the explicit override here doesn't change anything observable. Activities-table lines 359 / 384 carry the same redundant override. Dead at the call site, harmless to ship, but worth pruning before the pattern propagates further.

Prompt for AI (new findings)
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Fix the following code review issues:

1. `nt-fe/features/proposals/components/transaction-cell/token-cell.tsx` line
73: Subtitle in the proposal-detail `TokenCell` no longer surfaces a resolved
profile name as it did until this PR. Previously the cell rendered `<span
className="min-w-0 truncate block">{displayName}</span>` when the receiver had a
profile (so 'Greg' showed up where the receiver was `greg.near`); the new code
renders `<Address displayReceiver prefixLength={6} suffixLength={6} />` for
every case. The PR title frames the change as 'tighten table user display', but
`TokenCell` is the subtitle inside `ExpandedView`, not a constrained table
column — there is room, and reverting this takes away the only place the
friendly name was rendered inline. Net result: a labelled-by-name user now reads
`greg.near` (or `nearcom:greg.near`) everywhere in the proposal detail. Only the
surrounding `TooltipUser` keeps the profile name a hover away, which is fine
when the cell has the tooltip — but the non-`isUser`/non-`TooltipUser` path that
was reachable before is also using the raw address now, with no hover-card
fallback at all. Verified by reading token-cell.tsx lines 38–87 and the version
that the diff removed. PR #1308 ('prefer DB profile and treasury names in
account displays') added this friendly-name rendering on Aug 11; this diff rolls
it back for this exact cell four days later, with no i18n / product reason named
in the body.
   Suggested fix: Render the subtitle as either trimmed address *or* resolved
   profile name — keep the old `{nameIsAddress ? <Address .../> :
   <span>{displayName}</span>}` shape, but only invoke the profile fetch when a
   tooltip hover card is around to take the rest of the surface. Concretely:
   reintroduce `useProfile` here only if the spec insists on resolving names in
   proposal details; otherwise at least keep `<TooltipUser>` wrapping the
   subtitle so the tooltip still shows the resolved label even though the
   truncated address is what fits inline.
2. `nt-fe/features/proposals/components/transaction-cell/function-call-cell.tsx`
line 13: Removed the `useProfile` + `resolveUserDisplayName` and now passes
`data.receiver` straight into `t("onReceiver", { receiver: data.receiver })`.
The subtitle of a function-call row in `ExpandedView` therefore always shows the
raw contract account id (e.g. 'on some-dex.near') where it used to show the
resolved name when one was on file (e.g. 'on Some Dex'). Same regression as
`token-cell.tsx` for the same stated reason, except there is no `TooltipUser`
wrapper here to recover the friendly name — `<TitleSubtitleCell>` renders a
plain `<div>`. Anyone glancing at the proposals table to verify a function-call
destination has to manually match the raw id against their address-book entry
with no in-page affordance. Verified by reading function-call-cell.tsx:11-14 and
the deleted block at HEAD~1 lines 12-19.
   Suggested fix: Either restore the `useProfile` + `resolveUserDisplayName`
   call before the i18n interpolate, so a known name appears inline, or wrap the
   subtitle row's receiver in a `<TooltipUser>` and pass the resolved name as
   the trigger content. The trivial path that does both is the smallest
   restoring change: keep the hook call and the resolveUserDisplayName call you
   removed.
3. `nt-fe/features/proposals/components/transaction-cell/staking-cell.tsx` line
41: Removed the validator `useProfile` + `resolveUserDisplayName` block; the
validator subtitle in `ExpandedView` now reads as `t('validatorSubtitle', {
address: validator })` with the raw validator account id (e.g. 'staking with
aurora-validator.near'). Same regression profile as the sibling cells — a
validator that has a profile/address-book entry used to render its name, and the
cell no longer has any hover-card wrapper that would surface the resolved name.
The PR description names 'tighten table user display', but `StakingCell` is also
a subtitle inside `ExpandedView`, not a table column. Verified by reading
staking-cell.tsx:1-65 and comparing to the deleted block at HEAD~1 lines 35-44.
   Suggested fix: Reintroduce the resolver before the i18n call so a named
   validator continues to read as its friendly name; or, if dropping the
   resolution is the actual intent for compactness, wrap the subtitle's
   validator label in a `<TooltipUser>` so users still have a way to see the
   friendly name (and to copy the raw id) on hover.
4. `nt-fe/features/proposals/components/proposals-table.tsx` line 345:
`triggerProps={{ asChild: false }}` is a no-op override — `Tooltip` already sets
`asChild` to `false` as the default, then spreads `triggerProps` after, so the
explicit override here doesn't change anything observable. Activities-table
lines 359 / 384 carry the same redundant override. Dead at the call site,
harmless to ship, but worth pruning before the pattern propagates further.
   Suggested fix: Drop the `triggerProps={{ asChild: false }}` line at proposal
   requster cell, and the equivalent in activity-table; otherwise leave a short
   `asChild: false` rationale as a comment near the Tooltip default so the next
   reader doesn't assume it does something.

Flagging the wrong things? A CODABAN.md in the repo root steers what I read, what I ignore and how blunt I am — I honour it over my own defaults.


🐗 Codaban · deep review · reads the source, not just the diff

Comment thread nt-fe/features/proposals/components/transaction-cell/token-cell.tsx
Comment thread nt-fe/features/proposals/components/proposals-table.tsx Outdated
@codaban

codaban Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Saw the update — starting a deep review now. Grab a coffee; I'll be thorough whether you like it or not.

Auto-review is configurable in Settings → Auto-review; comment stop review to turn it off for this PR.

@codaban

codaban Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor
  • 🔧 Fix all 3 findings — tick and I'll address them in a follow-up commit

Or tick a specific finding above, or comment @codaban iterate / address.

codaban[bot]
codaban Bot previously requested changes Aug 14, 2026

@codaban codaban Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🐗 Codaban — deep review

Two of the three things this PR claims to do are fine, one of them is doing damage. 'Show full addresses on join requests' is the clean half — the new truncateAddress prop on User is precise, defaults are right, and the two callers use it correctly. 'Tighten table user display' is the half that bites back: the inline subtitle inside the proposal-detail cell now reads as greg.near (or nearcom:greg.near) where it used to read as the resolved profile name, and function-call-cell / staking-cell stripAllLabel path* give up the resolved name without even wrapping the result in a TooltipUser, so the friendly label is gone from the page entirely on those rows. The hover-card fallback that the prior pass asked for is in place for token-cell and the proposals/activity tables, but not for those two siblings — that's the bug-shaped hole the PR shipped around. Net: visible regression in 3 places, no test to paper over it, no comment to mark it as intentional beyond the PR title's tighten. Decision: don't ship it as-is.

Verdict: 🔴 Request changes — 3 new findings, and 3 earlier threads are still open.

🎯 Review effort: 3/5 · ~25 min

  • 3 earlier findings still open
  • 3 new findings
📝 Walkthrough
File Change
nt-fe/components/user.tsx Adds truncateAddress prop with default true; centralizes the address-vs-name render block into an addressNode ternary so the full-address and ellipsized paths share a structure.
nt-fe/app/(treasury)/[treasuryId]/members/components/member-review-step.tsx Passes truncateAddress={false} to the join-profile <User> so members see the full address on the review card.
nt-fe/app/(treasury)/[treasuryId]/members/join-requests/page.tsx Replaces withHoverCard with truncateAddress={false} on the assign-step <User> so full addresses show.
nt-fe/features/activity/components/activity-table.tsx Replaces <User variant="details" withHoverCard> with <TooltipUser><Address>…</TooltipUser> — drops the inline name+address two-line display, keeps the hover card.
nt-fe/features/proposals/components/expanded-view/batch-payment-expanded.tsx Adds withHoverCard to the recipient <User> inside the per-payment collapsible (PaymentDisplay).
nt-fe/features/proposals/components/proposals-table.tsx Replaces <User variant="details" withHoverCard> with <TooltipUser><Address>…</TooltipUser> for the requester column.
nt-fe/features/proposals/components/transaction-cell/function-call-cell.tsx Drops useProfile + resolveUserDisplayName; subtitle now interpolates raw data.receiver into t('onReceiver').
nt-fe/features/proposals/components/transaction-cell/staking-cell.tsx Drops the validator useProfile block; validatorSubtitle now uses raw validator (and showAllLabel early-return has no TooltipUser fallback).
nt-fe/features/proposals/components/transaction-cell/token-cell.tsx Switched the subtitle to a single <Address displayReceiver prefixLength=6 suffixLength=6> wrapped in <TooltipUser>; also pipes displayAddress={displayReceiver} to the tooltip card so the card shows the prefixed form.
📋 Findings (3)

1. nt-fe/features/proposals/components/transaction-cell/function-call-cell.tsx:13🎯 Correctness | 🟠 Major | 👍 Worth it

strips resolved name off the function-call subtitle and ships the raw data.receiver into t('onReceiver', { receiver: data.receiver }). The rendered subtitle is <div className="min-w-0 truncate">{subtitle}</div> inside <TitleSubtitleCell> — no TooltipUser wrap anywhere on this cell, so a contract account with an address-book entry (e.g. Some Dexsome-dex.near) is now unidentifiable to a treasury member scanning the row. The sibling token-cell did get a <TooltipUser> wrap in this same PR; this one didn't. Either restore the resolve (mirrors #1/#2 prior pass) or, minimally, wrap the rendered subtitle string in a <TooltipUser> so the friendly label still surfaces on hover.

2. nt-fe/features/proposals/components/transaction-cell/staking-cell.tsx:41🎯 Correctness | 🟠 Major | 👍 Worth it

Same regression as function-call-cell, scoped to the showAllLabel early-return at line ~36: this branch returns <TitleSubtitleCell> with subtitle={t("validatorSubtitle", { address: validator })} interpolated raw, and there's no <TooltipUser> wrap. The non-early-return path delegates through <TokenCell> which does wrap a <TooltipUser> and recovers the resolved name on hover, so this branch is the only place the friendly validator label is silently lost. Restore the resolver before the i18n call, or wrap the subtitle in <TooltipUser accountId={validator}>.

3. nt-fe/features/proposals/components/proposals-table.tsx:343🧹 Maintainability | 🟡 Minor | 🔹 Nitpick

The requester column switches from <User variant="details" withHoverCard> to <TooltipUser accountId={value}><Address address={value} /></TooltipUser> — the <Address> renders with default prefixLength={8}, suffixLength={8}, but the column's <TableCell> only constrains width via the parent wrapper. For a 64-char NEAR account id this works, but for now-defunct sub-accounts (alice.near is 10 chars < 8+8=16 → no ellipsis) the <Address> is fine, while for the longer string of the chainName-aware address the inner div has no truncate to enforce sharp ellipsis at tight column widths. Pre-existing pattern, not strictly a regression this PR introduced, but the changeover to <TooltipUser>+<Address> is the right place to add className="min-w-0 truncate" so the new wrap holds its width the way <User variant="details"> did.

Prompt for AI (new findings)
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Fix the following code review issues:

1. `nt-fe/features/proposals/components/transaction-cell/function-call-cell.tsx`
line 13: `strips` resolved name off the function-call subtitle and ships the raw
`data.receiver` into `t('onReceiver', { receiver: data.receiver })`. The
rendered subtitle is `<div className="min-w-0 truncate">{subtitle}</div>` inside
`<TitleSubtitleCell>` — no `TooltipUser` wrap anywhere on this cell, so a
contract account with an address-book entry (e.g. `Some Dex` → `some-dex.near`)
is now unidentifiable to a treasury member scanning the row. The sibling
`token-cell` *did* get a `<TooltipUser>` wrap in this same PR; this one didn't.
Either restore the resolve (mirrors #1/#2 prior pass) or, minimally, wrap the
rendered subtitle string in a `<TooltipUser>` so the friendly label still
surfaces on hover.
   Suggested fix: const t = useTranslations("proposals.expanded");
const { data: profile } = useProfile(data.receiver);
const label = resolveUserDisplayName({
    accountId: data.receiver,
    profileName: profile?.name,
    addressBookName: profile?.addressBookName,
});
const subtitle = (
    <TooltipUser accountId={data.receiver} preferAddressBook>
        <span>{t("onReceiver", { receiver: label })}</span>
    </TooltipUser>
);
2. `nt-fe/features/proposals/components/transaction-cell/staking-cell.tsx` line
41: Same regression as `function-call-cell`, scoped to the `showAllLabel`
early-return at line ~36: this branch returns `<TitleSubtitleCell>` with
`subtitle={t("validatorSubtitle", { address: validator })}` interpolated raw,
and there's no `<TooltipUser>` wrap. The non-early-return path delegates through
`<TokenCell>` which *does* wrap a `<TooltipUser>` and recovers the resolved name
on hover, so this branch is the only place the friendly validator label is
silently lost. Restore the resolver before the i18n call, or wrap the subtitle
in `<TooltipUser accountId={validator}>`.
   Suggested fix: const { data: profile } = useProfile(validator ?? null);
const label = validator
    ? resolveUserDisplayName({
          accountId: validator,
          profileName: profile?.name,
          addressBookName: profile?.addressBookName,
      })
    : validator;

// inside TitleSubtitleCell's subtitle prop:
subtitle={
    validator
        ? <TooltipUser accountId={validator}>
              {t("validatorSubtitle", { address: label ?? "" })}
          </TooltipUser>
        : undefined
}
3. `nt-fe/features/proposals/components/proposals-table.tsx` line 343: The
`requester` column switches from `<User variant="details" withHoverCard>` to
`<TooltipUser accountId={value}><Address address={value} /></TooltipUser>` — the
`<Address>` renders with default `prefixLength={8}`, `suffixLength={8}`, but the
column's `<TableCell>` only constrains width via the parent wrapper. For a
64-char NEAR account id this works, but for now-defunct sub-accounts
(`alice.near` is 10 chars < 8+8=16 → no ellipsis) the `<Address>` is fine, while
for the longer string of the chainName-aware address the inner div has no
`truncate` to enforce sharp ellipsis at tight column widths. Pre-existing
pattern, not strictly a regression this PR introduced, but the changeover to
`<TooltipUser>+<Address>` is the right place to add `className="min-w-0
truncate"` so the new wrap holds its width the way `<User variant="details">`
did.
   Suggested fix: <TooltipUser accountId={value}>
    <Address address={value} className="min-w-0 truncate" />
</TooltipUser>

Flagging the wrong things? A CODABAN.md in the repo root steers what I read, what I ignore and how blunt I am — I honour it over my own defaults.


🐗 Codaban · deep review · reads the source, not just the diff

Comment thread nt-fe/features/proposals/components/proposals-table.tsx
@Megha-Dev-19
Megha-Dev-19 dismissed codaban[bot]’s stale review August 14, 2026 10:58

findings 1–3 are intentional. TokenCell / FunctionCallCell / StakingCell render in the requests table (via TransactionCell), not only expanded details. Per design we show address-only there (no name without avatar); profile names stay on hover / in request details. Finding 4 fixed (dropped the no-op triggerProps).

@codaban codaban Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

🐗 Codaban — deep review

Half-trade, half-fix. 'Tighten table user display' sheds friendly names from every transaction subtitle in the proposals table — fine where TooltipUser was already wrapping the cell, plain regression where it wasn't (function-call, staking's showAllLabel branch, and the requester column). 'Show full addresses on join requests' gets its target with a tidy truncateAddress={false} and no ellipsis gymnastics; the join-requests and member-review flows now actually look readable on a long NEAR id. The cleanup commit at HEAD is one line of editorial polish that does nothing in either direction. Six prior threads still stand; the author has ticked them off as 'follow-up' rather than followed through — that's a tracked deferral and I'll allow it, but the asymmetry across the three sibling cells should not survive to the follow-up.

Verdict: ✅ Approved — 6 earlier threads left open as an optional nit; clear it whenever, it's not blocking.

🎯 Review effort: 3/5 · ~25 min

  • 6 earlier findings still open
  • 0 new findings
📝 Walkthrough
File Change
nt-fe/components/user.tsx Adds truncateAddress prop (default true) — when false, renders full address via ; otherwise matches the previous Address/HighlightedText path.
nt-fe/app/(treasury)/[treasuryId]/members/join-requests/page.tsx Switches the join-request member pill from withHoverCard to truncateAddress={false} so the full account id renders inline.
nt-fe/app/(treasury)/[treasuryId]/members/components/member-review-step.tsx Adds truncateAddress={false} to the review-step ; alongside the join-requests page, this commits to no ellipsis in member review.
nt-fe/features/activity/components/activity-table.tsx Replaces in From/To cells with ; loses inline friendly name but keeps hover-card recovery.
nt-fe/features/proposals/components/expanded-view/batch-payment-expanded.tsx Adds withHoverCard to the recipient User; small UX win.
nt-fe/features/proposals/components/proposals-table.tsx Requester column switches from to ; cleanup commit also drops triggerProps={{asChild:false}}.
nt-fe/features/proposals/components/transaction-cell/token-cell.tsx Drops useProfile + resolveUserDisplayName; subtitle always renders . TooltipUser wrap preserved so hover recovers the friendly label.
nt-fe/features/proposals/components/transaction-cell/function-call-cell.tsx Drops useProfile + resolveUserDisplayName; subtitle now interpolates raw data.receiver into 'onReceiver' i18n. No TooltipUser wrapper.
nt-fe/features/proposals/components/transaction-cell/staking-cell.tsx Drops useProfile + resolveUserDisplayName; showAllLabel branch interpolates raw validator into validatorSubtitle. No TooltipUser wrap on this branch.

🐗 Codaban · deep review · reads the source, not just the diff

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.

1 participant