Download Latest Version v0.3.10 source code.zip (9.5 MB)
Email in envelope

Get an email when there's a new version of ChartGPU

Home / v0.3.5
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-07-18 7.0 kB
v0.3.5 source code.tar.gz 2026-07-18 8.3 MB
v0.3.5 source code.zip 2026-07-18 8.5 MB
Totals: 3 Items   16.8 MB 0

ChartGPU v0.3.5

Compare: v0.3.4…v0.3.5

Scope: 239 files, ~42k insertions / ~17k deletions, 65+ commits, PRs #166–#177.

This release is primarily a performance and architecture update, driven by work against the SciChart.js JavaScript Chart Performance Suite (ingestion rate and FPS, production dist). It also includes streaming/time-axis correctness fixes, logarithmic axes, candlestick price-axis UI, and site updates.


Performance and architecture (#166)

Upload / data residency

  • Ranged append for full-raw and GPU-decimation line buffers
  • Fixed-capacity ring FIFO: appendData(..., { maxPoints })
  • Equal-N y-only rewrite paths (line and scatter)
  • Dual-store hit-test skip when tooltips are off
  • Axes-only setOption reuse when series element identities are stable
  • Domain-space bar packing for axes-only redraws
  • Unbounded append near device storage limits auto-windows like maxPoints (avoids domain/GPU desync past maxStorageBufferBindingSize)

Frame graph

compute (scatter density + line decimation)
  → main 4× MSAA
  → optional dense-hairline sampleCount-1 pass
  → overlay 4× MSAA
  → swapchain
  • Dense hairline LOD for high point counts / multi-series segment budgets (draw-only)
  • Multi-chart submit batching on a shared GPUDevice (microtask-coalesced queue.submit)
  • Sticky auto-range domains for streaming (Y headroom; X tracks data max with headroom 0)

Coordinator structure

  • Thin createRenderCoordinator shell
  • Composition root and domain modules under src/core/renderCoordinator/
  • Docs/architecture updated for the current pass graph

Suite-related work in this PR covered axes-only redraws, ring FIFO + GPU decimation, scatter/y-update/unsorted-line rewrites, FIFO large-N paths, N×M line series, and multi-chart batching.


Streaming and correctness (#167, [#168])

  • Time-axis packing affine so epoch-ms domains stay on-screen
  • Pure type: 'area' through DataStore with ranged append and ring/staging geometry
  • Full-width unbounded streaming (no empty-right grow/reset from X headroom)
  • Modular ring raw lines: shaders use ringStart / ringCapacity so wrap order is logical
  • CPU LTTB keeps domain x in Float64 through index selection (avoids epoch-ms collapse)
  • Dual-store / tooltip-off resync and related hit-test ownership fixes
  • performance.lod: 'auto' | 'strict'
  • auto (default): dense hairline, scatter radius compaction, equal-N LTTB sticky indices
  • strict: honor stroke width / marker size; full LTTB recompute on equal-N y change

Other fixes

PR Change
#169 Time-axis precision and streaming zoom (#161)
#170 Chart sizing under page zoom and CSS zoom (#155)
#171 Area fill disconnects on null gaps instead of fanning to origin (#153)
#172 Line null gaps preserved under zoom; legend above axis labels

Features

Logarithmic axes (#174 / [#135])

  • AxisType: 'log', optional logBase
  • Shader-side log projection; DataStore stays linear
  • Dual logBaseX / logBaseY, log-space affines, tick-aligned grids
  • Sticky log domains, positive-only auto-bounds, area baseline guards on log Y
  • Candlestick streaming: instance re-upload on append / forming-bar updates

Candlestick price axis (#175, [#176])

  • Candle-primary charts: first Y-axis defaults to the right (dual-Y-safe gutters)
  • Series priceLabel: last-price DOM badge, optional price line, optional bar-close countdown
  • Axis header top-rail label

Site (#176)

The project homepage on GitHub Pages is now the live landing site (previously separate from the Pages homepage). It includes live WebGPU demos (multi-series hero stream, multi-chart dashboard wall, candlestick price-axis demo), install CTA, and basic project links. Served from the repo’s Pages setup; source lives with the dev-site landing work in this PR.

Screenshot 2026-07-18 at 4 27 54 PM

URL: https://chartgpu.github.io/ChartGPU/

Version (#177)

  • Package version bumped to 0.3.5

Consumer-facing notes

:::ts
chart.appendData(seriesIndex, newPoints, { maxPoints: 1_000_000 });

ChartGPU.create(el, {
  performance: { lod: 'auto' }, // or 'strict'
});

// log axis
yAxis: { type: 'log', logBase: 10 }

// candlestick
series: [{ type: 'candlestick', data: ohlc, priceLabel: true }]
Topic Behavior
Streaming Prefer appendData + maxPoints over sliding-window full setOption
Axes-only updates Keep series object identity stable for the reuse path
LOD auto may hairline dense lines / compact dense scatter; use strict for exact width/markers
Storage Very long unbounded streams may auto-window near device storage caps
Tooltips Off skips dual-store hit-test work on streaming frames

See docs/performance.md (github.com).


Pull requests

PR Title
#166 perf: upload architecture, frame graph, and modular coordinator
#167 fix: time-axis affine, area streaming, and full-width append
#168 fix: close PR 167 correctness blockers (ring, LTTB, dual-store, LOD)
#169 fix: improve time-axis precision and streaming zoom (#161)
#170 fix: correct chart sizing under page zoom and CSS zoom (#155)
#171 fix: area fill null gaps fan to origin (#153)
#172 fix: preserve line null gaps under zoom; stack legend above axis labels
#174 feat: logarithmic axes (#135) and streaming candlestick re-upload
#175 feat: candlestick exchange-style Y-axis (right rail + last-price badge)
#176 Candlestick price axis, live landing site, and GitHub Pages homepage
#177 chore: bump version to 0.3.5

Full changelog: https://github.com/ChartGPU/ChartGPU/compare/v0.3.4...v0.3.5

:::bash
npm install @chartgpu/chartgpu@0.3.5
Source: README.md, updated 2026-07-18