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:
@@ -9,11 +9,11 @@ Requirements for this milestone. Each maps to roadmap phases.
|
|||||||
|
|
||||||
### Search & Filter
|
### Search & Filter
|
||||||
|
|
||||||
- [ ] **SRCH-01**: User can search items by name with instant filtering as they type
|
- [x] **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
|
- [x] **SRCH-02**: User can filter collection items by category via dropdown
|
||||||
- [ ] **SRCH-03**: User can combine text search with category filter simultaneously
|
- [x] **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")
|
- [x] **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-05**: User can clear all active filters with one action
|
||||||
|
|
||||||
### Weight Units
|
### Weight Units
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ Requirements for this milestone. Each maps to roadmap phases.
|
|||||||
|
|
||||||
### Planning UI
|
### 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
|
## Future Requirements
|
||||||
|
|
||||||
@@ -89,11 +89,11 @@ Which phases cover which requirements. Updated during roadmap creation.
|
|||||||
|
|
||||||
| Requirement | Phase | Status |
|
| Requirement | Phase | Status |
|
||||||
|-------------|-------|--------|
|
|-------------|-------|--------|
|
||||||
| SRCH-01 | Phase 8 | Pending |
|
| SRCH-01 | Phase 8 | Complete |
|
||||||
| SRCH-02 | Phase 8 | Pending |
|
| SRCH-02 | Phase 8 | Complete |
|
||||||
| SRCH-03 | Phase 8 | Pending |
|
| SRCH-03 | Phase 8 | Complete |
|
||||||
| SRCH-04 | Phase 8 | Pending |
|
| SRCH-04 | Phase 8 | Complete |
|
||||||
| SRCH-05 | Phase 8 | Pending |
|
| SRCH-05 | Phase 8 | Complete |
|
||||||
| UNIT-01 | Phase 7 | Complete |
|
| UNIT-01 | Phase 7 | Complete |
|
||||||
| UNIT-02 | Phase 7 | Complete |
|
| UNIT-02 | Phase 7 | Complete |
|
||||||
| UNIT-03 | 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-01 | Phase 8 | Pending |
|
||||||
| CAND-02 | Phase 8 | Pending |
|
| CAND-02 | Phase 8 | Pending |
|
||||||
| CAND-03 | Phase 8 | Pending |
|
| CAND-03 | Phase 8 | Pending |
|
||||||
| PLAN-01 | Phase 8 | Pending |
|
| PLAN-01 | Phase 8 | Complete |
|
||||||
|
|
||||||
**Coverage:**
|
**Coverage:**
|
||||||
- v1.2 requirements: 19 total
|
- v1.2 requirements: 19 total
|
||||||
|
|||||||
@@ -3,15 +3,15 @@ gsd_state_version: 1.0
|
|||||||
milestone: v1.2
|
milestone: v1.2
|
||||||
milestone_name: Collection Power-Ups
|
milestone_name: Collection Power-Ups
|
||||||
status: completed
|
status: completed
|
||||||
stopped_at: Phase 8 context gathered
|
stopped_at: Completed 08-02-PLAN.md
|
||||||
last_updated: "2026-03-16T11:52:29.181Z"
|
last_updated: "2026-03-16T13:12:05.998Z"
|
||||||
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:
|
progress:
|
||||||
total_phases: 3
|
total_phases: 3
|
||||||
completed_phases: 1
|
completed_phases: 1
|
||||||
total_plans: 2
|
total_plans: 4
|
||||||
completed_plans: 2
|
completed_plans: 3
|
||||||
percent: 100
|
percent: 75
|
||||||
---
|
---
|
||||||
|
|
||||||
# Project State
|
# Project State
|
||||||
@@ -21,16 +21,16 @@ progress:
|
|||||||
See: .planning/PROJECT.md (updated 2026-03-16)
|
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.
|
**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
|
## Current Position
|
||||||
|
|
||||||
Phase: 7 of 9 (Weight Unit Selection) -- COMPLETE
|
Phase: 8 of 9 (Search, Filter & Candidate Status) -- COMPLETE
|
||||||
Plan: 2 of 2
|
Plan: 2 of 2
|
||||||
Status: Phase Complete
|
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
|
## Accumulated Context
|
||||||
|
|
||||||
@@ -45,10 +45,14 @@ Progress: [██████████] 100%
|
|||||||
- Weight conversion precision: g=0dp, oz=1dp, lb=2dp, kg=2dp
|
- Weight conversion precision: g=0dp, oz=1dp, lb=2dp, kg=2dp
|
||||||
- useWeightUnit validates stored value against known units to protect against corrupt data
|
- 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
|
- 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
|
### Pending Todos
|
||||||
|
|
||||||
- Replace planning category filter select with icon-aware dropdown (ui) -- covered by PLAN-01 in Phase 8
|
None active.
|
||||||
|
|
||||||
### Blockers/Concerns
|
### Blockers/Concerns
|
||||||
|
|
||||||
@@ -56,6 +60,6 @@ None active.
|
|||||||
|
|
||||||
## Session Continuity
|
## Session Continuity
|
||||||
|
|
||||||
Last session: 2026-03-16T11:52:29.180Z
|
Last session: 2026-03-16T13:12:00.572Z
|
||||||
Stopped at: Phase 8 context gathered
|
Stopped at: Completed 08-02-PLAN.md
|
||||||
Resume file: .planning/phases/08-search-filter-and-candidate-status/08-CONTEXT.md
|
Resume file: None
|
||||||
|
|||||||
@@ -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*
|
||||||
Reference in New Issue
Block a user