Releases: opengeos/GeoLibre
Releases · opengeos/GeoLibre
Release list
v2.1.0
What's Changed
- chore(processing): regenerate Whitebox menu catalog for geolibre-wasm 0.6.0 by @giswqs in #1181
- feat(docker): optional HTTP Basic Auth for the web container by @giswqs in #1184
- fix(security): harden sidecar auth, path sandboxing, plugin trust, and AI code exec by @giswqs in #1182
- fix(diagnostics): suppress benign three.js multiple-instances warning by @giswqs in #1187
- feat(route-animation): animate a marker along a line layer by @giswqs in #1185
- chore: bump maplibre-gl-basemap-control to ^0.12.0 by @giswqs in #1190
- feat(route-animation): export the animation as an MP4 video by @giswqs in #1189
- feat(record): record the map canvas or a drawn bbox to video by @giswqs in #1191
- feat(knowledge-cards): Wikipedia place info card from the map by @giswqs in #1192
- feat(add-data): GEBCO ocean bathymetry WMS sample with attribution by @giswqs in #1193
- chore: bump maplibre-gl-raster to ^0.10.1 and cog-tiler-wasm to ^0.2.5 by @giswqs in #1194
- feat(planetary): USGS basemaps for nine more celestial bodies by @giswqs in #1196
- refactor(add-data): shared applyServiceEntry dispatcher + layer builders by @giswqs in #1199
- feat(browser): Browser (Data Source Manager) panel — Services + Recent by @giswqs in #1200
- feat(browser): translate section labels; Layout toggle re-opens collapsed by @giswqs in #1201
- fix(browser): share one useProjectFileActions instance with the toolbar by @giswqs in #1202
- feat(browser): "New connection" action per service kind by @giswqs in #1203
- fix(effects): draw the atmospheric halo on Earth only by @giswqs in #1207
- ci(tiles): auto-deploy tiles worker on workers/tiles changes by @giswqs in #1206
- feat(browser): Databases section — browse PostGIS schemas & tables by @giswqs in #1204
- feat(plugins): add OpenAerialMap imagery search plugin by @giswqs in #1198
- feat(browser): Local files in the Browser panel (Phase 3) by @giswqs in #1208
- feat(browser): Favorites section (Phase 4) by @giswqs in #1209
- feat(browser): keyboard navigation (Phase 5 · Polish) by @giswqs in #1212
- fix(pwa): exclude bundled drop-in plugins from the SW precache by @giswqs in #1217
- feat(plugins): bundled drop-in activeByDefault + deployment welcome opt-out by @giswqs in #1218
- feat(route-animation): follow 3D tracks and add camera controls by @giswqs in #1214
- feat(photos): true native-resolution geotagged photo viewer by @giswqs in #1222
- fix(desktop): resolve bundled Jupyter sidecar in installed builds by @giswqs in #1224
- feat(processing): populate subset bbox from the map view by @giswqs in #1221
- feat(processing): make the Whitebox toolbox a floating panel by @giswqs in #1226
- feat(detection): in-browser ONNX/YOLO object detection (#902) by @giswqs in #905
- feat(map): switch scale bar between metric, imperial, and nautical units by @giswqs in #1228
- feat(ui): default to Advanced interface and skip the welcome dialog by @giswqs in #1229
- chore(release): v2.1.0 by @giswqs in #1230
Full Changelog: v2.0.0...v2.1.0
v2.0.0
What's Changed
- fix(desktop): drop in-app updater from the Microsoft Store build by @giswqs in #1078
- fix(whitebox): honor output extension and render expression fields for WASM tools by @giswqs in #1077
- fix(wms): honor WMS 1.3.0 in GetMap requests for 1.3.0-only servers by @giswqs in #1079
- feat(symbology): export vector layer symbology to Mapbox GL style JSON by @giswqs in #1071
- feat(editing): write vector layer edits back to GeoPackage/GeoJSON source files by @giswqs in #1072
- feat(editing): PostGIS write-back for editable database layers by @giswqs in #1080
- feat(symbology): import vector layer symbology from Mapbox GL style JSON by @giswqs in #1081
- fix(postgis): follow-ups from the final review round of #1080 by @giswqs in #1082
- feat(symbology): import/export vector layer symbology as OGC SLD by @giswqs in #1083
- feat(symbology): import/export vector layer symbology as QGIS QML by @giswqs in #1084
- fix(desktop): only disable WebKitGTK DMABUF renderer on old WebKitGTK by @giswqs in #1085
- test(ci): dependency audits, coverage floors, and E2E panel/theme/error specs by @giswqs in #1086
- chore(deps): bump cloudflare/wrangler-action from 3 to 4 by @dependabot[bot] in #1096
- chore(deps): bump the cargo-minor-patch group across 1 directory with 2 updates by @dependabot[bot] in #1087
- chore(deps): bump rusqlite from 0.32.1 to 0.40.1 in /apps/geolibre-desktop/src-tauri by @dependabot[bot] in #1088
- chore(deps): bump docker/setup-qemu-action from 3 to 4 by @dependabot[bot] in #1091
- chore(deps): bump actions/cache from 4 to 6 by @dependabot[bot] in #1092
- chore(deps): bump docker/build-push-action from 6 to 7 by @dependabot[bot] in #1093
- chore(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #1094
- chore(deps): bump actions/github-script from 7 to 9 by @dependabot[bot] in #1095
- chore(deps-dev): bump @cloudflare/workers-types from 4.20260624.1 to 5.20260707.1 by @dependabot[bot] in #1101
- chore(deps-dev): bump @types/node from 22.19.21 to 26.1.0 by @dependabot[bot] in #1099
- chore(deps): bump apache-arrow from 17.0.0 to 21.1.0 by @dependabot[bot] in #1103
- chore(deps): bump @google/genai from 1.52.0 to 2.10.0 by @dependabot[bot] in #1104
- chore(deps): bump i18next from 25.10.10 to 26.3.4 by @dependabot[bot] in #1102
- chore(deps): bump @duckdb/duckdb-wasm from 1.33.1-dev45.0 to 1.33.1-dev57.0 by @dependabot[bot] in #1100
- fix: parse 3D tile content on main thread to avoid CDN worker by @giswqs in #1105
- feat: import delimited text (CSV) without coordinates as an attribute table by @giswqs in #1107
- chore(deps): bump zip from 2.4.2 to 6.0.0 in /apps/geolibre-desktop/src-tauri by @dependabot[bot] in #1090
- chore(deps): bump react-i18next from 16.6.6 to 17.0.8 by @dependabot[bot] in #1098
- fix: route share.geolibre.app through native HTTP on desktop by @giswqs in #1109
- chore(deps): bump the npm-minor-patch group across 1 directory with 47 updates by @dependabot[bot] in #1097
- chore(deps): bump getrandom from 0.2.17 to 0.4.2 in /apps/geolibre-desktop/src-tauri by @dependabot[bot] in #1089
- feat(raster): normalized-difference index builder for any HTTP COG by @giswqs in #1112
- fix(set-view): surface smart-paste behind a labeled toggle button by @giswqs in #1113
- feat(basemaps): Layers-panel toggle + dark-mode theming by @giswqs in #1115
- feat(terrain): double-click terrain control for vertical exaggeration by @giswqs in #1116
- feat(sun): Google Earth-style sun position simulation by @giswqs in #1117
- feat(view): View in Google Maps / Google Earth actions by @giswqs in #1118
- feat(basemaps): expand EOX Maps layers (annual s2cloudless + overlay/terrain) by @giswqs in #1127
- fix(gpx): import track points and route points as separate layers by @giswqs in #1123
- feat(style): render vector layers with Z coordinates in true 3D by @giswqs in #1124
- feat(kml): render KML/KMZ GroundOverlay images as map overlays by @giswqs in #1125
- fix(vector): load macOS-zipped and 3D MultiPatch shapefiles in the vector panel by @giswqs in #1129
- feat(layers): add a GeoEditor toggle button to the Layers panel header by @giswqs in #1132
- feat(basemaps): per-project ellipsoid + Mars/Moon basemaps by @giswqs in #1133
- fix(vector): load TIN/MultiPatch 3D shapefiles by @giswqs in #1126
- fix(controls): recover when the component-controls chunk fails to load by @giswqs in #1134
- feat(terrain): add Elevation Profile as a built-in plugin by @giswqs in #1137
- feat(kml): render KML/KMZ Collada (.dae) 3D models by @giswqs in #1131
- feat(kml): animate time-tagged KML/KMZ GroundOverlays via the Time Slider by @giswqs in #1135
- feat(controls): add a Clouds overlay to the Controls menu by @giswqs in #1140
- feat(map): add CesiumJS 3D-globe view (split-pane, camera + layer sync) by @giswqs in #1139
- refactor(3d-tiles): dedupe Google X-GOOG-API-KEY resolution into @geolibre/core by @giswqs in #1144
- feat(shortcuts): add Google Earth-style camera-reset keyboard shortcuts by @giswqs in #1146
- feat(assistant): read AI API keys from OS environment variables by @giswqs in #1143
- feat(i18n): complete all 13 locale catalogs + migrate hardcoded panel/dialog strings by @giswqs in #1147
- feat(weather): Weather menu with Clouds + Precipitation (RainViewer radar) by @giswqs in #1145
- fix(vector): reproject projected-CRS shapefiles on import (#1148) by @giswqs in #1150
- fix(deck): share one interleaved deck overlay so 3D Tiles, 3D Z vectors, and COG rasters coexist by @giswqs in #1151
- fix(deck): render 3D Z points as solid icons by @giswqs in #1153
- fix(terrain): unclamp map center while terrain is on to stop zoom snapping over steep relief by @giswqs in #1156
- fix(wfs): retry alternate GeoJSON output formats so ArcGIS WFS loads (#1160) by @giswqs in #1161
- feat(basemaps): replace planetary basemaps with the OpenPlanetaryMap set by @giswqs in #1162
- feat(basemaps): add a planet switcher to the Layers panel by @giswqs in #1164
- feat(raster): extract COG/WMS/XYZ bbox subsets in the browser by @giswqs in #1163
- feat(attribute-table): calculate geometry length and area in the Field Calculator by @giswqs in #1168
- feat(plugins): Historical Imagery plugin — theme-aware panel and vendor-neutral WMTS sample by @giswqs in #1169
- feat(attribute-table): select multiple rows with Ctrl and Shift by @giswqs in #1172
- feat(map-tour): add support for generating tour keyframes from path layers by @giswqs in #1157
- feat(plugins): UTM easting/northing grid mode for the Gridlines overlay by @giswqs in #1174
- feat(diagnostics): capture native Tauri HTTP requests in the network log; classify failed fetch() errors by @giswqs in #1176
- feat(plugins): add Mapillary coverage and street-level viewer plugin by @giswqs in #1173
- docs: add Terms of Service page for Earth Engine OAuth verification by @giswqs in #1177
- ci: bake Mapillary access token into web/container builds by @giswqs in https://github.com/opengeos/GeoLibre/p...
v1.10.0
What's Changed
- fix(sql): recover the SQL Workspace from a poisoned remote-read state by @giswqs in #1042
- fix(msix): use full Partner Center identity for Store submission by @giswqs in #1044
- fix(sql): self-heal a failed DuckDB build instead of caching the rejection by @giswqs in #1045
- Add Google Photorealistic 3D Tiles support by @giswqs in #1046
- fix(processing): reproject_vector (and other WASM tools) fail with wrong parameter names by @giswqs in #1048
- feat(add-data): support OGC API vector tiles as a remote source by @giswqs in #1051
- fix(zarr): live colormap/clim for NetCDF/Zarr layers (maplibre-gl-components 0.25.4) by @giswqs in #1054
- feat(geo-editor): load current-view vector features into the GeoEditor by @giswqs in #1055
- feat(netcdf): add local HDF5/NetCDF-4 file loading by @giswqs in #1052
- feat(3d-tiles): ArcGIS I3S scene layer support (deck.gl Tile3DLayer + I3SLoader) by @giswqs in #1057
- fix(geocoding): route desktop geocoding through native HTTP to bypass CORS by @giswqs in #1058
- ci: harden Claude Code workflow trigger and token permissions by @giswqs in #1063
- fix(plugins): gate project-supplied plugin URLs behind an explicit trust prompt by @giswqs in #1064
- chore(release): v1.10.0 by @giswqs in #1067
Full Changelog: v1.9.0...v1.10.0
v1.9.0
What's Changed
- fix(settings): editable hex input for the custom accent color by @giswqs in #914
- feat(tour): per-keyframe hold/transition controls and named setup save by @giswqs in #909
- feat(sql): dock SQL Workspace as a resizable panel with autocomplete by @giswqs in #910
- docs: rename Live Demo to Launch GeoLibre Web; make Getting Started user-focused by @giswqs in #920
- fix(storymap): export globe + 3D extrusion, scroll/exit/resize fixes, name prompt by @giswqs in #922
- fix(raster): offer convert-to-COG for striped GeoTIFFs loaded from a URL by @giswqs in #924
- fix(3d-tiles): panel fills form content on resize (#923) by @giswqs in #925
- fix(basemap): apply resolved provider style URL and recover from failed basemaps by @giswqs in #927
- fix(map): sync layer control style editor with the Style sidebar (#912) by @giswqs in #926
- docs: fix home page title and bump status to 1.8 by @giswqs in #928
- chore: move web viewer to web.geolibre.app by @giswqs in #929
- fix(viewer): keep viewer.geolibre.app as a worker route by @giswqs in #930
- feat(style): add transparent fill/outline option to color picker by @giswqs in #938
- fix(storymap): hide faded point outlines and render plugin basemaps in HTML export by @giswqs in #941
- feat(help): add Website and GitHub links to Help menu by @giswqs in #943
- fix(graticule): release focus when pressing Enter in numeric inputs by @giswqs in #945
- fix(processing): drop reserved OGC_FID property before ST_Read (#944) by @giswqs in #946
- docs: add Troubleshooting page for browser/Safari cache issues by @giswqs in #947
- docs: simplify Homebrew install (official cask merged) by @giswqs in #948
- fix: exported story basemap + collapse plugin panels on project load by @giswqs in #953
- fix(graticule): disable interval input when spacing is Auto by @giswqs in #955
- feat(add-data): Add CAD (DXF/DWG) Layer source with layer picker and CRS by @giswqs in #957
- feat(conversion): add generic Vector to Vector tool (any format by extension) by @giswqs in #959
- fix(geoagent): custom provider, model loading, and commit-based key save by @giswqs in #949
- fix(vector): load desktop files with native DuckDB by @giswqs in #963
- fix(desktop): shrink default DuckDB build by @giswqs in #967
- fix(planetary): restore saved raster layers by @giswqs in #966
- fix(add-data): relabel "Insert before" to "Insert below" (#973) by @giswqs in #975
- Show video layer metadata in layer info by @giswqs in #976
- Fix Deck.gl example data flow by @giswqs in #978
- Add directions route metrics by @giswqs in #977
- Update vector sample loading workflow by @giswqs in #979
- Update raster plugin for issue 969 by @giswqs in #980
- Fix globe popup occlusion by @giswqs in #981
- Address globe popup review follow-up by @giswqs in #982
- Tighten popup zero opacity handling by @giswqs in #983
- Fix GeoParquet files with base64 WKB geometry by @giswqs in #987
- Update MapLibre plugin dependencies by @giswqs in #988
- Show external plugin load failures by @giswqs in #989
- fix(pyodide-console): load pyodide.asm.js via blob so a self-hosted mirror works under CSP by @giswqs in #1002
- fix(usgs-lidar): disambiguate Clear labels and lock Search Map Extent while drawing by @giswqs in #1004
- Fix OAuth popup new-window panic by @giswqs in #1003
- chore(deps): clear npm audit vulnerabilities and deprecation warnings via overrides by @giswqs in #1005
- fix(new-project): prompt to save unsaved changes before the new-project form (#990) by @giswqs in #1007
- Prompt for HTML export name and skip onboarding in embeds (#991) by @giswqs in #1006
- Fix offline download count, completion state, and cache-limit gating by @giswqs in #1008
- fix: numerical angle input for the GeoEditor Rotate tool by @giswqs in #1010
- feat(storymap): hide-itinerary toggle, handout subtitle/byline, start/closing slides by @giswqs in #1009
- feat(plugins): expose maplibre-gl-raster and projection control to plugins by @giswqs in #1011
- fix: load GeoPackages via Add Vector Layer without hanging by @giswqs in #1018
- fix(geo-editor): keep edit overlay at the edited layer's z-position (#1015) by @giswqs in #1017
- feat(map): exclude plugin-internal style layers from the layer control by @giswqs in #1012
- fix(geo-editor): dead first click when switching between draw tools (#889) by @giswqs in #1020
- feat(raster): populate Legend from a paletted raster's color table by @giswqs in #1019
- fix: exclude Vantor internal helper layers from Layer Swipe by @giswqs in #1021
- feat(add-data): retrieve layers/types for WMS and WFS from GetCapabilities by @giswqs in #1039
- chore(release): v1.9.0 by @giswqs in #1040
- fix(msix): default PublisherDisplayName to the registered Store name by @giswqs in #1043
Full Changelog: v1.8.0...v1.9.0
v1.8.0
What's Changed
- Update README and documentation to include additional video tutorials for GeoLibre by @giswqs in #782
- feat(basemaps): add Openbasiskaart Netherlands basemap by @giswqs in #785
- feat(graticule): coordinate grid overlay with edge labels by @giswqs in #768
- feat(packaging): add Windows portable zip by @giswqs in #787
- feat(plugins): shared-rail (replace-style) right-panel dock mode by @giswqs in #769
- feat(annotations): add map annotation layer (text, arrows, highlights) by @giswqs in #770
- fix(plugins): revalidate external-plugin manifest and entry to avoid stale-cache version skew by @giswqs in #786
- fix(controls): disable Atmospheric Effects submenu outside globe view (#783) by @giswqs in #791
- feat(add-data): add GeoRSS feed support (URL + file) by @giswqs in #790
- fix(raster): handle striped (non-tiled) GeoTIFFs with auto COG conversion by @giswqs in #792
- feat(print): add Copy to Clipboard to Print Layout (#773) by @giswqs in #795
- fix(bookmarks): clearer bookmark panel UX (#794) by @giswqs in #796
- fix(measure): smoother measure-tool workflow and neutral guidance styling by @giswqs in #799
- feat(controls): persistent mode banner for Directions and Reverse Geocode (#784) by @giswqs in #798
- fix(segmentation): hide desktop-only config form in the web build by @giswqs in #797
- fix(controls): auto-fit + resizable HTML control panel by @giswqs in #800
- feat(settings): dedicated AI Providers section with provider dropdowns (#778) by @giswqs in #801
- fix(python-console): recoverable error state and right-side editor split by @giswqs in #802
- feat(storymap): compose chapters on the live map (#775) by @giswqs in #804
- feat(bookmarks): organize bookmarks into folders (#794) by @giswqs in #805
- feat(collab): per-participant permissions and in-app chat (#754) by @giswqs in #806
- fix(collab): keep chat draft on dropped send; validate stored chat records by @giswqs in #807
- fix(ci,backend): run the full backend suite, harden Whitebox runner, patch deps by @giswqs in #810
- fix(vector): 3D extrusion for Add Vector Layer polygons by @giswqs in #817
- fix(controls): refine Minimap and View State panel UX by @giswqs in #816
- chore(processing): bump geolibre-wasm to 0.5.0 by @giswqs in #827
- feat(project): browse and open shared projects from a gallery by @giswqs in #825
- feat(project): export project to standalone interactive HTML (#821) by @giswqs in #823
- feat(controls): record an animated camera tour to video (#818) by @giswqs in #822
- feat(add-data): import geotagged photos as a point layer (EXIF GPS) by @giswqs in #824
- feat(style): greyscale toggle, reset, and numeric input for raster paint controls by @giswqs in #836
- feat(plugins): expose native raster/tile layer registration to the plugin API (#845) by @giswqs in #846
- fix(whitebox): read locally loaded rasters in the WASM runner regardless of load path by @giswqs in #848
- feat(map): right-click context menu for coordinates and quick actions (#829) by @giswqs in #847
- feat(layers): inline opacity numeric input and fixed-name notice on Background (#838) by @giswqs in #849
- feat(style): info icons for layer zoom-visibility controls by @giswqs in #850
- fix(style): hide basemap layers behind advanced toggle in Insert before by @giswqs in #851
- fix(view): make Layer Swipe and split view mutually exclusive (#844) by @giswqs in #852
- fix(view): collapse split-view grid only after swipe activation succeeds by @giswqs in #854
- feat(time-slider): pixel time-series chart for raster stacks by @giswqs in #826
- fix(swipe): list only visible layers in the Layer Swipe panel (#843) by @giswqs in #857
- fix(basemaps): rework provider-credential UX in the Basemaps panel by @giswqs in #855
- feat(set-view): clearer coordinate input workflow and DDM support (#828) by @giswqs in #853
- fix(geolocate): reset control when the browser permission prompt is dismissed by @giswqs in #858
- fix(swipe): correct layer order, basemap label, and pause behavior (#842) by @giswqs in #859
- fix(geolocate): guard permission query against synchronous throws by @giswqs in #861
- feat(storymap): PDF handout generator for the Story Map plugin by @giswqs in #856
- fix(swipe): localize the base-layer label in the Layer Swipe panel (#860) by @giswqs in #862
- fix(add-data): reposition sample-data dropdown and raise Cancel button contrast (#863) by @giswqs in #864
- fix(split-view): use real checkboxes in the secondary pane layer menu (#840) by @giswqs in #865
- fix(arcgis): load feature layers as GeoJSON so labels can be styled by @giswqs in #868
- feat(basemaps): add EOX Sentinel-2 cloudless satellite imagery by @giswqs in #869
- fix(toolbar): make the top menu bar horizontally scrollable on tablets by @giswqs in #879
- fix(record-tour): make the Record Map Tour close button work (#876) by @giswqs in #878
- feat(controls): rename "Graticule" to "Gridlines" (#872) by @giswqs in #885
- fix(lidar): re-stream COPC point clouds when a saved project is reopened by @giswqs in #877
- feat(record-tour): clearer keyframe layout, recapture, and two-step save by @giswqs in #886
- fix(project): reload file-referenced local layers on reopen (#880) by @giswqs in #883
- fix(geocoding): resolve contradictory Nominatim contact email helper text by @giswqs in #895
- feat(record-tour): save and load tour setup as a JSON file by @giswqs in #898
- fix(layers): friendlier empty-state hint for the Beginner profile by @giswqs in #900
- feat(issues): add GitHub issue forms and triage labels by @giswqs in #903
- feat(colorbar): stack-order fix, stacking direction, and resizable panel (#884) by @giswqs in #901
- feat(photos): manual placement and drag for non-geotagged photos by @giswqs in #899
- chore(release): v1.8.0 by @giswqs in #904
Full Changelog: v1.7.0...v1.8.0
v1.7.0
What's Changed
- docs(downloads): improve Linux install section, add Flatpak (FlatPark) by @jing2uo in #703
- docs: add a How to Cite page with DOI and citation formats by @giswqs in #704
- fix(ui): refine collaboration, save, view, settings, and field collection dialogs by @giswqs in #720
- feat(plugins): plugin UI host API — right sidebar, toolbar menus, floating panels by @giswqs in #705
- fix(ui): five UX fixes for the settings, set view, diagnostics, controls, and dashboard by @giswqs in #727
- fix(vector): show labels for Add Vector Layer layers (#709) by @giswqs in #737
- fix(dashboard): resize chart contents to the panel height (#728) by @giswqs in #735
- feat(style): colormap preview picker and richer vector label options by @giswqs in #700
- feat(onboarding): suppress welcome wizard for embeds (?url= deep links and ?welcome=0) by @giswqs in #738
- fix(processing): hide Start/Stop server buttons in the web Whitebox toolbox by @giswqs in #740
- fix(attribute-table): place collapse icon next to the close icon by @giswqs in #741
- fix(map): move bounds-locked badge to bottom-left to clear toolbar by @giswqs in #747
- fix(project-url): add context to failed project-load notifications (#734) by @giswqs in #746
- feat(plugins): move external plugin toolbar menus after the Help menu by @giswqs in #752
- docs: add Microsoft Store install option and distribution badges by @giswqs in #758
- fix(offline): bound the offline zoom range to the map's real max zoom by @giswqs in #756
- fix(collab): streamline the Collaborate dialog for invited users by @giswqs in #755
- fix(print-layout): scale feedback, customizable map frame, and dropdown polish by @giswqs in #757
- fix(share): guide users to set a username when sharing fails by @giswqs in #760
- feat(raster): show color ramp gradient swatches in the Styles panel by @giswqs in #762
- feat(collab): session-status badge, roster, and wizard dismissal by @giswqs in #761
- feat(processing): browse Whitebox tools by category in the Processing menu by @giswqs in #763
- chore(release): v1.7.0 by @giswqs in #764
New Contributors
Full Changelog: v1.6.0...v1.7.0
v1.6.0
What's Changed
- fix(packaging): emit depends_on :macos in official cask by @giswqs in #597
- fix(toolbar): deactivate Navigation control by default for new projects by @giswqs in #598
- feat(plugins): sort the Manage Plugins list alphabetically (#589) by @giswqs in #601
- feat(style): label vector features by attribute (label engine) by @giswqs in #584
- fix(settings): remove redundant project status indicators (#590) by @giswqs in #600
- fix(data): keep large OSM PBF extracts from freezing the app by @giswqs in #602
- feat(symbology): rule-based renderer, proportional symbols, fill patterns, and marker library by @giswqs in #585
- feat(plugins): install external plugins from an uploaded zip (desktop + web) by @giswqs in #604
- feat(map): add multi-map grid with synchronized views by @giswqs in #603
- fix(raster): render COGs in projections written only as an ESRI PE string (#610) by @giswqs in #613
- feat(updates): update status color fix, guided workflow, startup check, and preferences by @giswqs in #607
- fix(map): maximize the whole workspace on fullscreen so panels don't overlap the map by @giswqs in #614
- fix(new-project): correct title, drop phantom Protomaps mention, make custom URL exclusive by @giswqs in #618
- fix(settings): restructure the Map constraints panel (#591) by @giswqs in #620
- feat(processing): interactive sidecar help banner for the Whitebox toolbox by @giswqs in #617
- feat(share): progressive setup with separate website/local token steps (#587) by @giswqs in #621
- fix(attribute-table): make collapse, close, and clear selection controls match expectations by @giswqs in #628
- fix(settings): make the Custom interface profile clickable with a clear active state by @giswqs in #625
- fix(diagnostics): consistent filter buttons in the Diagnostics panel by @giswqs in #627
- feat(segmentation): interactive sidecar help banner on server start failure by @giswqs in #629
- fix(i18n): drop inaccurate "public" wording from Open Project from URL dialog by @giswqs in #635
- ci: add Cloudflare Pages PR deploy previews by @giswqs in #638
- feat(appearance): add accent color schemes beyond light/dark by @giswqs in #636
- feat(basemap): swap the core basemap via double-click in the layer panel by @giswqs in #637
- fix(overture): dynamic zoom hint instead of a persistent warning by @giswqs in #639
- fix(geoagent): show real configuration state instead of always-Ready badge by @giswqs in #642
- fix(offline): disable controls and surface a remediation link when caching is unsupported by @giswqs in #640
- ci(aur): publish geolibre-bin to the AUR on each release by @giswqs in #645
- feat(storymap): Reset button + auto-collapse side panels while presenting by @giswqs in #644
- fix(geoagent): stop data loss when a plugin chunk fails to load by @giswqs in #641
- fix(swipe): bump maplibre-gl-swipe to 0.9.1 to fix Layer Swipe under globe by @giswqs in #647
- fix(swipe): pre-select visible layers and grow the panel to fit (#616) by @giswqs in #643
- ci(copr): publish geolibre to Fedora COPR + add AppStream metainfo by @giswqs in #646
- feat(flatpak): add Flathub packaging (app.geolibre.GeoLibre) by @giswqs in #648
- feat(winget): add Windows Package Manager packaging (OpenGeos.GeoLibre) by @giswqs in #651
- revert(flatpak): remove Flathub packaging by @giswqs in #652
- fix(plugins): distinct icon for the NASA Earthdata control by @giswqs in #649
- feat(processing): movement, space-time and cell-coverage vector tools (#595) by @giswqs in #650
- fix(msix): declare a language and allow Store identity overrides by @giswqs in #653
- docs(msix): placeholder publisher GUID and tighten language pattern by @giswqs in #655
- docs: add privacy policy page by @giswqs in #654
- docs: add CITATION.cff with Zenodo concept DOI by @giswqs in #660
- fix(vector): optional sample-data dropdown and resizable Add Vector Layer dialog by @giswqs in #670
- feat(add-data): standardize sample loading across Add Data dialogs by @giswqs in #671
- fix(raster): optional sample-data dropdown in the Add Raster Layer dialog by @giswqs in #677
- fix(layout): widen default side panel and raise resize cap (#682) by @giswqs in #684
- fix(layers): dismiss layer actions menu after "New group from layer" by @giswqs in #676
- fix(desktop): tidy About dialog layout and update-error view by @giswqs in #675
- feat(drop): explain global file drop and name the added layer (#666) by @giswqs in #674
- fix(desktop): downgrade benign Tauri startup fetch failures in diagnostics by @giswqs in #673
- fix(set-view): unblock prefilled zoom + add DD/DMS entry and segmented layout (#669) by @giswqs in #672
- fix(network): clarify routing privacy notice and endpoint guidance (#681) by @giswqs in #687
- fix(vector): load loose shapefiles (maplibre-gl-vector 0.5.1) + desktop sidecar auto-discovery (#680) by @giswqs in #686
- fix(statistics): disable Run until required fields set, add asterisk legend by @giswqs in #688
- feat(add-data): sample-data dropdowns for all upstream-backed panels by @giswqs in #678
- fix(vector): restore local-file Add Vector Layer layers on project reopen by @giswqs in #689
- fix(vector): embed path-less Add Vector Layer layers in "Save file references" by @giswqs in #692
- feat(layers): add Search places box to the Layers panel footer by @giswqs in #694
- fix(plugins): keep external native layer style over default-seeded style by @giswqs in #693
- feat(time-slider): default an unspecified end date to the current date by @giswqs in #695
- chore(release): v1.6.0 by @giswqs in #698
Full Changelog: v1.5.0...v1.6.0
v1.5.0
What's Changed
- docs(architecture): note WebKitGTK map render limits on Linux by @giswqs in #400
- feat: add a column explorer to the attribute table by @giswqs in #402
- docs: even out the homepage feature card lengths by @giswqs in #404
- feat(dashboard): add a Dashboard panel of chart widgets (#401) by @giswqs in #405
- feat(vector): honor embedded KML/KMZ symbology by @giswqs in #407
- fix(print-layout): exclude control colorbar canvases from map capture by @giswqs in #412
- feat(raster): reverse + custom ramps, and the full colormap list (maplibre-gl-raster 0.3.0) by @giswqs in #411
- feat(whitebox): in-browser WASM runtime with raster I/O by @giswqs in #413
- chore(deps): bump maplibre-gl-components to 0.20.5 by @giswqs in #418
- fix(pyodide-console): honor custom VITE_PYODIDE_INDEX_URL via blob URL by @giswqs in #421
- fix: legend/colorbar config panels auto-fit viewport (no forced scrollbar) by @giswqs in #429
- chore(deps): bump maplibre-gl-esri-wayback to 0.1.1 by @giswqs in #432
- feat(add-data): saved service library for web-service layers by @giswqs in #423
- chore(deps): bump maplibre-gl-layer-control to 0.15.1 by @giswqs in #431
- feat(layers): grey out layer names hidden by group visibility by @giswqs in #434
- feat(layer-control): save & reuse basemap element visibility presets by @giswqs in #435
- feat(style): scale-proportional (meters) stroke width unit by @giswqs in #433
- feat(basemaps): support stacking multiple raster basemaps by @giswqs in #436
- fix(layer-control): consistent 'basemap' terminology in layer panel by @giswqs in #439
- feat(add-data): internationalize the Add Data dialog (#427) by @giswqs in #438
- refactor(maplibre-effects): render atmosphere behind the globe by @giswqs in #440
- docs: migrate documentation build from MkDocs to Zensical by @giswqs in #442
- chore(deps): bump maplibre-gl-raster to ^0.3.1 (fixes COG rendering #444) by @giswqs in #447
- fix(vector): forward offline spatial-extension path to the Add Vector panel by @giswqs in #446
- fix(project): prompt for a file name on Save As in browsers without the save picker by @giswqs in #458
- feat(dashboard): make the dashboard panel collapsible (#459) by @giswqs in #463
- chore(deps): bump maplibre-gl-layer-control to ^0.17.3 by @giswqs in #456
- fix(layout): keep confirmation dialogs above map-control panels (#451) by @giswqs in #461
- fix(toolbar): commit project name on Enter key by @giswqs in #473
- fix(map): sync basemap visibility/opacity from the layer control to the store by @giswqs in #464
- fix(basemap): let the resized basemap panel grow past the default size caps (#452) by @giswqs in #474
- fix(add-data): simplify the "Insert before" menu (#453) by @giswqs in #476
- feat(bookmark): capture layers, selectable export, resizable/reorderable panel, save-as name prompt by @giswqs in #475
- feat(globe): customizable atmosphere halo and space colors by @giswqs in #477
- fix(geoagent): keep panel open on provider change, inset EE Sign in button by @giswqs in #478
- chore(deps): bump maplibre-gl-raster to 0.4.0 by @giswqs in #479
- feat(esri-wayback): add 'only versions with local changes' filter by @giswqs in #487
- chore(deps): bump maplibre-gl-raster to 0.5.0 by @giswqs in #488
- docs: add Acknowledgements page by @giswqs in #490
- fix(style): add screen eyedropper to color fields (#489) by @giswqs in #491
- fix(style): hide Circle radius for the GeoEditor Sketches layer by @giswqs in #494
- fix(map): render generic external raster tile layers from plugins by @giswqs in #495
- feat(raster): reopen styling panel from layer actions; unify floating-panel icon behavior by @giswqs in #493
- fix: GeoEditor polygon can't be closed (#481) by @giswqs in #496
- feat(notebook): split workspace 50/50 with map and collapse Style panel by @giswqs in #497
- feat(basemap): add Protomaps basemaps to New map dialog by @giswqs in #498
- fix(sql): resolve SQL Workspace/AI Assistant duplicate OGC_FID Binder Error (#499) by @giswqs in #502
- fix(assistant): clarify the no-LLM placeholder and fix the settings path by @giswqs in #503
- feat(map): add lock-icon indicator when map bounds are restricted (#504) by @giswqs in #506
- feat(settings): warn about Globe drift before Use Current View (#505) by @giswqs in #507
- feat(map): refine default top-right map controls (#512) by @giswqs in #513
- fix(toolbar): keep Redo shortcut on one line in Edit menu (#511) by @giswqs in #514
- feat(settings): customizable UI profiles / data source filtering (#500) by @giswqs in #509
- feat(toolbar): add View menu with viewport history navigation (#510) by @giswqs in #515
- feat(map): add reset pitch & bearing control with rotation indicator by @giswqs in #516
- feat(controls): add Spinning Globe panel under Atmospheric Effects by @giswqs in #517
- feat(plugins): replace LiDAR Viewer with USGS LiDAR plugin by @giswqs in #518
- feat(map): replace ambiguous compass icon with a distinct north arrow by @giswqs in #539
- fix(wayback): bump esri-wayback to 0.2.1 so metadata panel scrolls by @giswqs in #550
- fix(wayback): grow the Esri Wayback panel into available map height by @giswqs in #552
- fix(toolbar): remove non-functional Layers icon from header by @giswqs in #553
- fix(add-data): clarify Saved services bar and basemap toggle by @giswqs in #554
- fix(offline): clarify zoom-level controls and warning text (#519, #538) by @giswqs in #556
- fix(settings): tailor Settings visibility and copy for Beginner/Intermediate profiles by @giswqs in #555
- fix(basemaps): confirm before a style basemap clears stacked basemaps and surface actionable credential errors by @giswqs in #557
- fix(settings): follow-up review fixes for the Beginner/Intermediate profile PR by @giswqs in #561
- fix(geocode): clearer Geocode Addresses dialog copy and contextual API key hint by @giswqs in #558
- feat(add-data): accept comma decimals and drag-drop CSV files (#527) by @giswqs in #560
- feat(print-layout): fix preview rendering and add size/title/footer controls by @giswqs in #543
- fix(interface): replace Simplify toggle with a 4-state profile selector by @giswqs in #559
- fix(streetview): surface credential errors and guard premature map clicks (#562, #563) by @giswqs in #568
- fix(segmentation): replace premature HTTP error with neutral status notice by @giswqs in #566
- feat(processing): add sequential route (directions) network tool by @giswqs in #569
- fix(assistant): sequential onboarding for the AI Assistant when no provider is configured by @giswqs in #567
- docs: reduce sidebar navigation spacing by @giswqs in #572
- processing: use geolibre-wasm 0.3.0 for the in-browser tool runner by @giswqs in #574
- feat(time-slider): bind existing vector layers to the timeline (#570) by @giswqs in https://github.com/opengeos/GeoLibre/pull...
v1.4.0
What's Changed
- ci(android): attach release-signed APKs to GitHub Release by @giswqs in #383
- feat(field-collection): capture point observations with a custom form by @giswqs in #384
- fix(docker): allow local HTTP data sources in browser-build CSP by @giswqs in #388
- chore(docker): cross-reference Tauri CSP and warn about localhost allowances by @giswqs in #389
- feat: allow runtime env overrides for Pyodide and DuckDB Spatial URLs by @Ryanphoenix in #391
- feat(georeferencer): pin an image to the map with ground control points by @giswqs in #386
- feat(raster): add Spectral Index toolbox (NDVI, NDWI, EVI, …) by @giswqs in #392
- fix: render RTL basemap labels (Arabic, Hebrew) correctly by @giswqs in #396
- feat(notebook): run Jupyter beside the map (JupyterLite + desktop JupyterLab) by @giswqs in #395
- fix(vector): render GeoPackages without GDAL's WASM thread crash (#393) by @giswqs in #394
- fix(ci): build JupyterLite for the GitHub Pages demo by @giswqs in #397
- fix(notebook): let %pip install work in the desktop kernel by @giswqs in #398
- chore(release): v1.4.0 - version bump and docs update by @giswqs in #399
Full Changelog: v1.3.0...v1.4.0
v1.3.0
What's Changed
- feat(processing): add Reproject, Explode, Aggregate vector tools (#283) by @giswqs in #290
- feat(macos): Homebrew Cask packaging for macOS by @giswqs in #294
- fix(macos): update Homebrew docs for tap trust and removed --no-quarantine by @giswqs in #295
- feat(processing): add Smooth, Regular grid, Voronoi/Delaunay vector tools by @giswqs in #293
- feat(processing): add IDW / kriging interpolation (point → raster surface) (#283) by @giswqs in #296
- feat(processing): add zonal stats, raster calculator, reclassify, mosaic, focal by @giswqs in #300
- feat(processing): add attribute (table) join vector tool by @giswqs in #314
- feat(attribute-table): add field statistics summary panel by @giswqs in #315
- feat(storymaps): scroll-driven story map builder, presenter, and HTML export by @giswqs in #299
- test(storymaps): add e2e regression test for story map persistence by @giswqs in #317
- feat(layout): user-editable legend for print layout (#303) by @giswqs in #316
- feat(geocoding): add batch geocoding and reverse geocoding tools by @giswqs in #318
- feat(export): add Shapefile and GeoPackage export (#310) by @giswqs in #322
- fix(storymaps): present bundled story on load and fix nav rotation by @giswqs in #320
- feat(raster): single-band pseudocolor + classification and RGB band combination (#305) by @giswqs in #319
- refactor: extract URL validation and make basemape registry immutable by @slowy07 in #326
- feat(layers): collapsible layer groups/folders in the layer panel (#311) by @giswqs in #323
- feat: add transparent rewrite support for public S3, GCS, and Azure cloud storage URLs in SQL queries (closes #313) by @Ka-iPy in #321
- feat(network): isochrones, service areas, and OD cost matrices (#308) by @giswqs in #324
- feat(layers): add glTF/GLB 3D model layer (#306) by @giswqs in #325
- fix(pwa): stop the web demo from auto-refreshing itself by @giswqs in #328
- feat(scripting): Python automation API + in-app Python Console by @giswqs in #327
- feat(collab): real-time multi-user collaboration MVP (#307) by @giswqs in #329
- fix(collab): render plugin layer types (raster/LiDAR/3D-tiles) on collaborators by @giswqs in #330
- fix(desktop): silence benign Tauri IPC startup transients in console (#332) by @giswqs in #334
- fix(parquet): load Parquet with non-standard WKB geometry column (#336) by @giswqs in #337
- feat(assistant): natural-language GIS assistant (Strands agent) by @giswqs in #331
- perf(attribute-table): virtualize rows for large layers (#338) by @giswqs in #354
- feat(sql): add Apache Sedona as an additional SQL Workspace engine (#335) by @giswqs in #353
- feat(ml): AI segmentation toolbox via SamGeo/SAM3 (#301) by @giswqs in #355
- feat(ingestion): warn before loading very large vector files (#339) by @giswqs in #357
- feat(map): client-side vector tiling for large local vector layers by @giswqs in #356
- perf(history): bound undo memory for large vector layers (#341) by @giswqs in #358
- feat(python): local raster, marker/cluster, and choropleth APIs (#348) by @giswqs in #360
- feat(geocoding): multi-provider geocoding abstraction (#346) by @giswqs in #361
- feat(raster): client-side raster processing fallback (no sidecar) by @giswqs in #359
- feat(geocoding): surface Google CORS hint and broaden API-key warning by @giswqs in #363
- feat(processing): add Spatial Statistics toolbox (#342) by @giswqs in #362
- feat(python): typed read-back of selected/drawn features and to_html export by @giswqs in #365
- test(map): add unit tests for MapController layer reconciliation by @giswqs in #364
- feat(processing): batch run and model/pipeline chaining (#344) by @giswqs in #367
- feat(python): split_map, add_legend, and add_colorbar helpers (#347) by @giswqs in #366
- fix(python): address review feedback on split_map/add_legend/add_colorbar by @giswqs in #369
- test(processing): shared golden fixtures for the vector engines (#352) by @giswqs in #368
- refactor(add-data): split AddDataDialog into per-source components (#350) by @giswqs in #371
- refactor(desktop): split TopToolbar god-component into menus and hooks (#350) by @giswqs in #372
- test(pwa): raise per-test timeout for offline shell boot by @giswqs in #370
- chore(release): v1.3.0 — version bump and docs update by @giswqs in #373
- chore(deps): bump maplibre-gl-streetview to ^0.6.0 by @giswqs in #374
- chore: coverage reporting + backend CRS-logging and type hardening by @giswqs in #375
- feat(desktop): make attribute table on-demand, hidden by default by @giswqs in #378
- feat(android,pwa): native Android build + offline caching + region download by @giswqs in #377
- chore(deps): bump maplibre-gl-3d-tiles to ^0.5.1 by @giswqs in #380
- fix: resolve raster blob fetch, gpkg thread crash, and invisible non-Web-Mercator COGs (#376) by @giswqs in #379
- perf(desktop): CDN-load the CereusDB wasm to shrink the build by ~9 MB by @giswqs in #381
- fix(gpkg): repair case-mismatched and non-ASCII gpkg_ogr_contents rows (#376 follow-up) by @giswqs in #382
New Contributors
Full Changelog: v1.2.0...v1.3.0