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>
Hourly background task deletes events older than configured
retention period (default 90 days). Reads event_retention_days
from settings table. Includes 2 tests.
Co-Authored-By: Claude Opus 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>
- Recognition pipeline runs between snapshot fetch and notification
- Checks recognition_enabled setting before running CLIP matching
- Known objects with quiet/suppress action skip Matrix notifications
- Vision description uses configurable backend (haiku/ollama/both)
- docker-compose.yml adds CLIP/Ollama env vars and data volume
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
FastAPI service that loads ViT-L-14 model and exposes /embed,
/similarity, and /batch-similarity endpoints. Runs on RTX 3090
with NVIDIA GPU reservation. Includes 9 cosine similarity tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Routes package with CRUD endpoints: event listing/filtering/tagging/dismissal,
known object management with thumbnails, settings CRUD, and stats.
64 tests passing.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Migrate from raw HTTPServer to FastAPI, add SQLite database with schema
for known objects, embeddings, events, and settings. Add centralized
config, Pydantic models, and 22 database integration tests.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>