# v1.0.0 — Public Release Plan ## Source Action plan 2026-05-21. Fase 4 "Marketing portfolio". ## Goal Portare `chart-realtime` da private repo a libreria pubblica consumibile + portfolio piece. Maven Central publish, CI, demo iOS, benchmark numerici vs competitors, README professionale. ## Prereq v0.4.0 + v0.5.0 shipped. ## Scope IN - Maven Central / GitHub Packages publishing - GitHub Actions CI (Android + iOS) - SwiftUI demo app consuming XCFramework - Benchmark vs Vico, KoalaPlot, MPAndroidChart numeri reali - README professionale: screenshot/GIF, badge, limitazioni oneste - CHANGELOG.md, CONTRIBUTING.md ## Scope OUT - CocoaPods publication → backlog - SPM (Swift Package Manager) → backlog - Wasm/desktop targets → backlog --- ## Tasks ### T1 — Maven Central publishing - Files: `chart-realtime/build.gradle.kts`, root `build.gradle.kts`, `gradle/libs.versions.toml` - Action: - Sonatype OSSRH account setup (manual, user side) - Plugin `com.vanniktech.maven.publish` (modern Maven Central plugin) - POM metadata: name, description, url, licenses, developers, scm - GPG signing - `dev.dtrentin:chart-realtime:1.0.0` published per Android AAR + iOS klibs + KMP metadata - Agent: gradle-expert - Verify: `./gradlew :chart-realtime:publishToMavenCentral` succeed - User action: registrare dev.dtrentin namespace su Sonatype OSSRH, fornire GPG key ### T2 — GitHub Actions CI (Android + iOS) - New files: - `.github/workflows/ci.yml` - `.github/workflows/release.yml` - Action: - PR: `assembleDebug` + `testReleaseUnitTest` + `iosSimulatorArm64Test` su macos-latest runner - Push master: above + `assembleChartRealtimeXCFramework` - Tag v* : publish to Maven Central + GitHub release con XCFramework artifact - Caching gradle + konan - Agent: gradle-expert - Verify: PR mostra CI green badge, push tag triggera release - Pattern: [Vico CI workflow](https://github.com/patrykandpatrick/vico/tree/master/.github/workflows) ### T3 — SwiftUI demo iOS app - New dir: `samples/ios/` - Action: - Xcode project consuming `ChartRealtime.xcframework` da maven local (sviluppo) o CocoaPods/SPM (release) - SwiftUI view che embedding compose RealtimeChart via `UIKitView` - Demo: 4 segnali fake (sine, square, noise, triangle) a 200Hz - Pinch/pan/crosshair test reale - Agent: ui-impl (manual + scripted) - Verify: app gira su iPhone simulator, 60fps, no crash - Justification: senza demo iOS reale "iOS targets" claim è solo build artifact ### T4 — Benchmark vs competitors - New files: - `benchmark/build.gradle.kts` (modulo separato) - `benchmark/src/main/kotlin/.../BufferBench.kt` (microbench JMH) - `benchmark/src/main/kotlin/.../RenderBench.kt` (androidx.benchmark macrobench) - `benchmark/RESULTS.md` - Comparativi: - Push throughput: chart-realtime vs Vico vs KoalaPlot vs MPAndroidChart - Frame time 4×200Hz × 60s sustained - Memory steady-state dopo 30 min - Agent: mobile-performance-reviewer - Verify: numeri pubblicati su `benchmark/RESULTS.md`, embedded in README - Onesto: se chart-realtime perde, dichiararlo. "Library wins at sustained 200Hz multi-signal; loses at static dataset rendering vs Vico." ### T5 — README professionale - File: `chart-realtime/README.md` (rewrite) - Sections: - Banner GIF (chart real-time animato 8 segnali — screen record da demo) - Badges: Maven Central, CI build, license, Kotlin version, Compose version - One-line pitch: "Real-time line chart per Compose Multiplatform, ottimizzato per sensor data 200Hz+ multi-signal" - Why exists (gap nel mercato KMP charts) - Quick start (gradle dep + 20 LoC example) - Architecture diagram (TieredBuffer + LodStrategy + interaction state) - Performance numbers (benchmark.md link) - Limitations (onestamente: no multi-Y, no log scale, line-only) - Comparison table vs Vico/KoalaPlot - Roadmap - License - Agent: manager direct (markdown) - Verify: rendered su GitHub mostra GIF, badge verdi ### T6 — CHANGELOG + CONTRIBUTING + CODE_OF_CONDUCT - New files: - `CHANGELOG.md` — Keep-a-changelog format, retroactive entries v0.1-v0.5 - `CONTRIBUTING.md` — how to build, test, submit PR, code style - `CODE_OF_CONDUCT.md` — Contributor Covenant v2.1 - Agent: manager direct - Verify: GitHub mostra "Insights → Community Standards" all checkmarks ### T7 — Logo / asset visuale - New file: `docs/logo.svg`, `docs/banner.png`, `docs/demo.gif` - Action: logo minimale (single signal sine wave + "ChartRealtime" wordmark). Demo GIF da SwiftUI app o screen recording Android. - Agent: manager direct (user provides assets or generates with tool) - Verify: embedded in README, mostra correttamente su GitHub ### T8 — Sample Android app polish - File: `app/src/main/kotlin/.../MainActivity.kt` - Action: aggiungi UI controls (slider per Hz, picker per # signals, toggle pan/zoom), make it portfolio-grade demo not just sandbox - Agent: ui-impl - Verify: app installa, dimostrazione visiva clean del library capability ### T9 — Performance budget docs - File: `docs/PERFORMANCE.md` - Content: "Frame budget per 200Hz × N signals su Pixel 6 / iPhone 13", "Memory cost per signal", "Allocation tracking results", "Battery impact su 1h sessione". - Source: benchmark dati T4. - Agent: manager direct - Verify: claim README sono backed by numeri qui ### T10 — Tag v1.0.0 + GitHub release - Action manuale: - Git tag `v1.0.0`, push - CI release workflow triggers Maven publish - GitHub release con XCFramework + AAR artifact attachments - Release notes from CHANGELOG.md v1.0.0 section - Agent: manager direct (git ops) - Verify: Maven Central search shows `dev.dtrentin:chart-realtime:1.0.0`, GitHub release page populated --- ## Acceptance v1.0.0 - A1: `dev.dtrentin:chart-realtime:1.0.0` consumibile via `implementation("dev.dtrentin:chart-realtime:1.0.0")` da progetto esterno (Android) - A2: XCFramework consumibile da SwiftUI demo app (zip artifact in release page) - A3: CI green su PR + tag triggers Maven publish - A4: README ha GIF + 5 badge verdi + benchmark numeri - A5: Benchmark `benchmark/RESULTS.md` confronta vs almeno Vico + KoalaPlot - A6: SwiftUI iOS demo app gira reale, 60fps - A7: GitHub Community Standards 100% (LICENSE, README, CONTRIBUTING, CoC, CHANGELOG) - A8: GitHub release v1.0.0 con artifact attachments ## Parallelism | Group | Tasks | |-------|-------| | P0 | T1 (Maven setup) | | P1 | T2 (CI), T4 (benchmark) parallel | | P2 | T3 (SwiftUI demo), T8 (Android demo polish) parallel | | P3 | T5 (README), T6 (CHANGELOG etc), T9 (perf docs) parallel | | P4 | T7 (assets) | | P5 | T10 (release, manual) | ## Estimated agent calls ~10 agent calls + manual ops. ~2-3 giorni full-time. ## Risks - Sonatype OSSRH account approval può richiedere giorni - SwiftUI demo richiede Xcode skill non automatizzabili - Maven Central namespace `dev.dtrentin` deve essere claimed via DNS TXT record o GitHub ownership proof ## Verification commands ```bash ./gradlew :chart-realtime:publishToMavenCentral --dry-run gh workflow run ci.yml xcodebuild -project samples/ios/ChartRealtimeDemo.xcodeproj test gh release create v1.0.0 chart-realtime/build/XCFrameworks/release/ChartRealtime.xcframework.zip --notes-from-tag ```