Task: Filter and search scans in the history view (Task #32).
What changed:
- artifacts/skillguard/src/pages/scan-history.tsx now has a client-side
search box that matches scan name and description text (case-insensitive),
plus two multi-select toggle-group filters: Bewertung (verdict:
pass/review/block) and Quelle (source: zip/file/text).
- Filtering is computed via useMemo over the existing useListScans() result.
- Added a results counter ("X von Y Scans") and a "Filter zurücksetzen"
button shown when any filter/search is active.
- Added a dedicated empty-filter-result state ("Keine Treffer") with a
reset action, distinct from the existing "no scans yet" empty state.
- Search input has a clear (X) button.
Notes / deviations:
- No backend changes; description/verdict/source already come from the API.
- Rebuilt lib/api-client-react declarations (tsc -b) because the dist
*.d.ts in this isolated env were stale and lacked description/relation
fields (pre-existing issue, documented in memory). tsc on scan-history
is now clean.
- Verified visually: search bar, verdict and source filters render and the
list populates from the running API server.
Replit-Task-Id: 67d3a8ce-f780-4b21-97b4-4767ced763c4