Skip to content

Four fixes: /issues empty state, sign-in fallback, FAQ a11y, missing mock profiles - #319

Open
chmm195 wants to merge 1 commit into
MergeFi:mainfrom
chmm195:fix/empty-states-a11y-and-mock-profiles
Open

Four fixes: /issues empty state, sign-in fallback, FAQ a11y, missing mock profiles#319
chmm195 wants to merge 1 commit into
MergeFi:mainfrom
chmm195:fix/empty-states-a11y-and-mock-profiles

Conversation

@chmm195

@chmm195 chmm195 commented Aug 25, 2026

Copy link
Copy Markdown

Summary

Four small, independent fixes across the issues page, the sign-in callback, the homepage FAQ, and the mock data layer.

Closes #274, closes #265, closes #268, closes #284.

/issues had no empty state (#274)

The grid rendered bare when bounties.length === 0, so a fresh deployment with nothing funded showed a heading, a paragraph promising escrow-backed bounties, and then nothing at all. Every dashboard list already uses EmptyState for exactly this. Now /issues does too, with the Inbox icon and copy that explains why it is empty rather than just stating that it is.

Sign-in callback rendered nothing while suspending (#265)

<Suspense> had no fallback, so the window before the boundary resolved was blank. CallbackClient's own "Finishing sign-in…" only appears after it mounts, which is the gap. Added a CallbackFallback with a spinner and a role="status" message so the state is announced, not just drawn. The spinner itself is aria-hidden — it carries no information the text does not.

FAQ "+" announced as a literal plus (#268)

<summary> already exposes expanded/collapsed natively, so the decorative + was pure noise after it. Marked aria-hidden="true". Verified in the prerendered output rather than by eye:

$ grep -o 'aria-hidden="true"[^>]*rotate-45[^>]*' .next/server/app/index.html
aria-hidden="true" class="ml-4 text-slate-400 transition-transform group-open:rotate-45"

Three of five leaderboard links 404'd in demo mode (#284)

topContributors lists five handles; mockReputationProfiles had two. devrel_ana, qa_marcus and linh_dev all 404'd when the backend was unreachable — and the homepage links to all five.

Added the three missing profiles with lifetimeEarnings/mergedPRs matching their leaderboard rows exactly, so the profile page does not contradict the list that linked to it. The remaining fields follow the shape of the existing two. Checked mechanically that the two structures cannot drift again unnoticed:

leaderboard: priyaeth,0xkoda,devrel_ana,qa_marcus,linh_dev
missing profiles: none

Verification

  • npm run lint — clean
  • npm run build — succeeds
  • npm test — 177 passed, 1 failed. The failure is NetworkBadge.test.tsx ("hides the badge for a production build on PUBLIC"), which fails identically on a clean main. Unrelated to this PR and left alone; WalletContext / ConnectPanel suites report as failed for the same pre-existing reason.

I previously opened #311 and #312 against #237/#236 — both were fixed by bundled PRs that landed first, so I have closed mine. Bundling here to match how the queue actually moves.

- /issues rendered a bare empty grid with no EmptyState, unlike every
  dashboard list, so a fresh deployment looked broken (MergeFi#274)
- auth/callback wrapped CallbackClient in Suspense with no fallback, so
  the sign-in page was blank until the boundary resolved (MergeFi#265)
- the FAQ accordion's decorative '+' had no aria-hidden, so screen
  readers announced a literal plus after the native summary state (MergeFi#268)
- mockReputationProfiles covered 2 of the 5 topContributors handles, so
  three of the five homepage leaderboard links 404'd in demo mode (MergeFi#284)

Closes MergeFi#274
Closes MergeFi#265
Closes MergeFi#268
Closes MergeFi#284
@vercel

vercel Bot commented Aug 25, 2026

Copy link
Copy Markdown

@chmm195 is attempting to deploy a commit to the chonilius' projects Team on Vercel.

A member of the Team first needs to authorize it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment