Skip to content

feat(front): synchronized thermal timeline lanes for Cooling Insight #2019

Description

@shm11C3

Parent: #1666 (Phase 2 — decided UI, observation strip + thermal timeline)
Depends on: #2018

Summary

The main visualization of the decided layout: temperature and CPU-load lanes stacked on one shared time axis with a synchronized cursor, replacing the temporary per-metric charts.

Image

Scope

  • Temperature lane: daily min–max band + average line + idle-temperature line + baseline band (idle baseline ±2 °C) with a dashed baseline reference. Y domain adapts to the data instead of the fixed 0–100 range, so a +5 °C drift is visible as a slope.
  • CPU load lane: daily average for 90d / 1y, bucketed series for 30d and below.
  • Cursor sync across lanes via Recharts syncId; one shared tooltip reads temperature avg/range, idle temperature, Δ vs baseline, and CPU load for the hovered day.
  • Missing periods render as gaps spanning every lane (connectNulls stays off; absent stays absent).
  • Pending-sensors note (package power / fan not collected on this machine) instead of permanently empty lanes; future lanes mount in this position as collectors land.
  • Series colors come from the chart theme tokens (--chart-*), replacing the hard-coded temperature/power RGB literals.

Non-goals

  • Observation strip and band comparison (follow-up issue).
  • Power / fan lane content (Phase 3).

Evidence

  • Unit tests for lane data shaping (gap preservation, adaptive domain) and a web/mock E2E capture showing both lanes with a deliberate gap fixture.

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:frontendArea: React, TypeScript, UI, browser tests, or Vitefeat:chartsFeature: charts and graph renderingscreen:insightScreen: Insighttype:featureIssue: new user-facing capability or enhancement

    Projects

    Status
    Proposal

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions