Commit graph

3 commits

Author SHA1 Message Date
9daf638c49 Document source_pick, the row that says why a source won
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 21:58:18 +02:00
8d3cefa3f5 Telemetry contract: the real session_summary shape, and the duplicate warning
The documented meta was the THIN row -- the leftover second writer that
amber-app just removed. It also never said that watchedS (elapsed watch
clock) and positionS (where playback reached) are different numbers, which
is exactly the distinction that made a never-started session readable.

Records that aggregates over rows before 2026-08-07 double-count Android
sessions, and gives the filter that excludes them.
2026-08-07 12:40:49 +02:00
418f566603 Add client_logs collection for background device diagnostics (feedback 2 §4)
The family runs Amber on hardware I can't debug directly, so the app batches
a low-volume diagnostic stream here: uncaught errors, player error codes,
per-session playback summaries, and the audio-delay a user dials in to fix
desync (the "a track falls behind" signal).

- Migration 1788000000_client_logs.js: owner-create-only, superuser-read-only
  (list/view/update/delete = null); fields kind/event/message/meta/appVersion/
  platform/device/ts + created.
- client_logs.pb.js: nightly cron trims rows older than 14 days.
- docs/telemetry-contract.md: event catalogue, how I query it, and the
  privacy/redaction guarantees (host-only, never a token or full URL).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 11:49:04 +02:00