amber-backend/pb_public
Claude 48a88e6936 Dashboard: error history, and which publish owns it
GET /api/status/errors plus a panel: 14 daily bars (records vs errors), then
breakdowns by version, platform and flavour.

**Rate, not raw count, is what attributes errors to a publish.** Versions have
wildly different exposure -- right now 1.1.4+13 has 177 records to 1.1.5+14's 20 --
so raw counts would make whichever build the family used most look worst. Every
row carries total, errors and errors/total, coloured on the rate.

**Flavour is not recorded yet and the panel says so.** TelemetryService sends
appVersion, platform and device, but nothing carries clean-vs-adult. The endpoint
reads a top-level  field and then meta.flavor, so the day the app starts
sending it this fills in with no backend change; until then the row reads
'neznámá' with a note explaining why. No app change was made here -- that is left
noted, per the owner.

The window is 14 days because that is the retention ceiling: client_logs.pb.js
trims nightly, so nothing older exists to graph. Every day is pre-seeded so a
missing bar and a zero bar cannot look alike.

Inline SVG rather than a charting library -- this page is served by PocketBase with
no build step, and 14 bars do not justify a dependency. Validated on a clean local
boot: 14 bars, correct axis labels, no crash on empty data.
2026-08-05 21:34:42 +02:00
..
index.html Family onboarding site: invite-gated signup, template config, /get/tv 2026-07-22 18:23:05 +02:00
onboarding.html Family onboarding site: invite-gated signup, template config, /get/tv 2026-07-22 18:23:05 +02:00
settings.html Add /settings web editor for the encrypted addon config 2026-07-23 18:20:24 +02:00
status.html Dashboard: error history, and which publish owns it 2026-08-05 21:34:42 +02:00