Can the validation artifacts be built?
JVM jars, the BOM, Android main sources, the Wasm distribution, and the smoke-line consumer.
Development · release · transparency
HDCharts moves from a focused pull request to a tested snapshot and a verified public release, with the important checkpoints kept visible.
A change moves through checks, snapshots, and public release.
Kotlin Multiplatform library, demos, tests, and release orchestration.
↗Versioned wiki, API links, release notes, metadata, demos, and the docs application.
↗INTERACTIVE WEBcharts-playgroundA browser playground built with the Charts source and published with snapshot metadata.
↗VISUAL TOOLINGcharts-gif-recorderA Gradle plugin used by Android documentation scenarios to record and validate animated baselines.
↗Stable and snapshot Kotlin Multiplatform modules and the BOM.
↗STATIC DELIVERYS3 + CloudFrontVersioned API references, demos, playground files, metadata, and Android APKs.
↗SITE DELIVERYVercelBuilds and serves the Next.js documentation application from charts-docs.
↗AUTOMATIONGitHub ActionsCoordinates pull requests, snapshots, releases, and security scans.
↗Workflow chart
Every pull request first checks whether it needs the full validation path. Documentation-only changes keep their required checks without running expensive work.
Check out the revision, detect changed paths, and run workflow self-tests.
Docs, release notes, GIF baselines, scripts, and Markdown are treated as lightweight paths.
Assemble, compile, lint, and tests report lightweight success without allocating their normal work.
The PR can still satisfy the expected check contract.
The four reusable checks run together as the core PR gate.
The final gate rejects any failed, cancelled, or skipped required result.
The lane runs for code changes and breaking-change label events.
Keep the breaking-change label when the API checker flags an intentional public API incompatibility, update release notes and affected docs, then review the API baseline PR created after merge. See the release migration notes for examples of the required call-site changes.
Add the label for an intentional break, remove a stale label, or fix the compatibility task error before merging.
Opened, updated, or label changes can request the visual validation job.
This is informational and not a required branch-protection check.
The job stays outside the required core gate, but its report and generated GIFs are uploaded for review. See the chart examples.
Download the validation artifacts. Fix unintended output; for an intentional change, update the matching file in gif-baselines/ and rerun validation.
What gets tested
CI does not treat every validation as the same kind of signal. Each lane protects a different part of the library and its release contract.
JVM jars, the BOM, Android main sources, the Wasm distribution, and the smoke-line consumer.
Kotlin/JVM, Kotlin/Wasm, Android main sources, and the smoke-line consumer compile path.
JVM tests, Android emulator tests, Wasm browser tests, iOS simulator tests, and Android screenshot validation.
Binary and source compatibility are compared with the stored release baseline. Intentional breaks need the breaking-change label.
An opt-in Android emulator job records and compares GIF baselines. It stays outside the required core gate.
A scheduled monthly scan covers Actions, Java/Kotlin, and JavaScript/TypeScript security analysis.
Workflow chart
Snapshots keep the latest development build available. Scheduled runs publish only when relevant changes are present.
Docs and Markdown-only changes are ignored, while release notes remain relevant.
No recent changes, or only ignored paths, ends the run without publishing.
Axion resolves the version. If the current version is not a snapshot, publication ends here.
Mirror release notes and GIF baselines into charts-docs, write snapshot-manifest.json, and push only when content changed.
The static assets are published for the development version.
Signed snapshot artifacts are published to the Maven snapshot repository.
Assemble the release APK against the published snapshot dependency and upload it to the docs static storage.
Publish release-note highlights and comment with documentation and Maven links.
Workflow chart
A stable release is a manual, approval-gated promotion of a tested snapshot. It validates the code, artifacts, and documentation before publishing.
Axion resolves the SemVer and release readiness is checked before publishing.
An invalid version or an existing release tag blocks the flow.
No previous release skips the audit. An intentional break continues with a warning.
A non-compatibility failure, or an unlabelled incompatible API, blocks release.
Existing docs entries and the snapshot metadata must agree with the release version before promotion.
The release cannot promote unrelated or stale documentation.
The release source and snapshot are now aligned.
Publishing does not begin until the protected production approval completes.
The flow cannot reach publishing without approval.
API reference and demo assets are published and claimed with release metadata.
The published docs assets are verified before Maven credentials and signing are used. Axion creates and pushes the release tag.
The Android build consumes the newly published stable Maven version.
charts-docs receives the release content, registry entry, and version metadata.
The workflow waits for deployment and checks the manifest, versioned wiki, API reference, and demo route.
The workflow retries for up to 20 minutes, then fails without closing the release loop.
Release-note highlights are published and the commit receives documentation and Maven links.
What stays true
Each step has a clear purpose and outcome, from the first pull request check to the published release.
Snapshots, documentation, demos, and stable releases use matching version metadata as they move through the ecosystem.
Release notes, API references, demos, and playground assets are promoted alongside the library version they describe.
Expensive validation runs for meaningful code changes, while optional visual checks remain available without becoming noise.
Keep exploring