Skip to content

Commit d3ba817

Browse files
authored
docs: add the Mac App Store listing and its limitations (#1656)
* docs: add the Mac App Store listing and its limitations GeoLibre Desktop is now on the Mac App Store, so the badge and download links point at it. The Store build is sandboxed, so the docs spell out what it drops relative to the Homebrew and DMG build (Python sidecar engines, PostGIS, the local Jupyter server, Earth Engine sign-in, and external plugin installs) and keep Homebrew as the recommended route. * Address review feedback - Say "App Store ID" for the numeric listing identifier instead of "Apple ID", which reads as a user account login, and note what App Store Connect calls it. - Qualify what the Store build drops as server-backed PostgreSQL/PostGIS via martin, so the in-browser PGlite/PostGIS engine is not read as missing too. - Name Apache Sedona in the retained SQL Workspace row and scope the sidecar row to the SedonaDB sidecar: IS_MAS_BUILD skips the sidecar probe and runs Sedona on the in-browser CereusDB engine, so Sedona SQL still works there. * Address Claude review feedback - Split the comma-spliced macOS packaging bullet so the Homebrew Cask is its own sentence rather than a trailing fragment.
1 parent fda21c4 commit d3ba817

7 files changed

Lines changed: 80 additions & 4 deletions

File tree

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
[![image](https://img.shields.io/conda/vn/conda-forge/geolibre.svg)](https://anaconda.org/conda-forge/geolibre)
99
[![Conda Recipe](https://img.shields.io/badge/recipe-geolibre-green.svg)](https://github.com/conda-forge/geolibre-feedstock)
1010
[![Microsoft Store](https://img.shields.io/badge/Microsoft%20Store-GeoLibre-0078D4?logo=windows)](https://apps.microsoft.com/detail/9nwt67rv531x)
11+
[![Mac App Store](https://img.shields.io/badge/Mac%20App%20Store-GeoLibre-000000?logo=apple&logoColor=white)](https://apps.apple.com/app/geolibre-desktop/id6796848769)
1112
[![Google Play](https://img.shields.io/badge/Google%20Play-GeoLibre-01875F?logo=googleplay&logoColor=white)](https://play.google.com/store/apps/details?id=org.geolibre.app)
1213
[![AUR version](https://img.shields.io/aur/version/geolibre-bin?logo=archlinux&label=AUR)](https://aur.archlinux.org/packages/geolibre-bin)
1314
[![FlatPark](https://img.shields.io/badge/FlatPark-GeoLibre-4A90D9?logo=flatpak)](https://flatpark.org/apps/app.geolibre.GeoLibre/)
@@ -22,6 +23,7 @@ GeoLibre is built with **Tauri v2**, **React**, **TypeScript**, **MapLibre GL JS
2223

2324
- **[Launch GeoLibre Web](https://web.geolibre.app/)** — the full app in your browser, nothing to install
2425
- **[Download the desktop app](https://geolibre.app/downloads/)** — Windows, macOS, and Linux installers
26+
- **[Get it on the Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769)** — the sandboxed macOS build
2527
- **[Get it on Google Play](https://play.google.com/store/apps/details?id=org.geolibre.app)** — the native Android app
2628
- **[1,000+ geoprocessing tools](https://geolibre.app/user-guide/processing/#geoprocessing-toolbox)** — the full toolbox, in the browser
2729
- **[Get started](https://geolibre.app/getting-started/)** — install, run from source, and configure

docs/downloads.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,10 @@ after each upgrade:
7474
xattr -dr com.apple.quarantine "/Applications/GeoLibre Desktop.app"
7575
```
7676

77+
macOS has two builds to choose from. The **Homebrew / DMG** build is the full
78+
app; the **Mac App Store** build is sandboxed and drops the features Apple's
79+
rules do not allow (see [below](#mac-app-store)).
80+
7781
### Homebrew (recommended)
7882

7983
GeoLibre is available as an official
@@ -108,6 +112,60 @@ by Apple, so Gatekeeper allows them to open without any extra steps:
108112
2. Open the DMG and drag **GeoLibre Desktop** into **Applications**.
109113
3. Launch GeoLibre Desktop from Applications.
110114

115+
### Mac App Store
116+
117+
GeoLibre Desktop is also on the
118+
[Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769), which
119+
installs and updates it like any other Store app, with no Terminal and no
120+
Gatekeeper prompt:
121+
122+
[Get GeoLibre Desktop on the Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769){ .md-button .md-button--primary }
123+
124+
#### What the Store build leaves out
125+
126+
The App Store requires the App Sandbox and forbids downloading or running
127+
executable code that changes an app's features (guideline 2.5.2). GeoLibre's
128+
optional Python sidecar, Jupyter server, and martin tile server are all runtime
129+
downloads of executable code, so the Store build compiles them out rather than
130+
shipping them broken. Here is how the two macOS builds compare:
131+
132+
| Feature | Homebrew / DMG | Mac App Store |
133+
| --- | --- | --- |
134+
| Whitebox toolbox (1,000+ WebAssembly tools) | Yes | Yes |
135+
| Processing → Vector, browser-engine Conversion, client raster tools | Yes | Yes |
136+
| SQL Workspace (DuckDB-WASM, PGlite/PostGIS, in-browser Apache Sedona on CereusDB) | Yes | Yes |
137+
| Python sidecar engines (GeoPandas vector, rasterio raster, GDAL conversion, SamGeo segmentation, the SedonaDB sidecar behind the Apache Sedona engine) | Yes | No |
138+
| Add Data → PostgreSQL / PostGIS (martin tile server) | Yes | No |
139+
| Notebook panel on a local JupyterLab server | Yes | JupyterLite only |
140+
| Installing external plugins from a zip or the registry | Yes | Built-in and bundled plugins only |
141+
| Earth Engine sign-in | Yes | No |
142+
| In-app update checks | Yes | Updates come from the Store |
143+
144+
Everything client-side is unchanged: MapLibre and deck.gl rendering, Add Data for
145+
local and remote files, DuckDB-WASM vector reading, the Whitebox WASM toolbox,
146+
Turf/Pyodide vector tools, browser-engine conversions, client raster tools, the
147+
SQL Workspace, the Python console, in-browser detection and segmentation,
148+
geocoding, and collaboration. All three SQL engines still run, Apache Sedona
149+
included: without a sidecar it uses its in-browser CereusDB build, which carries
150+
the [attribute-SQL limitation](user-guide/sql-workspace.md#choosing-a-sql-engine)
151+
that engine has everywhere else.
152+
153+
The sandbox also changes three behaviors:
154+
155+
- **Loose shapefiles**: the app can only read files you picked in the dialog, so
156+
select **every** shapefile part (`.shp`, `.dbf`, `.prj`, ...) at once, or load
157+
a zipped shapefile. A `.shp` picked alone loads without attributes or CRS.
158+
- **API keys from the shell environment**: a sandboxed app does not inherit a
159+
login shell, so enter keys in Settings instead.
160+
- **Reopening projects that reference local files**: the file grant ends with the
161+
process, so after a relaunch a layer backed by a local path outside the app
162+
container needs to be re-added.
163+
164+
If you need the Python sidecar engines, Add Data → PostgreSQL/PostGIS through
165+
martin, a local Jupyter server, Earth Engine, or external plugins, install the
166+
Homebrew / DMG build instead. See [Mac App Store](mac-app-store.md) for the full
167+
technical detail.
168+
111169
## Linux installation
112170

113171
GeoLibre offers several Linux install options. The AUR, COPR, and Flatpak

docs/features.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,8 @@ See the [Plugin API](plugin-api.md) to build your own.
244244
- A guided update workflow with a startup update check and update preferences
245245
- Desktop packaging and distribution
246246
- MSIX packaging support, Windows Package Manager (winget) distribution as `OpenGeos.GeoLibre`, and a Windows portable zip build that runs without installation
247-
- macOS installers signed with an Apple Developer ID certificate and notarized by Apple, so they open without a Gatekeeper workaround
247+
- macOS installers signed with an Apple Developer ID certificate and notarized by Apple, so they open without a Gatekeeper workaround. An official [Homebrew Cask](https://github.com/Homebrew/homebrew-cask/blob/main/Casks/g/geolibre.rb) installs and upgrades them with no tap or trust step
248+
- A sandboxed [Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769) build of the same app, which trades the Python sidecar engines, server-backed PostgreSQL/PostGIS layers via martin, the local Jupyter server, Earth Engine sign-in, and external plugin installs for Store installation and updates. The in-browser SQL engines, including PGlite/PostGIS, still run. See [Downloads](downloads.md#mac-app-store)
248249
- Linux AppImages that carry embedded update information and a published `.zsync`, so AppImageUpdate, AppImageLauncher, AppManager, and AM can update the app by transferring only the blocks that changed
249250
- Native Android app built from the same codebase with Tauri v2 mobile, published on [Google Play](https://play.google.com/store/apps/details?id=org.geolibre.app). See [Android](android.md)
250251
- A GitHub Actions workflow builds both the universal App Bundle that Play ships and signed, per-architecture sideload APKs (~40 MB)

docs/getting-started.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
[![image](https://img.shields.io/conda/vn/conda-forge/geolibre.svg)](https://anaconda.org/conda-forge/geolibre)
99
[![Conda Recipe](https://img.shields.io/badge/recipe-geolibre-green.svg)](https://github.com/conda-forge/geolibre-feedstock)
1010
[![Microsoft Store](https://img.shields.io/badge/Microsoft%20Store-GeoLibre-0078D4?logo=windows)](https://apps.microsoft.com/detail/9nwt67rv531x)
11+
[![Mac App Store](https://img.shields.io/badge/Mac%20App%20Store-GeoLibre-000000?logo=apple&logoColor=white)](https://apps.apple.com/app/geolibre-desktop/id6796848769)
1112
[![Google Play](https://img.shields.io/badge/Google%20Play-GeoLibre-01875F?logo=googleplay&logoColor=white)](https://play.google.com/store/apps/details?id=org.geolibre.app)
1213
[![AUR version](https://img.shields.io/aur/version/geolibre-bin?logo=archlinux&label=AUR)](https://aur.archlinux.org/packages/geolibre-bin)
1314
[![FlatPark](https://img.shields.io/badge/FlatPark-GeoLibre-4A90D9?logo=flatpak)](https://flatpark.org/apps/app.geolibre.GeoLibre/)
@@ -32,10 +33,12 @@ You can load browser-selected vector data supported by DuckDB-WASM Spatial, drag
3233

3334
### On the desktop
3435

35-
The desktop app adds local filesystem dialogs, local MBTiles, local raster file reads, and project save/open. Installers are available for Windows, macOS, and Linux, including the Microsoft Store, Homebrew, winget, the AUR, COPR, and Flatpak.
36+
The desktop app adds local filesystem dialogs, local MBTiles, local raster file reads, and project save/open. Installers are available for Windows, macOS, and Linux, including the Microsoft Store, the Mac App Store, Homebrew, winget, the AUR, COPR, and Flatpak.
3637

3738
[Download the desktop app](downloads.md){ .md-button .md-button--primary }
3839

40+
On macOS, prefer the Homebrew or DMG build: the [Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769) build is sandboxed, so it drops the Python sidecar engines, Add Data → PostgreSQL/PostGIS via martin, the local Jupyter server, Earth Engine sign-in, and external plugin installs. See [what the Store build leaves out](downloads.md#what-the-store-build-leaves-out).
41+
3942
### In Jupyter
4043

4144
The [`geolibre`](python.md) Python package embeds the full GeoLibre app in a Jupyter notebook and drives the map through an expanded leafmap-style API that syncs both ways, so UI edits read back from Python.

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ what comes next, see the [Roadmap](roadmap.md).
183183
- **Attribute depth** — virtual fields, persistent attribute joins, an attribute form designer, a Raster Attribute Table, and editable source layers that write vector edits back to GeoPackage, GeoJSON, and PostGIS.
184184
- **Catalog browsers** — a QGIS-style Browser panel (Data Source Manager) plus panels for STAC, NASA Earthdata, Hugging Face, GeoLens, Natural Earth, Source Cooperative, ArcGIS Hub, Socrata, and CKAN.
185185
- **Media and capture** — map recording to video, route animation with a track-follow camera, a Camera Tour recorder, a Print Layout composer with Atlas / map series, in-browser ONNX/YOLO object detection, and a native-resolution geotagged photo viewer.
186-
- **Distribution** — embed-friendly URL parameters including `maponly`, a versioned `postMessage` API and the typed `@geolibre/embed` client for host pages, cross-platform installers (with a macOS Homebrew Cask and a Windows Microsoft Store listing), Docker for the browser app, and a native **Android** app built from the same codebase via Tauri v2 mobile on [Google Play](https://play.google.com/store/apps/details?id=org.geolibre.app) (see [Android](android.md)) with a responsive touch layout and offline improvements (Download Offline Area plus service-worker caching of the CDN-loaded Pyodide and PGlite/PostGIS engines).
186+
- **Distribution** — embed-friendly URL parameters including `maponly`, a versioned `postMessage` API and the typed `@geolibre/embed` client for host pages, cross-platform installers (with a macOS Homebrew Cask, a [Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769) listing for the sandboxed build, and a Windows Microsoft Store listing), Docker for the browser app, and a native **Android** app built from the same codebase via Tauri v2 mobile on [Google Play](https://play.google.com/store/apps/details?id=org.geolibre.app) (see [Android](android.md)) with a responsive touch layout and offline improvements (Download Offline Area plus service-worker caching of the CDN-loaded Pyodide and PGlite/PostGIS engines).
187187

188188
### Recently added
189189

docs/mac-app-store.md

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
# Mac App Store
22

3+
GeoLibre Desktop is published on the
4+
[Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769):
5+
6+
[Get GeoLibre Desktop on the Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769){ .md-button .md-button--primary }
7+
8+
For the user-facing comparison of the two macOS builds, see
9+
[Downloads](downloads.md#mac-app-store). This page documents how the Store build
10+
is produced and why it differs.
11+
312
GeoLibre Desktop ships on macOS two ways:
413

514
- **Developer ID** (the default): the notarized `.dmg` published by
@@ -167,7 +176,9 @@ Creating the inputs (Apple Developer account required):
167176

168177
1. Create the app record in App Store Connect for `org.geolibre.desktop`
169178
(the same team as the iOS `org.geolibre.app` record; the two are separate
170-
apps).
179+
apps). This is already done for GeoLibre Desktop, App Store ID `6796848769`
180+
(the numeric listing identifier App Store Connect labels "Apple ID" on the App
181+
Information page), so later releases start at step 2.
171182
2. Download the `geolibre-mas-pkg` artifact and upload the `.pkg` with the
172183
**Transporter** app (or `xcrun altool --upload-app -f <pkg> -t macos`).
173184
3. Fill in screenshots, description, and the privacy questionnaire

docs/roadmap.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@
390390
- [x] **Editing GeoLens datasets in place**: a dataset added as GeoJSON can be redrawn with the GeoEditor or retyped in the attribute table, and the plugin's Edits section shows what changed and writes it back to the GeoLens dataset — added, moved, and deleted features become per-feature `POST`/`PUT`/`PATCH`/`DELETE` calls, with the row ids GeoLens assigns stamped back onto the layer. Private GeoLens rasters also render now, with the API key attached to exactly their tile URLs and nothing else
391391
- [x] Plugins can call `addZarrLayer` to use the Zarr renderer GeoLibre already ships instead of bundling their own, keep their own paint properties on custom layers so the Style panel's sliders actually do something, and expose layer groups of their own
392392
- [x] GeoLibre is on **[Google Play](https://play.google.com/store/apps/details?id=org.geolibre.app)**, so Android users can install the signed, auto-updating build in one tap instead of sideloading an APK (see [Downloads](downloads.md#android-installation))
393+
- [x] GeoLibre Desktop is on the **[Mac App Store](https://apps.apple.com/app/geolibre-desktop/id6796848769)**, a sandboxed build of the same app that installs and updates through the Store. It trades the Python sidecar engines, server-backed PostgreSQL/PostGIS layers via martin, the local Jupyter server, Earth Engine sign-in, and external plugin installs for that convenience, so the Homebrew and DMG builds remain the full-feature route (see [Downloads](downloads.md#mac-app-store))
393394
- [x] Linux **AppImage releases now carry update information and a `.zsync`**, so AppImageUpdate, AppImageLauncher, AppManager, and AM can update the app and transfer only the blocks that changed instead of the whole download
394395
- [x] All 15 non-English locales are back at 100% coverage, Georgian included
395396

0 commit comments

Comments
 (0)