✨ Features and improvements
- Improve animation curve when easeTo and flyTo with constraints ([3793](https://github.com/maplibre/maplibre-gl-js/pull/3793))
- For filled extrusions, calculate the elevation per polygon ([3313](https://github.com/maplibre/maplibre-gl-js/issues/3313))
- Add events to `GeolocateControl` to allow a more granular interaction ([3847](https://github.com/maplibre/maplibre-gl-js/pull/3847))
- Make `MapOptions.style` optional to be consistent with `Map.setStyle(null)` ([4151](https://github.com/maplibre/maplibre-gl-js/pull/4151))
- Use Autoprefixer to handle vendor prefixes in CSS ([4165](https://github.com/maplibre/maplibre-gl-js/pull/4165))
- Make `aria-label` configurable for Map, Marker and Popup ([4147](https://github.com/maplibre/maplibre-gl-js/pull/4147))
- Map `<canvas>` is focusable only when interactive ([4147](https://github.com/maplibre/maplibre-gl-js/pull/4147))
- "Accept" headers set in Request Transformers are not overwritten ([4210](https://github.com/maplibre/maplibre-gl-js/pull/4210))
- ⚠️ Rename projMatrix to modelViewProjectionMatrix. Also rename invProjMatrix, alignedProjMatrix accordingly ([4215](https://github.com/maplibre/maplibre-gl-js/pull/4215))
- Publish an unminified prod build ([4265](https://github.com/maplibre/maplibre-gl-js/pull/4265))
🐞 Bug fixes
- ⚠️ Allow breaking lines in labels before a left parenthesis ([4138](https://github.com/maplibre/maplibre-gl-js/pull/4138))
- ⚠️ Fix ignoring embedded line breaks when `symbol-placement` is `line` or `line-center` ([4124](https://github.com/maplibre/maplibre-gl-js/pull/4124))
- Ensure loseContext exists before calling it ([4245](https://github.com/maplibre/maplibre-gl-js/pull/4245))
- Update deprecated `-ms-high-contrast` vendor prefix to `(forced-colors: active)` and `(prefers-color-scheme: light)` as appropriate ([4250](https://github.com/maplibre/maplibre-gl-js/pull/4250))