KMPCharts/.paul/STATE.md
dtrentin 73bbd9ddec feat(chart-realtime): v0.3.0 — dirty flag render, targetFps=30, iOS targets, KDoc, README
- Dirty-flag render: dataVersion counter in RealtimeChartState, skip Canvas draw
  when no new data since last frame (zero GPU work when sensor idle)
- targetFps=30 default in ChartConfig (pass null for max display refresh rate)
- iOS targets: iosX64, iosArm64, iosSimulatorArm64 + Platform.ios.kt actual
- KDoc: RealtimeChart params, dataVersion, ChartConfig.targetFps, LodMode entries,
  AxisLabelMode entries
- README: fixed Maven coords, added LoD/AxisLabels/Material3 sections, updated
  feature list and performance notes
- Tests: RealtimeChartStateTest (17 tests, dataVersion + signal lifecycle)

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

2.6 KiB
Raw Blame History

Project State

Project Reference

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

Core value: Android devs plot 200Hz+ multi-signal sensor data without frame drops Current focus: v0.3.0 IN PROGRESS — dirty flag render + targetFps=30 shipped

Current Position

Milestone: v0.2.0-polish Phase: 6 of 6 — Complete Plan: .paul/phases/v0.2.0-plan.md Status: Complete Last activity: 2026-05-21 — dirty flag render, targetFps=30, 17 unit tests, KDoc, README, iOS targets (iosX64/iosArm64/iosSimulatorArm64) + Platform.ios.kt actual.

Progress:

  • v0.1.0 milestone: [██████████] 100% SHIPPED
  • v0.2.0 milestone: [██████████] 100% SHIPPED

Loop Position

PLAN ──▶ APPLY ──▶ UNIFY
  ✓        ✓        ✓     [v0.2.0 SHIPPED — v0.5.0-SNAPSHOT]

Accumulated Context

Decisions

Decision Phase Impact
Canvas custom rendering (no lib) Init Core architecture
Render/data decoupled withFrameNanos Init RenderLoop design
TieredBuffer over flat ring v0.2.0 O(N×constant) memory, 20+ signals
MIN_MAX tier binning (not MEAN) v0.2.0 Composable, no artifacts at tier boundaries
MEAN removed from LodMode v0.2.0 Cleaner API, no synthetic values
LodDecimator as class (pre-alloc scratch) v0.2.0 Zero GC at render time
Sensor cap 200Hz (5_000μs) v0.2.0 Thermal/battery optimization
Package dev.dtrentin v0.2.0 Personal project, not company
iOS targets shipped v0.3.0 iosX64/iosArm64/iosSimulatorArm64 + Platform.ios.kt

Deferred Issues

Issue Origin Effort Revisit
Dirty flag render (skip frame if no new data) v0.2.0 S ✓ v0.3.0
targetFps=30 default v0.2.0 S ✓ v0.3.0
iOS expect/actual beyond currentTimeMs Init L ✓ v0.3.0
KDoc on public API surface v0.2.0 M ✓ v0.3.0
README with integration example v0.2.0 S ✓ v0.3.0
Publish to Maven Central / GitHub Packages v0.2.0 M v0.3.0

Blockers/Concerns

None.

Session Continuity

Last session: 2026-05-21 Stopped at: v0.2.0 complete. All AC pass. Git pushed to remote. Next action: Define v0.3.0 scope (dirty flag render, targetFps=30, KDoc, publish) Resume context:

  • Library: AndroidCharts/chart-realtime, published dev.dtrentin:chart-realtime:0.5.0-SNAPSHOT to mavenLocal
  • App: AndroidChartsApp consuming library, builds clean
  • Remote: ssh://git@3nt-git.duckdns.org:222/davide.trentin/KMPCharts.git
  • Package: dev.dtrentin.chart

STATE.md — Updated after every significant action