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
2.4 KiB
2.4 KiB
SciCam Logger Changelog
[1.2.0] — 2026-04-25
Added
- UDP multicast auto-discovery — Devices broadcast beacons every 5 s to
239.255.0.1:9876with JSON payload (name,ip,api_port,item_id,timestamp). Listeners auto-register new devices on first beacon and updatelast_seenfor known ones.
Documentation
AGENTS.mdupdated with dashboard multiplexer instructions (starttdashwindow in current tmux/screen session if already inside one).
Chores
- Added
.gitignorerules for runtime artifacts (timi.conf,*.log,capture/). - Added
timi.conf.exampleas documented config template.
[1.1.1] — 2025-04-25
Changed
- Dashboard config moved from
~/.config/timi/to repo-roottimi.conffor easier version control and portability.
[1.1.0] — 2025-04-25
Added
- Video recording support —
POST /recordtoggles MP4 recording with CameraXVideoCapture<Recorder> GET /captures— Lists all images and videos on device with sidecar status via MediaStore queryGET /sidecar/<filename>— Downloads JSON sidecar for any capture (images or videos)GET /video/<filename>andGET /video/last— Download specific or most recent MP4GET /photo/<filename>endpoint parity improved with consistent filename handling- Dashboard auto-sync — New Rust TUI (
dashboard/) monitors multiple SciCam devices over WiFi and one-way mirrors.jpg,.mp4, and.jsonsidecars to~/timi/capture - Dashboard controls:
r/Rrefresh,s/Ssync,wwatch SSE events,aadd device,ddelete
Fixed
- Removed duplicate
tvQrid inactivity_main.xml(lint fatal)
Architecture
MainActivity.ktnow bindsVideoCapturealongsideImageCapturein CameraX lifecycleSciCamApiServer.ktextendedApiListenerwithgetVideo(),getSidecar(),getCaptures(),record()MetadataLogger.ktreused for video sidecars (EXIF fields null for video)app/build.gradleaddsandroidx.camera:camera-videodependency and release signing config
[1.0.0] — 2025-04-25
Features
- Photo capture with CameraX MediaStore storage (
Pictures/SciCam) - JSON sidecar generation with EXIF +
camera_settings(Documents/SciCam) - NanoHTTPD REST API on port 8080
- QR auto-capture via BoofCV in-preview detection
- SSE
/eventsstream for live capture notifications - Rust dashboard (
dashboard/) for multi-device monitoring and auto-sync