feat: unified sidecar schema v1.5 across Android and GoPro
BREAKING: rename item_id to qr_item_id everywhere (API, beacons, dashboard,
GoPro web UI, clients). Pre-production unified schema.
Sidecar schema (version 1.5):
- Add capture_id (UUID per capture)
- Add source (scicam-android / gopro)
- Add device_name and device_id (ANDROID_ID on Android, persisted UUID on GoPro)
- Add camera_file (original camera filename)
- ISO 8601 UTC timestamps
- Expanded camera_settings baseline: iso, exposure_time, aperture,
focal_length, lens_mode, cx, fx, ae_locked, awb_locked (null if unknown)
Android (scicam/):
- MetadataLogger emits v1.5 sidecars with all new fields
- MainActivity generates capture_id, isoTimestamp, reads ANDROID_ID
- PresenceBeacon broadcasts qr_item_id, device_name, device_id
- API /status and /settings use qr_item_id
GoPro (clients/gopro-scicam/):
- _fetch_camera_state_settings returns lens_mode, cx, fx
- Sidecar generation uses v1.5 schema
- API and beacon updated for qr_item_id, device fields
- Persistent _DEVICE_UUID for device_id
Dashboard (dashboard/):
- DeviceStatus, discovery beacon, UI updated for qr_item_id
- Display device_name and device_id in detail panel
Docs:
- api_spec.yaml: Sidecar schema added, State schema updated
- AGENTS.md: Unified sidecar schema documented, beacon payload updated
- CHANGELOG.md: reference updated
Cleanup:
- Remove unused clients/go-scicam and clients/web-scicam
- Update .gitmodules accordingly