Modules: chart-realtime (commonMain, iosMain), root, .paul
- chart-realtime/build.gradle.kts: applyDefaultHierarchyTemplate() + XCFramework("ChartRealtime") over iosX64/iosArm64/iosSimulatorArm64, baseName CamelCase
- commonMain RealtimeChartState/CircularBuffer: switch to kotlin.concurrent.Volatile, add kotlin.jvm.JvmName import (OptionalExpectation)
- commonMain AxisRenderer: replace JVM-only String.format with multiplatform formatFixed/formatScientific/pow10 helpers
- iosMain Platform.ios.kt: NSDate() + timeIntervalSinceReferenceDate + 978_307_200s 1970-epoch offset (K/Native binding has no direct timeIntervalSince1970)
- gradle.properties: remove Linux JDK pin (rely on JAVA_HOME)
- .paul: phases plan, STATE+ROADMAP updates
Acceptance: A1 compile 3 iOS targets, A2 linkDebugFrameworkIosSimulatorArm64, A3 iosSimulatorArm64Test (33 tests, 0 failures), A4 assembleChartRealtimeXCFramework (ios-arm64 + ios-arm64_x86_64-simulator slices), A5 Android assembleRelease/publishToMavenLocal --dry-run.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
93 lines
3.1 KiB
Markdown
93 lines
3.1 KiB
Markdown
# 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 iOS Build Pipeline | 0.5.0-SNAPSHOT | ✓ Shipped | 2026-05-21 |
|
|
| v0.4.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 — iOS Build Pipeline (SHIPPED)
|
|
|
|
Status: ✓ Complete
|
|
Plan: .paul/phases/v0.3.0-ios-build-plan.md
|
|
|
|
### Delivered
|
|
|
|
- 3 iOS targets compile green (iosX64, iosArm64, iosSimulatorArm64)
|
|
- `applyDefaultHierarchyTemplate()` wires iosMain/iosTest across targets
|
|
- `linkDebugFrameworkIosSimulatorArm64` green
|
|
- `iosSimulatorArm64Test` green — 33 tests, 0 failures
|
|
- XCFramework `ChartRealtime` produced (debug + release): ios-arm64 + ios-arm64_x86_64-simulator slices
|
|
- Pre-existing compile bugs fixed:
|
|
- `@Volatile` → `kotlin.concurrent.Volatile` import
|
|
- `@JvmName` → `kotlin.jvm.JvmName` import (OptionalExpectation)
|
|
- `String.format` in AxisRenderer → manual `formatFixed`/`formatScientific`/`pow10` helpers
|
|
- `NSDate.date()` → `NSDate()` + `timeIntervalSinceReferenceDate` + 1970 epoch offset
|
|
- Android non-regression confirmed (`assembleRelease`, `publishToMavenLocal --dry-run`)
|
|
- Local Mac config: removed Linux JDK pin from `gradle.properties`, added `local.properties` for Android SDK
|
|
|
|
---
|
|
|
|
## v0.4.0 — Potential Scope (TBD)
|
|
|
|
| Item | Effort | Priority |
|
|
|------|--------|----------|
|
|
| Publish to Maven Central / GitHub Packages | M | Medium |
|
|
| iOS demo app (SwiftUI) | L | Medium |
|
|
| CI workflow GitHub Actions (Android + iOS) | M | Medium |
|
|
| Compose compiler stability annotation on SignalConfig | S | Low |
|
|
| CocoaPods / SPM publication | M | Low |
|
|
|
|
---
|
|
*Roadmap updated: 2026-05-21*
|