Releases: ChartGPU/ChartGPU
Line Segmentation & `connectNulls` Support
Release Notes — Line Segmentation & connectNulls Support
Highlights
- Line & Area Segmentation via
nullgaps — Lines and area series can now be visually broken into discrete segments by insertingnullentries into your data array. This enables accurate representation of missing data, maintenance windows, trading halts, and session boundaries without hacking around the data model. connectNullsoption — A newconnectNullsboolean option on line and area series lets you toggle between bridging overnullgaps (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-gapsexample — A fully interactive demo showcasing exchange maintenance gaps,connectNullstoggling, multi-asset outages, and trading session concatenation.
What's New
Core Types
- Widened
CartesianSeriesDatato acceptnullentries for line and area series (5ee761c) - Added
connectNullsoption to line and area series configs (992886a)
Options & Data Pipeline
- Resolve
connectNullsfor line and area series in the options layer (9a5aea9) - Add
connectNullsfilter 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
connectNullshandling with columnar data formats (be58df7)
Examples
- Add
exchange-gapsexample (HTML + TS) demonstrating null gap support,connectNullstoggle, multi-asset outages, and trading session concatenation (336755b) - Improve
exchange-gapsexample readability (28318d1)
Tests
- Add
packXYIntounit tests for null gap entries (670ce7f) - Add
line-gapsacceptance test covering null-gap detection, filtering, bounds computation, option resolution, and sampling bypass behavior (c0197ba)
Documentation
- Document null-gaps / line segmentation behavior and
connectNullsindocs/api/options.md(1dcb881) - Surface the feature in the README and examples index
Housekeeping
- Remove internal docs/plans from tracking (
3353a7b)
Related
- Closes #103 — [Feature]: multiple segments for a line
- Pull Request: #144 — Feat/add line segmentation
v0.3.1 Implements touch-friendly inside zooming and a mobile zoom reset affordance for createInsideZoom, addressing mobile usability gaps described in #114.[
Highlights [github](#142)
- Touch-friendly inside zoom for mobile:
createInsideZoomnow supports single-finger panning and two-finger pinch-to-zoom on touch devices using the existingZoomStateAPIs. [github](#142) - Mobile zoom reset button: New
createZoomResetButtonappears 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
dataZoomincludes aninsideconfiguration, responds to theme changes, and is disposed with the chart coordinator. [github](#142) - Expanded touch interaction tests: Vitest + jsdom tests now cover
createInsideZoomtouch gestures andcreateZoomResetButtonbehavior, visibility, and theming. [github](#142) - Improved DOM test setup:
jsdomhas 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)
- #114 – [Feature: Better Mobile Support, Gesture Handling for Zoom](https://github.com//issues/114) github
Custom Axis Tick Formatters & Example Gallery Enhancements
ChartGPU v0.2.9 – Custom Axis Tick Formatters & Example Gallery Enhancements [[github](https://github.com//pull/140)](#140) github
Highlights
- Adds a new
AxisConfig.tickFormatterAPI for fully customizable axis tick label formatting on both value and time axes, includingnull-based label suppression for selectively hiding labels. [[github](https://github.com//pull/140)](#140) github - Wires
tickFormatterthrough the render pipeline, includingrenderAxisLabelsand 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-formatterexample 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.mdwith a detailed description ofAxisConfig.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-formatterexample (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 usingnullto 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
tickFormatterintorenderAxisLabelsfor both x and y axes and intocomputeAdaptiveTimeXAxisTicks, 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
.gitignoreto excludedocs/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
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.gridwithout 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.mdand wired it into the LLM context guide so agents can reliably generateoptions.gridblocks. [github](#133) - Expanded
docs/api/themes.mdwith a property table that calls out grid-related theming fields, including howgridLineColoris 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
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
dataAppendevent emitted byappendData()to support real‑time data tracking, cross‑chart coordination, and streaming sync utilities. [github](#129) - Implemented external render mode (
renderMode: 'external') withrenderFrame(),needsRender(), andsetRenderMode()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 dedupeGPUShaderModule,GPURenderPipeline, andGPUComputePipelineacross charts on the sameGPUDevice, 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
GPUDeviceand 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
GPUDeviceand shared pipeline cache now enable more efficient multi‑chart rendering for complex dashboards. [github](#129) - Ensured bigint type consistency in
PipelineCachehashing logic to keep 64‑bit masking and FNV‑1a hash operations strictly onbigintand 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.mdfor the 0.2.7 multi‑chart dashboarding release. [github](#129) - Expanded
README.mdwith 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, anddocs/api-reference.mdto cover sharedGPUDevice, pipeline cache usage, external render mode,dataAppendsemantics, and updated multi‑series animation examples. [github](#129) - Updated
CLAUDE.mdgeneration tooling and.gitignoreto 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
GPUDeviceand pipeline cache. [github](#129) - Confirmed external render mode integration with application‑driven
requestAnimationFrameloops andneedsRender()‑based dirty‑flag handling. [github](#129) - Checked
dataAppendevent 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
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
ChartGPUinstances 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 aChartGPUCreateContextwith 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
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)
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.
What's Changed
- version bump by @hunterg325 in #107
- Revise Firefox WebGPU support information by @dogmatic69 in #108
- Refactor render coordinator - add tests by @hunterg325 in #109
- Performance/investigate low fps streaming performance by @hunterg325 in #110
New Contributors
- @dogmatic69 made their first contribution in #108
Full Changelog: v0.2.2...v0.2.3
Add Series Toggle Feature - Removed All Instances of Offscreen Canvas; Refactored
What's Changed
- Version bump; remove dead code by @hunterg325 in #99
- Adds the annotations authoring example to the examples gallery by @hunterg325 in #100
- Stop tracking unnecessary files by @hunterg325 in #101
- Add Series Toggling by @hunterg325 in #105
- Refactor GPUContext to remove OffscreenCanvas support by @hunterg325 in #106
Full Changelog: v0.2.1...v0.2.2