Files
timi/CHANGELOG.md
fedora-bot 1c06983c39 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
2026-04-26 22:09:51 +03:00

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:9876 with JSON payload (name, ip, api_port, item_id, timestamp). Listeners auto-register new devices on first beacon and update last_seen for known ones.

Documentation

  • AGENTS.md updated with dashboard multiplexer instructions (start tdash window in current tmux/screen session if already inside one).

Chores

  • Added .gitignore rules for runtime artifacts (timi.conf, *.log, capture/).
  • Added timi.conf.example as documented config template.

[1.1.1] — 2025-04-25

Changed

  • Dashboard config moved from ~/.config/timi/ to repo-root timi.conf for easier version control and portability.

[1.1.0] — 2025-04-25

Added

  • Video recording supportPOST /record toggles MP4 recording with CameraX VideoCapture<Recorder>
  • GET /captures — Lists all images and videos on device with sidecar status via MediaStore query
  • GET /sidecar/<filename> — Downloads JSON sidecar for any capture (images or videos)
  • GET /video/<filename> and GET /video/last — Download specific or most recent MP4
  • GET /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 .json sidecars to ~/timi/capture
  • Dashboard controls: r/R refresh, s/S sync, w watch SSE events, a add device, d delete

Fixed

  • Removed duplicate tvQr id in activity_main.xml (lint fatal)

Architecture

  • MainActivity.kt now binds VideoCapture alongside ImageCapture in CameraX lifecycle
  • SciCamApiServer.kt extended ApiListener with getVideo(), getSidecar(), getCaptures(), record()
  • MetadataLogger.kt reused for video sidecars (EXIF fields null for video)
  • app/build.gradle adds androidx.camera:camera-video dependency 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 /events stream for live capture notifications
  • Rust dashboard (dashboard/) for multi-device monitoring and auto-sync