Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
83 commits
Select commit Hold shift + click to select a range
aa81dad
Match upstream in the shared title, href and marker helpers
dave-hillier Sep 3, 2026
02fcf7b
Add a parity report comparing snapshots against Observable Plot
dave-hillier Sep 3, 2026
cf12d6a
Add the pointer selection store and its upstream-shared helpers
dave-hillier Sep 3, 2026
1b5acac
Rework the React pointer interaction around the selection store
dave-hillier Sep 23, 2026
2b2ab4e
Report the clearing value when the record holding the selection unmounts
dave-hillier Sep 23, 2026
cd02255
Regenerate the pointer snapshot baselines
dave-hillier Sep 23, 2026
35ecf45
Document the pointer rewrite in the CHANGELOG and PLAN.md
dave-hillier Sep 23, 2026
16f5a96
Emit rotate and the anchor translate from the channel, not the value
dave-hillier Sep 23, 2026
f3c71d0
Raster: parse colours through a canvas, cache the converter, fix imag…
dave-hillier Sep 23, 2026
771061d
Place the contour and frame titles inside the element they describe
dave-hillier Sep 23, 2026
96d21aa
Merge the contour, frame and raster fixes (#157, #164)
dave-hillier Sep 23, 2026
cfde8ef
Port AreaLine, so areaX/areaY {line: true} draw the topline
dave-hillier Sep 23, 2026
b67814d
Draw custom marker functions, and give each mark its own marker defs …
dave-hillier Sep 23, 2026
95d34d3
Close the small mark gaps: band title, hexgrid styles, dead code (#166)
dave-hillier Sep 23, 2026
6ea73f7
Compose difference's render onto the areas, and stop churning clip ids
dave-hillier Sep 23, 2026
512bf6f
Merge custom marker functions and the small mark gaps (#158, #166)
dave-hillier Sep 23, 2026
92cb812
Merge AreaLine, the difference render fix and the transform channels …
dave-hillier Sep 23, 2026
c8a010a
Ignore agent scratch directories
dave-hillier Sep 23, 2026
8e65fe6
Point the area-line marker test at the rendered def
dave-hillier Sep 23, 2026
5d0bb34
Fix coverage scope, lint React hooks, drop the dead rollup config
dave-hillier Sep 23, 2026
6d35ad9
Add a pack-and-install smoke test and fix the entry points it checks
dave-hillier Sep 23, 2026
a256f36
Run CI across the maintained Node versions and smoke test the package
dave-hillier Sep 23, 2026
fada23f
Drop Observable Plot's inherited changelogs and images
dave-hillier Sep 23, 2026
33cc991
Dot: carry the title on the dot, as upstream does (#159)
dave-hillier Sep 23, 2026
2b06e67
Tip: measure the box, keep channel styles off it, survive a null form…
dave-hillier Sep 23, 2026
22134f3
Remove the docs .md twins
dave-hillier Sep 23, 2026
6b71aba
Defaults: give the box and the tree link a dark-mode colour (#178)
dave-hillier Sep 23, 2026
707d8b0
Fix the single-file Mocha command in CONTRIBUTING.md
dave-hillier Sep 23, 2026
6515aff
Options: let hasX, hasY and hasXY answer for a missing options object…
dave-hillier Sep 23, 2026
f596f95
plot.scale("projection") answers with the projection (#178)
dave-hillier Sep 23, 2026
9098dd8
Document plot() as static-only, and drop its dead value carry-over
dave-hillier Sep 23, 2026
067b548
Cut PLAN.md down to evergreen design notes
dave-hillier Sep 23, 2026
0c8a7aa
Merge the tooling, CI and ignore-rule fixes (#173, #174, #179)
dave-hillier Sep 23, 2026
304302f
Require react and react-dom as peers
dave-hillier Sep 23, 2026
c196e72
Register marks and scales from layout effects, in children order
dave-hillier Sep 23, 2026
ad47261
Key unserializable plot options by value instead of at random
dave-hillier Sep 23, 2026
49e978d
Let computePlot's failures reach an enclosing error boundary
dave-hillier Sep 23, 2026
ee9aa27
Merge the tip measurement, dot title and upstream follow-ons (#159, #…
dave-hillier Sep 23, 2026
11ffb7e
Merge the static-only plot() documentation (#176)
dave-hillier Sep 23, 2026
fdc0706
Merge the docs cleanup: drop the inherited material (#172)
dave-hillier Sep 23, 2026
86fb0be
Remove the docs conversion script left behind by the MDX port
dave-hillier Sep 23, 2026
12dd638
Remove the VitePress site config and theme
dave-hillier Sep 23, 2026
17dde85
Remove the unreachable renderJSX stub on Render
dave-hillier Sep 23, 2026
1ff4353
Correct the stale value doc in plot.d.ts
dave-hillier Sep 23, 2026
c1db8e6
Merge the dead-leftover cleanups
dave-hillier Sep 23, 2026
3271f19
Drop the ignore rules for the deleted VitePress directory
dave-hillier Sep 23, 2026
091d095
Assert what a null-data mark actually drew, not that an svg exists
dave-hillier Sep 23, 2026
21a0979
Run the pointer store and the transform wrappers under StrictMode
dave-hillier Sep 23, 2026
c355e90
Merge the StrictMode and null-data test coverage (#171)
dave-hillier Sep 23, 2026
b9ebded
Drop the dead _transform methods from cell and bar
dave-hillier Sep 23, 2026
8a64500
Move the legend stylesheets out of the legend components
dave-hillier Sep 23, 2026
1370938
Delete the src/core barrel, and move the mark fixtures out of src
dave-hillier Sep 23, 2026
635bce3
Rename the replot/react entry out of index.tsx
dave-hillier Sep 23, 2026
b68e9f5
Merge the React registration restructure (#145, #148, #150, #151)
dave-hillier Sep 23, 2026
a966b73
Document the imperative API as static in the README
dave-hillier Sep 23, 2026
ef1c84d
Record the unreleased work in the CHANGELOG
dave-hillier Sep 23, 2026
acac1dc
Merge the static-only docs and the changelog entries
dave-hillier Sep 23, 2026
ba2070b
Allocate the difference mark's clip ids from the per-render registry
dave-hillier Sep 23, 2026
a1d7179
Stamp function and unreadable props by identity in mark and scale sta…
dave-hillier Sep 23, 2026
cda68c9
Drain warnings after the marks have rendered
dave-hillier Sep 23, 2026
f249f4a
Record the tipDispatch and tipNull snapshots as the plot's own svg
dave-hillier Sep 23, 2026
981d1b4
Record each plot's expected divergence in the parity allow list
dave-hillier Sep 23, 2026
8591493
Check parity in CI against the pinned Observable Plot snapshots
dave-hillier Sep 23, 2026
f7b9119
Stop reaching into the DOM from Replot and FigureLayout
dave-hillier Sep 23, 2026
bcca045
Type the plot's props as the options plot() takes (#155)
dave-hillier Sep 23, 2026
aef2b86
Attach mark handlers by datum tag, not by counting children (#167)
dave-hillier Sep 23, 2026
acf852e
Remove the VitePress-era MDX migration scripts and the dead Vue compo…
dave-hillier Sep 23, 2026
51fa514
Merge stamping functions and unreadable props by identity (#146, #149)
dave-hillier Sep 23, 2026
bb2d420
Merge the parity CI job, per-divergence allow list and snapshot gaps …
dave-hillier Sep 23, 2026
f91c14d
Merge the DOM, prop types, handler tagging and warning-drain fixes (#…
dave-hillier Sep 23, 2026
e2436d5
Regenerate three baselines for the style prop's CSS serialization
dave-hillier Sep 23, 2026
f97312d
Merge the entry-point rename and project-rule cleanups (#154)
dave-hillier Sep 23, 2026
fe25243
Document the parity allow list's per-divergence format
dave-hillier Sep 23, 2026
74dcfd5
Write the parity allow list in the form it is checked in as
dave-hillier Sep 23, 2026
8de26eb
Share one svg shell between <PlotSvg> and the static renderer
dave-hillier Sep 23, 2026
fb328db
Warn on the NaN-height fallback, and delete the dead style helpers
dave-hillier Sep 23, 2026
a37d772
Promote every faceted mark's ARIA onto one group per mark
dave-hillier Sep 23, 2026
37cfd64
Render the plot on the server, not an empty host (#147)
dave-hillier Sep 23, 2026
efb6774
Merge the shared svg shell, faceted ARIA, core divergences and server…
dave-hillier Sep 23, 2026
4cc2fc7
Describe server rendering as it works
dave-hillier Sep 23, 2026
91a55c0
Record the work landed since the last changelog pass
dave-hillier Sep 23, 2026
5c13082
Merge origin/main: reconcile the release line with the deep-review fixes
dave-hillier Sep 24, 2026
21df24c
Check the snapshots on one Node line, not both
dave-hillier Sep 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
51 changes: 50 additions & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,21 +6,44 @@ on:
pull_request:
branches: [main]

env:
# The Observable Plot commit whose committed snapshots are the parity oracle
# (v0.6.17-41-g1c6b239d). Bumping it means refreshing parity-allow.json in the
# same commit: yarn parity --allow parity-allow.json --update.
UPSTREAM_COMMIT: 1c6b239d1e42eb5c0d8c5b09f51b0c6ce51bea69

jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
# The Node LTS lines that are still maintained.
node-version: [22, 24]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
node-version: ${{ matrix.node-version }}
cache: yarn
- run: yarn --frozen-lockfile
# The snapshot oracle is byte comparison against committed files, and one
# plot is not byte-stable across V8 lines: projectionDomainRatioNC renders
# the same polygon starting from a different vertex on Node 24 than on 22,
# because d3-geo's clipping is sensitive to floating-point differences in
# the V8 the tests run on. The baselines are therefore generated and
# checked on the primary line only, and the other lines run everything
# except the snapshot harness, so a Node-specific breakage in the library
# still shows up here.
- run: yarn test:mocha
if: matrix.node-version == 22
- run: yarn test:units
if: matrix.node-version != 22
- run: yarn test:tsc
- run: yarn test:lint
- run: yarn test:prettier
- run: yarn prepublishOnly
- run: yarn test:smoke
- run: yarn test:publint
- run: yarn test:attw
- run: yarn docs:build
Expand All @@ -29,3 +52,29 @@ jobs:
with:
name: test-output-changes
path: test/output/*-changed.*

# A green test job says Replot's snapshots have not changed; it does not say
# they match Observable Plot's. This job compares the committed snapshots
# with upstream's at the pinned commit, and fails on any plot that differs in
# a way parity-allow.json does not already record.
parity:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 22
cache: yarn
- run: yarn --frozen-lockfile
# Upstream's snapshots are the whole oracle, so fetch its test/output at
# that one commit: shallow, blobless (no file contents until the checkout
# asks for them) and sparse.
- name: Fetch the pinned Observable Plot snapshots
run: |
git init ../observablehq-plot
git -C ../observablehq-plot remote add origin https://github.com/observablehq/plot.git
git -C ../observablehq-plot config core.sparseCheckout true
echo 'test/output/*' > ../observablehq-plot/.git/info/sparse-checkout
git -C ../observablehq-plot fetch --depth 1 --filter=blob:none origin "$UPSTREAM_COMMIT"
git -C ../observablehq-plot checkout FETCH_HEAD
- run: yarn -s parity --upstream ../observablehq-plot --allow parity-allow.json --fail
5 changes: 3 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
.DS_Store
.claude/settings.local.json
.claude/worktrees/
.playwright-cli/
coverage/
dist/
docs/.vitepress/cache
docs/.vitepress/dist
node_modules/
test/output/*-changed.svg
test/output/*-changed.html
Expand Down
419 changes: 0 additions & 419 deletions CHANGELOG-2021.md

This file was deleted.

666 changes: 0 additions & 666 deletions CHANGELOG-2022.md

This file was deleted.

855 changes: 0 additions & 855 deletions CHANGELOG-2023.md

This file was deleted.

129 changes: 0 additions & 129 deletions CHANGELOG-2024.md

This file was deleted.

Loading
Loading