Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: ChartGPU/ChartGPU

Line Segmentation & `connectNulls` Support

26 Feb 15:24
d932c88

Choose a tag to compare

Release Notes — Line Segmentation & connectNulls Support

Highlights

  • Line & Area Segmentation via null gaps — Lines and area series can now be visually broken into discrete segments by inserting null entries into your data array. This enables accurate representation of missing data, maintenance windows, trading halts, and session boundaries without hacking around the data model.
  • connectNulls option — A new connectNulls boolean option on line and area series lets you toggle between bridging over null gaps (legacy behavior) or rendering true visual breaks (new default). Works with both array and columnar data formats.
  • WebGPU shader-level gap detection — NaN/null gap awareness is now built directly into the line vertex shader and area vertex generation, ensuring GPU-side rendering correctly handles discontinuous data with zero CPU overhead per frame.
  • Sampling bypass for gapped data — The data pipeline automatically detects null gaps and bypasses the sampling stage to preserve segment boundaries, preventing gaps from being silently dropped during downsampling.
  • New exchange-gaps example — A fully interactive demo showcasing exchange maintenance gaps, connectNulls toggling, multi-asset outages, and trading session concatenation.

What's New

Core Types

  • Widened CartesianSeriesData to accept null entries for line and area series (5ee761c)
  • Added connectNulls option to line and area series configs (992886a)

Options & Data Pipeline

  • Resolve connectNulls for line and area series in the options layer (9a5aea9)
  • Add connectNulls filter in the data upload path (0b8d1fd)
  • Bypass sampling when data contains null gaps (88044c0)

Rendering & Shaders

  • Add NaN gap detection to the line vertex shader (7acc83a)
  • Handle null gaps in area renderer vertex generation (0c6ba74)
  • Fix connectNulls handling with columnar data formats (be58df7)

Examples

  • Add exchange-gaps example (HTML + TS) demonstrating null gap support, connectNulls toggle, multi-asset outages, and trading session concatenation (336755b)
  • Improve exchange-gaps example readability (28318d1)

Tests

  • Add packXYInto unit tests for null gap entries (670ce7f)
  • Add line-gaps acceptance test covering null-gap detection, filtering, bounds computation, option resolution, and sampling bypass behavior (c0197ba)

Documentation

  • Document null-gaps / line segmentation behavior and connectNulls in docs/api/options.md (1dcb881)
  • Surface the feature in the README and examples index

Housekeeping

  • Remove internal docs/plans from tracking (3353a7b)

Related

v0.3.1 Implements touch-friendly inside zooming and a mobile zoom reset affordance for createInsideZoom, addressing mobile usability gaps described in #114.[

25 Feb 23:54
8ba87f3

Choose a tag to compare

Highlights [github](#142)

  • Touch-friendly inside zoom for mobile: createInsideZoom now supports single-finger panning and two-finger pinch-to-zoom on touch devices using the existing ZoomState APIs. [github](#142)
  • Mobile zoom reset button: New createZoomResetButton appears on touch devices when the chart is zoomed and lets users reset to the full domain with a single tap. [github](#142)
  • Lifecycle-aware integration: The zoom reset button is only created when dataZoom includes an inside configuration, responds to theme changes, and is disposed with the chart coordinator. [github](#142)
  • Expanded touch interaction tests: Vitest + jsdom tests now cover createInsideZoom touch gestures and createZoomResetButton behavior, visibility, and theming. [github](#142)
  • Improved DOM test setup: jsdom has been added as a dev dependency to support DOM-based interaction tests in a Node environment. [github](#142)

Release notes [github](#142)

This release adds first-class mobile support to createInsideZoom, enabling single-finger panning and two-finger pinch-to-zoom on touch devices while reusing the existing ZoomState infrastructure. These interactions close a key usability gap for touch users who previously could not smoothly navigate zoomed charts. [github](#142)

To make zooming on mobile safer and more discoverable, a dedicated createZoomResetButton component now appears when the chart is zoomed on touch devices and restores the view to the full domain in one tap. The button is wired into the ChartGPU lifecycle so it is created only when dataZoom uses an inside zoom, updates when the theme changes, and is cleaned up with the coordinator. [github](#142)

On the quality side, new vitest + jsdom tests exercise the touch gesture handling in createInsideZoom (including single-finger pan, pinch-to-zoom, and pointer cleanup) as well as the zoom reset button’s visibility, behavior, and theming across touch and non-touch environments. A jsdom dev dependency was added to support these DOM-oriented tests in CI and local development. [github](#142)

Issues closed [github](#142)

Custom Axis Tick Formatters & Example Gallery Enhancements

25 Feb 21:46
d0d989e

Choose a tag to compare

ChartGPU v0.2.9 – Custom Axis Tick Formatters & Example Gallery Enhancements [[github](https://github.com//pull/140)](#140) github

Highlights

  • Adds a new AxisConfig.tickFormatter API for fully customizable axis tick label formatting on both value and time axes, including null-based label suppression for selectively hiding labels. [[github](https://github.com//pull/140)](#140) github
  • Wires tickFormatter through the render pipeline, including renderAxisLabels and adaptive time-axis tick computation, so layout decisions are driven by the actual formatted label widths. [[github](https://github.com//pull/140)](#140) github
  • Introduces a dedicated tick-formatter example page that demonstrates percentage, duration, custom time, and integer-only label patterns with clear visual behavior. [[github](https://github.com//pull/140)](#140) github

Documentation Updates

  • Extended docs/api/options.md with a detailed description of AxisConfig.tickFormatter, including behavior notes, usage guidance, and inline examples for both value and time axes. [[github](https://github.com//pull/140)](#140) github
  • Documented null-return behavior so users can intentionally suppress specific tick labels without affecting tick placement or scale computation. [[github](https://github.com//pull/140)](#140) github

Example Gallery

  • Added a new tick-formatter example (HTML + TS) showcasing: percentage y-axis labels (0–1 → 0%–100%), duration y-axis labels (seconds → d/h/m), custom time x-axis labels via locale date formatting, and integer-only x-axis labels using null to hide fractional ticks. [[github](https://github.com//pull/140)](#140) github
  • Improved the bottom-left chart configuration in the example to make tick formatter differences easier to see at a glance. [[github](https://github.com//pull/140)](#140) github

Internals & Testing

  • Integrated tickFormatter into renderAxisLabels for both x and y axes and into computeAdaptiveTimeXAxisTicks, ensuring adaptive time-axis tick counts account for formatted label widths. [[github](https://github.com//pull/140)](#140) github
  • Added targeted tests for axis label rendering and adaptive time-axis ticks to validate custom formatter handling and null-based label suppression across value and time axes. [[github](https://github.com//pull/140)](#140) github

Repository Hygiene

  • Updated .gitignore to exclude docs/plans/, keeping local design and implementation plan documents out of version control. [[github](https://github.com//pull/140)](#140) github
  • Removed previously tracked files under docs/plans/ so the repository stays focused on source, docs, and runnable examples. [[github](https://github.com//pull/140)](#140) github

v0.2.8 - Added Grid Lines to Public API Surface

16 Feb 01:58
484fb0c

Choose a tag to compare

ChartGPU v0.2.8 – Grid Lines Public API & Doc Pruning Enhancements [github](#133)

Highlights

  • Exposes grid lines configuration as a first-class part of the public API docs so both humans and LLM agents can discover and configure options.grid without scanning the entire options reference. [github](#133)
  • Streamlines top-level API navigation and trims redundant documentation while preserving clear entry points into grid, axes, theming, and renderer extension guides. [github](#133)

Documentation Updates

  • Added a dedicated “Grid lines configuration” section to docs/api/options.md and wired it into the LLM context guide so agents can reliably generate options.grid blocks. [github](#133)
  • Expanded docs/api/themes.md with a property table that calls out grid-related theming fields, including how gridLineColor is derived from the active theme and how it interacts with series color precedence. [github](#133)
  • Updated docs/API.md, docs/api/README.md, and related guides to reduce duplication while keeping direct links to grid, axes, and theming APIs. [github](#133)

Internals & Contributor Experience

  • Updated docs/api/gpu-context.md, docs/api/annotations.md, and render coordinator docs to reference new INTERNALS sections and the renderer map when extending grid or renderer behavior. [github](#133)
  • Clarified internal extension points so contributors working on grid rendering or renderer internals have a single, well-documented starting point. [github](#133)

LLM & Agent-Focused Improvements

  • Optimized documentation structure to be more consumable by LLMs, improving the likelihood that agents generate correct grid and theming configurations on the first try. [github](#133)
  • Reduced noisy or redundant API text so context windows can focus on high-signal sections like options.grid, theming, and renderer internals that are most relevant to code generation. [github](#133)

v0.2.7

14 Feb 23:32
0360be7

Choose a tag to compare

ChartGPU v0.2.7 – Multi‑Chart Dashboarding & Streaming Dashboards [github](#129)

Highlights

  • Introduces a multi‑chart dashboarding feature set designed for coordinated streaming dashboards and higher throughput on shared WebGPU devices. [github](#129)
  • Enables application‑controlled render loops, shared pipeline caching, and a new streaming multi‑chart APM‑style example for real‑world dashboards. [github](#129)

New Features

  • Added a dataAppend event emitted by appendData() to support real‑time data tracking, cross‑chart coordination, and streaming sync utilities. [github](#129)
  • Implemented external render mode (renderMode: 'external') with renderFrame(), needsRender(), and setRenderMode() so host apps can own the render loop and synchronize multiple charts in a single frame. [github](#129)
  • Introduced an optional shared pipeline cache (createPipelineCache(device)) to dedupe GPUShaderModule, GPURenderPipeline, and GPUComputePipeline across charts on the same GPUDevice, reducing shader compilation overhead in dashboards. [github](#129)
  • Added a streaming multi‑chart APM‑style dashboard example (5 charts, correlated metrics, programmatic annotations, dark theme) using a shared GPUDevice and pipeline cache. [github](#129)
  • Added dark theme support for the streaming dashboard example. [github](#129)

Rendering & Quality Improvements

  • Upgraded the render coordinator to a 3‑pass 4x MSAA pipeline: main scene at 4x MSAA → blit → overlay at 1x. [github](#129)
  • Improved visual quality for line, area, bar, and scatter series in multi‑chart scenarios without changing the existing public API. [github](#129)

Performance & Architecture

  • Shared GPUDevice and shared pipeline cache now enable more efficient multi‑chart rendering for complex dashboards. [github](#129)
  • Ensured bigint type consistency in PipelineCache hashing logic to keep 64‑bit masking and FNV‑1a hash operations strictly on bigint and avoid implicit operand conversions flagged by static analysis. [github](#129)
  • All new capabilities are opt‑in: existing single‑chart setups continue to function unchanged, while dashboards can opt into shared devices, pipeline caches, and external render mode for better coordination and performance. [github](#129)

Documentation

  • Updated CHANGELOG.md for the 0.2.7 multi‑chart dashboarding release. [github](#129)
  • Expanded README.md with a new “Streaming Multi‑Chart Dashboard” section and screenshot, plus an index example entry. [github](#129)
  • Added a Multi‑Chart Dashboard Cookbook (docs/guides/multichart-dashboard-cookbook.md) and linked it from the README and changelog. [github](#129)
  • Enhanced docs/api/chart.md, docs/ARCHITECTURE.md, docs/api/gpu-context.md, docs/api/animation.md, and docs/api-reference.md to cover shared GPUDevice, pipeline cache usage, external render mode, dataAppend semantics, and updated multi‑series animation examples. [github](#129)
  • Updated CLAUDE.md generation tooling and .gitignore to support local doc generation without shipping the tooling in the published package. [github](#129)

Testing

  • Verified the streaming dashboard example with 5 coordinated charts sharing a GPUDevice and pipeline cache. [github](#129)
  • Confirmed external render mode integration with application‑driven requestAnimationFrame loops and needsRender()‑based dirty‑flag handling. [github](#129)
  • Checked dataAppend event emission during streaming appends and basic wiring into chart sync utilities. [github](#129)
  • Manually inspected 4x MSAA output across line, area, bar, and scatter series in multi‑chart scenarios. [github](#129)

Introduces shared GPUDevice support for multi-chart dashboards, plus improved zoom synchronization semantics and new documentation for dashboard patterns

13 Feb 18:45
1b63daf

Choose a tag to compare

Introduces shared GPUDevice support for multi-chart dashboards, plus improved zoom synchronization semantics and new documentation for dashboard patterns. [github](#125)

Highlights

  • Shared GPUDevice for dashboards: Multiple ChartGPU instances can now share a single { adapter, device }, reducing redundant WebGPU initialization and making multi-chart dashboards more ergonomic. [github](#125)
  • Optional create context: ChartGPU.create(container, options, context?) accepts a ChartGPUCreateContext with injected { adapter, device } to opt into shared-device mode when you already manage WebGPU yourself. [github](#125)
  • Clear ownership semantics: Injected adapters/devices are treated as externally owned and are never destroyed by ChartGPU; canvas contexts are still unconfigured on dispose to avoid leaks while respecting host lifetime management. [github](#125)
  • Device loss handling: A new 'deviceLost' chart event is emitted in shared-device mode so dashboards can react to device loss and propagate recovery or teardown logic consistently. [github](#125)
  • Enhanced zoom sync behavior: Zoom range change semantics were refined to support auto-scroll isolation in sync groups, so one chart can auto-scroll while others stay pinned or follow according to group configuration. [github](#125)
  • Multi-chart dashboard cookbook: New documentation and examples walk through building multi-chart dashboards with a shared GPU device and demonstrate the updated zoom event behavior and sync patterns. [github](#125)

v0.2.5

11 Feb 01:32
12dfa30

Choose a tag to compare

What's Changed

Other Changes

  • his PR cleans up and expands the documentation, improves Cartesian data handling and animation robustness, and adds tooling for smoother releases and GitHub Package publishing. by @hunterg325 in #118
  • Update README.md to replace embedded SVG with external asset by @hunterg325 in #119

Full Changelog: v0.2.4...v0.2.5

Typed-Array Streaming appendData (XYArraysData + InterleavedXYData)

09 Feb 22:00
f801ba0

Choose a tag to compare

What's Changed

  • version bump by @hunterg325 in #111
  • Update image reference in README.md from chart-gpu.jpg to chartgpu.png by @hunterg325 in #112
  • Update README.md to include new benchmark results and remove outdated… by @hunterg325 in #113
  • This PR enhances ChartGPU’s streaming, synchronization, and documentation story, with a focus on typed-array data formats, cross-chart zoom sync, and clearer guidance for custom WebGPU/annotation integrations by @hunterg325 in #115
  • Update version in package.json from 0.2.3 to 0.2.4 by @hunterg325 in #116

Full Changelog: v0.2.3...v0.2.4

Streaming Data Performance Improvements - Refactored render coordinator.

06 Feb 12:44
f1a1b9e

Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v0.2.2...v0.2.3

Add Series Toggle Feature - Removed All Instances of Offscreen Canvas; Refactored

04 Feb 22:55
42db2b3

Choose a tag to compare

What's Changed

Full Changelog: v0.2.1...v0.2.2