From 128ba59c2ec65524b8e1afd60f41b627c778879d Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Thu, 10 Sep 2026 13:35:18 -0400 Subject: [PATCH 1/4] app: upgrade to maplibre-gl 6.9 * obviates need for loading rtl text plugin --- app/index.html | 1 - app/package-lock.json | 43 +++++++++++++++++++++++--------- app/package.json | 2 +- app/src/MapView.tsx | 7 ------ app/src/VisualTests.tsx | 7 ------ app/visualtests/index.html | 1 - render-tests/run_render_tests.ts | 8 ------ 7 files changed, 32 insertions(+), 37 deletions(-) diff --git a/app/index.html b/app/index.html index ec6fdd5cd..5537b5c6d 100644 --- a/app/index.html +++ b/app/index.html @@ -6,7 +6,6 @@ Protomaps Basemaps - diff --git a/app/package-lock.json b/app/package-lock.json index 1578224a1..6612a7c23 100644 --- a/app/package-lock.json +++ b/app/package-lock.json @@ -10,7 +10,7 @@ "dependencies": { "@maplibre/maplibre-gl-geocoder": "^1.9.4", "@maplibre/maplibre-gl-inspect": "^1.9.0", - "maplibre-gl": "^6.0.0", + "maplibre-gl": "^6.9.0", "pixelmatch": "^5.3.0", "pmtiles": "^4.5.0", "sirv": "^3.0.0", @@ -621,9 +621,9 @@ } }, "node_modules/@maplibre/maplibre-gl-style-spec": { - "version": "26.2.1", - "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-26.2.1.tgz", - "integrity": "sha512-QFKCXkOeSzOr8jF75jm6kySOg+dUvOehPhRi68gcOYPHb7U5JloUq0dJW0Y5/fZV8ygfT0Vp2RWodvq+fyxFWA==", + "version": "26.4.2", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-26.4.2.tgz", + "integrity": "sha512-6J0vZqMZvRAJKtdWJdDGHEh1YJ2ZHG08/GOur8gCArYhO8ZkM//OXqtI2AAEz4jc2G+Wq4MfcePg8qNK5TZ4Kg==", "license": "ISC", "dependencies": { "@mapbox/jsonlint-lines-primitives": "^2.0.3", @@ -640,9 +640,9 @@ } }, "node_modules/@maplibre/mlt": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/@maplibre/mlt/-/mlt-1.1.12.tgz", - "integrity": "sha512-ZeK5w2TTeHOajcLaEQs1KZXw2V9wIKo1PmThlxlsHoXsQsYlBqLJzPOd6tJHRtGTChUY3DPPmjXRArYVvAbmZw==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@maplibre/mlt/-/mlt-1.2.1.tgz", + "integrity": "sha512-5n5dgolE2EYxwCKgx8vlwURCB8A+kyfJJyThlYimjlGgOcOe2Bhw9VxxnnHC91OC9PgHg+nVdgVPTYPkIo62vg==", "license": "(MIT OR Apache-2.0)", "dependencies": { "@mapbox/point-geometry": "^1.1.0" @@ -1597,6 +1597,15 @@ "node": ">=6.0.0" } }, + "node_modules/bidi-js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bidi-js/-/bidi-js-1.1.0.tgz", + "integrity": "sha512-fX1Onk0tdVPC7obPWB5EbJ1z7NVhLq4m2xZLq2YXBkxzMXIGRpNMU88n0EPgWseKl12J7zXs7qrDxPK4sRs2fg==", + "license": "MIT", + "dependencies": { + "require-from-string": "^2.0.2" + } + }, "node_modules/browserslist": { "version": "4.28.8", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", @@ -2583,9 +2592,9 @@ } }, "node_modules/maplibre-gl": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-6.4.1.tgz", - "integrity": "sha512-KzxQKtfBu/pSz1C+yW1hNS9eyj2h2lC7ufdAi6/SEt177n3oAfDfmUmslRfJdXY7ReAFBcnvwsqmiyoDhtA9GQ==", + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-6.9.0.tgz", + "integrity": "sha512-vFMwMK0Zs+NM/rOMSdtu8bO30DIexhBEVi5KC6f70/XtI+L/K2wC3LsDCAXFZ4s8ik5gAuDugfCNbpllpdJ9bA==", "license": "BSD-3-Clause", "dependencies": { "@mapbox/point-geometry": "^1.1.0", @@ -2593,10 +2602,11 @@ "@mapbox/unitbezier": "^1.0.0", "@mapbox/vector-tile": "^3.0.0", "@maplibre/geojson-vt": "^6.1.1", - "@maplibre/maplibre-gl-style-spec": "^26.2.1", - "@maplibre/mlt": "^1.1.12", + "@maplibre/maplibre-gl-style-spec": "^26.4.2", + "@maplibre/mlt": "^1.2.1", "@maplibre/vt-pbf": "^4.3.2", "@types/geojson": "^7946.0.16", + "bidi-js": "^1.1.0", "earcut": "^3.2.3", "gl-matrix": "^3.4.4", "kdbush": "^4.1.0", @@ -2886,6 +2896,15 @@ "integrity": "sha512-Mn6TbyYpFgwFuQ8KJKqf3bqqY9O1y37/0jgSK/61PUxV4QfIMv0+K2ioq8DfOjkBslcjwSzRfIDEXfzA9aCx7A==", "license": "CC0" }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve-protobuf-schema": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", diff --git a/app/package.json b/app/package.json index fb9946dfe..2658dfe5f 100644 --- a/app/package.json +++ b/app/package.json @@ -14,7 +14,7 @@ "dependencies": { "@maplibre/maplibre-gl-geocoder": "^1.9.4", "@maplibre/maplibre-gl-inspect": "^1.9.0", - "maplibre-gl": "^6.0.0", + "maplibre-gl": "^6.9.0", "pixelmatch": "^5.3.0", "pmtiles": "^4.5.0", "sirv": "^3.0.0", diff --git a/app/src/MapView.tsx b/app/src/MapView.tsx index a8068a3d9..ab0bbeab6 100644 --- a/app/src/MapView.tsx +++ b/app/src/MapView.tsx @@ -260,13 +260,6 @@ function MapLibreView(props: { onMount(() => { props.ref?.({ fit }); - if (getRTLTextPluginStatus() === "unavailable") { - setRTLTextPlugin( - "https://unpkg.com/@mapbox/mapbox-gl-rtl-text@0.2.3/mapbox-gl-rtl-text.min.js", - true, - ); - } - if (!mapContainer) { console.error("Could not mount map element"); return; diff --git a/app/src/VisualTests.tsx b/app/src/VisualTests.tsx index a1ee3b0c6..1dcaf3460 100644 --- a/app/src/VisualTests.tsx +++ b/app/src/VisualTests.tsx @@ -16,13 +16,6 @@ import pixelmatch from "pixelmatch"; maplibregl.setWorkerUrl(workerUrl); -if (maplibregl.getRTLTextPluginStatus() === "unavailable") { - maplibregl.setRTLTextPlugin( - "https://unpkg.com/@mapbox/mapbox-gl-rtl-text@0.2.3/mapbox-gl-rtl-text.min.js", - false, // we need to pre-load this, otherwise diffs will be flaky - ); -} - // Jumps the map and waits for idle, capturing a Blob of the rendered frame. const moveAndCaptureBlob = ( map: maplibregl.Map, diff --git a/app/visualtests/index.html b/app/visualtests/index.html index 960fd69c7..0550dbb3a 100644 --- a/app/visualtests/index.html +++ b/app/visualtests/index.html @@ -9,7 +9,6 @@ -
diff --git a/render-tests/run_render_tests.ts b/render-tests/run_render_tests.ts index 7c3804394..1673c78fc 100644 --- a/render-tests/run_render_tests.ts +++ b/render-tests/run_render_tests.ts @@ -296,14 +296,6 @@ async function getImageFromStyle(styleForTest: StyleWithTestData, page: Page): P reject(new Error('Test timed out')); }, options.timeout || 4000); - - if (maplibregl.getRTLTextPluginStatus() === 'unavailable') { - maplibregl.setRTLTextPlugin( - 'https://unpkg.com/@mapbox/mapbox-gl-rtl-text@0.3.0/dist/mapbox-gl-rtl-text.js', - false // Don't lazy load the plugin - ); - } - const protocol = new pmtiles.Protocol(); maplibregl.addProtocol('pmtiles', protocol.tile); From 27b767f7aecff61182e922ea7bbbc00d4fa21ea0 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Thu, 10 Sep 2026 13:39:36 -0400 Subject: [PATCH 2/4] linting --- app/src/MapView.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/src/MapView.tsx b/app/src/MapView.tsx index ab0bbeab6..caf5ff9b1 100644 --- a/app/src/MapView.tsx +++ b/app/src/MapView.tsx @@ -11,9 +11,7 @@ import { NavigationControl, Popup, addProtocol, - getRTLTextPluginStatus, removeProtocol, - setRTLTextPlugin, setWorkerUrl, } from "maplibre-gl"; import * as maplibregl from "maplibre-gl"; From 8049c13c328ff47e899476d85d08c14bea4e2ced Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Thu, 10 Sep 2026 14:02:51 -0400 Subject: [PATCH 3/4] render tests is using maplibre-gl 5.x --- render-tests/run_render_tests.ts | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/render-tests/run_render_tests.ts b/render-tests/run_render_tests.ts index 1673c78fc..22274cb0b 100644 --- a/render-tests/run_render_tests.ts +++ b/render-tests/run_render_tests.ts @@ -296,6 +296,13 @@ async function getImageFromStyle(styleForTest: StyleWithTestData, page: Page): P reject(new Error('Test timed out')); }, options.timeout || 4000); + if (maplibregl.getRTLTextPluginStatus() === 'unavailable') { + maplibregl.setRTLTextPlugin( + 'https://unpkg.com/@mapbox/mapbox-gl-rtl-text@0.3.0/dist/mapbox-gl-rtl-text.js', + false // Don't lazy load the plugin + ); + } + const protocol = new pmtiles.Protocol(); maplibregl.addProtocol('pmtiles', protocol.tile); From ed30c121ce5d34c5e8e7845d43c46bdfc73b8220 Mon Sep 17 00:00:00 2001 From: Brandon Liu Date: Thu, 10 Sep 2026 14:05:13 -0400 Subject: [PATCH 4/4] examples: fetch latest overture tileset using STAC catalog --- examples/data_sandwich.html | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/examples/data_sandwich.html b/examples/data_sandwich.html index 5eb934891..39b15db87 100644 --- a/examples/data_sandwich.html +++ b/examples/data_sandwich.html @@ -17,13 +17,15 @@
-