- 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>
61 lines
2 KiB
Markdown
61 lines
2 KiB
Markdown
# 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*
|