All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Shared GPUDevice support - Multiple
ChartGPUinstances can share a single, pre-initializedGPUDevice(via injectedadapter+device) to reduce redundant initialization and improve dashboard ergonomics. deviceLostevent (shared device mode) - When using an injected/shared device, charts emit adeviceLostevent so apps can recreate chart instances without ChartGPU destroying the shared device.- Shared Pipeline Cache - Opt-in
createPipelineCache(device)deduplicatesGPUShaderModule,GPURenderPipeline, andGPUComputePipelineacross charts on the same device, reducing shader compilation overhead in multi-chart dashboards. - External Render Mode - Application-driven render scheduling via
setRenderMode('external'),renderFrame(), andneedsRender()for multi-chart dashboards coordinating their ownrequestAnimationFrameloop. dataAppendevent - Charts emit a'dataAppend'event when data is appended viaappendData()for real-time data tracking and dashboard coordination.- 4x MSAA rendering - Render coordinator now uses 3-pass MSAA strategy (main scene @ 4x MSAA → blit → overlay @ 1x) for improved visual quality.
- Multi-Chart Dashboard Cookbook - Added comprehensive guide at
docs/guides/multichart-dashboard-cookbook.mdcovering shared device, pipeline cache, external render mode, and chart synchronization patterns. - Streaming Dashboard example - Added 5-chart APM-style dashboard with correlated metric streaming, programmatic annotations, dark theme support, and shared device + pipeline cache.
- Acceptance: auto-scroll + zoom sync - Added an acceptance example that covers auto-scroll behavior with zoom synchronization.
- GPUContext shared-device tests - Added tests covering injection/ownership semantics, conditional device destruction behavior, and validation in shared device mode.
- Chart creation context injection -
ChartGPU.create(...)supports injecting a device/adapter context for shared device mode while preserving existing initialization behavior. - Zoom range change events - Enhanced zoom range change event behavior for better multi-chart synchronization.
0.2.5 - 2026-02-10
- Cartesian interpolation and data handling - Refactored Cartesian data handling and improved interpolation logic.
- Packaging and docs polish - Added
.npmignore, fixed repository links, and refined README content.
0.2.4 - 2026-02-09
- Cartesian Data Formats example - Added an example and documentation for additional Cartesian data formats.
- Typed-array streaming docs - Improved docs around typed-array support in streaming updates (
appendData(...)). - Chart sync docs & behavior - Enhanced documentation and functionality for chart synchronization.
- Worker mode removal cleanup - Removed worker mode support and streamlined related rendering documentation.
- Docs & examples refresh - Updated benchmark results, images, and example data generation for consistency.
0.2.3 - 2026-02-06
- Tooltips - Added tooltip support.
- CI - Added GitHub Actions workflow for automated testing.
- Coordinator utility modules + tests - Introduced modular helper utilities (zoom/interaction/animation/tooltip/legend/axis/annotations) with tests.
- GPU texture manager + tests - Added a GPU texture manager implementation with tests.
- Render coordinator modularization - Continued refactoring to a modular internal architecture for maintainability.
0.2.2 - 2026-02-04
- Annotation authoring example - Added an annotations example and improved annotation authoring UX.
- Annotation color picker visual indicator - The color picker now displays a clear selected-state indicator.
- GPUContext portability - Refactored
GPUContextto removeOffscreenCanvassupport. - Annotation authoring example improvements - Improved bell curve data generation and added explicit Y-axis bounds.
- Annotation authoring toolbar - Removed undo/redo/export JSON toolbar buttons to streamline the UI.
- Hover interaction with hidden series - Fixed series-index misalignment affecting hit testing when series visibility changes.
- Single visible pie slice rendering - Fixed the edge case where a single visible pie slice rendered incorrectly.
- Bar chart series visibility - Fixed legend toggling not actually hiding bar series.
- Animation retriggering on legend toggle - Reset intro animation state when toggling visibility after the initial animation completes.
- Animation interruption during legend toggle - Avoided interrupting in-progress animations on visibility-only changes.
- Legend toggle render delay - Ensured an initial render occurs when starting update animations so legend toggles apply immediately.
- Scissor rect clipping during zoom - Applied scissor rect clipping consistently (not just during intro animations).
- Annotation color picker selection - Fixed selection indicator logic by using reliable data attributes.
0.2.1 - 2026-02-02
- Interactive annotation authoring - Added interactive annotation authoring features and improved the authoring UI.
0.2.0 - 2026-02-01
- Ultimate Benchmark example - Added an “Ultimate Benchmark” example and documentation.
- Worker mode removal - Refactored and removed worker mode support.
- Interaction + annotation authoring improvements - Enhanced hit-testing and authoring ergonomics.
0.1.10 - 2026-02-01
Note: This release is tagged as
v0.10.
- Annotations support and examples - Added annotation support and examples, and updated README highlights.
- Y-axis auto-bounds behavior/performance - Improved y-axis auto-bounds behavior and performance.
- Time-axis precision/stability - Improved time-axis precision and rendering stability.
- Annotation rendering performance - Improved annotation rendering performance.
0.1.9 - 2026-01-28
- Scatter density / heatmap mode - Added density/heatmap mode for scatter series, plus an example and README documentation.
0.1.8 - 2026-01-28
- Device pixel ratio handling - Improved device pixel ratio handling and updated documentation.
0.1.7 - 2026-01-28
- Horizontal scroll panning - Touchpad users can pan the chart view by scrolling left/right (horizontal-scroll dominance detection).
- Data zoom slider improvements - Improved slider handling, sizing/reservation behavior, and documentation.
- Grouped bar layout - Fixed grouped/clustered bar rendering so bars stay clipped and don’t overlap within a category.
- Worker ResizeObserver behavior - Fixed worker thread
ResizeObserversizing logic.
0.1.6 - 2026-01-21
- Candlestick streaming example - Improved candlestick streaming configuration and documentation.
- Docs restructuring - Refined documentation structure and internal guides.
0.1.5 - 2026-01-21
- Render-on-demand performance - Charts no longer re-render continuously at 60fps when idle; rendering occurs on demand via
requestRender()and coalesces multiple calls. - Frame scheduling improvements - Introduced improved frame scheduling (including delta-time capping) to prevent jumps after idle.
- Benchmark mode - Added benchmark mode toggle to the million-points example.
0.1.4 - 2026-01-21
- Zoom/pan sampling performance - Implemented caching for sampled data and introduced a buffer zone to reduce resampling frequency while maintaining correctness.
0.1.3 - 2026-01-21
- Rendering and interaction logic - General improvements to rendering and interaction behavior.
0.1.2 - 2026-01-21
- Examples navigation - Added a GitHub link to the examples page.
0.1.1 - 2026-01-20
- Candlestick series (OHLC) - Added candlestick series support, OHLC data handling, time-axis improvements, and tooltip support for candlesticks.
0.1.0 - 2026-01-20
Initial release of ChartGPU - a GPU-accelerated charting library built with WebGPU for high-performance data visualization in the browser.
- Line charts - GPU-accelerated line rendering with customizable styles
- Area charts - Filled area visualization with opacity control
- Bar charts - Clustered and stacked bar charts with flexible grouping
- Scatter plots - Point-based visualization for large datasets
- Pie and donut charts - Circular charts with configurable inner radius
- Hover highlighting - Visual feedback with highlight ring on data point hover
- Tooltip system - Configurable tooltips with item and axis trigger modes, custom formatters, and HTML content support (use with caution for XSS safety)
- Crosshair - Visual guides following cursor position
- Event system - Chart events including
click,mouseover,mouseout, andcrosshairMove - Hit testing - Accurate point detection for cartesian charts (nearest point), bar charts (bounding box), and pie charts (slice detection)
- Multi-chart synchronization - Coordinate interactions across multiple charts using
connectCharts(...)
- Streaming updates - Append new data points dynamically via
appendData(...)for cartesian charts - Auto-scroll - Automatic viewport adjustment for streaming data scenarios
- Data sampling - Built-in algorithms (LTTB, average, max, min, none) with zoom-aware resampling and debounce optimization
- Large dataset support - Examples demonstrate rendering up to 5 million candlesticks at over 100 FPS
- X-axis data zoom - Interactive zoom with inside gestures including wheel zoom and pan
- Data zoom slider - Optional UI component for zoom range selection
- Animation system - Smooth initial intro animations and data update transitions with configurable easing options
- Theme support - Built-in dark and light themes plus custom theme creation
- Automatic legend - Dynamic legend generation displaying series names and colors
- Axis and grid rendering - GPU-rendered axes and grid with DOM text overlay for labels
- WebGPU-powered rendering - Hardware-accelerated graphics for optimal performance
- TypeScript support - Full type definitions and TypeScript-first development
- Functional API - Immutable state management with pure functions
- Comprehensive examples - Working examples for all chart types and features
WebGPU Browser Support:
- Chrome/Chromium 113 or later
- Microsoft Edge 113 or later
- Safari 18 or later
- Firefox: Not yet supported
WebGPU is required to run ChartGPU. Ensure your browser supports WebGPU before using this library.