Maintainer dashboard's "Connect repository" empty-state CTA links to /settings, a route that does not exist — it 404s
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
- Tech stack
- next.js, react, typescript
- Domain
- accessibility, frontend
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
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
- Sign in as a maintainer whose account has no synced repositories (or run with the backend down, so
fetchMyRepositories([])returns its empty fallback). - Open
/dashboard/maintainer. The "No repositories connected" empty state renders. - Click Connect repository.
- The app navigates to
/settingsand 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) anidsuch asconnect-repository, and change the CTA tohref="#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 (seesrc/app/issues/page.tsx:260andsrc/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
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from MergeFi/frontend
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day
-
bug testing
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
accessibility bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
MergeFi/frontend#835 · 1 comment ·
Maintainers usually reply within 1 day
-
accessibility bug
Difficulty 2/5 1-3 hours Newbie friendliness 85/100
Maintainers usually reply within 1 day
All issues in MergeFi/frontend
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
zapcooking/frontend#946 ·
Maintainers usually reply within 1 day
-
enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
WiliamRosa/cosmos-semantic-platform#40 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
liberation-data/drivine#733 · 1 comment ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 64/100
makecindy/cindy#10062 · 1 comment ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day