You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Separate Tasks and Pull Requests into dedicated sidebar destinations #5974
The desktop dashboard currently groups Tasks and Pull Requests under one navigation destination and repeats that choice as page-level tabs. The two workflows have different filters, empty states, and detail journeys, so the combined surface feels dense and makes it harder to build a clear mental model.
Proposed experience
Give Tasks and Pull Requests their own destinations in the dashboard left rail.
Keep Linear and GitHub Issues as contextual sources inside Tasks.
Give Pull Requests an independent route and persisted repository/state/search context.
Preserve existing task and pull-request detail links with compatibility redirects.
Use one active navigation state, accessible labels, and responsive toolbars in both sidebar variants.
Acceptance criteria
The left rail shows separate Tasks and Pull Requests items.
There is no combined “Tasks & PRs” destination or redundant Tasks/Pull Requests page tab.
Each destination restores its own filters when navigating between them.
Legacy pull-request URLs redirect to the new route.
The experience is verified in the real Electron app at wide and compact viewport sizes.
Triage: no reproducible bug — this is a feature request
I picked this up in automated bug triage (reproduce with a test, fix if scoped). Stopping without a PR, because there's no defect to reproduce here: this is an enhancement/UX-restructuring proposal, and the current code behaves as designed.
What I checked. The issue's description of today's behaviour is accurate, and everything it describes is intentional:
Single combined destination in the left rail, labelled Tasks & PRs — DashboardSidebarHeader.tsx:423 (expanded) and :260 (collapsed tooltip). Active state is one fuzzy match on /tasks (:103).
One route, /tasks, with the surface selected by a type search param (tasks/prs/issues) — tasks/layout.tsx.
One shared filter store for all three surfaces, including a shared search and typeTab — tasks-filter-state.ts. Restoring filters on sidebar click already works, via tasksSearchFromFilters in handleTasksClick.
PR detail already lives at /tasks/pr/$prNumber, so the "compatibility redirect" criterion is about a route that doesn't exist yet.
Why I didn't write a reproduction test. A test here could only assert the desired end state — e.g. "the left rail exposes a Pull Requests destination" — which fails because the feature is unbuilt, not because of a bug. That's a feature spec, not a reproduction, and committing it as a failing test would misrepresent triage findings. Nothing in the acceptance criteria describes a behaviour that is currently broken.
Scope note for whoever implements it. This is a multi-part change, not a triage-sized fix:
A new /pull-requests route (extracting PullRequestsContent) plus its own persisted repo/state/search store, since tasks-filter-state currently keys everything off one shared object.
Splitting the sidebar item in both variants, with per-destination active state — the current single fuzzy /tasks match would light up both.
Redirects from legacy /tasks?type=prs and /tasks/pr/$prNumber URLs, including persisted store values that still hold typeTab: "prs" after upgrade (worth a migration, given version: 1 in the persist config).
Removing the now-redundant prs entry from TYPE_TABS and the showPRs branch.
Acceptance criterion 5 also requires verification in the real Electron app at wide and compact viewports, which needs a running dev stack over CDP — out of reach for this automated pass.
Happy to take a pass at the implementation if it's scoped into its own task; flagging it as a feature rather than silently opening a speculative PR.
Activity
github-actions commentedon Jul 26, 2026
Triage: no reproducible bug — this is a feature request
I picked this up in automated bug triage (reproduce with a test, fix if scoped). Stopping without a PR, because there's no defect to reproduce here: this is an enhancement/UX-restructuring proposal, and the current code behaves as designed.
What I checked. The issue's description of today's behaviour is accurate, and everything it describes is intentional:
Tasks & PRs—DashboardSidebarHeader.tsx:423(expanded) and:260(collapsed tooltip). Active state is one fuzzy match on/tasks(:103)./tasks, with the surface selected by atypesearch param (tasks/prs/issues) —tasks/layout.tsx.TYPE_TABSinTasksTopBar.tsx:52-56, branched inTasksView.tsx:260-262.searchandtypeTab—tasks-filter-state.ts. Restoring filters on sidebar click already works, viatasksSearchFromFiltersinhandleTasksClick./tasks/pr/$prNumber, so the "compatibility redirect" criterion is about a route that doesn't exist yet.Why I didn't write a reproduction test. A test here could only assert the desired end state — e.g. "the left rail exposes a Pull Requests destination" — which fails because the feature is unbuilt, not because of a bug. That's a feature spec, not a reproduction, and committing it as a failing test would misrepresent triage findings. Nothing in the acceptance criteria describes a behaviour that is currently broken.
Scope note for whoever implements it. This is a multi-part change, not a triage-sized fix:
/pull-requestsroute (extractingPullRequestsContent) plus its own persisted repo/state/search store, sincetasks-filter-statecurrently keys everything off one shared object./tasksmatch would light up both./tasks?type=prsand/tasks/pr/$prNumberURLs, including persisted store values that still holdtypeTab: "prs"after upgrade (worth a migration, givenversion: 1in the persist config).prsentry fromTYPE_TABSand theshowPRsbranch.Acceptance criterion 5 also requires verification in the real Electron app at wide and compact viewports, which needs a running dev stack over CDP — out of reach for this automated pass.
Happy to take a pass at the implementation if it's scoped into its own task; flagging it as a feature rather than silently opening a speculative PR.