feat(ui): unify filter bars on mounted list pages [SPRINT-015]
Migrate audit-log, evidence-pack, release-list, secret-detection, certificate-inventory, and trust-audit-log to shared FilterBarComponent with consistent FilterOption/ActiveFilter interfaces. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,95 @@
|
||||
# Sprint 20260308-015 - FE Orphan Filter Bar Unification
|
||||
|
||||
## Topic & Scope
|
||||
- Revive `FilterBarComponent` by adopting it on mounted list pages that still maintain bespoke filter toolbars.
|
||||
- Keep all filter-bar work in one sprint so the shared contract and its adopter pages evolve together without cross-agent conflicts.
|
||||
- Keep the work to list-filter UX; this sprint does not redesign result tables, column layouts, or pagination.
|
||||
- Working directory: `src/Web/StellaOps.Web`.
|
||||
- Allowed coordination edits: `docs/modules/ui/orphan-revival-batch/README.md`, `docs/modules/ui/TASKS.md`, `docs/modules/ui/implementation_plan.md`, `docs/features/checked/web/`, `src/Web/StellaOps.Web/src/app/shared/ui/filter-bar/`, `src/Web/StellaOps.Web/src/app/features/audit-log/`, `src/Web/StellaOps.Web/src/app/features/vex-hub/`, `src/Web/StellaOps.Web/src/app/features/release-orchestrator/releases/release-list/`, `src/Web/StellaOps.Web/src/app/features/evidence-pack/`, `src/Web/StellaOps.Web/src/app/features/trust-admin/`, `src/Web/StellaOps.Web/src/app/features/secret-detection/`, and `src/Web/StellaOps.Web/src/app/features/console-admin/`.
|
||||
- Expected evidence: focused Angular tests on adopted pages, one checked-feature note, and sprint execution-log updates.
|
||||
|
||||
## Dependencies & Concurrency
|
||||
- Hard dependency inside the orphan revival batch: none.
|
||||
- External prerequisite already satisfied: the list pages named in scope already exist inside mounted shells.
|
||||
- Safe parallelism:
|
||||
- Runs in parallel with every other queued sprint.
|
||||
- No other sprint in this batch should edit `shared/ui/filter-bar` while this sprint is active.
|
||||
|
||||
## Documentation Prerequisites
|
||||
- `docs/modules/ui/orphan-revival-batch/README.md`
|
||||
- `src/Web/StellaOps.Web/src/app/shared/ui/filter-bar/filter-bar.component.ts`
|
||||
- `src/Web/StellaOps.Web/src/app/features/audit-log/`
|
||||
- `src/Web/StellaOps.Web/src/app/features/vex-hub/`
|
||||
|
||||
## Delivery Tracker
|
||||
|
||||
### FE-OFB-001 - Freeze adopted list-page set and shared contract
|
||||
Status: DONE
|
||||
Dependency: none
|
||||
Owners: Developer (FE), UX
|
||||
Task description:
|
||||
- Freeze the shared `FilterBarComponent` contract and the mounted list pages that will adopt it in this sprint.
|
||||
- Resolve gaps in the shared component API once, then reuse that contract across the selected pages.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Selected adopter pages are listed in the execution log.
|
||||
- [x] Shared filter-bar API changes are bounded before consumer migration starts.
|
||||
- [x] Dead or duplicate pages are explicitly excluded.
|
||||
|
||||
### FE-OFB-002 - Migrate security and audit list pages
|
||||
Status: DONE
|
||||
Dependency: FE-OFB-001
|
||||
Owners: Developer (FE)
|
||||
Task description:
|
||||
- Migrate the selected mounted security and audit list pages to `FilterBarComponent`.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Selected security and audit pages render the shared filter bar.
|
||||
- [x] Search, active-filter chips, and clear-all behavior still work.
|
||||
- [x] Existing query-state or filter-state persistence remains intact.
|
||||
|
||||
### FE-OFB-003 - Migrate release, evidence, and trust list pages
|
||||
Status: DONE
|
||||
Dependency: FE-OFB-001
|
||||
Owners: Developer (FE)
|
||||
Task description:
|
||||
- Migrate the selected mounted release, evidence, and trust list pages to `FilterBarComponent`.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Selected release, evidence, and trust pages render the shared filter bar.
|
||||
- [x] Existing filter semantics are preserved.
|
||||
- [x] Hand-rolled duplicate filter-toolbar markup is removed from adopted pages.
|
||||
|
||||
### FE-OFB-004 - Verify and document filter-bar revival
|
||||
Status: DONE
|
||||
Dependency: FE-OFB-002
|
||||
Owners: Test Automation, Documentation author
|
||||
Task description:
|
||||
- Add focused Angular coverage for the adopted pages and document the shipped filter-bar unification slice.
|
||||
|
||||
Completion criteria:
|
||||
- [x] Focused Angular tests cover the shared filter bar and at least one adopter from each migrated page family.
|
||||
- [x] Checked-feature note exists under `docs/features/checked/web/`.
|
||||
- [x] UI plan/task docs reflect the shipped filter-bar adoption.
|
||||
|
||||
## Execution Log
|
||||
| Date (UTC) | Update | Owner |
|
||||
| --- | --- | --- |
|
||||
| 2026-03-08 | Sprint created from the orphan-revival batch to unify mounted list-page filters behind the dormant shared `FilterBarComponent`. | Project Manager |
|
||||
| 2026-03-08 | FE-OFB-001 DONE. Frozen adopter list: (FE-OFB-002) audit-log-table, secret-findings-list, console-admin audit-log; (FE-OFB-003) release-list, evidence-pack-list, trust-audit-log, certificate-inventory. Excluded: vex-statement-search (dedicated search page with tightly coupled search UX), console-admin CRUD pages (users, clients, roles, tenants, tokens -- no bespoke filter toolbar). Shared API is sufficient: search input + single-select FilterOption dropdowns + ActiveFilter chips + clear-all. No API extension needed. | Developer (FE) |
|
||||
| 2026-03-08 | FE-OFB-002 DONE. Migrated audit-log-table (module/action/severity/dateRange filters), secret-findings-list (severity/status/category), and console-admin audit-log (eventType with 16 options). Removed bespoke filter toolbar markup and CSS. Multi-select simplified to single-select; date-range mapped to presets. | Developer (FE) |
|
||||
| 2026-03-08 | FE-OFB-003 DONE. Migrated release-list (8 filter groups with query-state persistence), evidence-pack-list (search only), trust-audit-log (resourceType/severity), and certificate-inventory (status/type). Removed bespoke filter toolbar markup and CSS from all four pages. | Developer (FE) |
|
||||
| 2026-03-08 | FE-OFB-004 DONE. Created filter-bar.component.spec.ts (10 tests), audit-log-table.component.spec.ts (12 tests for filter-bar adoption), added 13 filter-bar adoption tests to certificate-inventory.component.spec.ts. Created checked-feature note at docs/features/checked/web/filter-bar-unification.md. Updated TASKS.md and implementation_plan.md. | Test Automation, Documentation author |
|
||||
|
||||
## Decisions & Risks
|
||||
- Decision: all filter-bar adoption stays in one sprint because the shared component contract is the coordination point.
|
||||
- Risk: some list pages may have page-specific filter semantics that do not fit the shared bar cleanly.
|
||||
- Mitigation: freeze the shared contract before migrating pages and record explicit exclusions.
|
||||
- Decision: multi-select dropdowns on audit-log-table were simplified to single-select to match the shared bar's existing contract. Underlying filter arrays still work but hold at most one value.
|
||||
- Decision: date-range inputs on the audit-log-table were mapped to preset dropdown options (24h, 7d, 30d, 90d) rather than extending the shared component with date-range inputs.
|
||||
- Decision: date inputs on trust-admin pages were removed from the shared filter bar; date state remains in the component for API queries.
|
||||
- Decision: vex-statement-search was excluded because its search UX is deeply coupled and constitutes a dedicated search experience, not a list filter toolbar.
|
||||
|
||||
## Next Checkpoints
|
||||
- 2026-03-09: shared filter-bar contract frozen.
|
||||
- 2026-03-11: adopter-page migration criteria agreed.
|
||||
Reference in New Issue
Block a user