## Version History

For links to download each release, see the Downloads page.

2.2.0

2023-01-25

Breaking changes:

- Stop parsing the deprecated 8-digit ‘YYYYMMDD’ date format (#984) (#985) (#1023)
- GWT “support” is no longer pertinent as we cannot recompile the binary JAR; the latter is still available from the website for now

New features:

- Add option to colour the range selector’s veil (#856)
- Added strokeStyle option to crosshair plugin (#955)
- Support DocumentFragment as a result from a legendFormatter function (#958) (#959)
- Add data index to legendFormatter data (#965)
- Implement #RRGGBB[AA] hex colour parsing
- Make animateBackgroundFade into an option
- Add new “resizable” option using ResizeObserver on maindiv + CSS
- Add offset config for legend div in follow mode (#946)

Bugfixes:

- Fix duplicate annotation when having duplicate points (#826)
- Make sure that canvasx and canvasy properties are initialised from the start (#896)
- Fix issue #781 when the y range is zero (#909)
- Synchroniser now calls highlightCallback (#935)
- Fix drawAxes to allow one of two Y axes to be drawn (#936)
- LEGEND: Don’t show Y if value is undefined (#853) (#947)
- Fixed 'Cannot read property 'length' of undefined' issue (#962) (#963)
- Two fixes in the calculations of pinch-zoom (#990)
- Fix for double paint of grid of x-axis (#1007)
- Fix number of days in a year (#1012)
- Fix labelsKMB and labelsKMG2 (#571) (#994) (#1022)
- Fix label position in onmouseover legend mode was never updated
- Fix several cases of mispositioning/missizing by enabling elements before using offsetWidth etc.
- Make it possible to use logscale (and sigma, wilsonInterval) per-axis (#986)

Other user-visible changes:

- Documentation is now shipped (mostly self-contained) in the release
- Tests that use Google JSAPI are now marked ⚠ and no other external content is loaded anywhere
- Calculate legend positioning relative to closest data point (#1013)
- Add missing documentation about annotations xval option (#992)
- source mapping URLs are now correct (#1027)
- Ship ES5 versions of extras (#952), use them in examples
- Fix documentation/website HTML/CSS/JS bugs (#979) (#1008)
- On the website, external links are now clearly labelled
- The documentation and website now have browsable subdirectories by manually generated directory index files
- Link to UNPKG as CDN as well (to keep neutral; use of CDNs in websites violates the EU-GDPR)
- Most issues with right-to-left languages should now be fixed (#1019)
- Document that Dygraph will misbehave if the main div has padding

Internal refactors/fixes:

- Use link href, not link src (#904)
- Add missing semicolon in externs (#964)
- Large build system improvements relying in large parts on Debian and GHA
- Full licence review as part of uploading to Debian (#1024) (#1025) (#1029); drop embedded code copies
- Fix some JSDoc warnings
- Update to contemporary versions of Python 3, jQuery, Babel, etc.
- Add copies of design documents that were previously only available on Google Docs or part of GitHub issues to offline documentation
- Nuke useless semicola after function declaration bodies
- Fix closure type annotation in hairlines.js
- Remove already commented-out obsolete, or redundant, code

2.1.0

2017-12-08

New features:

- Double click event can be captured and cancelled by plugins
- setAnnotations's second parameter is now an optional boolean
- Add `pixelRatio` option, which may allow improved performance on smaller screens by controlling the canvas' pixel ratio
- X-axis label and tick logic can now operate at millisecond-level granularity

Bug fixes:

- Repair a bug in "Custom interaction modals" demo

Internal refactors/fixes:

- Fix various spelling mistakes
- Fix a couple of type signatures in dygraph-externs.js

2.0.0

2017-01-11

Breaking changes:

- JS files were renamed to dygraph.js and dygraph.min.js.
- There's now a dygraph.css file that you must include.
- Dropped support for OldIE and other non-standard browsers. dygraphs works in IE11. I'm not sure about IE9 and IE10.
- Double-click to unzoom zooms all the way out (and ignores valueRange).
- Dropped old-style per-axis/per-series options.

New features:

- Add a legendFormatter option
- `this` is the Dygraph object in all callbacks
- pass through (row, col) to valueFormatter
- Option to not sync range in extras/synchronizer.js
- Additional options for styling the range selector
- getRowForX method
- setVisibility can set the visibility of multiple series at once.
- crosshair plugin extra
- rebase/straw broom plugin
- highlightSeriesBackgroundColor option
- yAxisExtremes() method.
- Passing strings in native format now throws. (Previously it kinda sorta worked.)

Bug fixes:

- Selections are always cleared with animations
- synchronizer calls previously-set callbacks
- synchronizer only syncs when graphs are ready
- Reset on synchronized graphs failed
- fix to improve synchronizer performance
- binary search bug fix in synchronizer
- Fix range selection when chart is located inside fullscreen element
- fillAlpha can be set per-series when fillGraph is set.
- xRangePad was ignored on unzoom
- Allow selected points where canvas-y coordinate is 0
- Using valueRange with Logscale and yRangePad has unexpected results
- With "drawGapEdgePoints", unwanted point often drawn at beginning of chart

Other user-visible changes:

- “legend: follow” positioning changes

Internal refactors:

- Code moved into a “src/“ directory
- Tests use Mocha instead of jstd
- dygraphs is split into ES6 modules and uses some ES6 features (e.g. arrows and destructuring).
- dygraphs is built using babel & browserify
- Code coverage is tracked continuously
- Bundle size is now tracked continuously

1.1.1

2015-06-01

- Set `this` to the dygraph in all callbacks.
- Minor bug fixes.

1.1.0

2014-12-03

Highlights include:

- dygraphs is now "retina" compatible.
- Dramatically improved performance for filled charts (i.e. fillGraph)
- More sensible date ticks: "Jan 08"→"Jan 2008", "29Jan"→"29 Jan"
- Using a non-existent option now throws (w/ dygraph-combined-dev.js)
- x-axis log scales
- The `labelsUTC` option forces UTC formatting for all labels.
- The new DataHandler system allows for more flexibility in data loading.
- "this" is set to the dygraph in all callbacks.
- dygraphs has shrunk, because we moved some stuff into "extras" (133kb→122kb)

This will be the last major release to support browsers without a native <canvas> implementation. See blog post for more details.

1.0.1 2013-08-29 | Minor bug fixes and updates to web site.
1.0.0 2013-08-14 | Initial Release. See blog post.