What's Changed
- fix(android): drop native-tls/openssl-sys from Android build; bump setup-android to v4 by @giswqs in #1336
- feat(search): jump to a typed lat/lon in the place-search box by @giswqs in #1340
- feat(add-data): support delimited text layers in any CRS by @giswqs in #1341
- feat(layers): copy and paste layer styles between layers by @giswqs in #1342
- chore(deps): bump maplibre-gl-raster to 0.12.0 and maplibre-gl-planetary-computer to 0.4.0 by @giswqs in #1344
- feat(time-slider): mosaic (STAC/MosaicJSON) sources with GPU/WASM engine by @giswqs in #1345
- fix(time-slider): restore the dock open, add mosaic NoData, fix the WASM nodata border by @giswqs in #1346
- fix(embed): hide the Browser rail (and all side panels) in maponly mode by @giswqs in #1347
- chore(deps): bump maplibre-gl-time-slider to 1.5.0 by @giswqs in #1348
- fix(map): collapse the attribution control after the map loads by @giswqs in #1349
- feat(processing): add Random extract vector tool by @giswqs in #1352
- feat(android): make the build Google Play-ready by @giswqs in #1350
- fix(print-layout): draw point markers in the legend by @giswqs in #1356
- feat(map): auto-enable terrain when the Terrain control is turned on by @giswqs in #1358
- fix(whitebox): implement Assign Projection tools in the WASM engine (#1355) by @giswqs in #1359
- fix(plugins): update Add PMTiles sample data URL to a reachable release by @giswqs in #1361
- feat(processing): add Emerging Hot Spot Analysis (space-time cube) by @giswqs in #1360
- fix(vector): reproject GeoJSON declaring a non-WGS84 crs member by @giswqs in #1362
- feat(processing): deep-link Whitebox tools via ?tool= URL param by @giswqs in #1363
- chore(deps): bump the actions-minor-patch group with 2 updates by @dependabot[bot] in #1365
- chore(deps): bump the cargo-minor-patch group in /apps/geolibre-desktop/src-tauri with 3 updates by @dependabot[bot] in #1364
- chore(deps): bump actions/setup-node from 6 to 7 by @dependabot[bot] in #1366
- chore(deps): bump actions/setup-python from 6 to 7 by @dependabot[bot] in #1367
- chore(deps): bump actions/checkout from 4 to 7 by @dependabot[bot] in #1368
- chore(deps): bump the npm-minor-patch group with 33 updates by @dependabot[bot] in #1369
- fix(core): adapt to createExpression rootKey arg in style-spec 26 by @giswqs in #1371
- fix(mobile): request Android/iOS location permission for GPS capture by @giswqs in #1373
- feat(ios): scaffold Tauri iOS build (config, Info.plist, CI, docs) by @giswqs in #1374
- fix(raster): apply min/max zoom constraint to COG layers by @giswqs in #1376
- chore(deps): patch fast-uri high advisory, scope audit to prod deps by @giswqs in #1378
- feat(plugins): add GeoLens catalog browser plugin by @giswqs in #1377
- feat(layers): Layers-panel symbology swatches + auto on-map legend by @giswqs in #1379
- feat(vector): pick which GeoPackage layers to load in the Add Vector panel by @giswqs in #1382
- fix(desktop): ship the sidecar lockfile so Jupyter/sidecar start in installed builds by @giswqs in #1386
- fix(symbology): graduated classes are discrete, with correct class breaks by @giswqs in #1387
- fix(processing): restore parameters for WASM tools whose manifest declares none by @giswqs in #1388
- Publish PR previews to pages-preview, drop Netlify by @giswqs in #1391
- chore(deps): geolibre-wasm 1.1.0, maplibre-gl-basemap-control 0.13.0 by @giswqs in #1395
- feat(controls): Logos submenu with MapLibre and Maptoolkit logos by @giswqs in #1396
- docs: change heading 'Set up' to 'Setup' in contributing.md by @amir-rezaei in #1398
- feat(legend): auto-generated on-map Legend panel with customizable entries by @giswqs in #1397
- fix(shell): only surface project URL load failures on the map by @giswqs in #1399
- feat: persist the active layer and lift the GeoLens feature cap by @giswqs in #1400
- fix(layers): correct raster style paste for index mode and stop copying opacity by @giswqs in #1402
- fix(geolens): page the GeoJSON loader instead of passing the feature limit through by @giswqs in #1401
- fix(time-slider): offer bare-year columns in the Bind to Time Slider dialog by @giswqs in #1403
- fix(legend): merge graduated color and size into one legend block by @giswqs in #1413
- docs: fix Title Case section heading and fork clone URL placeholder in CONTRIBUTING.md by @amir-rezaei in #1407
- docs: fix Title Case section headings and clone URL placeholder in docs/contributing.md by @amir-rezaei in #1408
- fix(citation): quote DOI string literal in CITATION.cff by @amir-rezaei in #1409
- fix(sidecar): serialize lifecycle and reclaim orphaned port 8765 by @giswqs in #1414
- chore(deps): bump time-slider to 1.6.0, clear high audit findings by @giswqs in #1416
- chore(deps): bump geolibre-wasm to 1.2.0, regenerate menu catalog by @giswqs in #1417
- fix(share): record only plugin URLs a project uses, revalidate on load by @giswqs in #1418
- feat: multi-profile support for AI assistant providers by @rahuldshetty in #1410
- fix: Raster Calculator equality operations match nothing by @giswqs in #1422
- feat(layers): report raster CRS and pixel size in the metadata dialog by @giswqs in #1421
- i18n: complete catalog coverage and route the remaining hard-coded strings through t() by @giswqs in #1423
- chore(release): v2.3.0 by @giswqs in #1424
New Contributors
- @amir-rezaei made their first contribution in #1398
- @rahuldshetty made their first contribution in #1410
Full Changelog: v2.2.0...v2.3.0