pond-ts 0.37.0 → 0.39.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/CHANGELOG.md +103 -3
  2. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -8,7 +8,9 @@ The `@pond-ts` packages — `pond-ts`, `@pond-ts/react`, `@pond-ts/charts`, and
8
8
  them all. Pre-1.0: minor bumps may include new features and type-level changes;
9
9
  patch bumps are strictly additive.
10
10
 
11
- [Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.37.0...HEAD
11
+ [Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.39.0...HEAD
12
+ [0.39.0]: https://github.com/pjm17971/pond-ts/compare/v0.38.0...v0.39.0
13
+ [0.38.0]: https://github.com/pjm17971/pond-ts/compare/v0.37.0...v0.38.0
12
14
  [0.37.0]: https://github.com/pjm17971/pond-ts/compare/v0.36.0...v0.37.0
13
15
  [0.36.0]: https://github.com/pjm17971/pond-ts/compare/v0.35.0...v0.36.0
14
16
  [0.35.0]: https://github.com/pjm17971/pond-ts/compare/v0.34.1...v0.35.0
@@ -33,6 +35,104 @@ patch bumps are strictly additive.
33
35
  [0.19.0]: https://github.com/pjm17971/pond-ts/compare/v0.18.0...v0.19.0
34
36
  [0.18.0]: https://github.com/pjm17971/pond-ts/compare/v0.17.1...v0.18.0
35
37
 
38
+ ## [Unreleased]
39
+
40
+ ### Fixed
41
+
42
+ - **Charts — click-to-select an annotation now works while `panZoom` is on.** A
43
+ _selectable but non-editable_ `<Region>` / `<Marker>` (one with no `onChange`)
44
+ lets its press bubble to the plot so a drag can pan _through_ it. The plot
45
+ captured the pointer on press to start the pan, and the browser then retargeted
46
+ the resulting `click` onto the plot (Pointer Events spec: a captured pointer's
47
+ compatibility mouse events fire on the capture target) — silently dropping the
48
+ mark's `onSelectAnnotation`. The plot now **defers** its pan pointer-capture
49
+ until the pointer actually moves past the drag slop, so a click (no drag) leaves
50
+ the pointer on the mark and its select fires, while a press-drag still pans
51
+ through and the tracker still hides once the pan commits. Resolves the
52
+ browser-dependent finding deferred from #308; adds
53
+ `e2e/annotations-panzoom.spec.ts`, the first real-pointer-event behavior e2e for
54
+ the annotation layer. (#309)
55
+
56
+ ## [0.39.0] — 2026-07-03
57
+
58
+ A `@pond-ts/charts` release: the **crosshair reticle + annotation-layout** wave,
59
+ driven by the Tidal terminal. `pond-ts`, `@pond-ts/react`, and `@pond-ts/fit`
60
+ carry no code changes — republished in lock-step (peer ranges widen to `^0.39.0`).
61
+
62
+ ### Added
63
+
64
+ - `@pond-ts/charts`: **`<ChartContainer crosshairSnap>`** (default `true`) — the
65
+ `cursor="crosshair"` reticle centres on the nearest data point; `false` gives a
66
+ **free** reticle whose horizontal line + value follow the pointer y
67
+ (`yScale.invert`), while the vertical line still snaps its x to the data grid
68
+ for a clean time readout.
69
+ - `@pond-ts/charts`: **coincident marker labels merge** — labelled `<Marker>`s at
70
+ the same x fold into one chip (`"a, b, c"`) instead of stacking; their x-axis
71
+ indicator pills dedup to one.
72
+ - `@pond-ts/charts`: **x-axis indicator pills lane-stack** when they'd overlap
73
+ (each connector lengthens to its lane).
74
+
75
+ ### Changed
76
+
77
+ - `@pond-ts/charts`: **`cursor="crosshair"` is now a single reticle** — a
78
+ full-height dashed vertical + full-width dashed horizontal line + a centre dot +
79
+ one value pill, with the time pill connected to the vertical line. (Was
80
+ per-series dots + on-axis pills; the per-series readout stays on `flag` /
81
+ `inline`.)
82
+ - `@pond-ts/charts`: top-flag **labels pack per row** — a label only contends with
83
+ labels in its own row's top space (a bottom-row label no longer dodges a
84
+ top-row one at the same x). A dragged mark is excluded from the pack, so static
85
+ marks hold their lanes as it crosses them (no phantom lane swaps). A marker's
86
+ staff now hangs from the top of its (stacked) flag.
87
+
88
+ ### Fixed
89
+
90
+ - `@pond-ts/charts`: the crosshair x-axis pill and marker pills read the axis's
91
+ own formatter (a value-axis / off-boundary time no longer shows a raw number).
92
+
93
+ ## [0.38.0] — 2026-07-03
94
+
95
+ A `@pond-ts/charts` release: **axis-edge value indicators + the crosshair
96
+ cursor** — the ChartIQ / Yahoo-Finance price-tag family, driven by the Tidal
97
+ terminal. `pond-ts`, `@pond-ts/react`, and `@pond-ts/fit` carry no code changes —
98
+ republished in lock-step (peer ranges widen to `^0.38.0`).
99
+
100
+ ### Added
101
+
102
+ - `@pond-ts/charts`: **`<YAxisIndicator>` + `createLiveValue`** — a value pill
103
+ pinned to a y-axis edge, decoupled from the series' last point. A `LiveValue`
104
+ `source` updates it at high frequency **without re-rendering the chart** (only
105
+ the subscribed pill repaints). Props: `value` / `source`, `axis`, `side`,
106
+ `color`, `format`, `line` (dashed guide), `pointer` (callout triangle).
107
+ - `@pond-ts/charts`: **`cursor="crosshair"`** `CursorMode` — a synced vertical
108
+ line + per-series dots, each series' value pinned to its y-axis and the hovered
109
+ time pinned to the x-axis.
110
+ - `@pond-ts/charts`: **`indicator`** opt-in on `<Baseline>` (a y-axis value pill)
111
+ and `<Marker>` (an x-axis time pill, with a connector down to the mark).
112
+ - `@pond-ts/charts`: `<Baseline labelSide>` (`left` / `right`) + `labelPosition`
113
+ (`center` on the line / `above` it) for the near-line label chip.
114
+ - `@pond-ts/charts`: `<Region edges>` (default `true`; `false` = shaded fill with
115
+ no side outlines).
116
+ - `@pond-ts/charts`: `axisPillStyle`, `contrastText`, `pointerStyle` chip helpers
117
+ are exported.
118
+
119
+ ### Changed
120
+
121
+ - `@pond-ts/charts`: axis indicator pills are **solid** (colour fill +
122
+ auto-contrast text), aligned to the tick-label row, and **always show the axis
123
+ coordinate** — never a custom label (a label stays the in-plot chip).
124
+ - `@pond-ts/charts`: cursor flag / inline chips now have **square corners**; the
125
+ cursor **time** atop a flag stack renders as plain text (no chip background).
126
+ - `@pond-ts/charts`: Storybook reorganized into a feature-axis reference tree with
127
+ systematic per-prop coverage (dev-only; stories are excluded from the package).
128
+
129
+ ### Fixed
130
+
131
+ - `@pond-ts/charts`: the crosshair x-axis pill used the container's time formatter
132
+ (showing a raw number on a value axis) — it now uses the axis's own resolved
133
+ formatter, matching the ticks. The crosshair also no longer double-renders the
134
+ time (a stray per-row chip alongside the x-axis pill).
135
+
36
136
  ## [0.37.0] — 2026-07-02
37
137
 
38
138
  A `@pond-ts/charts` release: the axis wave — label, tick, and domain controls
@@ -110,7 +210,7 @@ lock-step (their `pond-ts` / `@pond-ts/react` peer ranges widen to `^0.35.0`).
110
210
  (`[6, 4]` dashed, `[2, 3]` ≈ dotted; omit or `[]` = solid) applied to the
111
211
  series stroke. Lets a theme set a **modeled / forecast** line (e.g. GARCH
112
212
  vol) apart from an observed one at a glance. Distinct from a `GapMode`'s
113
- inferred gap-bridge dashing (which marks *missing data*, not the whole
213
+ inferred gap-bridge dashing (which marks _missing data_, not the whole
114
214
  line). Additive: existing themes are unaffected; a solid line never touches
115
215
  `setLineDash`. New `Charts/LineChart → LineStyles` story. (#313)
116
216
 
@@ -149,7 +249,7 @@ Tidal wire-format spike. `@pond-ts/react`, `@pond-ts/charts`, and
149
249
  - **`TimeSeries.fromColumns`** — the columnar (struct-of-arrays) ingress,
150
250
  the counterpart to `fromJSON`'s row-tuple shape. Accepts either a plain
151
251
  `number[]` or a `Float64Array` per column — one polymorphic door, so a
152
- wire format only changes the *decoder*, not the ingest. `Float64Array`
252
+ wire format only changes the _decoder_, not the ingest. `Float64Array`
153
253
  columns are adopted directly (zero-copy); `number[]` columns are copied.
154
254
  A `null`/`undefined` cell or a non-finite value (`NaN`/`Infinity`) is a
155
255
  gap, identically across both input shapes. Enforces the same
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pond-ts",
3
- "version": "0.37.0",
3
+ "version": "0.39.0",
4
4
  "description": "TypeScript-first time series primitives",
5
5
  "license": "MIT",
6
6
  "repository": {