The web UI was referencing stale field names that didn't match the
actual API response fields returned by the backend:
event.status -> event.match_status
event.identified_as -> event.matched_object_name
event.description -> event.ai_description
event.timestamp -> event.created_at
stats.known -> stats.known_matches
stats.unknown -> stats.unknown_events
stats.known_objects -> stats.known_objects_count
This caused the review queue to display blank badges, timestamps,
descriptions, and identifications, and the dashboard stats to show
all zeros.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Vanilla HTML/CSS/JS SPA served at :5199 with dark theme:
- Dashboard: live event feed with snapshot thumbnails, filters, auto-refresh
- Review Queue: unreviewed events with tag/dismiss actions
- Known Objects: grid of tagged identities with delete
- Settings: vision backend toggle, recognition enable, retention days
- Tag modal: assign events to existing or new known objects
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>