Is your feature request related to a problem?
When browsing miners, repositories, PRs, or bounties, there's no way to pop a detail page into a new tab. Middle-click, Ctrl/Cmd-click, and the right-click context menu all do nothing on list rows and cards, because they're wired up with onClick + useNavigate() instead of real anchor elements. Comparing two miners or two PRs side by side means repeatedly navigating back and losing scroll and filter state.
Describe the solution
Make every clickable list item behave like a normal web link, a real <a href> under the hood, so the browser can handle new-tab behaviors natively:
- Middle-click opens the detail page in a new tab
- Ctrl-click (Cmd-click on macOS) opens in a new tab
- Right-click shows "Open link in new tab" in the context menu
- Plain left-click still navigates in the current tab as before
This applies to rows and cards across:
- Dashboard Live Activity and Repositories table
- Leaderboard (top miners, top repositories), Discoveries sidebar
- Repositories page (trending, most collateral, recent PRs, main table)
- Repository detail (PRs, bounties, GitHub issues, contributors)
- Miner detail (PRs, repositories, score breakdown)
- PR detail header (repo avatar, repo name, author)
- Bounties tabs (available, pending, history) and issue submissions
- Search tabs (miners, repositories, PRs, issues)
Describe alternatives considered
Adding a custom onAuxClick plus modifier key handler on every row was considered, but it only covers middle-click and Ctrl/Cmd-click. The right-click context menu still would not show "Open in new tab" because the browser only surfaces that entry for real anchor elements. Using real <Link> components covers all three behaviors with no custom event handling.
Additional context
The shift also tightens internal navigation. URL construction moves into the leaf components (via getMinerHref, backLabel, linkState props), so parent pages no longer need bespoke handleSelectX callbacks just to call navigate.
Is your feature request related to a problem?
When browsing miners, repositories, PRs, or bounties, there's no way to pop a detail page into a new tab. Middle-click, Ctrl/Cmd-click, and the right-click context menu all do nothing on list rows and cards, because they're wired up with
onClick+useNavigate()instead of real anchor elements. Comparing two miners or two PRs side by side means repeatedly navigating back and losing scroll and filter state.Describe the solution
Make every clickable list item behave like a normal web link, a real
<a href>under the hood, so the browser can handle new-tab behaviors natively:This applies to rows and cards across:
Describe alternatives considered
Adding a custom
onAuxClickplus modifier key handler on every row was considered, but it only covers middle-click and Ctrl/Cmd-click. The right-click context menu still would not show "Open in new tab" because the browser only surfaces that entry for real anchor elements. Using real<Link>components covers all three behaviors with no custom event handling.Additional context
The shift also tightens internal navigation. URL construction moves into the leaf components (via
getMinerHref,backLabel,linkStateprops), so parent pages no longer need bespokehandleSelectXcallbacks just to callnavigate.