Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .changeset/catalog-case-119.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@tanstack/react-charts-catalog': patch
---

Publish the stacked-bar band-and-rule cursor as catalog case 119 at
`@tanstack/react-charts-catalog/cases/119-stacked-bar-band-cursor`, bringing the
published catalog to 110 cases. The case demonstrates mixed cursor
presentation, labels, motion, and keyed updates.
7 changes: 7 additions & 0 deletions .changeset/native-host-parity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@tanstack/react-native-charts': patch
---

Document React Native parity for shared focus and free-cursor state,
renderer-native focus and state layers, selection activation, pinned tooltip
context, viewport-filtered focus, polygon areas, and `NativePaintContext.canvas`.
7 changes: 7 additions & 0 deletions .changeset/steady-release-links.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@tanstack/charts': patch
---

Pin packaged documentation and comparison protocol links to the immutable tag
for the same package version. Release automation now advances those tag links
together with every visible release-version reference.
16 changes: 14 additions & 2 deletions .github/workflows/chart-library-benchmarks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,18 @@ jobs:
- name: Set Nx SHAs
uses: nrwl/nx-set-shas@afb73a62d26e41464e9254689e1fd6122ee683c1 # v5.0.1

- name: Verify repository-derived comparison provenance
if: github.event_name != 'pull_request' || steps.static-changes.outputs.static == 'full'
env:
NX_CLOUD_CONTINUOUS_ASSIGNMENT: 'false'
run: pnpm exec nx run charts-workspace:benchmark-check

- name: Verify packed package consumers
if: github.event_name != 'pull_request' || steps.static-changes.outputs.static == 'full'
env:
NX_CLOUD_CONTINUOUS_ASSIGNMENT: 'false'
run: pnpm exec nx run charts-workspace:package-check

- name: Start Nx Agents
id: nx-agents
if: github.event_name != 'pull_request' || steps.static-changes.outputs.static == 'full'
Expand All @@ -107,7 +119,7 @@ jobs:
if: github.event_name != 'pull_request' || steps.static-changes.outputs.static == 'full'
env:
NX_PARALLEL: 4
run: pnpm exec nx run charts-workspace:ci
run: pnpm exec nx run charts-workspace:ci-distributed

- name: Stop Nx Agents
if: always() && steps.nx-agents.outcome == 'success'
Expand Down Expand Up @@ -342,7 +354,7 @@ jobs:
require_partition "$CANARY_REQUIRED" "$CANARY_RESULT"

publish-catalog:
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
if: always() && !cancelled() && github.event_name == 'push' && github.ref == 'refs/heads/main' && needs.static.result == 'success' && needs.ci.result == 'success'
needs:
- static
- ci
Expand Down
8 changes: 1 addition & 7 deletions .nx/workflows/distribution.yaml
Original file line number Diff line number Diff line change
@@ -1,13 +1,7 @@
distribute-on:
default: 2 linux-medium-js, 1 linux-large-js
default: 3 linux-medium-js

assignment-rules:
- targets:
- package-check
run-on:
- agent: linux-large-js
parallelism: 1

- projects:
- '*'
run-on:
Expand Down
73 changes: 71 additions & 2 deletions API-FRICTION.md
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ Each entry records:
| F-171 | Packed declarations assume one platform global set | Tooling | resolved |
| F-172 | Metro skipped the fixture-owned Babel runtime | Tooling | resolved |
| F-173 | Metro retained the complete universal barrel | API/Tooling | monitoring |
| F-174 | OIDC release cannot claim a new npm package name | Tooling | resolved |
| F-174 | OIDC release cannot claim a new npm package name | Tooling | monitoring |
| F-175 | Native SVG resource normalization collapsed authored IDs | Application | resolved |
| F-176 | Large marks were focused by distant anchor points | API | monitoring |
| F-177 | Bubble overlap inherited incidental source order | Application | resolved |
Expand Down Expand Up @@ -3502,6 +3502,13 @@ Each entry records:
manifest, and embed routes passed live HTTP and browser checks. Later
catalog publications intentionally identify the current `main` commit
rather than remaining pinned to an npm release tag.
- `0.7.0` follow-up: successful `static` and aggregate `ci` jobs still left
`publish-catalog` skipped because its job-level condition inherited GitHub's
implicit `success()` after optional upstream partitions skipped. The job now
uses `always()`, rejects cancelled workflows, and explicitly requires both
direct prerequisites to have succeeded on a push to `main`. The workflow
contract locks that condition so a validated main artifact cannot silently
remain unpublished or publish after cancellation.

### F-120 — Key-only focus collapsed duplicate observations

Expand Down Expand Up @@ -4335,6 +4342,12 @@ Each entry records:
- Verification: focused tests cover version-heading discovery, complete
replacement, idempotency, and missing-version rejection. Generated package
docs remain outputs of `pnpm docs:sync`, never hand-edited sources.
- `0.7.0` follow-up: visible version strings advanced, but the README,
installation guide, and four comparison-protocol links still targeted the
`0.6.5` source commit. The synchronizer now counts immutable
`tree/v<version>` and `blob/v<version>` links as release references, validates
their exact count, and advances them with the package version. The focused
regression counts only the matching version tag.

### F-154 — Root barrels crossed the browser host boundary

Expand Down Expand Up @@ -4986,7 +4999,7 @@ Each entry records:

### F-174 — OIDC release cannot claim a new npm package name

- Status: resolved
- Status: monitoring
- Severity: high
- Owner: Tooling
- Observed in: adding `@tanstack/react-native-charts` to the fixed release set
Expand All @@ -5010,6 +5023,14 @@ Each entry records:
reads confirmed `latest=0.5.1`, integrity, and attestations for every package.
The temporary npm login was revoked and no bootstrap environment secret
remains.
- `0.7.0` follow-up: `@tanstack/react-charts-catalog` was added to the fixed
set without its own npm trusted-publisher mapping. Release run `31217442235`
published the other 12 packages with provenance, then failed with
`ENEEDAUTH` on the catalog. The guarded bootstrap workflow proved it was the
sole missing fixed-set artifact before using the protected recovery token.
Keep this finding open until npm names `TanStack/charts` and `release.yml` as
the catalog package's trusted publisher and a tokenless coordinated release
verifies it.

### F-175 — Native SVG resource normalization collapsed authored IDs

Expand Down Expand Up @@ -5747,6 +5768,18 @@ Each entry records:
the same validation graph as type, package, bundle, adapter, and catalog
gates. Baseline changes remain explicit and require attribution before the
tracked file or canonical comparison page is refreshed.
- Release follow-up evidence: the correction pull request's Nx agent received
a synthetic merge checkout and resolved that checkout as the latest
comparison input revision, even though none of the tracked inputs had
changed since `cd7768378f40de237607dc1fc6640e1dc8490571`. The same command
resolved the recorded revision correctly in the coordinator's full clone.
- Release follow-up decision: run the cacheable comparison provenance target
on the full-history coordinator before starting continuous Nx assignment.
The distributed aggregate then replays that exact result instead of deriving
repository provenance inside an agent workspace.
- Release follow-up verification: the workflow contract fixes the coordinator
ordering and disables continuous assignment for that step. The coordinator
`benchmark-check` passes against the unchanged `cd7768378` evidence.

### F-198 — Union-valued axes rejected configured D3 scales

Expand Down Expand Up @@ -6703,6 +6736,31 @@ Each entry records:
packages and server-renders the grouped-bar catalog component through the
`@tanstack/charts/bar` path. The complete packed web, declaration, bare React
Native, and Expo consumer gate passes with that fixture enabled.
- Release follow-up evidence: disabling automatic peer installation did not
make the correction pull request hermetic on a distributed Nx agent.
`@types/d3-force` is a regular `@tanstack/charts` dependency, and pnpm's
offline resolver still needed registry metadata to match its declared
`^3.0.10` range even though the agent had the exact linked package and an
override. The coordinator's frozen workspace install had populated that
metadata; the agent's package mirror had not.
- Release follow-up decision: preserve the package's semver range and the
offline consumer fixtures. Run `package-check` on the setup-populated
coordinator before starting Nx agents. A dedicated `ci-distributed` target
has exactly the normal `ci` dependencies except `package-check`, making the
execution boundary explicit instead of depending on a cache handoff. Local
`ci` and `validate` retain the complete gate. Distributed checks no longer
reserve a large agent for this coordinator-only target.
- Release follow-up cache evidence: the coordinator package gate passed in
correction run `31221086294`, but the complete distributed graph still
scheduled `package-check` as a cache miss and reproduced the missing-metadata
failure. A successful cache write is therefore not a sufficient ownership
boundary for this environment-sensitive gate.
- Release follow-up verification: the CI workflow contract requires
`package-check` to run with continuous assignment disabled before Nx agents
start, requires `ci-distributed` to contain the exact `ci` dependency list
minus `package-check`, and keeps the distribution contract on medium agents.
The packed web, declarations, runtime, standalone catalog, bare React Native,
Expo, and seven-adapter gates pass locally with both fixture installs offline.

### F-225 — Noninteractive SSR emitted hidden focus geometry

Expand Down Expand Up @@ -7349,6 +7407,17 @@ Each entry records:
release-source evidence stays pinned to its measured commit. The remote tag
and GitHub release remain absent; publishing them triggers external release
automation and requires a separate explicit release action.
- Release follow-up evidence: the historical-revision unit test read this
repository's real `0.6.5` merge. It passed in a full clone but failed inside
the correction pull request's Nx agent workspace, which did not retain that
historical commit.
- Release follow-up decision: make the unit test construct its own temporary
Git repository with a `0.6.4` base, a `changeset-release/main` version commit,
and a no-fast-forward `0.6.5` merge. Production release status still reads
the full checkout supplied by the release workflow.
- Release follow-up verification: the hermetic release-status suite passes all
ten cases and asserts the exact synthetic merge revision without depending
on repository history.

### F-249 — Interrupted motion retained stale presentation state

Expand Down
10 changes: 10 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -246,6 +246,11 @@
Keep React Native chart-host focusability aligned with the shared definition
contract and toggle sticky activation exactly once per accessibility action.

- Publish the stacked-bar band-and-rule cursor as catalog case 119 at
`@tanstack/react-charts-catalog/cases/119-stacked-bar-band-cursor`, bringing the
published catalog to 110 cases. The case demonstrates mixed cursor
presentation, labels, motion, and keyed updates.

- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]:
- @tanstack/charts@0.7.0
- @tanstack/react-charts@0.7.0
Expand Down Expand Up @@ -281,6 +286,11 @@
Keep React Native chart-host focusability aligned with the shared definition
contract and toggle sticky activation exactly once per accessibility action.

- Complete React Native host parity for shared focus and free-cursor state,
renderer-native focus and state layers, selection activation, pinned tooltip
context, viewport-filtered focus, polygon areas, and the public
`NativePaintContext.canvas` surface.

- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]:
- @tanstack/charts@0.7.0

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ server-rendered application charts.
> [!IMPORTANT]
> This README follows unreleased `main`. The latest published release is
> TanStack Charts `0.7.0`; use its
> [release-source documentation](https://github.com/TanStack/charts/tree/4f5653e552ddf1d268b49da7046199f11b2be44c/docs).
> [release-source documentation](https://github.com/TanStack/charts/tree/v0.7.0/docs).
> It is pre-alpha and not ready for production use.

Most chart libraries are easy until the chart stops being standard. TanStack
Expand Down
8 changes: 4 additions & 4 deletions docs/comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,11 +170,11 @@ Canvas composition while keeping D3 and state ownership explicit.

## Evidence and reproduction

- [Standard comparison protocol](https://github.com/TanStack/charts/blob/4f5653e552ddf1d268b49da7046199f11b2be44c/benchmarks/comparison/README.md)
- [Standard comparison protocol](https://github.com/TanStack/charts/blob/v0.7.0/benchmarks/comparison/README.md)
- [Current tracked bundle baseline](https://github.com/TanStack/charts/blob/main/benchmarks/comparison/bundle-baseline.json)
- [Pinned release-source bundle baseline](https://github.com/TanStack/charts/blob/4f5653e552ddf1d268b49da7046199f11b2be44c/benchmarks/comparison/bundle-baseline.json)
- [Stress protocol](https://github.com/TanStack/charts/blob/4f5653e552ddf1d268b49da7046199f11b2be44c/benchmarks/comparison/stress/README.md)
- [Catalog conformance protocol](https://github.com/TanStack/charts/blob/4f5653e552ddf1d268b49da7046199f11b2be44c/benchmarks/conformance/README.md)
- [Pinned release-source bundle baseline](https://github.com/TanStack/charts/blob/v0.7.0/benchmarks/comparison/bundle-baseline.json)
- [Stress protocol](https://github.com/TanStack/charts/blob/v0.7.0/benchmarks/comparison/stress/README.md)
- [Catalog conformance protocol](https://github.com/TanStack/charts/blob/v0.7.0/benchmarks/conformance/README.md)

```sh
pnpm benchmark:size
Expand Down
2 changes: 1 addition & 1 deletion docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Install TanStack Charts, compact scales, a framework adapter, and o

These docs follow unreleased `main`. The latest published pre-alpha is TanStack
Charts `0.7.0`; use its
[release-source docs](https://github.com/TanStack/charts/tree/4f5653e552ddf1d268b49da7046199f11b2be44c/docs)
[release-source docs](https://github.com/TanStack/charts/tree/v0.7.0/docs)
for the exact surface. Install the core and compact scales in each application
that authors chart definitions:

Expand Down
8 changes: 4 additions & 4 deletions packages/charts-core/docs/comparison.md
Original file line number Diff line number Diff line change
Expand Up @@ -170,11 +170,11 @@ Canvas composition while keeping D3 and state ownership explicit.

## Evidence and reproduction

- [Standard comparison protocol](https://github.com/TanStack/charts/blob/4f5653e552ddf1d268b49da7046199f11b2be44c/benchmarks/comparison/README.md)
- [Standard comparison protocol](https://github.com/TanStack/charts/blob/v0.7.0/benchmarks/comparison/README.md)
- [Current tracked bundle baseline](https://github.com/TanStack/charts/blob/main/benchmarks/comparison/bundle-baseline.json)
- [Pinned release-source bundle baseline](https://github.com/TanStack/charts/blob/4f5653e552ddf1d268b49da7046199f11b2be44c/benchmarks/comparison/bundle-baseline.json)
- [Stress protocol](https://github.com/TanStack/charts/blob/4f5653e552ddf1d268b49da7046199f11b2be44c/benchmarks/comparison/stress/README.md)
- [Catalog conformance protocol](https://github.com/TanStack/charts/blob/4f5653e552ddf1d268b49da7046199f11b2be44c/benchmarks/conformance/README.md)
- [Pinned release-source bundle baseline](https://github.com/TanStack/charts/blob/v0.7.0/benchmarks/comparison/bundle-baseline.json)
- [Stress protocol](https://github.com/TanStack/charts/blob/v0.7.0/benchmarks/comparison/stress/README.md)
- [Catalog conformance protocol](https://github.com/TanStack/charts/blob/v0.7.0/benchmarks/conformance/README.md)

```sh
pnpm benchmark:size
Expand Down
2 changes: 1 addition & 1 deletion packages/charts-core/docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Install TanStack Charts, compact scales, a framework adapter, and o

These docs follow unreleased `main`. The latest published pre-alpha is TanStack
Charts `0.7.0`; use its
[release-source docs](https://github.com/TanStack/charts/tree/4f5653e552ddf1d268b49da7046199f11b2be44c/docs)
[release-source docs](https://github.com/TanStack/charts/tree/v0.7.0/docs)
for the exact surface. Install the core and compact scales in each application
that authors chart definitions:

Expand Down
5 changes: 5 additions & 0 deletions packages/react-charts-catalog/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@
Keep React Native chart-host focusability aligned with the shared definition
contract and toggle sticky activation exactly once per accessibility action.

- Publish the stacked-bar band-and-rule cursor as catalog case 119 at
`@tanstack/react-charts-catalog/cases/119-stacked-bar-band-cursor`, bringing the
published catalog to 110 cases. The case demonstrates mixed cursor
presentation, labels, motion, and keyed updates.

- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]:
- @tanstack/charts@0.7.0
- @tanstack/react-charts@0.7.0
Expand Down
5 changes: 5 additions & 0 deletions packages/react-native-charts/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@
Keep React Native chart-host focusability aligned with the shared definition
contract and toggle sticky activation exactly once per accessibility action.

- Complete React Native host parity for shared focus and free-cursor state,
renderer-native focus and state layers, selection activation, pinned tooltip
context, viewport-filtered focus, polygon areas, and the public
`NativePaintContext.canvas` surface.

- Updated dependencies [[`38cddc8`](https://github.com/TanStack/charts/commit/38cddc846c8f342aedcd237956a0057155022ae9), [`a5f9702`](https://github.com/TanStack/charts/commit/a5f97022f90043254e0e0dde174cdf2a63b6a198), [`4134429`](https://github.com/TanStack/charts/commit/4134429b49973cf64df1f36123ba8392571562eb), [`6fd52a8`](https://github.com/TanStack/charts/commit/6fd52a8910c9f933609dce14bffab5277f6325b2)]:
- @tanstack/charts@0.7.0

Expand Down
25 changes: 25 additions & 0 deletions project.json
Original file line number Diff line number Diff line change
Expand Up @@ -202,6 +202,31 @@
"command": "node -e \"console.log('CI targets passed.')\""
},
"cache": true
},
"ci-distributed": {
"executor": "nx:run-commands",
"dependsOn": [
"format-check",
"docs-check",
"typecheck",
"test-dom",
"test-solid",
"test-solid-ssr",
"test-svelte",
"test-svelte-ssr",
"test-octane",
"test-octane-client",
"react-native-types",
"bundle-check",
"benchmark-check",
"catalog-check",
"react-catalog-check",
"catalog-loading-check"
],
"options": {
"command": "node -e \"console.log('Distributed CI targets passed.')\""
},
"cache": true
}
}
}
4 changes: 2 additions & 2 deletions scripts/check-packed-consumers.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -612,7 +612,7 @@ async function installFixture(tarballs) {
)
await writeFile(
resolve(fixtureDirectory, 'pnpm-workspace.yaml'),
`packages:\n - '.'\noverrides:\n 'd3-sankey': ${JSON.stringify(
`packages:\n - '.'\nautoInstallPeers: false\noverrides:\n 'd3-sankey': ${JSON.stringify(
installedDependency('d3-sankey'),
)}\n '@tanstack/charts': ${JSON.stringify(
coreTarball,
Expand Down Expand Up @@ -699,7 +699,7 @@ async function verifyStandaloneCatalogConsumer(tarballs) {
)
await writeFile(
resolve(standaloneCatalogDirectory, 'pnpm-workspace.yaml'),
`packages:\n - '.'\noverrides:\n '@tanstack/charts': ${JSON.stringify(
`packages:\n - '.'\nautoInstallPeers: false\noverrides:\n '@tanstack/charts': ${JSON.stringify(
coreTarball,
)}\n '@tanstack/react-charts': ${JSON.stringify(
reactTarball,
Expand Down
Loading