> ## Documentation Index
> Fetch the complete documentation index at: https://docs.opengeometry.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> What changed in each OpenGeometry release, newest first.

**3.0.0**

2026-11-10

3.0 is a new API. Code written for 2.0 does not run without changes. Follow [Migrate from 2.0](https://docs.opengeometry.io/opengeometry/migrate-from-2-0.md).

### Check these when you upgrade

* **Breaking: three body classes.** Make bodies with `new Wire(kind, params)`, `new Solid(kind, params)` and `new Sheet(OG_OPERATION_SWEEP, params)`. The 2.0 classes such as `Cuboid`, `Polygon`, `Sweep` and `AnalyticSolid` are gone.
* **Breaking: arrays, not `Vector3`.** Points and vectors are `[x, y, z]`.
* **Breaking: move with `transform`.** Setting `position`, `rotation` or `scale` is reverted.
* **Breaking: start the kernel first.** Await `OpenGeometry.create(input, options)` once. `workerURL` goes in the second argument.
* **Breaking: 2D calls are statics.** Use `OpenGeometry.booleanRegions2D`, `OpenGeometry.offsetRingVariable` and the others. Offsets return line and arc edges.
* **Breaking: `OpenGeometry.exportIfcBody(solid)`** replaces `solid.prepareIfcExchange()`.
* **Breaking: `OGError`.** Catch it and branch on `code`.
* **Breaking: the shell hollows in place.** Use `solid.operate(OG_OPERATION_SHELL, { thickness })`.
* **Breaking: display follows drawing.** A body gets its mesh when it is drawn or walked. Its `surface` and `outline` meshes are static: call `updateMatrix()` after you move them yourself.
* **Smooth edges.** Outlines leave out smooth edges, and faceted curves shade smooth. Set `appearance.smoothAngle` to `0` for the 2.0 look.
* **Removed:** IFC file text, STL and PDF export, projection, loft, public triangulation, and curves other than lines, circles, arcs and polylines, such as the elliptical arc. 3.0 has no spline, no ellipse and no elliptical arc. The wedge and the 2.0 `Curve` class are gone too. Build a wedge as a five-face `OG_PRIMITIVE_POLYHEDRON`, and a 2.0 `Curve` as an `OG_PRIMITIVE_POLYLINE` wire through its points.

### Added

* Solid primitives: cuboid, cylinder, cylinder sector, sphere, cone, torus and polyhedron. Wire primitives: rectangle, circle, polyline, profile and arc. See [Primitives](https://docs.opengeometry.io/opengeometry/guides/primitives.md).
* [Extrude](https://docs.opengeometry.io/opengeometry/guides/extrude.md), [sweep](https://docs.opengeometry.io/opengeometry/guides/sweep.md) and [revolve](https://docs.opengeometry.io/opengeometry/guides/revolve.md), with exact arcs.
* [Booleans](https://docs.opengeometry.io/opengeometry/guides/booleans.md) with up to a hundred tools, and [shell](https://docs.opengeometry.io/opengeometry/guides/shell.md).
* [Rebuild and mirror](https://docs.opengeometry.io/opengeometry/guides/rebuild-and-mirror.md), [assemblies, copies and instances](https://docs.opengeometry.io/opengeometry/guides/transforms-and-assemblies.md), and [marks and transactions](https://docs.opengeometry.io/opengeometry/concepts/history.md).
* [Queries](https://docs.opengeometry.io/opengeometry/guides/measure-and-validate.md): bounds, B-rep, face normals, point classification, measured volume and area, validity.
* [Display for Three.js](https://docs.opengeometry.io/opengeometry/concepts/display.md), [picking](https://docs.opengeometry.io/opengeometry/guides/picking.md) and [host-drawn layers](https://docs.opengeometry.io/opengeometry/guides/use-your-threejs-scene.md).
* [STEP export](https://docs.opengeometry.io/opengeometry/guides/export-step.md) and the [IFC exchange body](https://docs.opengeometry.io/opengeometry/guides/ifc-exchange-body.md).
* Exact curved insets: `OpenGeometry.insetCurvedRegion2D` and `OpenGeometry.offsetCurvedRingVariable`. See [Regions and offsets](https://docs.opengeometry.io/opengeometry/guides/regions-and-offsets.md).
* Solid primitives: slot prism, rounded box and pipe segment. See [Primitives](https://docs.opengeometry.io/opengeometry/guides/primitives.md).
* **Polysolid.** `OG_PRIMITIVE_POLYSOLID` makes a solid wall of constant width and height along a path of straight legs and tangent arcs, justified `'centre'`, `'left'` or `'right'`, with mitred corners. A joint where an arc meets a segment at an angle throws `InvalidParameter` that names the joint. See [Primitives](https://docs.opengeometry.io/opengeometry/guides/primitives.md).
* Wire primitives: regular polygon, slot and rounded rectangle. See [Primitives](https://docs.opengeometry.io/opengeometry/guides/primitives.md).

### Fixed

* A circular hole away from the profile centre extrudes.
* Offset corners are exact arcs.
* A point inside one of two touching solids of a body is `Inside`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.