@pond-ts/react 0.30.0 → 0.31.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 +64 -4
  2. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -3,11 +3,13 @@
3
3
  All notable changes to this project are documented here.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/).
6
- `pond-ts` and `@pond-ts/react` release together under a single `v*` tag, so this
7
- file covers both packages. Pre-1.0: minor bumps may include new features and
8
- type-level changes; patch bumps are strictly additive.
6
+ The `@pond-ts` packages — `pond-ts`, `@pond-ts/react`, `@pond-ts/charts`, and
7
+ `@pond-ts/fit` release together under a single `v*` tag, so this file covers
8
+ them all. Pre-1.0: minor bumps may include new features and type-level changes;
9
+ patch bumps are strictly additive.
9
10
 
10
- [Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.30.0...HEAD
11
+ [Unreleased]: https://github.com/pjm17971/pond-ts/compare/v0.31.0...HEAD
12
+ [0.31.0]: https://github.com/pjm17971/pond-ts/compare/v0.30.0...v0.31.0
11
13
  [0.30.0]: https://github.com/pjm17971/pond-ts/compare/v0.29.0...v0.30.0
12
14
  [0.29.0]: https://github.com/pjm17971/pond-ts/compare/v0.28.0...v0.29.0
13
15
  [0.28.0]: https://github.com/pjm17971/pond-ts/compare/v0.27.0...v0.28.0
@@ -22,6 +24,64 @@ type-level changes; patch bumps are strictly additive.
22
24
  [0.19.0]: https://github.com/pjm17971/pond-ts/compare/v0.18.0...v0.19.0
23
25
  [0.18.0]: https://github.com/pjm17971/pond-ts/compare/v0.17.1...v0.18.0
24
26
 
27
+ ## [0.31.0] — 2026-06-28
28
+
29
+ First published release of **`@pond-ts/charts`** and **`@pond-ts/fit`** (both were
30
+ previously `private`). All four packages — `pond-ts`, `@pond-ts/react`,
31
+ `@pond-ts/charts`, `@pond-ts/fit` — now release together, lock-step, under one
32
+ `v*` tag.
33
+
34
+ ### Added — `pond-ts` (core)
35
+
36
+ - **`ValueSeries` + `TimeSeries.byValue(axis)` — the value axis as a closed
37
+ type.** `byValue` re-keys a series onto a monotonic non-time **value axis**
38
+ (distance, cumulative work, …), returning a `ValueSeries` — the value-keyed
39
+ counterpart of `TimeSeries`. It carries the ordering-based operators
40
+ (`axisValues`, `axisAt`, `column`, `nearestIndex`, `sliceByValue`); the
41
+ calendar/clock operators are deliberately absent — a value axis has no
42
+ wall-clock semantics, and the disjoint `ValueSeriesSchema` makes them
43
+ type-impossible. The axis must be **defined, finite, and non-decreasing at
44
+ every row** (it becomes the index); it is dropped from the value columns (it
45
+ is now the key) and the rest reshare zero-copy. Substrate: a new `'value'`
46
+ `KeyKind` + `ValueKeyColumn`. Projection is O(N + C); `nearestIndex` is
47
+ O(log N); `sliceByValue` is O(log N + C) zero-copy. (value-axis RFC Phase 1.)
48
+ - **`scan(source, step, init, options?)` — typed-accumulator running fold.** The
49
+ general form of `cumulative` (the classic `mapAccumL`): the accumulator `A`
50
+ (any value, seeded from `init`) is **decoupled** from the numeric `output` and
51
+ the output column. `step(acc, value, i)` returns `[nextAcc, output]`. With no
52
+ `options.output` the source column is **replaced** in place (as `cumulative`
53
+ does); with `options.output` a **new** column is appended and the source is
54
+ left intact. Missing-cell carry, stored-`NaN`, and multi-entity semantics are
55
+ inherited from `cumulative` (scope per entity with
56
+ `partitionBy(col).scan(...).collect()`). Column-native, O(N + C), no event
57
+ materialization. Enables `split = scan + byColumn` — materialize cross-bin
58
+ state (e.g. hysteresis elevation gain) into a column, then segment it with
59
+ `byColumn`'s pure, order-free reducers. (estela F-geo-2-splits; value-axis
60
+ RFC wave lead.)
61
+
62
+ ### Added — `@pond-ts/charts` (initial release)
63
+
64
+ - **First public release.** A React charting layer over pond-ts — a canvas data
65
+ plane with SVG interactive overlays. `ChartContainer` / `ChartRow` / `Layers`
66
+ composition; `LineChart`, `AreaChart`, `BarChart`, `Scatter`, `BoxPlot`;
67
+ `TimeAxis` / `YAxis` / `XAxis` (time **and** value x-axes); the cursor system
68
+ (staffed flag, per-row cursor modes); shared gap-rendering modes; and the
69
+ estela theme. Peer-depends on `pond-ts`, `@pond-ts/react`, and React 18/19.
70
+
71
+ ### Added — `@pond-ts/fit` (initial release)
72
+
73
+ - **First public release.** A fitness / activity domain library over pond-ts — the
74
+ `Activity` / `Section` façade, unit-safe quantities (`Distance` / `Speed` /
75
+ `Power` / … with `.format()`), geo / power / zones analytics, `Profile` +
76
+ `usingProfile()` → `ProfiledActivity` / `ProfiledSection`, and the `Track`
77
+ value object. Façade-first: one curated flat barrel, with the functional
78
+ operator surface kept internal. Peer-depends on `pond-ts`.
79
+
80
+ ### Changed
81
+
82
+ - **All `@pond-ts/*` peer / dependency ranges widened to `^0.31.0`** for the
83
+ lock-step release.
84
+
25
85
  ## [0.30.0] — 2026-06-17
26
86
 
27
87
  ### Added
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pond-ts/react",
3
- "version": "0.30.0",
3
+ "version": "0.31.0",
4
4
  "description": "React hooks for pond-ts live time series",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -33,7 +33,7 @@
33
33
  "test:runtime": "vitest run"
34
34
  },
35
35
  "peerDependencies": {
36
- "pond-ts": "^0.30.0",
36
+ "pond-ts": "^0.31.0",
37
37
  "react": "^18.0.0 || ^19.0.0"
38
38
  },
39
39
  "devDependencies": {