Skip to content

Add filter groups to home screen filter UI #343

Description

@jennings

Replace the current always-visible list of filter toggles with a filter group model: named, savable bundles of repos + PR types the user can switch between.

Motivation

Today users configure repos and PR types once, and can only toggle individual filters on/off. Users who monitor different sets of PRs at different times have no way to save and switch between configurations.

Design summary

  • A filter group is a named collection of repo filters + state filter (open/closed/all). Persisted in localStorage.
  • On first load, existing filter config migrates into a single group named "Default".
  • When there is only one group, the UI looks identical to today — no dropdown, no group management chrome.
  • Once a second group is created (via Save new), a dropdown selector appears above the filter panel. Groups sorted alphabetically case-insensitive.
  • Dirty state (structural change OR enabled toggle) surfaces Save and Save new buttons. Dirty state lives in React memory only — persists across in-app navigation, lost on refresh.
  • Save updates the current group in localStorage.
  • Save new replaces the buttons with an inline name input (Enter confirm, Escape cancel). Unique-case-insensitive + trimmed. On confirm, creates a new group and switches to it — dropdown appears at that moment.
  • Switching groups while dirty silently discards the pending edits.
  • Delete via a trash/kebab affordance on hover of a dropdown row, with a confirm dialog. If the active group is deleted, fall back to the alphabetically-first remaining group. When only one group remains, the dropdown hides — so the last group is structurally undeletable.
  • Renaming is out of scope. Users delete + Save-new to rename.

Planned sub-tasks

  1. Refactor filter storage into named groups + migrate existing config.
  2. Add group selector dropdown, Save/Save-new buttons, dirty tracking, switching.
  3. Add delete affordance with fallback selection.
  4. Move state/updated/stalled filters and the group selector onto the results count row (Move state/updated/stalled filters and group selector onto the results count row #348).

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Default priority

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions