Skip to content

fix(desktop): make "All tasks" and "All projects" reset tasks-page filter dropdowns - #6403

Merged
Kitenite merged 1 commit into
mainfrom
fix/task-dropdown-all-tasks-all-projects
Aug 12, 2026
Merged

Kitenite merged 1 commit into
mainfrom
fix/task-dropdown-all-tasks-all-projects

Conversation

@Kitenite

@Kitenite Kitenite commented Aug 12, 2026 •

Copy link
Copy Markdown
Member

Summary

  • Selecting "All tasks" in the status dropdown or "All projects" in the Linear project dropdown on the tasks page did nothing — the filter stayed on the previous value. Same latent bug when clearing the assignee filter. Fixed by writing the filter store in the change handlers before navigating.

Why / Context

tasksSearchFromFilters deliberately omits default values from the URL (no tab param when the tab is "all", no linearProject when it's null). The view resolves the effective filter as initialTab ?? storedTab / initialLinearProject ?? storedLinearProjectFilter, so when a default was selected the URL param disappeared and the render fell back to the stale zustand-persisted value — a no-op. Every non-default option worked because the URL carried it.

How It Works

handleTabChange, handleLinearProjectFilterChange, and handleAssigneeFilterChange now write the store before navigating — the exact pattern the neighboring handlers for other omitted-when-default filters (handleProjectFiltersChange, handleIncludeClosedIssuesChange, navigateToType) already use.

Manual QA (CDP, end-to-end)

Verified against the real dev app over CDP with real mouse input, screencast-recorded, with the fix reverted (before) and applied (after) under identical steps:

Step Before fix After fix
Select "Active" ✅ works (URL ?tab=active, label updates) ✅ works
Select "All tasks" ❌ label stays "Active", store stays tab:"active" ✅ label "All tasks", URL clean, store tab:"all"
Select project "Usage-based billing" ✅ works (URL ?linearProject=…) ✅ works
Select "All projects" ❌ label stays "Usage-based billing", store keeps project id ✅ label "Project", URL clean, store null
  • Journey: fresh persisted state → sidebar "Tasks" → dropdown clicks via Input.dispatchMouseEvent; state asserted from trigger labels + location.hash + persisted store after each step.
  • console.error hooked during both runs: only a pre-existing, unrelated boot warning (DockBadgeController/DashboardSidebarWorkspaceStatusProvider setState-in-render), present before and after.
  • Video evidence (screencast recordings) attached below.

Testing

  • bun run typecheck (desktop)
  • bun run lint (Biome clean on changed file)
  • No automated test added: the bug lives in URL↔store round-trip wiring inside TasksView; covered by the recorded E2E QA above.

Summary by cubic

Fixes tasks-page filters so selecting “All tasks,” “All projects,” or clearing the assignee actually resets the filters. Previously these defaults did nothing because they were omitted from the URL and the view fell back to a stale stored value; the store now updates before navigation.

Review notes

  • Write to the filter store in TasksView.tsx before navigating: handleTabChange, handleAssigneeFilterChange, handleLinearProjectFilterChange.
  • Behavior: default selections now update labels, omit default params from the URL, and set store to tab: "all", linearProject: null, assignee: null.
  • Matches the existing pattern in handleProjectFiltersChange, handleIncludeClosedIssuesChange, and navigateToType.
  • Scope: single file, +5/−0. No migrations or API changes.

Written for commit 72bbca3. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Bug Fixes
    • Improved task filtering behavior by keeping selected tabs, assignees, and projects synchronized when navigating.
    • Default filter selections now remain consistent between the page URL and the app’s stored state.

…e filter dropdowns

Default filter values ("all" tab, null project/assignee) are omitted from
the URL by tasksSearchFromFilters, so after navigating the render fell back
to the stale zustand-persisted value and the selection was a no-op. Write
the store in the change handlers before navigating, matching the pattern
the other filter handlers already use.
@coderabbitai

coderabbitai Bot commented Aug 12, 2026 •

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: e713f330-751e-4969-a0cb-b16abd1cd15e

📥 Commits

Reviewing files that changed from the base of the PR and between bd794f3 and 72bbca3.

📒 Files selected for processing (1)
  • apps/desktop/src/renderer/routes/_authenticated/_dashboard/tasks/components/TasksView/TasksView.tsx

📝 Walkthrough

Walkthrough

Task filter handlers now update the corresponding filter-store values before navigating. This applies to tab, assignee, and Linear project filters.

Changes

Task filter synchronization

Layer / File(s) Summary
Persist filter selections before navigation
apps/desktop/.../TasksView/TasksView.tsx
Tab, assignee, and Linear project filter handlers update the filter store before replacing the task-route URL.

Estimated code review effort: 1 (Trivial) | ~3 minutes

Mergeability Score: ⚪ Minimal · up to 72bbc

This localized change makes the task-page filter dropdowns correctly reset to all tasks, all projects, or no assignee without retaining stale selections; no actionable merge-blocking risk remains after normal checks and review.

Possibly related PRs

Suggested reviewers: saddlepaddle

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed The title uses conventional commit format and clearly describes the fix for resetting task and project filters.
Description check ✅ Passed The description explains the bug, implementation, manual QA, and validation commands; only the template checklist is omitted.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/task-dropdown-all-tasks-all-projects

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@Kitenite
Kitenite merged commit 96ffbdb into main Aug 12, 2026
12 checks passed
@github-actions

Copy link
Copy Markdown
Contributor

🧹 Preview Cleanup Complete

The following preview resources have been cleaned up:

  • ⚠️ Neon database branch

Thank you for your contribution! 🎉

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant