diff --git a/.planning/REQUIREMENTS.md b/.planning/REQUIREMENTS.md index b796343..4736cbb 100644 --- a/.planning/REQUIREMENTS.md +++ b/.planning/REQUIREMENTS.md @@ -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 diff --git a/.planning/STATE.md b/.planning/STATE.md index d9d8c9b..1fdb353 100644 --- a/.planning/STATE.md +++ b/.planning/STATE.md @@ -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 diff --git a/.planning/phases/08-search-filter-and-candidate-status/08-02-SUMMARY.md b/.planning/phases/08-search-filter-and-candidate-status/08-02-SUMMARY.md new file mode 100644 index 0000000..3841cd9 --- /dev/null +++ b/.planning/phases/08-search-filter-and-candidate-status/08-02-SUMMARY.md @@ -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 `