- 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>
2.6 KiB
2.6 KiB
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 |
|---|---|---|---|
| v0.2.0 | S | ✓ v0.3.0 | |
| v0.2.0 | S | ✓ v0.3.0 | |
| Init | L | ✓ v0.3.0 | |
| v0.2.0 | M | ✓ v0.3.0 | |
| 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