- 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.1 KiB
2.1 KiB
Roadmap: chart-realtime
Overview
KMP real-time chart library. Six phases v0.1.0 MVP shipped; v0.2.0 polish shipped.
Milestones
| Milestone | Version | Status | Completed |
|---|---|---|---|
| v0.1.0 MVP | 0.1.0 | ✓ Shipped | 2026-05-20 |
| v0.2.0 Polish | 0.5.0-SNAPSHOT | ✓ Shipped | 2026-05-21 |
| v0.3.0 (TBD) | - | Not started | - |
v0.1.0 — MVP (SHIPPED)
Status: ✓ Complete
Phases: 6 of 6 complete
Phases
| Phase | Name | Status | Completed |
|---|---|---|---|
| 1 | Module Scaffold | ✓ Done | 2026-05-20 |
| 2 | Buffer + LoD | ✓ Done | 2026-05-20 |
| 3 | State API | ✓ Done | 2026-05-20 |
| 4 | Render Engine | ✓ Done | 2026-05-20 |
| 5 | Demo App | ✓ Done | 2026-05-20 |
| 6 | Polish + Docs | ✓ Done | 2026-05-20 |
Delivered: CircularBuffer, LodDecimator, RealtimeChart composable, basic AxisRenderer.
v0.2.0 — Polish (SHIPPED as v0.5.0-SNAPSHOT)
Status: ✓ Complete
Summary: .paul/phases/v0.2.0-plan-SUMMARY.md
Delivered
- TieredBuffer (3-tier 1h ring buffer, MIN_MAX binning, zero-alloc)
- LodMode enum (MIN_MAX, LTTB) — MEAN removed
- LTTB render-time decimation (O(n) Largest-Triangle-Three-Buckets)
- AxisLabelMode (INSIDE/BESIDE/HIDDEN) with chartLeft/chartBottom insets
- T0-relative X-axis timestamps with mm:ss/hh:mm:ss formatting, negative support
- Material3 dynamic theming (light/dark, wallpaper-based, API 31+)
- Camera cutout / edge-to-edge support
- Sensor domain layer (Clean Architecture)
- Koin 4.0.0 DI wiring
- Package rename: eu.henesis → dev.dtrentin
- Git remote: ssh://git@3nt-git.duckdns.org:222/davide.trentin/KMPCharts.git
- Sensor rate cap: 200Hz (5_000μs)
v0.3.0 — Potential Scope (TBD)
| Item | Effort | Priority |
|---|---|---|
| Dirty flag render (skip frame if no new data) | S | High — thermal |
| targetFps=30 default | S | High — thermal |
| KDoc on public API surface | M | Medium |
| README with integration example | S | Medium |
| Publish to Maven Central / GitHub Packages | M | Low |
| iOS expect/actual (beyond currentTimeMs) | L | Future |
Roadmap updated: 2026-05-21