KMPCharts/.paul/STATE.md
dtrentin b9ee5ddfa3 Initial commit: chart-realtime KMP library v0.4.1-SNAPSHOT
- RealtimeChart composable with Canvas-based rendering
- TieredBuffer: 3-tier ring buffer (5min full-rate, 10min @10Hz, 45min @1Hz) for 1h data support with ~5MB footprint
- LodDecimator: MEAN / MIN_MAX / MIN_MAX(default) / LTTB render-time decimation
- AxisRenderer: X/Y axis with INSIDE/BESIDE/HIDDEN label modes, T0-relative timestamps, scientific notation
- SignalRenderer: clipRect-bounded path rendering with LoD
- ChartTheme: Material3-compatible dynamic theming (light/dark)
- package: dev.dtrentin.chart

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 01:48:51 +02:00

2 KiB

Project State

Project Reference

See: .paul/PROJECT.md (updated 2026-05-20)

Core value: Android devs plot 200Hz+ multi-signal sensor data without frame drops Current focus: v0.2.0 — Phase 4 LOD scratch optimization (deferred)

Current Position

Milestone: v0.2.0 Phase: 3 of 4 — In Progress Plan: .paul/phases/v0.2.0-plan.md Status: In Progress Last activity: 2026-05-20 — Phases 1-3 complete + build green. rememberMaterialChartTheme(), axis text labels (TextMeasurer), dynamic xWindowSeconds param, theme param on RealtimeChart. Fix: added compose.material3 to commonMain deps.

Progress:

  • Milestone: [██████████] 100%
  • Phase 6: [██████████] 100%

Loop Position

PLAN ──▶ APPLY ──▶ UNIFY
  ✓        ✓        ✓     [v0.1.0 SHIPPED]

Accumulated Context

Decisions

Decision Phase Impact
Canvas custom rendering (no lib) Init Core architecture
Render/data decoupled withFrameNanos Init RenderLoop design
LoD min/max decimation Init SignalRenderer calls LodDecimator
compose.foundation added to commonMain deps Phase 4 Canvas + Modifier.background require it
iOS deferred Init commonMain only, no expect/actual beyond currentTimeMs

Deferred Issues

Issue Origin Effort Revisit
LodDecimator scratch array allocation per frame Phase 2 M v0.2.0
Double snapshot per frame in RealtimeChart Phase 4 M v0.2.0
Axis text labels Phase 4 M v0.2.0 — needs TextMeasurer
iOS support Init L Future milestone

Blockers/Concerns

None.

Session Continuity

Last session: 2026-05-20 Stopped at: Phases 1-5 complete. 16 tests pass. Next action: Phase 6 — 06-01 ChartTheme + Material3, 06-02 KDoc + README + publish config Resume context: All source in chart-realtime/commonMain; demo app in app/


STATE.md — Updated after every significant action