mirror of
https://github.com/l5yth/potato-mesh.git
synced 2026-05-01 02:52:41 +02:00
* feat: split device and power-sensor telemetry charts (#643) Add telemetry_type TEXT discriminator column across the full stack so device_metrics rows no longer mix with power_metrics in the same chart. Python and Ruby ingestors detect the protobuf subtype at write time; classifySnapshot() provides field-presence fallback for legacy rows. 'Power metrics' chart split into 'Device health' and 'Power sensor'. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix: skip typeFilter for aggregated telemetry; add air_quality coverage - renderTelemetryChart now skips spec.typeFilter when chartOptions.isAggregated is true, preventing mixed-bucket aggregated snapshots from losing series data - renderTelemetryCharts detects the aggregated vs per-packet path and sets isAggregated accordingly; typeFilter still applies for per-packet history - JS tests: extract makeAggregatedNode/makeHistoryNode helpers to eliminate fixture duplication; add aggregated-mixed-bucket regression test; move type-separation tests onto the history path where filtering actually applies - Ruby + Python: add air_quality_metrics telemetry_type tests for coverage Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * refactor: reduce test duplication flagged by Sonar Hoist CHART_NOW_MS/CHART_NOW_SECONDS constants to eliminate 14 repeated setup lines across renderTelemetryCharts tests. Extract expect_stored_telemetry_type helper in app_spec to replace the four identical with_db/SELECT/expect blocks in telemetry_type inference tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * web: address review comments --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>