Maintainer dashboard's "Connect repository" empty-state CTA links to /settings, a route that does not exist — it 404s

Open Beginner friendly
#836 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
84/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active

Research direction

Start at src/app/dashboard/maintainer/page.tsx:110-123 and inspect the empty-state CTA alongside the GitHubSyncPanel rendered below it. Check the existing /connect destination used in src/app/issues/page.tsx:260 and src/app/milestones/page.tsx:80 before choosing the destination. Done when the CTA leads to a working repository connection flow instead of a 404.

Written by the indexing model from the issue text.

Description

bug

Location

src/app/dashboard/maintainer/page.tsx:110-123 (the href is line 117)

Problem

When a maintainer has no connected repositories, the page renders an empty state whose primary call to action is:

<Link
  href="/settings"
  className="inline-flex items-center gap-2 rounded-full bg-slate-900 px-4 py-2 ..."
>
  Connect repository
</Link>

There is no /settings route in the app. src/app/ contains auth/, connect/, dashboard/, issues/, milestones/, reputation/ and sitemaps/ — no settings/ segment, and no page.tsx anywhere that resolves to that path. grep -rn '"/settings"' src/ returns this single line, so nothing else even references it. Clicking the button renders src/app/not-found.tsx ("Page not found").

The correct destination is already on the same page: <GitHubSyncPanel /> is rendered at line 131, directly below the empty state, and it is the component that actually syncs a repository. The CTA sends the user away from the working control to a 404.

Why it matters

This is the very first screen a new maintainer sees — the empty state only renders when myRepos.length === 0, i.e. before they have connected anything. Their single most prominent next step is a dead link, so the onboarding path for the maintainer role terminates in a 404 page. It also undermines the empty-state work from closed issue #54: an empty state whose action does not work is worse than no action, because the user concludes the feature is missing rather than looking further down the page.

A related, pre-existing pattern was tracked in closed issue #219 (DashboardShell nav items pointing at routes that do not exist); this is a separate occurrence in a different file.

Reproduction

  1. Sign in as a maintainer whose account has no synced repositories (or run with the backend down, so fetchMyRepositories([]) returns its empty fallback).
  2. Open /dashboard/maintainer. The "No repositories connected" empty state renders.
  3. Click Connect repository.
  4. The app navigates to /settings and shows the 404 page.

Suggested fix

Point the CTA at something that exists. Two reasonable options:

  • Scroll to the panel on the same page. Give the <div> wrapping <GitHubSyncPanel /> (line 130) an id such as connect-repository, and change the CTA to href="#connect-repository". This keeps the user on the dashboard and lands them on the control that does the work. Move focus to the panel's owner input on activation so keyboard users are not left at the top of the document.
  • Or send them to /connect, which is the existing onboarding route and is what every other empty state in the app uses as its CTA target (see src/app/issues/page.tsx:260 and src/app/milestones/page.tsx:80).

Either way, a check that every literal href in src/app/ resolves to a real route segment — a small test or a lint rule over the route manifest — would catch the next one of these; #219 and this issue are the same failure mode twice.

Dominant language
TypeScript
Stars
1
Forks
94
Avg merge
1h 2m
Merged PRs (30d)
25

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from MergeFi/frontend

All issues in MergeFi/frontend

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.