-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
adr-019ADR-019: Unified Workspace Filtering & Aggregate MetricsADR-019: Unified Workspace Filtering & Aggregate MetricstrackingTracking/meta issueTracking/meta issue
Description
Summary
Tracking issue for ADR-019 implementation. Introduces shared device + mode filters between Signal Flow and Events panels, collapsible filter panes, link/unlink toggle, reusable filter components, aggregate metrics store for compact mode, and unmapped event tagging.
ADR: ADR-019-unified-workspace-filtering-and-aggregate-metrics.md
Mockups: signal-flow-v3-mockups.html (tabs S3, S4, Combined)
Total Estimate: 27–37 hours across 7 phases
Decisions
| # | Decision | Status |
|---|---|---|
| D1 | Three-Tier Filter Architecture (shared / panel-local / view-specific) | 🔲 |
| D2 | Link/Unlink Toggle with visual indicator | 🔲 |
| D3 | Collapsible Unified Filter Pane | 🔲 |
| D4 | Promote DeviceStatusPills to shared filter widget | 🔲 |
| D5 | Mode Filter — new shared control | 🔲 |
| D6 | Extract TypeFilterChips reusable component | 🔲 |
| D7 | Remove eventDeviceFilter store (breaking change) | 🔲 |
| D8 | Aggregate Metrics Store (signalFlowMetrics.js) | 🔲 |
| D9 | Signal Flow consumes signalPulseStore directly | 🔲 |
| D10 | Unmapped Events — filter chip in Signal Flow | 🔲 |
| D11 | Keyboard Shortcuts (F, Shift+F, D, L, 0–9) | 🔲 |
| D12 | Events Sidebar — mode indicator + unmapped tagging | 🔲 |
Phase Breakdown
Phase 1: Shared Filter Store & Migration (6–8h)
- 1A: Create
workspaceFilters.jsshared filter store → D1, D2 - 1B: Migrate DeviceStatusPills to
activeDeviceFilterwith multi-select → D4, D7 - 1C: Migrate
filteredEventsto Set-based device filter, removeeventDeviceFilter→ D7
Phase 2: Collapsible Filter Panes (4–6h)
- 2A:
FilterSummaryBarcomponent + collapse state persistence → D3 - 2B: Wire collapsible panes in Events + Signal Flow → D3, D11
Phase 3: Link/Unlink Toggle (3–4h)
- 3A:
LinkTogglecomponent + link/unlink state machine → D2, D11
Phase 4: Type Filter Component & Mode Filter (4–5h)
- 4A: Extract
TypeFilterChipsreusable component → D6, D10 - 4B: Shared mode filter with live/pinned indicator → D5, D12.1
Phase 5: Aggregate Metrics Store (4–6h)
- 5A: Create
signalFlowMetrics.jsderived store → D8, D9 - 5B: Wire compact mode UI to
deviceMetrics→ D8
Phase 6: Events Sidebar Enhancements (3–4h)
- 6A: Unmapped event tagging in Events stream → D12.2
Phase 7: Integration Testing (3–4h)
- 7A: Integration tests + regression verification → All
Dependency Graph
1A ──→ 1B ──→ 1C
│ │
├──→ 2A ──→ 2B
│
├──→ 3A
│
├──→ 4A
├──→ 4B
│
├──→ 5A ──→ 5B
│
└──→ 6A (also depends on 1C, 4B)
↓
7A (depends on all)
Phases 2 and 3 can run in parallel after Phase 1.
Phases 4 and 5 can run in parallel.
Phase 6 depends on Phase 1 and Phase 4.
External Dependencies
- ADR-015 Phase 2 (Signal Pulse):
signalPulseStorefor runtime metrics in compact mode. Without it, Phase 5 shows structural metrics only (graceful degradation). - ADR-014 (Mapping Feedback):
mappingFireState/mappingFireCount— unchanged, consumed by Signal Flow expanded view. - ADR-017 (Unified Mapping):
+ MapCTA on unmapped rows opens MappingEditor.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
adr-019ADR-019: Unified Workspace Filtering & Aggregate MetricsADR-019: Unified Workspace Filtering & Aggregate MetricstrackingTracking/meta issueTracking/meta issue