docs(08-02): complete search/filter toolbar and category dropdown plan

- SUMMARY.md with task commits and execution metrics
- STATE.md updated with position, decisions, session info
- ROADMAP.md updated with phase 08 progress
- REQUIREMENTS.md: SRCH-01 through SRCH-05, PLAN-01 marked complete
This commit is contained in:
2026-03-16 14:12:13 +01:00
parent 25956ed3ee
commit 0bbf25ff39
3 changed files with 131 additions and 26 deletions

View File

@@ -9,11 +9,11 @@ Requirements for this milestone. Each maps to roadmap phases.
### Search & Filter
- [ ] **SRCH-01**: User can search items by name with instant filtering as they type
- [ ] **SRCH-02**: User can filter collection items by category via dropdown
- [ ] **SRCH-03**: User can combine text search with category filter simultaneously
- [ ] **SRCH-04**: User can see result count when filters are active (e.g., "showing 12 of 47 items")
- [ ] **SRCH-05**: User can clear all active filters with one action
- [x] **SRCH-01**: User can search items by name with instant filtering as they type
- [x] **SRCH-02**: User can filter collection items by category via dropdown
- [x] **SRCH-03**: User can combine text search with category filter simultaneously
- [x] **SRCH-04**: User can see result count when filters are active (e.g., "showing 12 of 47 items")
- [x] **SRCH-05**: User can clear all active filters with one action
### Weight Units
@@ -42,7 +42,7 @@ Requirements for this milestone. Each maps to roadmap phases.
### Planning UI
- [ ] **PLAN-01**: Planning category filter dropdown shows Lucide icons alongside category names
- [x] **PLAN-01**: Planning category filter dropdown shows Lucide icons alongside category names
## Future Requirements
@@ -89,11 +89,11 @@ Which phases cover which requirements. Updated during roadmap creation.
| Requirement | Phase | Status |
|-------------|-------|--------|
| SRCH-01 | Phase 8 | Pending |
| SRCH-02 | Phase 8 | Pending |
| SRCH-03 | Phase 8 | Pending |
| SRCH-04 | Phase 8 | Pending |
| SRCH-05 | Phase 8 | Pending |
| SRCH-01 | Phase 8 | Complete |
| SRCH-02 | Phase 8 | Complete |
| SRCH-03 | Phase 8 | Complete |
| SRCH-04 | Phase 8 | Complete |
| SRCH-05 | Phase 8 | Complete |
| UNIT-01 | Phase 7 | Complete |
| UNIT-02 | Phase 7 | Complete |
| UNIT-03 | Phase 7 | Complete |
@@ -107,7 +107,7 @@ Which phases cover which requirements. Updated during roadmap creation.
| CAND-01 | Phase 8 | Pending |
| CAND-02 | Phase 8 | Pending |
| CAND-03 | Phase 8 | Pending |
| PLAN-01 | Phase 8 | Pending |
| PLAN-01 | Phase 8 | Complete |
**Coverage:**
- v1.2 requirements: 19 total

View File

@@ -3,15 +3,15 @@ gsd_state_version: 1.0
milestone: v1.2
milestone_name: Collection Power-Ups
status: completed
stopped_at: Phase 8 context gathered
last_updated: "2026-03-16T11:52:29.181Z"
last_activity: 2026-03-16 -- Completed 07-02 weight unit UI wiring (toggle + all call sites)
stopped_at: Completed 08-02-PLAN.md
last_updated: "2026-03-16T13:12:05.998Z"
last_activity: 2026-03-16 -- Completed 08-02 search/filter toolbar and category dropdown
progress:
total_phases: 3
completed_phases: 1
total_plans: 2
completed_plans: 2
percent: 100
total_plans: 4
completed_plans: 3
percent: 75
---
# Project State
@@ -21,16 +21,16 @@ progress:
See: .planning/PROJECT.md (updated 2026-03-16)
**Core value:** Make it effortless to manage gear and plan new purchases -- see how a potential buy affects your total setup weight and cost before committing.
**Current focus:** Phase 7 complete -- ready for Phase 8
**Current focus:** Phase 8 complete -- search/filter and candidate status done
## Current Position
Phase: 7 of 9 (Weight Unit Selection) -- COMPLETE
Phase: 8 of 9 (Search, Filter & Candidate Status) -- COMPLETE
Plan: 2 of 2
Status: Phase Complete
Last activity: 2026-03-16 -- Completed 07-02 weight unit UI wiring (toggle + all call sites)
Last activity: 2026-03-16 -- Completed 08-02 search/filter toolbar and category dropdown
Progress: [██████████] 100%
Progress: [████████░░] 75%
## Accumulated Context
@@ -45,10 +45,14 @@ Progress: [██████████] 100%
- Weight conversion precision: g=0dp, oz=1dp, lb=2dp, kg=2dp
- useWeightUnit validates stored value against known units to protect against corrupt data
- Unit toggle placed between title and stats in TotalsBar for subtle utility placement
- CategoryFilterDropdown kept separate from CategoryPicker (filter vs form concerns)
- No debounce on search input (collection under 1000 items)
- Individual clear controls for search and category filter (no combined clear-all)
- [Phase 08]: CategoryFilterDropdown kept separate from CategoryPicker (filter vs form concerns)
### Pending Todos
- Replace planning category filter select with icon-aware dropdown (ui) -- covered by PLAN-01 in Phase 8
None active.
### Blockers/Concerns
@@ -56,6 +60,6 @@ None active.
## Session Continuity
Last session: 2026-03-16T11:52:29.180Z
Stopped at: Phase 8 context gathered
Resume file: .planning/phases/08-search-filter-and-candidate-status/08-CONTEXT.md
Last session: 2026-03-16T13:12:00.572Z
Stopped at: Completed 08-02-PLAN.md
Resume file: None

View File

@@ -0,0 +1,101 @@
---
phase: 08-search-filter-and-candidate-status
plan: 02
subsystem: ui
tags: [react, search, filter, dropdown, lucide-icons, useMemo]
# Dependency graph
requires:
- phase: 06-category-system-and-ui-redesign
provides: CategoryPicker pattern, LucideIcon component, useCategories hook
provides:
- CategoryFilterDropdown reusable component with icon-aware searchable dropdown
- Search/filter toolbar on gear tab with text search and category filtering
- Upgraded planning tab category filter with Lucide icons
affects: []
# Tech tracking
tech-stack:
added: []
patterns:
- "CategoryFilterDropdown: filter-only dropdown separate from form-based CategoryPicker"
- "useMemo filter chain for combining text search + category filter"
- "Conditional rendering: flat grid (no category headers) when filters active"
key-files:
created:
- src/client/components/CategoryFilterDropdown.tsx
modified:
- src/client/routes/collection/index.tsx
key-decisions:
- "Kept CategoryFilterDropdown separate from CategoryPicker (filter vs form concerns)"
- "No debounce on search input (collection under 1000 items)"
- "Individual clear controls (no combined clear-all button)"
patterns-established:
- "CategoryFilterDropdown: reusable filter dropdown with icons, search, click-outside dismiss"
- "Flat grid rendering when filters active to avoid confusing partial category headers"
requirements-completed: [SRCH-01, SRCH-02, SRCH-03, SRCH-04, SRCH-05, PLAN-01]
# Metrics
duration: 3min
completed: 2026-03-16
---
# Phase 8 Plan 2: Search/Filter Toolbar and Category Dropdown Summary
**Sticky search/filter toolbar on gear tab with text+category filtering, and shared icon-aware CategoryFilterDropdown on both gear and planning tabs**
## Performance
- **Duration:** 3 min
- **Started:** 2026-03-16T13:06:49Z
- **Completed:** 2026-03-16T13:10:03Z
- **Tasks:** 2
- **Files modified:** 2
## Accomplishments
- Created CategoryFilterDropdown component with searchable dropdown, Lucide icons per option, "All categories" default, click-outside/Escape dismiss, and clear button
- Added sticky search/filter toolbar to CollectionView with text search input and CategoryFilterDropdown side by side
- useMemo filter chain combines text search (by name) with category filter for instant results
- "Showing X of Y items" count appears when filters active; flat grid (no category headers) when filtering
- Replaced PlanningView native `<select>` with shared CategoryFilterDropdown showing Lucide icons
## Task Commits
Each task was committed atomically:
1. **Task 1: Create CategoryFilterDropdown component** - `9e1a875` (feat)
2. **Task 2: Add search/filter toolbar to CollectionView and replace select in PlanningView** - `5f89acd` (feat)
## Files Created/Modified
- `src/client/components/CategoryFilterDropdown.tsx` - Searchable category filter dropdown with Lucide icons, click-outside dismiss, Escape key, clear button
- `src/client/routes/collection/index.tsx` - Search/filter toolbar in CollectionView, CategoryFilterDropdown replacing native select in PlanningView
## Decisions Made
- Kept CategoryFilterDropdown separate from CategoryPicker (filter concerns vs form/creation concerns, per user decision)
- No debounce on search -- collection stays under 1000 items per CONTEXT.md
- Individual clear controls for search text and category dropdown (no combined clear-all button)
## Deviations from Plan
None - plan executed exactly as written.
## Issues Encountered
None
## User Setup Required
None - no external service configuration required.
## Next Phase Readiness
- Search and filter infrastructure complete for gear tab
- CategoryFilterDropdown available as shared component for any future filter needs
- Planning tab upgraded from native select to icon-aware dropdown
- Ready for remaining Phase 8 work or next phase
---
*Phase: 08-search-filter-and-candidate-status*
*Completed: 2026-03-16*