Skip to content

Release TanStack Charts 0.0.1 - #5

Merged
tannerlinsley merged 4 commits into
mainfrom
taren/release-docs-refresh
Jul 30, 2026
Merged

Release TanStack Charts 0.0.1#5
tannerlinsley merged 4 commits into
mainfrom
taren/release-docs-refresh

Conversation

@tannerlinsley

@tannerlinsley tannerlinsley commented Jul 30, 2026

Copy link
Copy Markdown
Member

Publishes the coordinated 0.0.1 release candidate for core and all nine framework adapters.

Includes:

  • the detailed post-0.0.0 changelog and refreshed public documentation
  • 0.0.1 package manifests with exact core coupling
  • deterministic ten-package release artifacts
  • tag-gated npm trusted publishing with provenance
  • the schema-v4 catalog artifact, sequenced after the production tanstack.com consumer

Local validation:

  • 2,980 tests across core and framework adapters
  • documentation, TypeScript, formatting, bundle, comparison, and catalog checks
  • ten packed artifacts with exact 0.0.1 dependencies and reproducible integrity

The npm trusted publisher is configured after this workflow reaches main and before the v0.0.1 tag is pushed.

Summary by CodeRabbit

  • New Features

    • Introduced the public TanStack Charts 0.0.1 pre-alpha release across core and framework integrations.
    • Added automated release packaging, validation, publishing with provenance, and GitHub release creation.
    • Improved inferred identity, responsive scales, D3 scale factory support, Canvas rendering, and application-controlled domains.
  • Documentation

    • Updated installation, quick-start, framework, interaction, SSR, TypeScript, and authoring guidance.
    • Added self-contained examples and clarified data identity and scale ownership.
  • Chores

    • Refreshed changelog, marketing content, comparison baselines, and release verification records.

@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@tannerlinsley, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 26 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 978c2adb-4d34-4cdf-87f1-4e60a7d94a5f

📥 Commits

Reviewing files that changed from the base of the PR and between d98b264 and ea0f5c6.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (25)
  • .github/workflows/chart-library-benchmarks.yml
  • .github/workflows/release.yml
  • API-FRICTION.md
  • MARKETING.md
  • benchmarks/comparison/README.md
  • benchmarks/comparison/bundle-baseline.json
  • docs/comparison.md
  • package.json
  • packages/charts-core/docs/comparison.md
  • packages/svelte-charts/package.json
  • scripts/compare-chart-libraries.mjs
  • scripts/comparison-source-revision.mjs
  • scripts/comparison-source-revision.test.mjs
  • scripts/evaluate-chart-authoring.mjs
  • scripts/package-version.mjs
  • scripts/package-version.test.mjs
  • scripts/publish-release.mjs
  • scripts/release-artifacts.mjs
  • scripts/release-artifacts.test.mjs
  • scripts/release-package-config.mjs
  • scripts/release-security.mjs
  • scripts/release-security.test.mjs
  • scripts/release-workflow.test.mjs
  • scripts/verify-published-release.mjs
  • scripts/verify-release-revision.mjs
📝 Walkthrough

Walkthrough

TanStack Charts is prepared for the public 0.0.1 pre-alpha release. The changes add tagged release automation, artifact and provenance validation, public package metadata, comparison provenance tracking, self-contained documentation examples, and updated release and marketing materials.

Changes

Release preparation

Layer / File(s) Summary
Release contracts and publication workflow
scripts/release-*.mjs, scripts/check-*.mjs, packages/*/package.json, .github/workflows/release.yml, package.json
Defines the public package set, shared version, provenance settings, artifact manifests, integrity checks, tagged publishing guards, registry verification, and GitHub release creation.
Comparison and documentation contracts
benchmarks/comparison/*, scripts/compare-chart-libraries.mjs, scripts/docs-contract*, docs/comparison.md
Updates comparison baselines to schema 3 with source provenance, validates public README sources and documentation imports, and records current evidence paths.
Self-contained examples and API guidance
docs/*, packages/charts-core/docs/*, packages/charts-core/README.md, packages/react-charts/README.md, README.md, llms.txt
Replaces private demo-data imports with local typed examples and updates guidance for definition identity, scales, datum identity, interactions, SSR, rendering, and installation.
Release records and messaging
CHANGELOG.md, MARKETING.md, API-FRICTION.md, .gitignore
Documents the 0.0.1 scope and audited changes, updates public pre-alpha messaging and friction findings, and ignores generated release artifacts.

Estimated code review effort: 5 (Critical) | ~120 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely identifies the primary change: releasing TanStack Charts version 0.0.1.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch taren/release-docs-refresh

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@tannerlinsley tannerlinsley changed the title Prepare post-0.0.0 release documentation Release TanStack Charts 0.0.1 Jul 30, 2026
@tannerlinsley
tannerlinsley marked this pull request as ready for review July 30, 2026 23:04

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
MARKETING.md (1)

238-244: 📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

Align the CTA state with the current public release.

The document calls 0.0.1 a public release, but the hero still presents “today” CTAs for exploring examples/docs and reserves “Build your first chart” for “after release.” This conflicts with the current conversion at Lines 629-632. Use the post-release CTA state consistently.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@MARKETING.md` around lines 238 - 244, Update the CTA state in MARKETING.md so
the current public-release messaging uses “Build your first chart” as the
primary CTA and “Explore examples” as the secondary CTA, matching the
post-release state and the conversion referenced around the existing CTA
guidance.
🧹 Nitpick comments (4)
scripts/publish-release.mjs (2)

118-140: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

requireProvenance is always true at both call sites.

Lines 58 and 78 both pass true; the flag is unused surface area. Dropping it makes the provenance requirement unconditional and non-bypassable.

♻️ Drop the flag
-function validateRegistryPackage(artifact, registry, requireProvenance) {
+function validateRegistryPackage(artifact, registry) {
@@
-  if (requireProvenance) {
-    assert.ok(
-      hasAttestations(registry),
-      `${artifact.name}@${artifact.manifest.version} lacks provenance attestations`,
-    )
-  }
+  assert.ok(
+    hasAttestations(registry),
+    `${artifact.name}@${artifact.manifest.version} lacks provenance attestations`,
+  )
 }
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/publish-release.mjs` around lines 118 - 140, Update
validateRegistryPackage to remove the requireProvenance parameter and make the
hasAttestations assertion unconditional. Adjust both call sites to stop passing
the redundant true argument, while preserving the existing registry validation
checks and provenance error message.

84-98: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Timeout path returns a stale result with a misleading assertion.

After 60 attempts the loop falls through and only asserts lastResult is non-null, so the "did not appear" message fires for a case that is really "integrity/attestations never matched". The caller's validateRegistryPackage does catch it, so this is diagnostics only — but a direct assertion here would point at the real cause.

♻️ Clearer timeout failure
-  assert.ok(lastResult, `${artifact.name}@${releaseVersion} did not appear`)
-  return lastResult
+  assert.ok(
+    lastResult,
+    `${artifact.name}@${releaseVersion} did not appear on the registry`,
+  )
+  assert.equal(
+    lastResult.dist?.integrity,
+    artifact.integrity,
+    `${artifact.name}@${releaseVersion} did not propagate matching integrity in time`,
+  )
+  assert.ok(
+    hasAttestations(lastResult),
+    `${artifact.name}@${releaseVersion} did not propagate attestations in time`,
+  )
+  return lastResult
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/publish-release.mjs` around lines 84 - 98, Update
waitForRegistryPackage so the timeout path asserts that the final result matches
both the expected artifact.integrity and hasAttestations(lastResult), rather
than only checking that lastResult exists. Keep returning the validated result
on success, and use a timeout message that identifies the integrity/attestation
mismatch.
scripts/release-package-config.mjs (1)

82-87: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Assertion message doesn't match the checked value.

workspace:* is the "any workspace version" specifier; the "exact-version" property comes from pnpm replacing it with the concrete version at pack time (which validatePackedManifest does verify). Consider rewording to avoid implying workspace:* itself pins a version.

📝 Suggested wording
-      `${manifest.name} must use the exact-version workspace protocol`,
+      `${manifest.name} must depend on `@tanstack/charts` via workspace:*`,
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/release-package-config.mjs` around lines 82 - 87, Reword the
assertion message in the manifest dependency check to describe that
`@tanstack/charts` uses the workspace:* protocol, without calling it an
exact-version specifier. Keep the asserted value and validatePackedManifest
behavior unchanged.
scripts/release-artifacts.mjs (1)

132-139: 🩺 Stability & Availability | 🔵 Trivial | 💤 Low value

Avoid depending on external tar -xOf compression detection.

This script is already invoked via node scripts/..., so keep the manifest extraction Node-backed; -xOf can fail differently across local tar builds than CI’s ubuntu-24.04. Use -xzOf or node:zlib/node:tar to remove the platform-dependent external dependency.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@scripts/release-artifacts.mjs` around lines 132 - 139, Update
readPackedManifest to avoid relying on external tar’s automatic compression
detection: explicitly use gzip extraction with the tar invocation (such as the
-xzOf flags), or replace the external command with Node-backed zlib/tar
handling. Preserve extracting package/package.json from the provided tarball and
parsing the resulting manifest as JSON.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/release.yml:
- Line 47: Remove the version-only npm bootstrap step from the release workflow
before pnpm release:publish. Use the Node distribution-provided npm, or replace
it with a digest-pinned artifact bootstrap if one is required; do not install
npm solely by the mutable version string 11.12.1.
- Line 42: Update the release job’s actions/setup-node configuration to
explicitly disable automatic package-manager caching by setting its cache option
to an empty value. Keep the existing pinned action version and Node setup
unchanged.

In `@docs/comparison.md`:
- Around line 114-117: Replace the mutable main-branch URLs in the comparison
evidence links with immutable references to commit a91106c or the eventual
v0.0.1 tag in docs/comparison.md lines 114-117. Regenerate the mirrored links in
packages/charts-core/docs/comparison.md lines 114-117 with the same immutable
references.

In `@packages/charts-core/docs/examples/polar-and-radar.md`:
- Around line 599-600: Restore the removed guidance in the radialDot example
documentation: explain that marks infer identity from source IDs or unique
positions, and a key is only needed when neither is available. Keep the
documentation consistent with radialDot’s data.id and unique-event/index
identity behavior.

In `@scripts/compare-chart-libraries.mjs`:
- Around line 1165-1183: Update the TanStack branch in the baseline validation
around source.revision to require an exact match with the current workspace
revision() result, rather than only accepting any 40-character SHA; retain the
existing workspace-kind check and failure behavior, while leaving external
package validation unchanged.

In `@scripts/evaluate-chart-authoring.mjs`:
- Around line 22-30: Update the chartsPackageVersion validation in
evaluate-chart-authoring.mjs to require a valid npm semver, including supported
prerelease versions, rather than only a non-empty string. Reject values such as
“latest” and whitespace before generating workspace metadata, while preserving
the existing error behavior for invalid versions.

---

Outside diff comments:
In `@MARKETING.md`:
- Around line 238-244: Update the CTA state in MARKETING.md so the current
public-release messaging uses “Build your first chart” as the primary CTA and
“Explore examples” as the secondary CTA, matching the post-release state and the
conversion referenced around the existing CTA guidance.

---

Nitpick comments:
In `@scripts/publish-release.mjs`:
- Around line 118-140: Update validateRegistryPackage to remove the
requireProvenance parameter and make the hasAttestations assertion
unconditional. Adjust both call sites to stop passing the redundant true
argument, while preserving the existing registry validation checks and
provenance error message.
- Around line 84-98: Update waitForRegistryPackage so the timeout path asserts
that the final result matches both the expected artifact.integrity and
hasAttestations(lastResult), rather than only checking that lastResult exists.
Keep returning the validated result on success, and use a timeout message that
identifies the integrity/attestation mismatch.

In `@scripts/release-artifacts.mjs`:
- Around line 132-139: Update readPackedManifest to avoid relying on external
tar’s automatic compression detection: explicitly use gzip extraction with the
tar invocation (such as the -xzOf flags), or replace the external command with
Node-backed zlib/tar handling. Preserve extracting package/package.json from the
provided tarball and parsing the resulting manifest as JSON.

In `@scripts/release-package-config.mjs`:
- Around line 82-87: Reword the assertion message in the manifest dependency
check to describe that `@tanstack/charts` uses the workspace:* protocol, without
calling it an exact-version specifier. Keep the asserted value and
validatePackedManifest behavior unchanged.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 91b3bbc5-ccca-411c-8ec6-034a38b36113

📥 Commits

Reviewing files that changed from the base of the PR and between a91106c and d46b86c.

📒 Files selected for processing (93)
  • .github/workflows/release.yml
  • .gitignore
  • API-FRICTION.md
  • CHANGELOG.md
  • MARKETING.md
  • README.md
  • benchmarks/comparison/bundle-baseline.json
  • benchmarks/comparison/libraries/tanstack/base.ts
  • docs/comparison.md
  • docs/concepts/chart-definitions.md
  • docs/concepts/data-and-channels.md
  • docs/concepts/grammar-of-graphics.md
  • docs/concepts/layout-axes-and-coordinates.md
  • docs/concepts/marks-and-layering.md
  • docs/concepts/scales-and-d3.md
  • docs/examples/annotations-and-overlays.md
  • docs/examples/bars-and-rankings.md
  • docs/examples/facets-and-multiple-views.md
  • docs/examples/interactive-charts.md
  • docs/examples/lines-and-areas.md
  • docs/examples/maps-and-spatial.md
  • docs/examples/polar-and-radar.md
  • docs/framework/octane/quick-start.md
  • docs/framework/react/adapter.md
  • docs/framework/react/quick-start.md
  • docs/guides/ai-authoring.md
  • docs/guides/bundle-size-and-performance.md
  • docs/guides/faceting-and-composition.md
  • docs/guides/interactions-and-selections.md
  • docs/guides/ssr-and-hydration.md
  • docs/guides/typescript.md
  • docs/installation.md
  • docs/overview.md
  • docs/quick-start.md
  • docs/reference/index.md
  • docs/reference/rendering-and-export.md
  • docs/reference/types.md
  • llms.txt
  • package.json
  • packages/alpine-charts/package.json
  • packages/angular-charts/package.json
  • packages/charts-core/README.md
  • packages/charts-core/docs/comparison.md
  • packages/charts-core/docs/concepts/chart-definitions.md
  • packages/charts-core/docs/concepts/data-and-channels.md
  • packages/charts-core/docs/concepts/grammar-of-graphics.md
  • packages/charts-core/docs/concepts/layout-axes-and-coordinates.md
  • packages/charts-core/docs/concepts/marks-and-layering.md
  • packages/charts-core/docs/concepts/scales-and-d3.md
  • packages/charts-core/docs/examples/annotations-and-overlays.md
  • packages/charts-core/docs/examples/bars-and-rankings.md
  • packages/charts-core/docs/examples/facets-and-multiple-views.md
  • packages/charts-core/docs/examples/interactive-charts.md
  • packages/charts-core/docs/examples/lines-and-areas.md
  • packages/charts-core/docs/examples/maps-and-spatial.md
  • packages/charts-core/docs/examples/polar-and-radar.md
  • packages/charts-core/docs/framework/octane/quick-start.md
  • packages/charts-core/docs/framework/react/adapter.md
  • packages/charts-core/docs/framework/react/quick-start.md
  • packages/charts-core/docs/guides/ai-authoring.md
  • packages/charts-core/docs/guides/bundle-size-and-performance.md
  • packages/charts-core/docs/guides/faceting-and-composition.md
  • packages/charts-core/docs/guides/interactions-and-selections.md
  • packages/charts-core/docs/guides/ssr-and-hydration.md
  • packages/charts-core/docs/guides/typescript.md
  • packages/charts-core/docs/installation.md
  • packages/charts-core/docs/overview.md
  • packages/charts-core/docs/quick-start.md
  • packages/charts-core/docs/reference/index.md
  • packages/charts-core/docs/reference/rendering-and-export.md
  • packages/charts-core/docs/reference/types.md
  • packages/charts-core/llms.txt
  • packages/charts-core/package.json
  • packages/lit-charts/package.json
  • packages/octane-charts/package.json
  • packages/preact-charts/package.json
  • packages/react-charts/README.md
  • packages/react-charts/package.json
  • packages/solid-charts/package.json
  • packages/svelte-charts/package.json
  • packages/vue-charts/package.json
  • scripts/build-release-artifacts.mjs
  • scripts/check-framework-adapters.mjs
  • scripts/check-packed-consumers.mjs
  • scripts/compare-chart-libraries.mjs
  • scripts/docs-contract.mjs
  • scripts/docs-contract.test.mjs
  • scripts/evaluate-chart-authoring.mjs
  • scripts/publish-release.mjs
  • scripts/release-artifacts.mjs
  • scripts/release-artifacts.test.mjs
  • scripts/release-package-config.mjs
  • scripts/sync-package-docs.mjs
💤 Files with no reviewable changes (2)
  • packages/charts-core/docs/reference/rendering-and-export.md
  • docs/reference/rendering-and-export.md

Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml Outdated
Comment thread docs/comparison.md Outdated
Comment thread packages/charts-core/docs/examples/polar-and-radar.md
Comment thread scripts/compare-chart-libraries.mjs
Comment thread scripts/evaluate-chart-authoring.mjs
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant