Skip to content

Bump maplibre-gl from 5.24.0 to 6.4.1 in /CASCADE-app - #5

Merged
Cristian-Curaba merged 1 commit into
mainfrom
dependabot/npm_and_yarn/CASCADE-app/maplibre-gl-6.4.1
Sep 11, 2026
Merged

Bump maplibre-gl from 5.24.0 to 6.4.1 in /CASCADE-app#5
Cristian-Curaba merged 1 commit into
mainfrom
dependabot/npm_and_yarn/CASCADE-app/maplibre-gl-6.4.1

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 9, 2026

Copy link
Copy Markdown
Contributor

Bumps maplibre-gl from 5.24.0 to 6.4.1.

Release notes

Sourced from maplibre-gl's releases.

v6.4.1

🐞 Bug fixes

  • Fix DOM.sanitize leaving dangerous attributes behind when multiple consecutive attributes are present. Iterating the live NamedNodeMap from elem.attributes while calling removeAttribute skipped the attribute directly after a removed one, so a second dangerous attribute (for example an ontoggle on a <details open> element) could survive sanitisation and later execute (#8189) (by @​0xKirisame)
  • Give custom layers the live globe transition in CustomRenderMethodInput.defaultProjectionData.projectionTransition, which was hardcoded to 1 for the whole globe/mercator transition, so a custom layer jumped straight to the fully bent globe while every other layer eased (#8169) (by @​mondsichtung)

v6.4.0

✨ Features and improvements

  • Avoid a per-query Array.sort() in cross-tile symbol matching (TileLayerIndex.findMatches), claiming the lowest-index unclaimed candidate in a single pass instead; reduces main-thread symbol-placement cost on dense/coincident symbol layers (#7797) (by @​pholmstr)
  • Use texelFetch for exact DEM and color-relief elevation stop lookups instead of normalized texture coordinate arithmetic (#7640) (by @​johncarmack1984)
  • Make default draggable markers keyboard-focusable and movable with the arrow keys (1 px per press, 10 px with Shift); custom marker elements stay application-owned (#8020) (by @​smmariquit)

🐞 Bug fixes

  • Fix a permanent frame rate degradation after switching styles: every sprite reload marked its images as updated forever, making every in-view tile re-check and re-upload them on every frame. Also stop leaking the images of a replaced sprite, which were never removed from the image manager (#8052) (by @​HarelM)
  • Prevent a rejected missing style image resolver from blocking successfully resolved images in the same batch (#8146) (by @​birkskyum)
  • Explicitly request no browser color management when decoding raster-DEM tiles so their RGB-encoded elevation values are not changed (what would otherwise happen with gfx.color_management.mode = 1 in Firefox) (#8125) (by @​tnikkel)
  • Let an abort reach an image or raster tile load that is still awaiting its transformRequest, so ImageSource.updateImage no longer loses the image it was just handed and an aborted tile is no longer fetched (#8071) (by @​mondsichtung)
  • Fix raster tiles fading in again when they are reloaded, briefly flashing the map background, most visibly when switching projection (#8106) (by @​mondsichtung)
  • Fix globe panning inverting and stalling near and across the poles by rotating the globe with a versor, keeping the drag direction consistent at every latitude. Panning also eases off as the cursor approaches the edge of the globe and continues past it, instead of stopping. The bearing is preserved while panning, as before (#5296) (by @​jcolot)
  • Fix fill-extrusion-rounded-corner-distance producing spikes: corner arcs now land on the integer tile grid, and corners created by tile clipping are left sharp (#8153) (by @​HarelM)
  • Fix a gesture which was held still before being released still flinging the map (#1303) (by @​zdila)

v6.3.0

✨ Features and improvements

  • Make fired/listened map events typed. This means that map.on("something", ...) (and once, listens) will now give you an typescript error and better autocomplete. If you relied on firing/listening custom events via the map, this still works via the escape hatches map.fire("something" as any) -> map.on("something" as any, ...) (#8072) (by @​CommanderStorm)
  • Let a StyleImageInterface give a {renderWithWebGL} callback as its data, an escape hatch for plugin developers and advanced users that renders a style image on the GPU instead of moving its pixels through the CPU. Nothing new is possible that pixels could not already express, but an image that changes often, such as an animated icon, gets more performant (#7954) (by @​lucaswoj)
  • Use integer vertex attributes for packed line data instead of float conversion (#7640) (by @​johncarmack1984)
  • Use integer vertex attributes for packed circle, heatmap, symbol, and fill-extrusion data instead of float conversion (#7640, #8143) (by @​johncarmack1984)
  • Redesign benchmarks to use vitest bench capabilities and remove custom build for benchmarks code (#982) (by @​johncarmack1984)

🐞 Bug fixes

  • Fix terrain pan/zoom gestures losing the grabbed terrain point: gestures are now solved against the elevation of the terrain under the gesture instead of the frozen center elevation, so terrain under the pointer/fingers no longer slips during moving-centroid pinches and drags (#8067) (by @​StrawberryJam22)
  • Fix ImageSource, VideoSource and CanvasSource leaking a GPU texture on every image update and on removal, and a resized texture losing its wrap and filter settings (#8094) (by @​mondsichtung)
  • Fix map.queryRenderedFeatures() sometimes causing "Out of bounds" error due to race condition while loading tile data (#8064) (by @​smvjohansenbouvet)
  • Fix zooming the globe with the scroll wheel or a two-finger pinch drifting away from the pointer while the globe is small on screen, instead of keeping the location under the pointer as it does when zoomed in (#8095) (by @​mondsichtung)
  • Fix projective rendering for non-parallelogram image source quads (#7887) (by @​i4innovationnet)

v6.2.0

✨ Features and improvements

  • Add the fill-extrusion-rounded-corner-distance layout property, which replaces each fill-extrusion corner with an arc spanning the given distance (in meters) along the adjacent edges. The distance is clamped to 20% of each adjacent edge's length so that short edges don't collapse, and near-straight corners (turns below 5°) are left untouched. Defaults to 0, which keeps corners sharp (#7934) (by @​CommanderStorm)
  • Improve Mercator rendering performance by skipping a redundant clipping mask border pass (#8038) (by @​DoFabien)

... (truncated)

Changelog

Sourced from maplibre-gl's changelog.

6.4.1

🐞 Bug fixes

  • Fix DOM.sanitize leaving dangerous attributes behind when multiple consecutive attributes are present. Iterating the live NamedNodeMap from elem.attributes while calling removeAttribute skipped the attribute directly after a removed one, so a second dangerous attribute (for example an ontoggle on a <details open> element) could survive sanitisation and later execute (#8189) (by @​0xKirisame)
  • Give custom layers the live globe transition in CustomRenderMethodInput.defaultProjectionData.projectionTransition, which was hardcoded to 1 for the whole globe/mercator transition, so a custom layer jumped straight to the fully bent globe while every other layer eased (#8169) (by @​mondsichtung)

6.4.0

✨ Features and improvements

  • Avoid a per-query Array.sort() in cross-tile symbol matching (TileLayerIndex.findMatches), claiming the lowest-index unclaimed candidate in a single pass instead; reduces main-thread symbol-placement cost on dense/coincident symbol layers (#7797) (by @​pholmstr)
  • Use texelFetch for exact DEM and color-relief elevation stop lookups instead of normalized texture coordinate arithmetic (#7640) (by @​johncarmack1984)
  • Make default draggable markers keyboard-focusable and movable with the arrow keys (1 px per press, 10 px with Shift); custom marker elements stay application-owned (#8020) (by @​smmariquit)

🐞 Bug fixes

  • Fix a permanent frame rate degradation after switching styles: every sprite reload marked its images as updated forever, making every in-view tile re-check and re-upload them on every frame. Also stop leaking the images of a replaced sprite, which were never removed from the image manager (#8052) (by @​HarelM)
  • Prevent a rejected missing style image resolver from blocking successfully resolved images in the same batch (#8146) (by @​birkskyum)
  • Explicitly request no browser color management when decoding raster-DEM tiles so their RGB-encoded elevation values are not changed (what would otherwise happen with gfx.color_management.mode = 1 in Firefox) (#8125) (by @​tnikkel)
  • Let an abort reach an image or raster tile load that is still awaiting its transformRequest, so ImageSource.updateImage no longer loses the image it was just handed and an aborted tile is no longer fetched (#8071) (by @​mondsichtung)
  • Fix raster tiles fading in again when they are reloaded, briefly flashing the map background, most visibly when switching projection (#8106) (by @​mondsichtung)
  • Fix globe panning inverting and stalling near and across the poles by rotating the globe with a versor, keeping the drag direction consistent at every latitude. Panning also eases off as the cursor approaches the edge of the globe and continues past it, instead of stopping. The bearing is preserved while panning, as before (#5296) (by @​jcolot)
  • Fix fill-extrusion-rounded-corner-distance producing spikes: corner arcs now land on the integer tile grid, and corners created by tile clipping are left sharp (#8153) (by @​HarelM)
  • Fix a gesture which was held still before being released still flinging the map (#1303) (by @​zdila)

6.3.0

✨ Features and improvements

  • Make fired/listened map events typed. This means that map.on("something", ...) (and once, listens) will now give you an typescript error and better autocomplete. If you relied on firing/listening custom events via the map, this still works via the escape hatches map.fire("something" as any) -> map.on("something" as any, ...) (#8072) (by @​CommanderStorm)
  • Let a StyleImageInterface give a {renderWithWebGL} callback as its data, an escape hatch for plugin developers and advanced users that renders a style image on the GPU instead of moving its pixels through the CPU. Nothing new is possible that pixels could not already express, but an image that changes often, such as an animated icon, gets more performant (#7954) (by @​lucaswoj)
  • Use integer vertex attributes for packed line data instead of float conversion (#7640) (by @​johncarmack1984)
  • Use integer vertex attributes for packed circle, heatmap, symbol, and fill-extrusion data instead of float conversion (#7640, #8143) (by @​johncarmack1984)
  • Redesign benchmarks to use vitest bench capabilities and remove custom build for benchmarks code (#982) (by @​johncarmack1984)

🐞 Bug fixes

  • Fix terrain pan/zoom gestures losing the grabbed terrain point: gestures are now solved against the elevation of the terrain under the gesture instead of the frozen center elevation, so terrain under the pointer/fingers no longer slips during moving-centroid pinches and drags (#8067) (by @​StrawberryJam22)
  • Fix ImageSource, VideoSource and CanvasSource leaking a GPU texture on every image update and on removal, and a resized texture losing its wrap and filter settings (#8094) (by @​mondsichtung)
  • Fix map.queryRenderedFeatures() sometimes causing "Out of bounds" error due to race condition while loading tile data (#8064) (by @​smvjohansenbouvet)
  • Fix zooming the globe with the scroll wheel or a two-finger pinch drifting away from the pointer while the globe is small on screen, instead of keeping the location under the pointer as it does when zoomed in (#8095) (by @​mondsichtung)
  • Fix projective rendering for non-parallelogram image source quads (#7887) (by @​i4innovationnet)

6.2.0

✨ Features and improvements

  • Add the fill-extrusion-rounded-corner-distance layout property, which replaces each fill-extrusion corner with an arc spanning the given distance (in meters) along the adjacent edges. The distance is clamped to 20% of each adjacent edge's length so that short edges don't collapse, and near-straight corners (turns below 5°) are left untouched. Defaults to 0, which keeps corners sharp (#7934) (by @​CommanderStorm)
  • Improve Mercator rendering performance by skipping a redundant clipping mask border pass (#8038) (by @​DoFabien)

... (truncated)

Commits
  • 37e08c1 Bump js version to 6.4.1 (#8190)
  • 1da69f3 fix: snapshot attributes in DOM.removeAttributes to avoid skipping them (#8189)
  • ac8580b chore(deps): bump zensical/zensical from 0.0.53 to 0.0.54 (#8183)
  • a7636f3 chore(deps): bump the codeql-action group with 3 updates (#8181)
  • 18a2192 chore(deps-dev): bump rolldown from 1.2.3 to 1.2.4 (#8180)
  • 740b106 chore(deps-dev): bump globals from 17.9.0 to 17.11.0 (#8178)
  • f6ac7bb chore(deps-dev): bump devtools-protocol from 0.0.1676914 to 0.0.1679354 (#8176)
  • ef90e66 fix: pass real globe transition progress to custom layers (#8169)
  • 4529c6e Bump js version to 6.4.0 (#8171)
  • 73773c1 fix: rounded corner spikes (#8155)
  • Additional commits viewable in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    You can disable automated security fix PRs for this repo from the Security Alerts page.

@dependabot dependabot Bot added dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code labels Sep 9, 2026
Fixes the Critical Dependabot alert (GHSA advisory, PR #5). The only
breaking change that touches this codebase: maplibre-gl 6 dropped its
default export in favor of named-exports-only. Both call sites used
`import maplibregl from "maplibre-gl"` as a namespace (maplibregl.Map,
new maplibregl.Map(...)) -- switched both to a namespace import
(`import * as maplibregl`), which keeps every reference unchanged.

Every maplibregl call in the codebase (new Map(), .on("load"),
.resize(), .remove(), .setStyle()) is core API untouched since v1, so
the risk here is the import change alone, not behavior.

Verified against current main (this branch was stale, based on a much
older commit -- rebuilt fresh rather than merged):
  - tsc --noEmit: 0 errors
  - vitest: 230/230
  - eslint: 0 errors (same 17 pre-existing warnings)
  - madge --circular: none
  - next build: clean
  - docker build (both images) + compose config (dev + prod): clean

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Cristian-Curaba
Cristian-Curaba force-pushed the dependabot/npm_and_yarn/CASCADE-app/maplibre-gl-6.4.1 branch from 916ebaf to 5483d98 Compare September 11, 2026 08:28
Cristian-Curaba added a commit that referenced this pull request Sep 11, 2026
Handles the merge step Dependabot's security updates leave to a human:
once it opens a PR for a vulnerability fixed by a version bump, this
approves and enables auto-merge -- but only for patch/minor semver
bumps, and only once every existing CI check (.github/workflows/ci.yml)
is green. Major bumps (see PR #5, maplibre-gl 5.x->6.x, currently
failing CI) are deliberately left for a human.

Requires the repo's "Allow auto-merge" setting (Settings > General >
Pull Requests), which is currently off and could not be flipped via
the API -- needs an org owner to enable it by hand.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
@Cristian-Curaba
Cristian-Curaba merged commit ace8ad1 into main Sep 11, 2026
4 checks passed
@Cristian-Curaba
Cristian-Curaba deleted the dependabot/npm_and_yarn/CASCADE-app/maplibre-gl-6.4.1 branch September 11, 2026 08:36
Cristian-Curaba added a commit that referenced this pull request Sep 11, 2026
)

* Disable maplibre-gl's own resize tracking (fixes zoom stretching the map)

Regression from the 5.24.0 -> 6.4.1 bump (#5). maplibre-gl 6 added an
internal ResizeObserver on the `container` option (_setupResizeObserver,
new in this major version) that calls resize() + redraw() on its own.
We pass the SAME element as container that useMapViewportSync
CSS-transforms every frame for the zoom sync (translate + scale, to
keep the background locked to React Flow's viewport without a
jumpTo() per frame) -- and that hook already has its own ResizeObserver
on that element, calling resize() explicitly at every point that
matters: on load, on tile style change, and on a real container resize.

Two independent resize-tracking paths racing on the one CSS-transformed
element is what made zooming visibly stretch/narrow the map canvas
instead of just scaling it smoothly.

trackResize: false disables only maplibre's own new auto-resize path
(confirmed its only consumer in the library). Nothing else depends on
it -- our code already explicitly calls .resize() at every point
maplibre's internal tracking would have.

Verified: tsc 0 errors, 230/230 tests, eslint 0 new warnings, clean
build. Visual confirmation (does zoom now scale smoothly) still needs
an actual browser -- please check after pulling.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* Fix blank geo map under maplibre-gl 6: serve its worker from public/

maplibre-gl 6 ships ESM-only and loads tile decoding into a Web Worker
that imports a sibling chunk (maplibre-gl-shared.mjs) by relative path.
Next.js — in both Turbopack and --webpack mode — emits that worker as a
lone hashed asset without the sibling, so the worker throws on its first
import. The map mounts and fires "load", but never requests a tile: a
blank background, no console error, and the CSS-transform viewport sync
left as the only thing moving (hence "zoom pans the window, not the map").

Follow the upstream Turbopack/Next.js recipe: copy both dist files into
public/maplibre/ at predev/prebuild time (always matching the installed
version) and point setWorkerUrl at the same-origin path. Caddy already
allows worker-src 'self' and leaves /maplibre/* on no-cache, so an
upgrade can't serve a stale worker.

Also reverts the speculative trackResize:false from the previous commit —
it addressed a hypothesis, not this cause, and maplibre's own resize
tracking is harmless.

Docs: architecture.md gains the build step and the version bump to 6.

Ref: https://maplibre.org/maplibre-gl-js/docs/ → Installation → Turbopack
Signed-off-by: Cristian Curaba <cristiancuraba00@gmail.com>

---------

Signed-off-by: Cristian Curaba <cristiancuraba00@gmail.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file javascript Pull requests that update javascript code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant