1.13.1
===

Improvements
------------

- Upgrade to MathJax v4 in API docs
- Add "JSXGraph example:" to `console.log()` outputs in API docs

Bug fixes
---------

- use of `Line.getAngle()` without parameters
- `polyhedron3d` shader: attribute `visible` was missing
- Various fixes in API docs, in particular use of MathJax and 'intl'
- radar chart
- Remove several `console.log()`

1.13.0
===

API changes: the property of the elements `smartlabel`, `slopetriangle`, and `label` are now `smartlabel`, `slopetriangle`, and `label`.

New features
-----------

- Shortcut `JXG.board()` for `JXG.JSXGraph.initBoard()`
- JSXGraph wrapper div: `JXG.appBox()`, uses the new attribute `clip`
- New element 'sketchcurve'. It is available as `board.sketches`
- 3D: enable user supplied shading angle
- 3D: face3d attribute: shader.light
- 3D: Add attribute "cyclic" to point3d (glider)
- 3D: New 3D transformations types: 'affine', 'affinematrix', 'generic', 'matrix'
- 3D: Add polyhedron3d as visualization for surface3d with new attributes `style` and `polyhedron`
- 3D: Add polyhedron as visualization for plane3d with new attributes `style` and `polyhedron`
- 3D: Add style 'colorarray' to surface polyhedron3d
- New transformation types (2D): 'affine', 'affinematrix'
- Add functions `removeTransform` and `clearTransforms`
- Angle, sector, arc: allow clockwise variants
- New method JXG.Math.Statistics.boxplot(data)
- boxplot: enable plotting of outliers. Add '-' and '|' as faces for outliers of boxplots
- New curve attribute: RDPthreshold
- New board attribute "cssStyle" (includes background)
- New color function `JXG.hsv2hsl()`
- New color function `JXG.mixColor()`
- smartlabels: new attributes `visibleThreshold`, `formatValue`
- slopetriangle: add functions `deltaX` and `deltaY`, add attribute `formatValue`
- JessieCode: add function `minParentheses()`
- `JXG.Dump.toJessie(board, noAttributes)` new param `'noAttributes'`
- new method `GeometryElement.toTopOfLayer()`

Improvements
------------

- 3D: box3d use plane gradients
- 3D: face3d - add shader attribute [fixed=false]
- 3D: realize axis3d by 3D lines
- 3D speed: handle azimuth and elevation pointer events together and more
- 3D axes (center): show labels by default
- 3D glider
- 3D: Enable (again) dragging of 3D point gliders on plane3d withoud pressing shift key
- Update node packages needed for JSXGraph development
- Ticks: combine attribute 'clip' with _isInsideCanvas()
- `svg.dumpToDataURI`: include logo
- dumpToURI() of MathJax text
- Improved `Dump.minimizeObject()` minimizes list of changed attributes
- Disable use of BOARD_QUALITY_LOW for plotting (experimental)
- Reactivate attribute RDPsmoothing for plotting
- Add `<sketchoicon>` to `convertSketchometry2CSS`
- RDPsmoothing
- Reduce `max_level` in implicitplot and prepare RDP in user coords
- Establish default RDP simplification in user space
- smartlabels: various improvements
- slopetriangle: various improvements
- Unit tests: automatically choose chrome or chromium
- Transformations: store type in `this.transformationType`
- Transformatons: melting transformation and fix regression
- Complex numbers: `toString(digits)` new parameter digits, new method `toArray()`
- Add constant `Env.maxScreenCoords`
- Handling of attribute value 'inherit'
- Refactor eslint settings

Bug fixes
---------

- Intersection of inequalities
- Bug fixes in mathematical routines, together with unit tests (by AI)
- Color of arrow heads
- Slider bug
- JessieCode regression
- Headless browser support
- Handling of moveTarget
- 3D event handler and Firefox
- Eventhandling board + 3D
- Fix regression: showInfoBox
- Measurements: dimension for `Diameter
- Opacity for arrow heads
- change `elType` of slope trigangles to `slopetriangle` (instead of `polygon`)
- change `elType` of smartlabels to `smartlabel` (instead of `text`)
- change `elType` of labels to `label` (instead of `text`)
- Apply curve transformations to label, too
- `projectCoordsToParametric()`
- Consistent use of homogeneous coordinates for plane3d elements
- Visibility of function graph labels
- Intersection of lines and curves
- Multiplication of complex numbers
- Remove clipping of scrCoords. Not longer necessary in modern browsers

PRs by Christian Perfect, CloudShannon, Andreas Walter


1.12.2
===

Unnecessary zip files have been removed to be below the maximum size of the repository, e.g. of jsdelivr.

1.12.1
===

Improvements
------------

- API docs of `initBoard`: link to all available attributes
- Add version string to jsxgraph.css
- Tangential intersections between 'functiongraph' elements
- Precision of `meetCurveCurve`
- Arrow heads in SVG take CSS color of line
- Security: replace some `innerHTML` by `innerText`
- `moveTo()`, `visit()`: avoid throwing error
- Speed up `turtle.clearScreen()`

Bug fixes
---------

- Fix bug in API docs of ia.js
- `isBrowser(undefined)`: return false
- Fix regression: handling of attribute 'frozen'
- smartlabel on line was not rotated
- smartlabel for angles
- `polyhedron.toSTL()`: Replace "model" by "solid"
- API docs: correct description `options.effect` for `moveTo()`, `visit()`

1.12.0
===

New features
-----------

- 3D: STL file format (ASCII) parser / writer for polyhedron3d
- New board attribute showLogo. Display logic is: showLogo OR showCopyright
- Complex numbers: new methods abs(), angle()
- New method: Line.getBoundingBox()
- CoordsElements (points, texts, images): add parameter maxRounds to startAnimation

Improvements
------------

- Simplify use of attribute frozen, especially for sliders
- Improved autoposition algorithm for labels
- Clipping of implicit curves
- 3D rotations: enable rotation around point, rotation of general line
- API docs: 3D transformations
- Depth order: improved correctness and speed up
- Shorten copyright string, add logo
- New favicon files

Bug fixes
---------

- Stop event propagation on input field
- Arrow rendering
- Vanishing 3D line
- 3D removeObject()
- Canvas renderer: gradient color on lines
- Curve.findDomain(), Curve.getLabelPosition
- Label positioning on disconnected curves


1.11.1
===

Improvements
------------

- Board attribute `browserPan`: support object variant `{ enabled: true }`

Bug fixes
---------

- Fix backwards compatibility for color value `null`
- `setAttribute`: conflict with shortcut names
- `view3d.removeObject`


1.11.0
===

New features
-----------

- New element `polyhedron3d`
- Depth ordering of 3D elements: Generalize font/back detection of 3D points to other elements
- Shader attributes for polyhedron3d
- Shader for polyhedron3d
- Attribute functions support the targeted geometry element as parameter
- ARIA attributes for every element (SVG only)
- CSS classes for every element (SVG only). This allows the application of SVG filters
- 3D transformations for point3d, line3d, plane3d, curve3d, surface3d, polyhedron3d. Not supported, yet: circle3d, polygon3d, text3d, ticks3d
- 2D transformations: new type `matrix`
- 2D and 3D curves by array of coordinates

Improvements
------------

- Massive speed improvements when rotating the 3D view
- Refactor 3D elements. Among other things: use of homogeneous coordinates internally everywhere.
- 3D view sliders can be positioned by attributes
- New methods in `JXG.Math`: `matMatAdd`, `matNumberMult`, `vecMatMult`, `trace` of a matrix
- New method `JXG.Math.Geometry.isConvex`
- Keyboard navigation, including 3D views
- Position label by `position`, `distance` attributes for `angle`, `arc`, and `sector`
- Improved convex hull algorithm
- Much improved element `legend`
- Groups: allow texts and images as members
- JessieCode: enable numbers in scientific notation
- Enable glider on `sphere3d` elements
- `plane3d`: allow `line3d` as defining element and also enable construction by three points
- Improved dragging of 3D points
- Adapt 3D info box style
- Enhance element `measure`
- `moveTo`, `visit`, `moveAlong` are available as promises: `moveToES6`, `visitES6`, `moveAlongES6`
- Improved precision for implicit curves
- API docs
- Zoom attributes may be functions now
- Add logo images to the JSXGraph repository

Bug fixes
---------

- Arrow heads on Safari
- Fix regression: sphere3d
- Remove singularity in sphere central projection
- Dragging of labels
- Screenshot of elements with gradient colors
- User defined ids of 3D elements
- Canvas: use `linejoin:round` for curves
- Radial gradient of points in canvas
- Update problems of integral elements
- Angle for parallel lines
- toLowerCase in `setAttribute()`
- Slider handling of snapWidth
- Handling of maxBoundingBox
- Implicit plotting

1.10.1
===

Improvements
------------

- Angle element: allow empty string as name
- Better control on animation speed with `<` and `>`
- `JXG.Math.Statistics.histogram`: count of long tail elements not in histogram range
- Prevent dragging of 3D points out of the `view3d` box.
- API docs
- Retire python2 server module
- Remove unused file `src/index2.js`

Bug fixes
---------

- 'Glider' on function graph did not respect domain
- Visibility issues in 3D with `axesPosition: 'border'`
- Initial camera position in `view3d`
- Crash if 3D plane does not intersect 3D view
- `vectorfield3d`: allow function returning three values as parameter
- Inheritance of 3D axis options
- `text3d`: string from function call

1.10.0
===

New features
-----------

- New element `tangentTo`
- New element `text3d`
- New element `ticks3d`
- Support 3d axes position `'border'`
- New random numbers with Pareto distribution

Improvements
------------

- `JXG.Math.Numerics.histogram`: cumulative version
- Gradual improvement of 3D functionality
- Enable dragging of 3D lines
- Stability of `JXG.Math.Numerics.fzero`, `JXG.Math.Numerics.fminbr`
- Stability of implicit curves
- Implicit curves: add parameters `rangex` and `rangey`
- Enable input of points for `JXG.Math.Geometry.det3p`
- Add attribute `autoPositionMaxDistance` to labels
- Unit tests for tangents and normals
- API docs
- Makefile: force use of gawk

Bug fixes
---------

- Glider on parametrized curves
- Line label
- 3D view attributes
- 3D infobox and drag icons with katex and mathjax
- `removeAllTicks()`
- `SVG.dumpToCanvas`, `SVG.dumpToDataURI`
- Transformation of images. Disable viewport attempt
- Zooming with ID in JSXGraph div
- Tangents and normals on transformed curves

1.9.2
===

New features
-----------

- New view3d attribute `depthOrderPoints` to adapt z-ordering of 3D points
- 3D: Add third view3d slider `bank`
- Allow hiding of view3d
- New GeometryElement attribute `nonnegativeOnly`

Improvements
------------

- Improve coords projection to function graph
- 3D: Trackball navigation
- 3D: Change default color of axes
- Resizing of the container
- Printing from browser
- Tangents on curves
- API docs
- Prefix parser for measurements
- Refactor resize events

Bug fixes
---------

- Prevent infinite growing of a board by resizeObserver
- JessieCode: using slider by name only
- Fix regression in parallelogram
- SVG resize
- Set arrow head
- Merge of attributes
- isPoint3D
- `JXG.toFraction()`
- `curve.moveTo()`
- Automatic label placement
- disable resizeObserver in unit tests
- Glider and tangents on arcs and sectors

1.9.1
===

Bug fixes
---------

- `import` of JessieCode
- Handling of label attributes

1.9.0
===

New features
-----------

- 3D: now, beside parallel projection also central projection is supported
- new element `sphere3d`
- new element `intersectionline3d`
- new element `circle3d`
- new gliders: point3d can glide on lines and curves
- new element `intersectioncircle3d`
- new element `polygon3d`
- new version of `otherintersection`
- new 3D control: virtual trackball
- new label positioning for lines, circles and curves
- random numbers for uniform, normal, exponential, beta, gamma, chi-square, F, T, binomial, geometric, hypergeometric, Poisson distribution
- new function `JXG.Math.Statistics.histogram`
- new math function `JXG.Math.gamma`

Improvements
------------

- API docs
- in default mode, `click` and dblclick` events follow JavaScript standard
- new default for numbers as texts: 'formatNumber:false'
- grid: new default is `drawZero:true`
- grid: `size` has unit pixel now
- grid themes
- use file name ending `.js` in all import statements
- speed improvement: reduce `concat` by `Type.concat`
- new 3D examples in `examples/`
- mark ancient browser detection methods as deprecated
- add more exports to `index.js`
- board zoom center can be either the mouse pointer position (or midpoint of two finger touches) or the center of the board

Bug fixes
---------

- keyboard control 3D view
- lower / upper case  problem in `providePoints`
- setting of Riemann sum type
- grid: handling of attributes
- grid: remove unused unit `abs`
- 3D elevation speed
- grid: remove redundant lines
- sector arc
- 3D axes were not fixed
- slider label
- glider handling
- slider handling in JessieCode
- remove use of `String.at()` (moodle problem)
- remove const `JXG.touchProperty`
- toggling of arrow heads
- tapemeasure
- toFraction

1.8.0
===

New features
-----------

- Element `grid` has been completely overhauled with many additional features
- Element `axis` has been completely overhauled with many additional features
- Pointer and keyboard control of 3D views.
- New events `click` and `dblclick` on desktop browsers
- Tick labels can now be displayed as fractions

Improvements
------------

- API docs
- Lines: new method `Direction`
- New method `Math.roundToStep`
- New method '`JXG.parseNumber` to handle various unit numbers in strings
- New method `JXG.parsePosition` to handle combinations of position options in strings
- New methods `JXG.Math.decToFraction` and `JXG.toFraction` to convert float to fraction
- New text attribute `formatNumber`
- Various new features in the `measurement` element
- String positioning in SVG
- Add various geometry methods to JessieCode
- 3D: elevation now runs from 0 to 2pi
- "arrowparallel": is of type `vector` now

Bug fixes
---------

- Handling of font size after call of `setAttribute`
- Slope triangle: handling of label
- Implicit curve handling of string input
- Ticks of tape measures
- dragging of 3D points

1.7.0
===

New features
-----------

- New element `implicitcurve`: plot curve given by an equation F(x, y) = 0
- New element `parallelogram`
- New element `measurement` and new simple prefix parser
- New element `vectorfield3d`
- Add board attribute `theme`
- Add theme `mono_thin`
- New function `JXG.stack2jsxgraph`
- New method JXG.Math.Numerics.polzeros
- Extend method `Value` for angle, arc and sector.
- New method `Coords` for point, image and text

Improvements
------------

- New function `JXG.Math.Geometry.distPointSegment`: computes distance point from segment
- New function `JXG.Math.Numerics.glomin`: Brent's global minimizer
- New function `JXG.Math.hypot`: Euclidean length of a vector
- New function `JXG.Math.hstep`: Heaviside unit step function
- New function `JXG.Math.Numerics.polzeros` to compute all zeros (including the complex ones) of a polynomial
- New quadtree implementation `BoxQuadtree` for storing segments
- Add new point face `<<>>` or `diamond2` (enlarged to match size of `[]`)
- API reference: many bug fixes, improvements, many new examples
- Improve Jessiecode support in text elements
- JessieCode support of available functions and methods
- Angle element: set correct radius in sub-object arc
- Remove `bst.js` and `heap.js` from core
- Adapt mediawiki plug-in for the latest version of mediawiki
- Improve fullscreen mode
- JessieCode: improved handling of expressions containing a slider value `a`
- Defining points of axes
- Curves: set default values for min and max values of the parameter
- Attribute handling
- Massive speed up of `board.removeObject`
- Allow change of arrow heads with `setAttribute`
- Navigation buttons: individual CSS classes
- Refactor `board.registerEvents`
- Refactor JavaScript (replace `String.substr()`)
- New method for complex numbers: `JXG.C.copy`
- Arc: add method 'L'
- Sector: add methods Area and Perimeter

Bug fixes
---------

- Address many eslint warnings
- Tangent on sector
- Intersection curve, circle
- Use absolute lengths for circle construction by radius and fixed segment lengths
- pinch-to-zoom
- function plot algorithm
- Retire `geonext2js`
- Symbolic derivatives
- Circum circle handling
- slopetriangle: attribute borders
- `glider.free`
- Remove `jsxcompressor.min.js` from version control
- super- und sub-scripts without TeX
- `inequality`: attribute `inverse`
- Handling of lower case in `deepCopy`, `copyAttributes`
- ES6 support of JSXGraph

1.6.2
====

New features
-----------

- `JXG.JSXGraph.initBoard()` accepts a reference to the hosting HTML element

Improvements
------------

- Quadtree functionality

Bug fixes
---------

- `foreignobject` regression

1.6.1
====

New features
-----------

- Slider snap values
- New text attributes `autoPositionMaxDistance`, `autoPositionMinDistance` for label positioning

Improvements
------------

- Fullscreen mode scaling is independent from original CSS
- Fullscreen mode reacts to orientation change
- Riemann sum: Display Simpson's rule as quadratic function
- Enhance quadtree API

Bug fixes
---------

- API docs
- Runge-Kutta method

1.6.0
====

New features
-----------

- New elements `vectorfield` and `slopefield`
- New element `smartlabel` for displaying measurements
- New method: `board.setAttribute()`
- Add internationalization for formatting numbers: new attribute `intl`
- Dotted lines (with attribute `dash:7`)
- New attribute `dashScale` for line dashes
- Allow KaTeX macros
- Line elements: New values for label attribute `position:first' and 'position:last'
- Transformations can handle HTML texts now
- New board attributes: `registerResizeEvent` and `registerFullscreenEvent`

Improvements
------------

- New circle method `circle.Perimeter()`
- New line method `line.Slope()`
- New polygon method "L()", alias for Perimeter()
- `JXG.Math.Numerics`: New methods getLagrangePolynomialCoefficients, f.getCoefficients
- New method `Sector.setRadius`
- Allow all text elements to be rotated
- 3D: Improved API and bug fixes
- 3D: Allow vertical movements of 3D points by pressing the shift key
- 3D: add method `removeObject`, `set/getAttribute`
- 3D: azimuth rotates around center of box, not around origin
- Keyboard control: move texts and polygons, keep elements highlighted while having focus
- Much improved two-finger handling of objects
- Logging of user activity: add more data, like positions
- Improved TypeScript support
- API documentation
- Intersections: allow function as number of the intersection
- Metapost curves: new API, improved support of tension, curl, ...
- Allow slashes in IDs, i.e. SVG IDs are escaped.
- Numerical stability of path clipping
- New method `JXG.isBoard()`
- Add attribute `lineCap` for circles
- foreignObjects has new default attribute `needsRegularUpdate:false`
- Make touchpoint offset dependent on point visibility
- PointerDownListener: Add parameter to prevent evt canceling
- Refactor ticks, especially insertTicks algorithm
- Ticks: mark attribute `precision` as deprecated
- Add missing options entries for various derived elements like tangent
- Enable infobox attributes as sub-attribute of the board
- New attribute `polygon.highlightByStrokeWidth``
- Add pointerleave listener

Bug fixes
---------

- Dependency check for transformations. This bug broke reflections and mirror elements
- `hasPoint` method of curves of Bezier degree 3
- Fix regression: dragging of lines
- Triangles were hexagons
- intersection of polygons with line through infinite point
- Add and remove polygon vertices
- `circle.setRadius(0)``
- Attributes for foreignobject
- 3D panning
- Invisible button, checkbox, input element was not created correctly
- Point face 'triangleup'
- Out of memory bug for grid size 0
- `hasPoint` if one axis is "flipped"
- Some API doc hyperrefs
- Imports in `index.js`
- JessieCode dump: remove name conflict of function variables and object names
- Projection of glider to curve, if curve is partly undefined.
- Ignore touchFirstPoint, touchLastPoint for invisible points
- Initial positioning with snapToGrid
- Jessiecode compile(): introduce `needsAngleBrackets` to distinguish parenthesis in functions and property delimiters.
- SVG dump: remove `&quot;` from URLs
- Numerical instability in `meetLineLine`
- Ticks: fix numerical instability with includeBoundaries
- Visibility issue if a polygon becomes undefined
- Touch events: executed twice
- polygons and snapToGrid: prevent rotation, scaling by two fingers
- Correct symbolic simplification

1.5.0
====

New features
-----------

- API change in JSXCompressor. Old: `JXG.decompress` New: `JSXCompressor.default.decompress`
- Code base switched from AMD to ES6 imports
- New attributes `majorTickEndings`, `ignoreInfiniteTickEndings`
- New math class Mat.Heap
- New board attribute `browserPan`: allows to scroll web page by swiping in JSXGraph board
- New element attribute `shadow`: enables individual shadows for each stroke element (in SVG)
- New turtle methods: getPenColor, getHighlightPenColor, getPenSize
- New events for keyboard handling:
    - keymove for board
    - keydrag for elements
- New board attribute fullscreen{ scale: 0.85 }
- New board attribute `logging`: enables logs of user activity
- New attribute transitionProperties: enables more flexible transitions
- New point faces | ('divide') and - ('minus')
- New attributes distanceX/Y for infobox element

Improvements
------------

- Stability of bounding box after orientation changes or resizes if `keepaspectratio=true`
- Remove all 3rd party dependencies of jsxgraphcore.js, e.g. canvas.
- Ecosystem:
    - .gitignore, Makefile, package.json
    - Add github actions
    - Add `distrib/jsxgraphcore.js` and `distrib/jsxgraphsrc.js` to .gitignore
    - Update README.md
    - Add version number to API references
- Add unit tests
- Continuous improvement of `index.d.ts`
- Deep merging of attributes: new method `mergeAttr` in `env.js`
- Merge document attribute as black box instead of object (shadowDOM)
- Improve shadow DOM support
- Improve browserless support
- API docs
- Click on slider triggers 'drag' event
- Add dependence on elements when creating JessieCode function
- startAnimation: allow functions as parameters
- Update JSXCompressor package

Bug fixes
---------

- 3D curves
- Swap ids of navigation buttons up/down
- Coords event handler
- Pass explicit reference to $jc$ in jessiecode.js
- inherited visibility of hatch
- Keep resized view centered if not setting bounding box
- Set renderer argument when loading board from string
- Some fixes for IE11 compatibility
- Fix regression in snapToGrid
- updateContainerDims: avoid NaN when containerObj is not attached to the page
- Remove the global variable `x_internalload`
- Speed improvement in defaultAxes

1.4.6
====

New features
-----------

- New feature: ids for navigation buttons
- New ticks attribute `ticksPerLabel`: allows minor ticks to be labelled as well
- Attribute `hasInnerPoints` for curves
- Set evenodd fill rule for polygon fills

Improvements
------------

- Refactor 3D API
- Refactor text handling (MathJax / JessieCode / HTML)
- Allow functions as input for labels of checkbox, input and button
- TypeScript: fontUnit added to TextOptions
- Clipping: handle more extreme cases
- Fullscreen mode support independent from browser zoom level (webkit)

Bug fixes
---------

- Conflicting 2D and 3D calls
- polygonalchain: add / remove points
- Replace fullscreen icon by SVG image
- Problems with integral element / gliders on function graphs which are not defined everywhere (like log)

1.4.5
====

New features
-----------

- New element attribute `rotatable`
- 3D points: new method setPosition3D()

Improvements
------------

- Allow value tags in strings in combination with MathJax
- Gradually improvement of index.d.ts
- API doc
- JSXGraph in shadowDOM
- FullscreenMode in shadowDOM
- Speed improvement COBYLA

Bug fixes
---------

- Handling of backslashes in strings. Improves MathJax in JessieCode
- Keyboard mode: allow o-key and arrow keys in input fields
- Precision problem in tick labels
- Fix regression: snapToGrid for lines
- Fix regression: resizeObserver was broken in v1.4.4

1.4.4
====

New features
-----------

- Intersecting points of polygons with other elements
- Support usage of jsxgraph in shadowDOM

Improvements
------------

- Additions to index.d.ts
- Initial API doc for some 3D elements
- Handling of parallel lines and parallel arrows
- Support of 3D elements

Bug fixes
---------

- Add file options3d.js to jsxgraphcore.js
- Resize of deleted container


1.4.3
====

New features
-----------

- Experimental support of 3D elements

Improvements
------------

- Many improvements to index.d.ts
- Make JSXGraph available as ES6 module

Bug fixes
---------

- Ticks are now parents of their tick labels
- polygon.insertPoints and polygon.addPoints
- JessieCode dump of slider elements
- Resolve shortcuts also for trace attributes

1.4.2
====

Improvements
------------

- Gradient fill color for points
- Many improvements to index.d.ts
- Improved keyboard control
- Some preparations for 3D support
- Reduce thick focus box on webkit browsers

Bug fixes
---------

- Fix touch events for iOS < 13
- Bug fix: beautifulScientificTickLabels for numbers with negative exponents


1.4.1
====

New features
-----------

- API change: the number of digits in a text element is now set generally with
the attribute `digits`. The attribute "precision" is used to decide if
a pointer device is close enough to a JSXGraph element to be considered as touching the element.
The old attributes `precision` for the number of digits are still working
but marked as deprecated.

Improvements
------------

- Update JessieCode parser
- View point with keepaspectratio:true is now centered
- JessieCode: points can now have names like X, Y, L. Previously, there was a conflict with
function names with the same name
- JessieCode: allow map functions without parameters
- Refactor ca.js
- API docs
- index.d.ts

Bug fixes
---------

- Clipping: various bug fixes
- Fullscreen mode
- SVG screen shots
- Default axis ticks in JXG.Dump.toJessie and JXG.Dump.toJavaScript.
- Fix problems with board.resizeContainer()

Ecosystem
------------

- npm package does not rely on the npm package canvas anymore
- Add unit tests for JXG.Math.Clip
- Use eslint for linting
- Use terser for minifying

Many thanks go to David Holmes for his contributions.

1.4.0
====

New features
-----------

- New element `boxplot`
- New element `foreignobject`, shortcut `fo`
- New point attribute `attractToGrid`
- New method `Polygon.pnpoly()`
- New method `JXG.Math.statistics.percentile`
- New method `JXG.Math.Numerics.lagrangePolynomialTerm()`, also available as `JXG.Math.Numerics.lagrangePolynomial.geTerm()`
- Curve / circle intersection
- New color scheme, optimised for color blindness, see `JXG.palette`. Old color scheme can be restored by calling `JXG.setClassicColors()`.

Improvements
------------

- Keyboard interaction
- isOn method for elements with `hasInnerPoints` attribute
- Much smoother two finger handling for pointer events
- Intersection of curves having different Bezier degrees
- API docs: many bug fixes and new examples
- Jessiecode tag
- Security: sanitize HTML in texts in case of JessieCode

Bug fixes
---------

- `zoom100()` restores the original bounding box
- `Button.setText()`
- Regression on glider.position
- ResizeContainer conflicted with zoom level
- Regular polygon
- `setAngle()`
- JessieCode

Ecosystem
------------

- Testing with Travis is enabled again
- Revoke unit tests using Karma and Jasmine
- Update Makefile and package.json, less dependencies from npmjs. `make core-min` is now included in `make core`.

Many thanks go to Christian Lawson-Perfect for his contributions.

1.3.2
====

Improvements
------------

- Fullscreen mode is now also possible with an out div, see
<https://jsxgraph.org/docs/symbols/JXG.Board.html#toFullscreen>

Bug fixes
---------

- Fixed regression regarding full screen mode
- Fixed board freeze when certain devices are hit with the palm

1.3.1
====

New features
-----------

- New method: JXG.Math.Geometry.affineRatio

Improvements
------------

- Responsiveness: more stable reaction to size changes
- Improved fullscreen mode in cases where the JSXGraph div does not have fixed width or height
- `isOn` method covers also polygons with `hasInnerPoints:true`
- API doc

Bug fixes
---------

- Fixed: computation of intersection between parallel and (half-)bounded line
- Fixed: Intersection points between circle and line with straights off
- Fixed: handling of many (uncontrolled) simultaneous pointer events
- Fixed regression: points defined as transformations of other points

1.3.0
====

New features
-----------

- Responsiveness:
  - JSXGraph updates bounding box on resize events triggered by resizeObserver, also e.g. when changing from display:none.
  - New board attribute `moveTarget` allows to continue dragging outside of the board
  - New attribute `fontUnit` for texts
- Accessibility: keyboard control of JSXGraph boards
- New JSXGraph objects `curvedifference`, `curveintersection`, `curveunion`
- New arrow head type 7
- JessieCode: JessieCode tags support attribute `src`.
- Angle: new attribute value `radius:'auto'`
- New math functions erf, erfc, erfi, ndtr, ndtri, acosh, asinh
- New math functions (comparisons and logical operators as functions): lt, gt, leq, geq, eq, neq, and, or, not, xor
- New method: point.isOn(element)

Improvements
------------

- Arrows on curves: default arrow type 7
- Smoother animations of texts: pixel position of texts is no longer rounded
- Remove internal helper points if parent object is deleted (somewhat experimental)
- New default: minimizeReflow:'none'
- New method `coordsOnArc`
- In fixed angles (set with `setAngle`) all three points now be dragged.
- Intersection with arc behaves like intersection with circle
- TypeScript: improve and update `index.d.ts`
- API docs


Bug fixes
---------

- slopeTriangle: attribute `topPoint`
- Snapping of glider to curve
- Magnetized points on polygons
- JessieCode parser
- Clipping: shapes with holes

1.2.3
====

Improvements
------------

- `el.hideElement()`, `el.showElement()` not deprecated anymore. Same as `el.setAttribute({visible:false/true})`
- Better auto positiong of labels
- `board.fullUpdate()` updates size info of text elements. This is helpful for JSXGraph constructions which are initialised in a hidden parent element. When the board becomes visible, a call of board.fullUpdate() is sufficient to correct the position of the text elements. This can be triggered in an event listener (by the developer). See <https://github.com/jsxgraph/jsxgraph/issues/348>.

Bug fixes
---------

- Fix bugs in API doc
- MathJax texts in fullscreen mode
- Plot of conic sections of type parabola


New features
-----------

- KaTex support (`useKatex:true`)
- Add Typescript definition file `index.d.ts` (not yet complete). Thanks to David Holmes!!!
- `el.hide()`, `el.show()`, alias for `el.hideElement()`, `el.showElement()`.
- Experimental: new polygon points will be deleted if polygon is deleted. In the future, this might be done in other cases, too.

1.2.2
====

Improvements
------------

* Clipping: allow clipping of arcs and sectors, as well as rings, i.e. clipping of clipped paths
* Update WordPress plug-in
* Update MediaWiki plug-in
* Improve plotting stability (v2 and v4)


Bug fixes
---------

* Clipping
* camelCase for radiusPoint and anglePoint attributes
* Arrow heads on curves
* API docs
* JessieCode procedure calls

Experimental
-----------

* Add cobyla port (non-linear programming)


1.2.1
====

Bug fixes
---------

* board attribute `maxFrameRate`
* Fix regression in interval arithemetics
* Plot version 4: take prime number as number of steps
* Fix disappearing glider on natural spline


1.2.0
====

New Features
------------

* New board attributes:
    - title
    - description
    - drag
    - showInfobox
    - maxFrameRate
* New arrow heads
* Ticks and hatches for curves
* New curve type: metapost
* New element: metapostspline
* New math function: ratpow(base, m, n)
* Chandrupatla's root finding algorithm
* Interval arithmetics
* New attribute: `precision` for elements for method `hasPoint`
* New color function `JXG.contrast`

Improvements
------------

* Experimental new curve plotting algorithm
* Root finding algorithm: improved bracketing
* API docs
* ARIA attributes
* Simulate touch event property evt.scale for pointer events
* Enable setAttribute for attribute `layer`
* Enable centripetal cardinal splines
* JXG.Math.Clip: allow coordinate arrays as input
* JXG.Math.Clip: improve stability and supported cases
* Scientific notation for ticks labels
* Allow floating point numbers for attributes `strokeWidth` and `size`
* Add methods for sequence acceleration (math/extrapolate.js)
* New helper functions in JXG.type

Bug fixes
---------

* Inequality element
* Polygon intersection
* Axis ticks, arrow heads
* Projective transformations of curves
* `alwaysIntersect` attribute for line intersections
* Sliders with visible:false
* Links in API docs
* generateGaussian
* Dashed curves
* RDP algorithm for curves with singularities

1.1.0
====

New Features
------------

* New JSXGraph element `polygonalchain`
* New attribute `gradient` for color gradients. See API documentation for more attributes like gradient angle.
* New method `JXG.Math.statistics.generateGaussian`
* Slider values can be set by "up" events on the base line.

Improvements
------------

* Support for MathJax 3
* Exact position of arrow heads for curves
* Autoposition of labels
* API documentation
* Support for arrow heads on curves in canvas renderer

Bug fixes
---------

* Fix intersection of polygons with `polygon1.intersect(polygon2)`
* Update build scripts
* Remove unnecessary files from NPM repsository


1.00.0
====

Compatibility:
------------
* Safari / iOS 13 use pointer events.
* Since Safari 12, `board.renderer.screenshot()` also supports texts in Safari.
* JessieCode parse errors are handed over to the user and can be catched by try {} catch (e) {}


New Features
------------

* Polygon / curve clipping and boolean operation on curves is now enabled.
Possible operations are intersection, union or difference of curves, polygones or circles.
* New math functions: cot and acot, nthroot, cbrt, binomial. Available as JXG.Math.cot, ...
* New method `JXG.math.norm`: Euclidean norm of a vector
* Add board attributes "showFullscreen" and "fullscreen"
* New board attribute `maxBoundingBox`
* Faces for hatch marks and ticks (|><)
* Create parabola given by a point and a pair of coordinate pairs.
* Styling and highlighting of navigation bars with CSS
* Add new parameter `delay` for CoordsElement.startAnimation()
* Polar grids
* New attribute `highlightSize` for arrow heads.
* Reflection, mirroring of polygons
* New attribute for labels `autoPosition: true/false` enables automatic positioning of labels.

Improvements
------------

* screenshot and base64 dumps include images now (dumpToURI)
* API documentation contains many new examples
* API documetation for Chart and Legend elements
* Curve plotting: massive speed improvements and plotting precision
* Multi-touch rotations are much more stable for pointer events
* Pointer events use different precision when using pen, mouse or touch. New events for pen: pendrag, pendown, penmove.
* Highlighting and hit event for touch and pointer events
* Fire `hit` event also when dragging an element
* Increased precision in JXG.Math.Numerics.Jacobi
* Improved zoomElements
* Enable attributes for parabola subelement line
* Sketch reader: copy of polygons
* Sketch reader: enable reflection of circle to be circle
* Massive speed-up if many elements are deleted
* Use '\u26f6' unicode symbol for fullscreen
* Better compromise for `_insideCanvas()` for labels.
* JessieCode handling of sliders
* JessieCode: Use JSXGraph method `JXG.Math.pow` for a^b. This fixes problems like plotting of (-3)^(1/3)
* JessieCode: Add all JSXGraph math functions
* Work on unit tests
* Refactor reflection and mirrorelement
* Code refactoring
* Update wordpress plug-in to use jsxgraphcore.js from jsxgraph.org
* Update MediaWiki plug-in
* Update package.json
* Improved pan / pinch-to-zoom handling

Bug fixes
---------

* Glider on transformed curves
* Fix call of free()
* Address npm security alerts
* Line rotation with pointer events on Edge
* Dragging of labels
* Input functions for curves failed for certain JessieCode functions
* Bug fix: handling of pointer events
* Speed-up by preventing multiple updates of drag element.
* Precision of `hasPoint` for curves
* Make all examples in API docs ready for fullscreen mode
* Fix a very old bug in unzip algorithm for multi-file archives
* size[] for axis labels of display='internal'
* Animation of gliders on lines with slope!=0
* Fix arrow head placement for type=3
* Convert attributes in subobjects to lowerCase
* Fix ticks for certain axes which are neither horizontal nor vertical
* Firefox multi-touch pointer events
* Ticks labels in canvas renderer
* Better support of JSXGraph with nodejs
* Manipulating ticks visibility during `board.suspendUpdate()``
* Prevent flickering of text elements during creation
* Stop using deprecated hide method in `changePointStyle`
* Various changes in sketch reader for sketchometry
* Geogebra reader: Fix argument order when mirroring across line


0.99.7
====

Compatibility:
------------
Option.semicirclearc.midpoint -> Option.semicirclearc.center

New Features
------------
* New elements: 'cardinalspline', 'comb':
* New element: (numerical) derivative (experimental).
* New element 'reflection': allows point, line, curve, polygon, circle, arc, sector and angle
* New element 'mirrorelement': allows point, line, curve, polygon, circle, arc, sector and angle
* New possibility to create element by supplying element + transformation: This is possible for point, line, curve, polygon, circle, arc, conics, sector and angle.
* New method `Curve.moveTo()`
* Add option`'auto'` for `anchorX` and `anchorY` attribute of labels
* SVGRenderer.screenshot: Add parameter "ignoreTexts
* New board attribute value for renderer: 'auto'.
* Pointer events are enabled now for Chrome and Edge on Windows
* New curve attributes `recursionDepthLow` and `recursionDepthHigh` allow user controlled plot quality
* The inequality element takes now also the functiongraph element as input
* New function `JXG.Math.lcm(a, b)`
* New attribute 'sizeUnit` to enable the user to supply the point size in COORDS_BY_USER units

Improvements
------------

* require.js support (especially in moodle)
* Documentation
* Enable transformation "rotate" of type `[angle, [x,y]]`
* Default position of line labels
* Improved `trim()` method
* Improve code quality by using suggestion from jslint
* Add method `Type.isTransformationOrArray()`
* New default value `selection:'auto'` for arcs and sectors
* Use `<label for>` for checkbox label
* Add attribute "checked" for checkboxes
* Improved screenshot functionality
* Cardinal spline: attribute to prevent creation of points
* Improve stability of glider and intersection computations on curves
* New default values for pinch / zoom: shift+wheel is true now for zoom
* New attribute `isArrayOfCoordinates` for cardinalspline element
* Improved output in Dump.toJavaScript()
* Add attribute `hasInnerPoints` for all arc types: arc, sector, angle
* Polygon reflection now creates vertex names `A'`, `B'`, ...

Bug fixes
---------
* HTML elements: set id and allow anchors
* Glider on arcs and sectors
* line.hasPoint()
* hasPoint() for polar and parametric curves
* Visibility of non-existing objects
* slider dragging
* Remove trailing commas
* Mediawiki plug-in
* Catch error if MathJax loading is not yet complete
* Correct handling of UTF-8 characters in JSXCompressor
* Intersection of line / curve with transformed curve
* Update of group elements
* Visibility of in cloneToBackground
* Automatic detection of dependencies among elements
* Fix events `hit`, `mousehit`

Contributors:
* Saluev: comb element
* nikolas: documentation
* Nik: documentation

0.99.6
====

New Features
------------

* new board attribute "showZoom"
* new board attribute "defaultAxes"
* board attributes zoom and pan: pan and zoom can be restricted to horizontal or vertical axis
* board zoom and pan on touch devices: enable pan and zoom independently
* allow function as value for attribute "visible"
* new attribute value "visible:inherit"
* allow CSS transistions for highlighting of objects: attribute "transitionDuration"
* centripetal parametrization for Cardinal splines and Catmull-Rom splines
* Visvalingam-Whyatt algorithm for curve simplification
* new polygon method "Perimeter()"
* new line attribute "lineCap"
* more arrow heads and individual sizing of arrow heads.
    lastArrow: {type: 2, size: 8}
* new attribute: "dragToTopOfLayer"
* new text attribute: "cssStyle"
* new input attribute: "maxlength"
* screenshots for SVG renderer
* symbolic differentiation in JessieCode
* allow positioning of hatches and ticks, see example in doc

Improvements
------------

* Moodle plug-in is now a separate githup project at https://github.com/jsxgraph/moodle-jsxgraph-plugin
* navigation bar can be controlled with the navbar attribute subject
* Improved docs
* JSXGraph is (again) working in AMD, CommonJS, and much more
* Improved Cardinal splines
* Allow adding of points for Cardinal splines
* Improved alignment of tick labels for default axes
* Speed improvements: prevent updates triggered by sub-pixel movements
* Better merging of attributes for axes and default axes
* More tasteful color selection for integrals
* Unify handling of shift and ctrl key
* Improved zoom and pan experience
* Crisp lines in canvas renderer
* Improved sensitivity for very thick lines
* Adapt mediawiki and wordpress JSXGraph plug-ins to work with https
* Initial support for arrows on curves
* dumpToCanvas()
* Ticks labels for sliders
* Work on charts
* Allow functions as values for attributes anchorX, anchorY and dragArea
* Cathedes in slope triangles are now vectors
* Improve evaluation of attribute values given by functions
* Improved toFixed() method

Bug fixes
---------

* Touch support for IE
* Hide context menu
* JessieCode
* infinte loop in parser
* Axis labels which are mostly outside of the canvas are hidden
* Bug fix: two finger meovement of objects
* Unique Ids
* hasPoint for curves
* Development: update dependencies
* Disable text selection in navigation bar
* Refactoring
* Fill correct half-plane for inequality
* "Intersection" of circle and tangent
* Add /remove points to polygon

Contributors:
* Christian Lawson-Perfect
* Kaspar Peulen
* Markus Henn
* Martin ?
* micahscopes
* Ninmesara



0.99.5
====

New Features
------------
* Make JSXGraph available as Nodejs package
* New method `JXG.Image.setSize()`

Improvements
------------
* Handling of touch and mouse events should work now in all browsers, even if
user-scalable viewport is allowed.
* Improved pinch to zoom and pan
* Much improved documentation: more examples, fixed links
* Better support for reveal.js
* Attracting of points
* Allow homogeneous screen coordinates in `setCoordinates()` and `setPositionDirectly()`
* Trigger JSXGraph mousewheel events on mousewheel

Bug fixes
---------
* `hasPoint()` on major sector
* Intersection of Bezier curves
* Dump construction to JessieCode or JavaScript
* `Image.updateSize()`
* Highlighting of images
* SVG: handling of opacity
* Make JessieCode compatible to IE 6-8
* Nodejs compatibility for make
* Dragging of very long lines
* Color of arrow heads in SVG
* Display copyright in canvas renderer
* Bug fix for IE (SVG) with huge lines.


0.99.4
====

New Features
------------
* Allow gradients for polygons
* Improved dragging of images and texts
* More numerical routines for integration:
    - Romberg
    - QUADPACK routines
    - Gauss-Legendre
* Docs for transformations
* New attribute `ignoredSnapToPoints`
* New attribute for ticks: `useUnicodeMinus` (default true)
* New board attribute `maxNameLength`: Controls the maximum number of digits of automatic labels. The default value has been reduced from 2 to 1
* Allow shortened math syntax in `Text.generateTerm()` and in texts with &lt;value&rt;-tag
* Better support for the method `bounds()` for curves, texts and polygons
* Allow gliders on polygons
* New methods `setMax()` and `setMin()` for sliders.
* Extend `riemannsum` to two function graphs
* Introduce Boolean attribute `disabled` for button, checkbox and input
* Improved dump methods: `toJessie()` and `toJavaScript()`
* New method: intersection of two convex polygons with the algorithm by Sutherland-Hodgman
* Board selection mode: Allow a graph to be in a `selectionMode` by calling the function `board.startSelectionMode()`. Once in this mode, the mouse allow to draw a rectangle selection on the board. To stop selectingMode, the function board.stopSelectionMode() must be called.
* First implementation of texts as `foreignObjects` in SVG with attribute `externalHTML:false`
* New method `dumpToCanvas()` for the SVG renderer
* New construction variant for slope triangle based on just one glider.
* Introduce property margin for lines. Controls where infinite lines end.
* Allow arbitrary size units in moodle plugin.
* New functions JXG.Math.sign(), JXG.Math.gcd()
* New function JXG.Math.relDif() computes the relative difference between two numbers
* Improved function plotting. Logarithmic curves should reach to the boundary of the canvas now, i.e. improved plotting of asymptotes.
* Update JessieCode parser
* New board attributes: zoom.min and zoom.max. This attributes allow to limit the zoom factors.
  zoom.min limits zoomOut (click on -) and zoom.max limits zoomIn (click on +).
  zoom.min supersedes zoom.eps whis is deprecated. zoom.min defaults to 0.0001 and zooom.max to 10000.0.
* Improve plot quality of low-quality-mode function plotting.
* Use linear interpolation for animation. If interpolation is set to false in moveAlong() linear interpolation is used.

Bug fixes
---------
* IE bug with innerhtml
* Intersection of curve with line
* GGB reader
* SnapToGrid
* Bug fix: setLabel, label for integral
* Improved ticks
* Bug fix: X() and Y() of hyperbola
* Bug fix: animation callback is not executed
* Handling of frozen elements: allow frozen elements to be draggable
* Bug fix: Value() method for reflexangle and nonreflexangle
* Bug fix: deepCopy
* Make pointer events more stable
* Bug fix: signedPolygon
* Improved isPoint()
* Enable polygons with no vertices
* Add mouse wheel support to devices which support pointer events.
* Fix hatch marks
* Bug fix: dragging curves on touch devices.
* Bug fix font-size of input and button elements.
* Bug fix: slider.setValue()
* Bug fix: exclude the border-width when the reading the dimension of the canvas.
* Increase precision in root finding.
* fixed return value of deprecated function Board.createElement
* Bug fix: glider on undefined line. If one of the defining points is undefined the glider will disappear now.
* Fixed grid so that fractional upper and lower bounds of the grid (fractions of gridX and gridY) arent rounded to the nearest multiple of gridX and gridY.
* Bug fix: removeObject(turtle)
* Bug fix projectCoordToCurve
* Bug fixes for renderer='no'

Improved docs, unit tests


0.99.3
====

Important Notes
---------------
* The property glider.position for gliders on circular objects like arcs and circles was changed
  from radians to relative values between 0 and 1.
  This may result in a different behaviour of gliders on arcs. If you need the previous
  mode, you have to set isGeonext:true as attribute.

New Features
------------
* This release contains the first steps of unifying the handling of elements
  defined by one coordinate, namely
  points, texts and images. At this point, all these elements allow the same construction methods
  and allow to be bound to an anchor element.
* Improved dragging of texts and images
* Much more complete docs. For example, all board attributes are now documented.

Bug fixes
---------
* Fix visibility of texts with coordinates defined by functions, e.g. slider labels.
* Gliders on arcs and circles now keep their relative position.
* Allow use of user supplied board id in JXG.boards
* Fix group element to prevent infinite recursion if containing a dependent element
* Make ticks for sliders less obtrusive
* Improved (non-)handling of frozen objects
* Fix several bugs in GEONExT reader


0.99.2
====

Important Notes
---------------

New Features
------------
 * New element "checkbox" (ae3a29a1)
 * New element "input" (a21b20d3)
 * New element "button" (54b075ef)
 * New elements "majorsector" and "minorsector" (13eaed86)
 * New elements "nonreflexangle" and "reflexangle" (cae9ac35)
 * New attributes touchFirstPoint and touchLastPoint for lines with arrow heads (60b613f1)
 * New board attribute "ignoreLabels" to control when labels are chosen as drag elements (c8fb1063)
 * New functions sinh and cosh in JessieCode (6302869d)
 * New function log(x, b) in JessieCode (acc263dd)
 * New method for points: makeIntersection() (93f25574)
 * New method boundingBox() for polygons (23ee2d67)
 * Every element which accepts a point as parent element, now also accepts
   a coordinate array or a function returning a coordinate array as parent element.
   An invisible point having these coordiantes will be constructed. (aa9e4738)
 * Major speed up function graphs (a150405e, 13c3086c)
 * Improved automatic ticks positioning for axes and lines (4a44a516)
 * Enable dragging of sectors defined by three points (d00aec2b)
 * Groups: Allow manipulations of group by translation, rotation and scaling.

   New group methods setRotationCenter(), setScaleCenter(), setRotationPoints(), addRotationPoint(),
   removeRotationPoint(), setScalePoints(), addScalePoint(), removeScalePoint(),
   setTranslationPoints(), addTranslationPoint(), removeTranslationPoint() (d21cb9b6)
 * Add arc as a subobject to sectors (82a7002a)
 * Improved docs (e9eaeed7)
 * Axis: allow zero minorTicks (59a72325)
 * Update moodle plugin (750c70df)
 * Introduce new elementClass OBJECT_CLASS_TEXT (49638421)
 * New generic method addParents() for GeometryElement (152ee279)
 * Enable dragging of curves (152ee279)


Bug fixes
---------
 * Rotation of parabola based on a line defined by an ideal point (f6840b0)
 * Subscripts in labels work again (82a7002a)
 * Canvas renderer ignored line width zero (71669733)
 * Consider corner cases for upper/lower riemannsums (bc398d2d)
 * IE 11: show infobox on "over" event (1f82c9f50)
 * setName(): slider labels are not longer overwritten (99877c0d)
 * SVG line-endings of paths are set to "round" (e475c5e1)
 * hide/show polygons having labels (519c0a7b)
 * All edges of a polygon disappear if one of the defining points of the polygon is not real (5d3de96936)
 * labels of curves, sectors, angles stayed invisible in case they were previously non existing (62eb6b94)
 * Set attribute "needsRegularUpdate" of axis-ticks-labels to false. This speeds up rendering (6e9ce207)
 * Fix typo in Board.getCoordsTopLeftCorner, which forced JSXGraph to access the DOM during DRAG mode (f5b8af8f)
 * SVG markers in IE 10/11 (a35a2fee)
 * Sector defined by two lines was visible (at the wrong position) if the lines were parallel (6acb23fe)
 * Geogebra reader: Search for expression if element is not found (981ccd63)
 * Geogebra reader: Support hidden axes (4bd103e1)
 * CreatePolarLine: elementClass was compared with OBJECT_TYPE_CIRCLE (bc6b4bdd)
 * Rotation of internal texts (0fa3fa9e)
 * Rotation of VML texts and images (bc58740d)
 * Rename the method RamenDouglasPeuker to RamenDouglasPeucker (18042970)
 * Attribute generateLabelValue replaced by attribute generateLabelText (d5172614)
 * Simplify joinTransforms() in abstractRenderer (5eb86b1f)
 * Labels for sectors and arcs were not draggable (b914bba0)
 * Type.trunc(n, p) did truncate for p=0 and round for p>0 (09331d4c)
 * Do not generate sub and sup tags in texts if MathJax is used (ed9d94a4)
 * Ignore touch move events triggered outside the board (8a7e22e8)
 * Intersections involving circles with NaN radius (31d2900c)
 * Circumcircle of colinear points has wrong intersections (0998a284)

0.99.1
====

Bug fixes
---------
 * Typo: polepoint
 * Docs: JXG.Math.Numerics has been ignored

0.99
====

Important Notes
---------------
 * This release contains a completely new plotting algorithm for function graphs and curves.
   If one wants to use the plotting algorithm of version 0.98, the attribute doAdvancedPlotOld:true
   can be supplied.

New Features
------------
 * Add new method Value() to Arc which returns the arc length (12e64c9)
 * Allow jsxgraph board in a new window (opened by window.open()) (97742e7)
 * Enable snapToGrid for text and image elements. (bf4bd35)
 * New elements: polarline, polarpoint, radicalaxis (3d3154a2, 5f38b01b)
 * New element: stepfunction (989cb1f15)
 * Improved plotting algorithm (69f2f065b)
 * New board attribute "showClearTraces:true/false" (988a855b)
 * New function CardinalSpline. Catmull-Rom splines are a special case (33272063de1)
 * Use the MS pointer API starting with IE11
 * Improve the visual appearance of the navigation bar (b4cc30f08)
 * New method for GeometryElement: setName() (9c6009c07)
 * Speed improvements for text elements
 * Improved positioning of text elements (39c6be44)


Bug fixes
---------
 * Fix and update documentation (9ec97a5)
 * Fix arrowparallel element in reader/geonext (71c8799)
 * Fix renderer/vml css position (#53, 149ffff)
 * Remove CSS .navbar class definition (c4bc15f)
 * Fix segment and glider on circle elements in reader/geogebra (6238190)
 * Fix dynamic domain for function plots in reader/geogebra (d6479b6)
 * Enforce the board's coordinate system for axes (#54, 25b6bc5, 8f7ff59, e4f6798)
 * Fix SVG arrow head positioning (2899284)
 * Remove pointerUpListener from document instead of the board container (bbcc73a)
 * Fix visibility of labels on default axes (#73, 2dd0f4b)
 * Fix attractors on curves with bezierDegree==3 (d8bcee9)
 * Fix dragging of images on touch devices (#88, 04018a6d)
 * Fix: angular bisector of parallel lines (#16, 2f8eb20fd)
 * Fix: multiple mousedown events (338c7eb2c)
 * Fix: VML renderer displays strokes with strokewidth==0 (565eeb9429)
 * Improved intersection line-curve ()2fed72fff3)
 * Bug fix Gauss-Bareiss determinant (a6a74c9ab)
 * Fix inequalities (01a06bdac5)
 * Fix case t=0 for cardinal splines (921a296)
 * Fix slopetriangle issue #79 (374a8632)
 * Fix visibility issue of polygon label (36a7e75f)
 * Fix ticks with negative distance (#82, c821364a385)
 * Fix visibility of polygon lines (#78, a82c50a1dc)
 * Bug fix: very short arrow heads (a794ef81a)
 * Bug fix: fill attribute for lines (5d7fc25c6f)
 * Bug fix: Circumvent a bug in the Safari JIT comiler on iOS which affects JSXGraph's unzip (d965574c)
 * Bug fix: snapToPoint, snapToGrid for linelines and circles (c1988ab5)
 * Fix getParents() for GeometryElement (120f536f2)
 * Bug fixes IE8 (eeeb0395d29)
 * Fix UTF8.decode() (5bb5dd66)
 * Fix text content parsing (ce157f194)




0.98
====

Important Notes
---------------
 * The text element representing an element el's label was moved from el.label.content to el.label
 * Speed improvements for SVG updates. This is realized by removing the whole SVG tree from the DOM, updating it
   and then re-adding it to the DOM. Please note that during some event handlers (e.g. update) the DOM elements that
   belong to the board that is updated CAN NOT BE FOUND by document.getElementById(). References to these elements need
   to be stored before the event handler is called. Also problematic are click handlers on elements on the board, in some
   browsers these might be ignored. To establish full backwards compatibility, a new board attribute called 'minimizeReflow'
   is introduced and has to be set to 'none'. To restrict this optimization to the SVG root node set it to 'svg' (default).
   For best optimization use 'all'.
 * New Moodle plugin for Moodle 2

New Features
------------
 * Allow the user to forbid the emitting of events in JXG.Coords (49fa92d)
 * New attribute "attractorUnit" for points (0a21d6e)
 * Moved the label of an element el from el.label.content to el.label (d60dbd7, 4aecb4a, 087f2d2, 7e9d672, e443a7a, 2467aa2, #34)
 * Extend board.select() (14d8188, 8a3184b, bd18995, bec25a4, e8460a1)
 * The grid element can be restrained to a fixed area (30bc74f)
 * New option "axis" for integral; value can be 'x' or 'y' with a default of 'x' (40c5585, 9d87782, 42e00cd)
 * Slider max and min values can now be changed by setting its properties _max and _min (cb51daa)
 * New element "slopetriangle" (b6a8107)
 * Change element selection based on what was dragged last (a994fec, c9141c5)
 * Sectors (incl. angles etc) can now be defined by two lines instead of three points (5d50e28, 0ba4ba1, 3714dff, 4c56a3a)
 * Unify Sectors and Arcs (608c4e4, 03fac4c, 36eaaa2, f2256cf)
 * New type for the riemannsum element (674cb34, bd0d0d0)
 * Allow the user to set the maximum length of a tick label and the max precision (f4b9076)
 * New Moodle2 plugin (6d11868, 0ba96fe, a54d8d2, 8c8f2fa, 2b76da3, 8a8625f)
 * Texts may now be dragged by clicking anywhere in the text (a624b6d)
 * Allow the user to not register mobile Safari specific gesture events (56b057a, 17a5179)
 * Add new board attributes offsetX/Y (f8a0262)
 * Points can now also be created with a coordinate array instead of 2 resp. 3 numbers (cfe4a43)
 * Element name changes are now automatically reflected by its label (8aa9269, e9a9cf1)

Bug fixes
---------
 * Set the board quality to low during touch and ms-pointer events (f17ec49, c4aa38f)
 * Make arrow heads exact (0a39704, 939339f, f1682d3)
 * Make circles centers snap to points if the circle line is dragged (a80c07e)
 * Fix touch and ms-pointer events (16f07d8)
 * Speed up axis updates (997eba4)
 * Attracting a glider to a point fixed (801b964)
 * Fix missing curve update when a curve's isReal flag switches (a8e1683, 35dc2a7, 8589b8b)
 * Fix Canvas and SVG root node size definitions (03a47fe)
 * Hide the right angle indicator dot when the angle is hidden (e3f3bf3)
 * Improve epub handling in Sigil (69b04c1)
 * The integral label now considers the offset attribute (396ca30)
 * Fix utils/type.sanitizeHTML() (0001071)
 * Fix polygons (231dd4a)
 * Fix point constraints handling (d5da0d0)
 * Element highlighting in IE fixed (c8fe0be)
 * Improved ms pointer api event handlers (1bc85b0)
 * Fixed jumping html texts (01716b3, 857f2e2, fb9a1b7)
 * Extend math/geometry.perpendicular to handle points that are far away (5e6c3d0)
 * Improving automatic tick handling (8ca2380)
 * Bugfix traced circles (f1532b1)
 * Fix Board.getCoordsTopLeftCorner() (47ecb27)
 * Fix ticks scale attribute (4afb67c)
 * Reduce closures (6e06d65, fbd40ba, 6a8be48, 7c56513, e11c2a6, 7165e4a, #44)
 * Fix the radius attribute of the angle and sector elements (6d11868)
 * Fix point attraction handling (0582747)
 * Fix Text.hasPoint() (608e697)
 * Text position in WebKit browsers was broken (89a6d6a)
 * Work around a dashed path bug in webkit (9c5ab12)
 * Pie chart highlight fixed (ab75d6e)
 * Fixed shear transformation (e0e8140)
 * Element 'hash' renamed to 'hatch', 'hash' is kept as an alias (5b7ecd4)
 * Point.free() now also removes transformations (8baa48d)
 * generateLabelValue() should not be used for fixed ticks (d5f3821)
 * Bugfix and performance enhancement of UTF8.decode() (#50, ecbf4af, 6044803, 576efbe, 53dadce, 124d94c, 88c9b44)
 * Fix slider attributes and properties (11f2250, 2684070)
 * Fix intersection arcs with lines (cb42d77)
 * Fix integral start/end interval (b8365bf)
 * Update the glider when the user leaves the drag mode (b75ad28)
 * Fixed deleting an attractor (2a91eb2)



0.97
====

Important Notes
---------------
 * Wrappers.js was removed. This includes the removal of several wrapper functions in JXG.Board. Please use their
   non-wrapped corresponding methods in Math, JXG.Math, JXG.Math.Geometry, and JXG.Math.Numerics (c857dc4, d8f8f6a)
   * angle, rad, distance: Use JXG.Math.Geometry.*
   * D, I, root, lagrangePolynomial, neville, riemannsum: Use JXG.Math.Numerics.*
   * factorial, binomial, cosh, sinh: Use JXG.Math.*
   * round, abs, acos, asin, atan, ceil, cos, exp, floor, log, pow, max, min, random, sin, sqrt, tan: Use Math.*
   * trunc: Use Math.floor
   * sgn: No replacement
 * New makefile: make.py was replaced by a GNU make Makefile. Type make core-min to build a jsxgraphcore.js and see
   the Makefile for other build targets (245c1e3, 8d8ed2c, 824725e, 8b5aa0e, 160964c, b8f576f, 1c2ee4a, 057e05d, df4a13a)
 * The GeonextParser now outputs JessieCode (https://github.com/jsxgraph/JessieCode) instead of JavaScript.
 * Board attributes in JXG.Options were moved from JXG.Options to JXG.Options.board (3e39b82):
   showCopyright, showNavigation, takeSizeFromFile, renderer, takeFirst, animationDelay, zoom, and pan.
 * The list of boards and the list of available elements were moved from JXG.JSXGraph to JXG (c0048e7, e202e15)
 * Pstricks was removed
 * Board.getElement was renamed to Board.select and will replace JXG.getRef(erence) in a future release (c857dc4, 92c18ac)
 * Reorganization of the repository: All files in src/ were renamed to all lowercase and moved into subfolders (bb301e0,
   5eaf33b, fe457c9, 66ba3f2)
 * Intersection points now have a type value of JXG.OBJECT_TYPE_INTERSECTION (86a21fe)
 * The board methods intersection, intersectionFunc, and otherintersection were removed. Please use the elements
   'intersection' and 'otherintersection' (b76004c)
 * The unused methods JXG.readOption and JXG.collectionContains were removed (f322fa6, 8879354)
 * JXG.JSXGraph.registerElement was moved to JXG.registerElement (e202e15)
 * XML parsing routines were moved from JXG.FileReader to JXG.XML (c2e25ac)
 * Bugfix texts in headless environments (like WebWorkers or node) (97cb102)
 * Export JXG namespace to WebWorker environments (f4816e1)
 * Fix the size definition of SVG and Canvas renderers (e202a54, c0b40cc)
 * Fix Tick creator function (41d97be)

New features
------------
 * Prepared "virtual finger" (2bd4583, d71230a, 11548fd, 11548fd, 3e7d1e5, 5134b0b, 45d3d76)
 * Snap to grid for lines (86b2295)
 * Hash marks for lines (#7, f8a6723, c2179a4, 2643817, ffbd40e, b548f59)
 * Implemented Pointer API support (#18, 8820f3f, 4d22876, 235ee34, 97a3f6e, 24827d3, 535f871)
 * Take CSS transformations of type matrix, scale, and translate into consideration (a1da3b7). This ensures better
   combatibility with EaselJS.
 * New element 'tapemeasure' (f1698c2, e6bb86a, 5717f14)
 * JXG.Math.Numerics.regressionPolynomial now also accepts arrays of JXG.Coords (2fef545)
 * New linear regression algorithm TheilSenRegression in math/statistics (3fdd673)
 * Polygon vertices will snap to grid if the polygon is dragged (19a5a1d)
 * Implemented *innerPoints* attribute for ellipse (#20, 3a9180e)
 * Configure and use linting tools, minor refactoring (c790fcb, 5ec6a53, 9f1b6c4, 2545716, 985ea61,
   ee2be46, b2d95ce, 18d32e0, 479e39c, 069033a, 3e39b82, e139837, 3234de5, 20c6b43, 7f58c56, 367596a,
   fa4f5ec, 99da70a, b8a9ebd, 85637c9, 224a2a8, 56a9bdc, 27ba870, fe457c9, ae9f7a3, 27a03fe, 9e9f429,
   e5e5216, 6533125, daa2239, 5e037b3, 8250d55, 1ed9914, ae9609d, 73fdd68)
 * New helper function JXG.swap; Used to swap two elements in an array (bdea634)
 * New optional parameter for ticks: generateLabelValue (7511ee7)
 * New board event 'boundingbox', fired everytime the boundingbox changes (2dbeb60)
 * Function and number arrays are allowed as parent elements for sectors, too (74f6482)
 * A predefined div can now be provided to jessiecode/jessiescript tags (550dcd2)
 * New arrow head for the SVG renderer (9b161a9)
 * New tick property: tickEndings (7bfc59c)
 * The interpolation along an array of (x,y) coordinates in Point.moveAlong() can be overriden (2ef875c)
 * Implemented the AMD pattern (e1dd0fc, e202e15, e4d74e2, e2ef764, 2d76afc, c451f7c, 0aea31e, 0260f46, 14d1a1e,
   c53fb42, 1d13837, 3c2fa9a, 82dcf24, f707aab, 8695226)
 * JXG.debugLine outputs the given debug strings and the line from which it was called (9e4460f)
 * New build scripts using requirejs and uglifyjs (46e0237, ea12ae8, a53516a)
 * JXG.merge: merge one object into another one without creating a copy (99bc1bc)
 * New property for ticks: *anchor*, defines the position of the tick with value 0 and accepts 'left', 'middle', and
   'right' (f8a6723, c2179a4, 2643817)
 * Enable the use of the Google caja html sanitizer function if available. The use is controlled via the 'usecaja'
   attribute for texts (3a9180e, 3205b13)
 * Don't analyze the content of a text if its new attribute 'parse' is set to false (3205b13)
 * Allow specific Geonext tags in texts (935df2b)
 * loadBoardFrom*() functions now accept a callback function which is called when the file readers are finished
   loading the construction (#33, 25aa537)
 * Expose Turtle methods and properties to JC (f11c037)
 * JXG.Dump preserves snapToPoint attribute (228567c)
 * Improved availability of element properties and methods in JessieCode(7af504a)
 * Polygon can be hidden independently from their borders (8e95f2c4, 3d219f4)
 * The label of a curve will disappear if the curve is not real (209cfc1)
 * Allow multiple versions of JSXGraph (arbitrary many 0.97 or higher, one 0.96 or lower) simultaneously on the same
   HTML page (2de1da4)
 * Enhanced intersection methods for curves (c0491e7, ea23470, 1301d5e, afaa691, 2d5d668, 4c53147, 6fa16e8, 9de88fb,
   be247fd, 4df27a3, 7ba41bf, d030108)
 * Preparations for a better integration of parameter normalization (d3f4ead)
 * New algorithm GrahamScan in math/geometry to determine the convex hull of a set of points (33a9add)



Bug fixes
---------
 * Speed improvements in unzipping routines (b5cb640)
 * Enabled file reader support for node (274eb21)
 * Speed improvements for EventEmitter (8f05b9c)
 * Fixed border placement of polygons (a72c31e)
 * Set axis name to '' (a72c31e)
 * migratePoint: remove old label (e2259cb)
 * Handle snaptopoint/grid/attractors during creation (0f30c60)
 * Fixed grids in inverted bounding boxes (e26214f)
 * Fixed Point.Dist() in case one point is not real (8a51da4)
 * migratePoint() label fix (8a51da4, edcf13c, 184c66f, 285de98, 2cd6613, 4e371dd, 7dc981d)
 * prevent access to incomplete bezier segments (fd09f8e)
 * fixed gliders on points (ccf2c58)
 * prevent event bubbling on mouseup and touchend for navigation bar (#25, 860491c, 1694e4f)
 * fixed attribute frozen (146a702)
 * jessiecode: fixed NaN value (9ee04d8)
 * migratePoint: new parameter copyName to enable the transfer of the point's name (6c0234a)
 * Speed improvements for html texts and SVG texts (fabc54a)
 * triggerEventHandlers now only accepts an array of events and parameters (5f88bac, 234c136)
 * Bugfix conic (3a3605b)
 * Speed improvements coords (4633732)
 * bugfix JXG.Math.factorial (9f1b6c4)
 * bugfix line label offsets (98b6a95)
 * Update the glider relative position during suspended updates (3317a1e)
 * Fixed ticks on "skew" lines (7bfc59c)
 * Fixed a division by zero in the parabola element (e6c714a)
 * Fixed traces of curve elements (3d6813b, 8f23d84, bbee2a4)
 * Reverted text colors to black (1a28fc9)
 * Handle degenerate conics more gracefully (ffe4f7d)
 * Make projectCoordsToCurve() more robust for function graphs (0c0abb3, 7df9f48)
 * Prevent double update for gliders (f34c724)
 * Prevent endless loops in EventEmitter.trigger() (b751699, 9abb0d7)
 * Fixed groups (#11, 4ed4feb, e424c63, 11699d2)
 * Fixed JXG.Point.visit() (b16c713)
 * Elements with the attribute *highlight* set to false now will never be automatically highlighted (25d986a)
 * JXG.Dump lost required attribute values (4e69297)
 * GeonextReader: Change the background color of the board (4e69297)
 * Increase precision in MathNumerics.fminbr to make gliders stay constant on curves (5c8c02a)
 * The labels of initially hidden elements will be shown when the element is made visible (a716501)
 * Pass the visibility of a polygon down to its borders on creation (4b5af66)
 * Bugfix ellipse hasPoint method (280f018)
 * In case there is no label subelement in JXG.Options for a specified element the label attributes given by the
   user were discarded (397208b)
 * Bugfix tick label rounding for values close to zero (ae93bac, aeabd18)
 * Fixed polygon gliders (2f68165, 5745c67)
 * Circumcircles created with the circle creator will use circle default attributes (501e916)


0.96
====

Important Notes
---------------

New Features
------------
 * Polygons can be dragged (402b92c, 4541ce3, 6187eb0)
 * Introducing new GeometryElement attribute *scalable* (6187eb0)
 * Angles can be fixed via _setAngle()_ and freed via _free()_  (5ee106f, b9bd601, 1f25a5f, 8e1bce6, ad857bd, 8d95d75)
 * Image hasPoint now checks the whole image area (8d95d75, d96e6d7, a4e0bc5, a9f3f73)
 * JSXGraph can be used inside node.js; Rendering to PNG requires node-canvas (ab00ec3, 6106356, 8b00933)
 * Construction can be zoomed by dragging ticks (1215fba, bf01231, 818e013, 9ef977f, 31690db, bdf1159, b0e6f6a, cdb2ac7, 459fba6)
 * 'random' option for Riemann sums (d498fa2)
 * Documentation now lists events (a7ae116, da9b0a0, 63cc708, 66fb7a7, 13e4993,
 * New interface EventEmitter which implements event handling (eeffbe1)
 * JSXGraph can be run inside Windows 8 "Metro" Apps (1281086, b1935d8)
 * GeometryElements fire events when an attribute gets changed (7fb8ab6)
 * Introducing a .sketch file reader (08c8f02, de3c4b2, 3cf0d30, efc806d, 9febcdf, 9e19054, 8232d43)
 * Enable Curve.X() and Curve.Y() for curves with bezierDegree=3 (10c8c3e)
 * Intersection of segments (de10bc4, eef5264)
 * New attribute _alwaysIntersect_ for interesction points of e.g. segments to be shown even if the segments don't interesect anymore (9670c8e, 488946f)
 * Introduce JXG.Math.Geometry.distPointLine() (9b0bad3)
 * Curve-line intersection now respects property alwaysIntersect (856db81)
 * Improved speed of freeBoard() (3d3dc72)
 * The distance of ticks can be set via setAttribute/setProperty now (cb80999)
 * GeonextReader now uses the viewport tag if available (d06a020)
 * Implement boolean attribute *hasInnerPoints* for circles (84e0d58)
 * Curves can be dragged (a729000)
 * Restrict zoom with ```JXG.Options.zoom.eps``` (d63c8de)
 * Get current JSXGraph version with ```JXG.version``` (c46d563)
 * Implemented X() and Y() methods for labels (#17, 8acaa51)
 * Zooming and panning can now be configured (#5, f7e7799)
 * Segment labels are placed on 'top' (1b53f3a)

Bug fixes
---------
 * Fixed the return value of removeObject (0aa328f)
 * Tick calculation with majorHeight and minorHeight equal to zero was broken (9bfcb47, e9535d2)
 * Texts won't jump while being dragged anymore (2ba238e)
 * Several documentation errors fixed (84f10ce, 917250a, 6277684, dcd0c6b, 394e149, fed7998)
 * Bug fix: intersection of line with curve, where curve has curveType 'plot' (c10bbeb, 7e8c358, d5500e9, 0f7cb59)
 * Fixed and improved groups (0145603, 5f9841b, de01c99, 7b03a70, 06bae53)
 * Bugfix arrow head creation (6f90382)
 * Arc/Arc intersections fixed (acac2e5)
 * radar charts fixed (8b458b6)
 * Added newline in Point.js (4054a7e)
 * Include CSS transformations in the computation of the coordinates of the top left corner of the board (13226bf, 0c19743, c9b25d8, c3fc4f5, acf844a)
 * Polygon labels fixed (#14, 3c4f4c5)
 * fontSize given as a string caused problems (e2f94b0)
 * bugfix createLabel() (8e5c8d1)
 * 0 ticks are hidden again (3419ecf)
 * Images now use the absolute value of the given height/width (1468387)
 * Fixing turtle.hideTurtle(), turtle.showTurtle() (bc549a1)
 * Remove ticks only of they exist (e74a68a)
 * Work around a FF17 bug regarding SVG fill attribute with value 'none' (1760350)
 * Bugfix turtle (b09af0e)
 * Arrows can't be set on curves with less than two datapoints (75faf54)


0.95
====

Important Notes
---------------
 * We migrated from subversion to git. To access pre-git changesets you can use our trac system that is still online.
   You can use this url and append the revision number to see the changelog http://sourceforge.net/apps/trac/jsxgraph/changeset/,
   e.g. http://sourceforge.net/apps/trac/jsxgraph/changeset/1234 for revision r1234.
 * Merged coordinate parameters into arrays for all setPosition, setPositionDirectly, and setPositionByTransform methods (r2825)
 * Old intersection functions are now marked as deprecated, you should not rely on them being available in future releases (r2846)
 * Hooks have been refactored and improved. Please use on/addEvent resp off/removeEvent now to add or remove events to the board. The addHook, removeHook and updateHooks functions have been marked as deprecated and might be dropped in a future release (r2864, r2866 & r2867)
 * The behaviour of board event handlers have been changed. mousedown and touchstart events started outside a board do no longer trigger any mouseup resp. touchend events (r2886 & r2887)
 * Default names for texts, angles (af4701e, 18ac2ae)
 * The **offsets** property has been renamed to **offset** (5ea97f5)

New Features
------------
 * Attributes for grid and axis can be given on initBoard (r2841)
 * Scale ticks and represent the scale by appending a string to each tick label (r2842)
 * JSXGraph can now be used inside WebWorkers (r2807, r2811 & r2874)
 * Two finger manipulation of circles (r2896 & r2897)
 * objectsList in Board holds the elements in order of creation (r2898, r2899 & r2901)
 * added rgba values to RGBParser (r2912)
 * Allow in Curve.hasPoint() for plots to start search at an arbitrary position (r2939)
 * Animate the size of a point (r2950)
 * Implemented minor and major arcs. They can be constructed by using the element type **minorarc** and **majorarc** or by using
   the element type **arc** with property *type* set to *minor* or *major*.
 * New input specific events (877d5ac)
 * New board option *animationDelay* which controls the animation fps (d093a9e)
 * New options for texts: **anchorX** 'left', 'middle', or 'right' and **anchorY** 'top', or 'bottom' (78608c0, f1aa9de, 8d7f467, bc8cbd6, bbb607b, 7e69d11)
   and **rotate** (181ee73)
 * Circles and lines have a new property **snapToGrid**. Whenever a line or circle is moved and this property is set, the parent points with the snapToGrid
   set to true will snap to grid once the users releases the circle or line (#3, 2a774e1)
 * New option **labels** for Ticks. In case of special ticks the *n* strings given in **labels** are taken as labels for the first *n* ticks (c188efe)
 * New options **type**, **orthoType** and **orthoSensitivity** for *angles*. See the docs for their meaning (8f0ed8c)
 * New options for infobox which shows the coordinates of a point. Beside the text options, the number of digits can be adjusted. Default css class is JXGinfobox.

Bug fixes
---------
 * Fixed flickering of gliders on plots (r2828 - r2829 & r2876)
 * Bugfix setPosition of text elements  (r2833)
 * Simplified creation of intersection points  (r2833)
 * Added error check in tangent creator (r2833)
 * Offsets for ticks (r2834)
 * Fixed ticks ($68, r2835, r2836, r2843, r2845, r2889, r2890 & r2925)
 * Fixed JXG.Text.getSize() (r2837)
 * Bug fix: createArrow, createArrowParallel: arrows are shown if strokeOpacity is a function with inital value 0 (r2849)
 * Disabled and re-enabled drag highlighting devices (r2860, r2934 & r2935)
 * Slowed down zooming with gestures (r2855)
 * Fixed placement of labels (r2863, r2911, r2913)
 * Transformation "reflect" on lines defined by ideal (infinite) points (r2872)
 * Jumpy scroll wheel zooming fixed (r2873)
 * Enhance sensitive area for points with non-default stroke width (r2877)
 * Fixed issues with gliders on lines with at least one ideal point (r2878, r2880, r2882)
 * Bugfix event handlers for elements (r2879)
 * Using the **touches** property of the event object instead of **targetTouches** fixes some bugs (r2888)
 * Fixed arrows (r2891)
 * Enlarge the drawing region slightly to hide the small sides of thick lines (r2892)
 * Rays through ideal points change their orientation (r2893)
 * Fixed reflections: instead of JXG.Math.Geometry.reflection use transformations (r2894)
 * Load all available renderers that could be used in the current host (r2900)
 * Bug fix: Filled polygon in CanvasRenderer? in case one point does not exist (r2907)
 * Use asynchronous Mathjax (r2914)
 * Fixed JXG.Curve.bounds() (r2918)
 * Remove deleted elements from their ancestors dependents list (r2919)
 * Bugfix event handler flags (r2923)
 * touchMoveHandler: Ignore slowpoke events (r2927 & r2929)
 * reset board mode if no more touches are found (r2931)
 * Bugfix: hide invisible grids (r2936 & r2938)
 * Fixed tick heights issue in boards where unitX != unitY (r2940)
 * Fixed move origin on touch devices (r2942)
 * Adjust size of arrow heads at least for small stroke width values (r2948)
 * Suspend update in JXG.freeBoard() to prevent dependency errors (r2949)
 * Bug fix: layer for gliders (r2952)
 * Bug fix: properties of gliders (r2953)
 * Pass event objects to internal event handlers, if available (929cb40)
 * Copy general element properties only when creating primitives (95603ef, d5f2b87, 1b54d9a, 5e0486d, 39b3e82)
 * Do a full update after changing the properties of an element with needsRegularUpdate set to false (6463b8c, ff4fe3a)
 * Angle texts are moving again (e9c68b1)
 * Set margin to zero if the line has arrows set (6582086, bd7518a)
 * Hide circles with non-real midpoints (381b287)
 * Don't update ticks if board height or width equals zero (c7c2e23)
 * Various fixes in GeonextReader (006c5da, 59ac4c2, 1fecf7a)
 * Ticks are now deleted when their line is removed (bda7e7f)
 * Text rendering speed improved (d4c0bf2, b955052, fa91ce0, 434c87b, 12b9922)
 * Speed improvements for arcs and sectors (d2fdee1, e0ee6c9, 572d123, fdabf15, c6a70a4, 8acbb60)
 * If no element is dragged or found, don't stop the event propagation (324f7c6)
 * The radius of an *angle* can be set via *setProperty()* (bc0e21c)


0.94
====

Important Notes
---------------
 * The property line.labelOffsets has been moved to element.label.offsets (r2765)


New Features
------------
 * Update build script: allow the user to choose the test server via --server (r2691)
 * Implemented mathematical modulo JXG.Math.mod (r2698)
 * Multitouch handling of lines in case one defining point is an ideal point and general improvement of multitouch dragging of lines (r2700, r2701)
 * Make normals and parallels (to a line) through one point draggable (r2706)
 * Improved gliders on lines defined by an ideal point (r2744)
 * Added hex2rgb conversion (r2745 & r2746)
 * Introduced the point options snapToPoints (r2758, r2759, 2760 & r2762)
 * Label positioning (r2764 - r2767, r2769, r2770)
 * Prevent reevaluation of a curve if neither the viewport nor the definition of the curve have changed (r2781)
 * GeonextReader: visibility of labels of lines and circles (r2792)
 * setProperty() called on a group sets the properties of all members of the group (r2794)
 * Internal event handling system (r2795)
 * Enabled transformations for data plot curves (r2799)

Bug fixes
---------
 * Fixed vertical navigation (r2684)
 * Fixed a problem with the artificial endpoints of Catmull-Rom splines (r2688)
 * Fixed typos regarding integral helper points in Options.js (r2690)
 * Disallow dragging of elements depending on a glider (r2693 & r2694)
 * fixes for circumcircle (r2695)
  * degenerated case (r2695)
  * circle should be draggable if defined by free points (r2695, r2696 & r2697)
 * Fixed translation of lines in case one of the defining points is an ideal point (r2699)
 * Fixed problems with degenerated circles (r2702)
 * Fixed a bug regarding multitouch dragging (r2704)
 * Use curve.Y() instead of curve.yterm() in the integral element (r2710)
 * Update text in JXG.Text.setText()
 * Deactivate mouse events as soon as the first touch events occurs to fix mixed mouse/touch events on the iPad (r2715, r2748-r2753)
 * Update the board after setting a new radius (r2716)
 * Created points in regularpolygon now have the type JXG.OBJECT_TYPE_CAS instead of the (free) JXG.OBJECT_TYPE_POINT (r2717)
 * Refactored glider update (r2719 - r2722, r2724 & r2725)
 * Fixed ids and names of parallel and normal far points (r2718 & r2723)
 * Fixed polygons in GeonextReader (r2726)
 * Fixed angles in GeonextReader (r2727)
 * Bugfix orthogonalprojection (r2730, r2731)
 * Fixed of lines as parametric curves (r2736)
 * Added missing board update in JXG.Text (r2737)
 * Glider on polygon fixed (r2761 & r2762)
 * JXG.Line.hasPoint() fixed (r2763)
 * Fixed Canvas- and SVGRenderer inside divs without explicit height/width (r2780 & r2801)
 * Ticks with ticksDistance set and insertTicks: false are now displayed correctly (r2782)
 * Fixed "undefined is not an error" bug on iPad (r2785)



0.93
====

Important Notes
---------------
 * Renamed element perpendicular to perpendicularsegment. perpendicular now is a straight line instead of a segment (r2360)
 * Mouse wheel zoom is disabled by default, you can enable it by setting the property zoom to true in JXG.JSXGraph.initBoard ($34 & r2369)
 * Hooks 'mousedown', 'mouseup', and 'mousemove' have been renamed to 'down', 'up', 'move'. Those hooks work on mouse & touch devices. Their mouse equivalents now only work on devices controlled by a mouse. The corresponding touch versions are called 'touchstart', 'touchend', and 'touchmove' (r2514, r2515 & r2516)
 * Removed obsolete method JXG.Turtle.evalCoords (r2378)
 * JXG.Curve.{doAdvancedPlot,numberPointsHigh,numberPointsLow} moved to JXG.Curve.visProp. Use JXG.Curve.setProperty() to set them (r2489)
 * Some of the subelements had to be renamed. Please check your constructions with this version and consult our documentation (http://jsxgraph.uni-bayreuth.de/docs/) if you're having trouble accessing any subelements. ($61 & r2623)

New Features
------------
 * New board properties to use in initBoard: zoom (Boolean, default *false*) and pan (Boolean, default *true*) ($34 & r2369)
 * Element 'perpendicularsegment' replaces 'perpendicular' which now is a straight line by default (r2360)
 * Element 'tracecurve' (r2372 to 2379)
 * New methods for JXG.Polygon: addPoints (attaches new vertices at the end of the vertex list), insertPoints (insert new points behind an arbitrary vertex) and removePoints (removes arbitrary set of vertices) ($39, r2398, r2400 and r2401)
 * Construction alternatives for lines: Use two functions returning the point's coordinates in an array or use one function returning the line's homogeneous coordinates ($9, r2407 & r2408)
 * Traces can now have different visual properties than the traced element they belong to. Use the *traceAttributes* property of the traced element just as an properties object like in setProperty ($17 & r2410)
 * The new Angle attribute **type** defines the look of the angle: *sector*, if it should be a sector all the time, *square* for a square (right angle)/parallelogram (general) to indicate a right angle, and *auto* for a sector in general and square if the angle is close to a right angle ($49, r2437, r2438 & r2479)
 * Parallel lines are now constructed without an invisible parallel point (r2451)
 * Label properties can now be given via a subelement *label* in the properties object given in create() ($43 & r2453)
 * JXG.Curve has a new attribute called *handdrawing* (r2458 & r2459)
 * Magnetized points, see the new point attributes *attractor*, *attractorDistance*, and *snatchDistance* for details (r2460-r2463)
 * *snapToGrid* is now an attribute of JXG.Point instead of JXG.Board. This way, it can be decided for every single point to snap onto a grid and what grid ($46, r2463 & r2487). If snapSize* is less or equal zero the axis is used (if available (r2611)
 * Highlighting can now be disabled with the element attribute *highlight*. Default value is *true* ($47 & r2476)
 * The radius of an angle can now be a function ($50 & r2481)
 * Preparations for polynomial arithmetics (r2484)
 * Preparations for a file format (r2485, r2488, r2495, r2499 - r2502, r2507, r2509)
 * Segments can have a fixed length now (r2492 - r2494)
 * Catmull-Rom-splines (r2510, r2512 & r2528)
 * Introducing themes (r2539, r2541 & r2545)
 * Angle has a new method called Value() that returns the currently displayed angle (r2548)
 * Set the zoom level of a board directly with JXG.Board.setZoom (r2563)
 * Attributes cssClass & highlightCssClass for texts (r2564 - r2567)
 * Method free() for JXG.Point and JXG.Text, to free a bound point/text (r2572 & 2612)
 * New method def() for JXG to ease default parameter handling (r2617)
 * JXG.indexOf() finds elements in an array (r2629)
 * New attribute for JXG.Polygon *hasInnerPoints* changes the behaviour of JXG.Polygon.hasPoint(): If true, hasPoint returns true if the user points inside the polygon (r2651 & r2652)

Bug fixes
---------
 * Fixed freeBoard issue ($35 & r2365)
 * Hide infobox on touchend (r2362)
 * Updated reference card (r2363)
 * Resizing the container now works with Canvas, too ($38 & r2368)
 * Disabling a label via setProperty({withLabel: false}) and re-enabling it won't cause a second label to appear ($37 & r2370)
 * A midpoint with complex parents could be misplaced (r2375)
 * Prevent dragging of axis points (r2391)
 * Fixed layer of the glider in a slider (r2397)
 * Fixed width and height computation of texts (r2399)
 * gradientSecondColor got lost during setProperty (r2415)
 * Set property withLabel to true on an element without a label produced an error ($40 & r2416)
 * Listen on the whole document for touchEnd events, not only on the board's container (r2420)
 * Enable navigation controls on touch devices (r2464)
 * The ids of the points used to generate a regular polygon can now be given in the attribute object ($48 & r2478)
 * Dragged objects are now highlighted (r2490)
 * Improved multitouch dragging of lines (r2497, r2498 & r2503)
 * Traces are deleted as soon as the element's trace attribute is set to false (r2511)
 * Sliders with snapWidth set to e.g. 1 not always returned an integer value (r2519 & r2520)
 * Fixed an issue with major ticks with height < 0 ($55, r2517, r2518 & r2522) and improved ticks in general (r2523, r2524, r2525 & r2553)
 * Fixed some bugs in Turtles ($56, r2526, r2527, r2529, r2533 & r2537)
 * JXG.trim now deletes whitespaces, not 'w's (r2543)
 * If a free point is converted to a glider with JXG.Point.makeGlider(), it is now located near its last position as a free point (r2544)
 * JXG.Legend had no visProp (r2561)
 * Constrained points were visible only after an update (r2584)
 * Hide Polygon if at least one of the vertices is non-real ($59 & r2585)
 * Fillcolor of a point was set to highlightStrokeColor on highlight (r2587)
 * The z-Index of the board's div is now added to the z-Index for html text elements (r2598)
 * Minor bug in GeometryElement fixed (r2602)
 * Set infobox to fixed (r2603)
 * Clear traces on object removal (r2610)
 * Repaired JXG.Point.visit() (r2631)
 * Fixed a bug in JXG.Polygon.remove() (r2634)
 * Fixed highlighting using custom DOM events (r2637)
 * Fixed a bug in JXG.addEvent() (r2638)
 * Set grid dash from 2 to 0, because 2 slows down the iPad considerably (r2641)
 * Fixed a bug in JXG.createGroup (r2653)
 * Fixed a bug preventing the automatic labeling of Angles (r2655 & r2656)



0.92
====

Important Notes
---------------
 * JXG.Math.Numerics.RamenDouglesPeucker has been renamed to JXG.Math.Numerics.RamerDouglasPeucker (r2317)
 * JXG.Board.getRelativeMouseCoordinates() has been renamed to JXG.Board.getCoordsTopLeftCorner (r2327 & r2329)

New Features
------------

Bug fixes
---------
 * Fixed restriction to max 34 Boards on a single HTML web page and raised it to 65535 (r2313)
 * Line with undefined endpoint is fixed ($15 & r2322)



0.91
====

Important Notes
---------------

JXG.Point.visit()'s parameter repeat has been replaced by the new parameter options
which can used to provide settings like a repeat value, a callback function or
speeding effects. It is however still possible to provide repeat as a third
parameter instead of an options object to support older mathlets ootb without the
author having to make readjustments. This behaviour might be dropped in future
releases, so please adjust your scripts accordingly.

New Features
------------
 * Zoom with mouse wheel (r2188 & r2272)
 * Optional dot for right angles ($18 & r2197)
 * Adjust the renderer size if the board is resized (r2207, r2208 & $21)
 * Callback functions for animated point movement ($25, r2211 & r2214)
 * Callback functions for visprop animation ($26 & r2222)
 * Point movement animations got the new option "effect" ($5, r2279)
 * User defined execution context for hooks ($29 & r2220)
 * New Slider attribute 'precision': manages precision of slider value displayed in its label (r2230)
 * Polygons can now be removed via board.removeObject() (r2240)
 * Improved zooming (r2231, r2241, r2242 & r2243)
 * Improved mouse and touch events and enabled dragging lines, circles and texts (r2251, r2253-r2254, r2256-r2264, r2266-r2271)
 * Max number of iterations in JXG.Math.Numerics.fminbr can be adjusted with JXG.Math.Numerics.maxIterationsMinimize (r2283 & r2288)
 * Max number of iterations in JXG.Math.Numerics.fzero can be adjusted with JXG.Math.Numerics.maxIterationsRoot (r2285)
 * Implemented remove() for sliders ($31 & r2296)

Bug fixes
---------
 * Element copies from tracing sent to background ($13 & r2190)
 * Traced intersections leave a copy at [0, 0] on initialization ($14 & r2191)
 * General elements should not be put into the highest layer but into the lowest ($16 & r2192)
 * Attribute 'withLabel' was missing in the docs (r2193)
 * Suppress error message caused by empty path strings (r2194 & r2205)
 * Draw segments correctly from the start (r2196)
 * CanvasRenderer: Don't draw invisible points (r2196)
 * Implement show/hideElement for JXG.Ticks (r2203 & $20)
 * createCircumcircle does not return arrays anymore (r2204)
 * Check if document.selection.empty is a function in Board.mouseDownListener (r2206)
 * Perpendiculars can now be constructed as straight lines ($23 & r2213)
 * Drag'n'Drop of elements bug on Android devices fixed ($27, r2215 & r2216)
 * initial position of helper point in createPerpendiculer fixed ($24 & r2223)
 * initial positions of axis labels fixed (r2232)
 * harmonized default tick distance attributes and documented ticks (r2234 & r2235)
 * fixed display of 0 with certain ticks distances (r2236 & r2237)
 * fixed using HTML tables as datasource for charts (r2238)
 * proper placement of axis labels ($1 & r2277)
 * GeonextReader: straightLines (r2284)
 * Adjusted Layers of Compositions: Polygons are now below lines (r2287)
 * IntergeoReader & CinderellaReader: Compositions are working now (r2289 & r2290)
