-
Notifications
You must be signed in to change notification settings - Fork 3
Add search and filter controls to tasks page (TF-1) #248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Add search and filter controls to tasks page (TF-1) #248
Conversation
Co-authored-by: BitoviAI <[email protected]>
Co-authored-by: BitoviAI <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR implements client-side search and filter functionality for the tasks page, allowing users to filter tasks by status, priority, and search by name/description. The implementation uses controlled components and React hooks for efficient state management.
Key Changes:
- Introduced
TasksSearchFiltercomponent with search input and dropdown filters for status and priority - Created
TasksPageClientwrapper component to manage filter state and apply filtering logic usinguseMemo - Integrated the new components into the tasks page, replacing direct
TaskListusage
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
components/tasks-search-filter.tsx |
New component providing search input with clear button and filter dropdown UI for status and priority selection |
components/tasks-page-client.tsx |
Client component that manages filter state and applies search/filter logic to tasks with optimized re-renders |
app/(dashboard)/tasks/page.tsx |
Updated to use TasksPageClient wrapper instead of direct TaskList rendering, removed unused imports |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| const [filters, setFilters] = useState<FilterOptions>({ | ||
| statuses: ["todo", "in_progress", "review", "done"], | ||
| priorities: ["high", "medium", "low"], | ||
| }) |
Copilot
AI
Nov 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[nitpick] The initial filter values are hardcoded here and duplicated from STATUS_OPTIONS and PRIORITY_OPTIONS in tasks-search-filter.tsx. Consider deriving these values from the constants to ensure consistency:
import { TasksSearchFilter, type FilterOptions } from "@/components/tasks-search-filter"
// At the top of the file after imports, export the constants from tasks-search-filter
// or define them in a shared location
const [filters, setFilters] = useState<FilterOptions>({
statuses: STATUS_OPTIONS.map(o => o.value),
priorities: PRIORITY_OPTIONS.map(o => o.value),
})This ensures that if the filter options change, the defaults automatically stay in sync.
Implements search and filter functionality for the
/taskspage per TF-1 requirements.Changes
New Components
components/tasks-search-filter.tsx- Search input with clear button and filter dropdowncomponents/tasks-page-client.tsx- Client component managing filter state withuseMemofor optimized re-rendersModified
app/(dashboard)/tasks/page.tsx- Replaced direct TaskList usage with TasksPageClient wrapperImplementation
Client-side filtering for instant UX. Search operates on task name and description with null-safe handling:
Empty state displays "No tasks match the current search and filter criteria" when no results found.
Screenshots
Search and filter UI:

Filter dropdown with status and priority sections:

Search filtering in action:

Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.