Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 35 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,41 @@ concurrency:
cancel-in-progress: false

jobs:
chrome-extension:
name: Build Chrome extension
runs-on: ubuntu-22.04
steps:
- name: Checkout repository
uses: actions/checkout@v7
with:
persist-credentials: false

- name: Set up Node.js
uses: actions/setup-node@v7
with:
node-version: "22"
cache: npm
cache-dependency-path: package-lock.json
Comment thread
coderabbitai[bot] marked this conversation as resolved.
Outdated

- name: Install dependencies
run: npm ci

- name: Build Chrome extension
run: npm run build:chrome-extension

- name: Upload Chrome extension workflow artifact
uses: actions/upload-artifact@v7
with:
name: geolibre-chrome-extension
path: dist/geolibre-chrome-*.zip
if-no-files-found: error

- name: Attach Chrome extension to GitHub Release
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ github.event.release.tag_name }}
run: gh release upload "$TAG" dist/geolibre-chrome-*.zip --clobber
Comment thread
giswqs marked this conversation as resolved.
Outdated

build:
name: Build ${{ matrix.name }}
runs-on: ${{ matrix.os }}
Expand Down
2 changes: 2 additions & 0 deletions docs/user-guide/adding-data.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

The **Add Data** menu is the main way to bring layers into GeoLibre. It groups sources into Files, Web services, Cloud formats, 3D layers, and Databases. You can also drag files straight onto the map.

To collect supported dataset links from a catalog or other webpage and open several at once, use the [GeoLibre Chrome extension](chrome-extension.md).

![Add Data menu](https://data.geolibre.app/images/geolibre-add-data-menu.webp)

## Files
Expand Down
34 changes: 34 additions & 0 deletions docs/user-guide/chrome-extension.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Chrome Extension

The **Open data in GeoLibre** Chrome extension finds supported geospatial data links on the current webpage and opens the datasets you select together on one GeoLibre map.

![Select webpage datasets with the GeoLibre Chrome extension](https://assets.geolibre.app/images/geolibre-chrome.webp)

## Install the extension

Until the extension is available from the Chrome Web Store, install the packaged release manually:

1. Download [`geolibre-chrome-0.1.0.zip`](https://github.com/opengeos/GeoLibre/releases/download/v2.6.0/geolibre-chrome-0.1.0.zip) from the [GeoLibre v2.6.0 release](https://github.com/opengeos/GeoLibre/releases/tag/v2.6.0).
Comment thread
giswqs marked this conversation as resolved.
Outdated
2. Extract the ZIP archive to a folder you intend to keep. Chrome loads the extension from this folder, so do not delete it after installation.
3. Open `chrome://extensions` in Chrome.
4. Turn on **Developer mode**.
5. Select **Load unpacked** and choose the extracted `geolibre-chrome-0.1.0` folder.
6. Pin **Open data in GeoLibre** to the Chrome toolbar for convenient access.

To update a manually installed copy, download and extract the newer release asset, then select the extension's **Reload** button on `chrome://extensions`. If you extract it to a different folder, remove the old copy and load the new folder instead.

## Open datasets from a webpage

1. Visit a webpage or data catalog containing geospatial file links.
2. Select the GeoLibre icon in the Chrome toolbar.
3. Use **All**, **Vector**, or **Raster** to filter the discovered datasets.
4. Check one or more datasets. Nothing is selected by default.
5. Select **Open in GeoLibre** to load the selected datasets on the same map.

The extension recognizes GeoJSON and spatial JSON, GeoParquet and Parquet, PMTiles, GeoTIFF and Cloud-Optimized GeoTIFF, ZIP archives containing GeoJSON, JSON-LD download metadata, and existing GeoLibre data links. On Source Cooperative repository pages, it also reads the embedded inventory so datasets outside the currently visible list can be selected.

## Access and privacy

GeoLibre fetches selected links directly, so the source server must allow cross-origin requests (CORS). Links that depend on a website login, browser session, or temporary `blob:` URL might not load in GeoLibre.

The extension requests access only to the active tab when you open it. It does not store browsing history, send analytics, or run continuously in the background.
23 changes: 23 additions & 0 deletions extensions/geolibre-chrome/PRIVACY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Privacy policy — Open data in GeoLibre

Last updated: August 15, 2026

Open data in GeoLibre does not collect, retain, sell, or transmit personal
information, browsing history, page contents, or usage analytics.
Comment thread
giswqs marked this conversation as resolved.
Outdated

The extension uses Chrome's `activeTab` permission to inspect links and
structured metadata on the current page only after the user clicks the
extension's toolbar icon. Inspection happens locally in the browser. Results
are held in memory only while the popup is open.

When the user chooses **Open in GeoLibre**, the selected public dataset and
style URLs are placed in the query string of a new `https://web.geolibre.app/`
tab. The extension does not fetch or upload the datasets itself. GeoLibre then
requests the selected URLs directly from their original servers, subject to
those servers' privacy policies and CORS configuration.

The extension uses no remote code, advertising, analytics, tracking pixels,
cookies, accounts, or extension storage.

Questions may be submitted through the GeoLibre repository:
<https://github.com/opengeos/GeoLibre/issues>.
46 changes: 46 additions & 0 deletions extensions/geolibre-chrome/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Open data in GeoLibre

A Manifest V3 Chrome extension that finds supported geospatial dataset links on
the current page and opens selected files together in GeoLibre using repeated
`data` query parameters.

## Install locally

1. Open `chrome://extensions`.
2. Enable **Developer mode**.
3. Choose **Load unpacked**.
4. Select this `extensions/geolibre-chrome` directory.

The extension requests `activeTab` and `scripting` only. It scans a page after
you click its toolbar icon and does not retain page contents or browsing data.

## Package for the Chrome Web Store

From the repository root, run:

```bash
npm run build:chrome-extension
```

The versioned upload ZIP is written to `dist/`. Store listing copy and
permission explanations are in `STORE_LISTING.md`; the publishable privacy
policy source is in `PRIVACY.md`. The policy must be hosted at a public URL
before submitting the listing.

## Discovery

The scanner recognizes GeoJSON/JSON, GeoParquet/Parquet, PMTiles, GeoTIFF/COG,
and ZIP links in anchors, linked resources, selected data attributes, and
schema.org JSON-LD `contentUrl`/`downloadUrl` fields. Existing GeoLibre deep
links are unpacked, and a neighboring `name.style.json` or
`name.geolibre.style.json` link is paired with the matching dataset.

Source Cooperative repository pages receive additional handling: the extension
reads the complete embedded file inventory even when the visible table is
virtualized, canonicalizes links to `data.source.coop`, and removes duplicate
page/download links. The popup can filter discovered files by vector or raster
type without changing the current selection.

Remote servers must allow GeoLibre to fetch the selected URLs through CORS.
Authenticated, `blob:`, browser-internal, and session-bound links cannot be
transferred to the GeoLibre tab.
47 changes: 47 additions & 0 deletions extensions/geolibre-chrome/STORE_LISTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Chrome Web Store listing

## Name

Open data in GeoLibre

## Summary

Find geospatial datasets on a webpage and open selected files together in GeoLibre.

## Detailed description

Open data in GeoLibre turns dataset catalogs, documentation pages, and project
websites into launch points for an interactive map.

Click the extension icon to find supported data links on the current page,
filter them by vector or raster type, choose the files you need, and open them
together in GeoLibre. Supported links include GeoJSON, GeoParquet, PMTiles,
Cloud-Optimized GeoTIFF, and ZIP archives containing GeoJSON.

The extension also reads schema.org download metadata, understands existing
GeoLibre links, pairs matching GeoLibre style files, and discovers the complete
file inventory on virtualized Source Cooperative repository pages.

Privacy is deliberately narrow: the extension scans only the active page after
you click it. It stores no browsing data, runs no analytics, and requests no
permanent access to websites.

Dataset servers must allow browser access through CORS. Authenticated,
session-bound, and `blob:` links cannot be transferred to the GeoLibre tab.
Comment thread
giswqs marked this conversation as resolved.
Outdated

## Category

Developer Tools

## Language

English

## Permission justification

- `activeTab`: grants temporary access to the page only after the user invokes
the extension, so its dataset links can be inspected.
- `scripting`: injects the local, packaged dataset scanner into that active tab.

The extension does not request host permissions, storage, browsing history,
downloads, cookies, or remote code.
Binary file added extensions/geolibre-chrome/icons/geolibre-128.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extensions/geolibre-chrome/icons/geolibre-16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extensions/geolibre-chrome/icons/geolibre-32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added extensions/geolibre-chrome/icons/geolibre-48.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
26 changes: 26 additions & 0 deletions extensions/geolibre-chrome/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"manifest_version": 3,
"name": "Open data in GeoLibre",
"description": "Find geospatial datasets on the current page and open the selected files together in GeoLibre.",
"version": "0.1.0",
"homepage_url": "https://geolibre.app/",
"minimum_chrome_version": "105",
"permissions": ["activeTab", "scripting"],
"action": {
"default_title": "Open data in GeoLibre",
"default_popup": "popup.html",
"default_icon": {
"16": "icons/geolibre-16.png",
"32": "icons/geolibre-32.png"
}
},
"icons": {
"16": "icons/geolibre-16.png",
"32": "icons/geolibre-32.png",
"48": "icons/geolibre-48.png",
"128": "icons/geolibre-128.png"
},
"content_security_policy": {
"extension_pages": "script-src 'self'; object-src 'self'"
}
}
Loading
Loading