Skip to content

docs: document the new map readouts, quick analysis, and startup preference - #1831

Merged
giswqs merged 2 commits into
mainfrom
docs/document-recent-map-features
Aug 10, 2026
Merged

docs: document the new map readouts, quick analysis, and startup preference#1831
giswqs merged 2 commits into
mainfrom
docs/document-recent-map-features

Conversation

@giswqs

@giswqs giswqs commented Aug 10, 2026

Copy link
Copy Markdown
Member

Seven features shipped over the last several PRs with no user-facing documentation, and one Settings tab the docs describe no longer exists.

New coverage

Feature Where it now lives
The right-click Quick analysis menu Map Controls → Right-click quick actions
Interactive viewshed (#1815) Map Controls → Viewshed from a clicked point
Coordinate notation DD/DMS/DDM/UTM (#1814) Interface → The status bar
Pointer elevation readout (#1813) Interface → Elevation readout
Camera altitude "Eye alt" (#1816) Interface → The status bar
Measure heading + compass point (#1817) Map Controls → Measuring distance, area, and heading
Spectral profile on multiband GeoTIFF (#1818) Styling → Spectral profile
Startup project preference (#1810) Settings → Startup

The Quick analysis menu as a whole was the biggest gap: it existed only as a ticked roadmap line, so running a buffer, isochrone, centroid, convex hull or bounding box from a right-click was undiscoverable from the docs.

Each entry documents the limits that actually bite, not just the happy path — the quick viewshed ignores curvature and refraction (~180 m of drop at its 50 km ceiling) and runs on generalized global terrain tiles, so the Whitebox tool is named as the rigorous alternative; "Reopen the last project" deliberately skips remote share links; UTM falls back to degrees outside its latitude band.

Corrections and gaps found on the way

  • Settings → Project Settings no longer exists. There is no settings.project catalog entry and no reference to it anywhere in the app. Replaced with where the project name and file path actually live now.
  • Map Preferences was missing three fields — Celestial body, Scale bar units, and Coordinate format — and the page never named the Appearance, Interface, Geocoding, AI Providers, Updates or Startup sections at all. Added a section index so every tab is reachable, and a short Updates section.
  • Self-hosting's "Reducing outbound requests" table omitted two services. Added Valhalla routing — whose VITE_ROUTING_ENDPOINT override was undocumented anywhere in docs/ despite being the one knob a private deployment needs — and the Open-Meteo elevation fallback.

Verification

  • Coordinate examples in the status-bar table are rendered output from formatCoordinate, not hand-computed, so the DMS seconds and the UTM easting/northing are exact rather than plausible.
  • zensical build — no issues.
  • A link checker over every internal link and anchor in the nine changed pages — all resolve.
  • pre-commit run --files <changed> — passed.

Documentation only; no code or behavior changes.

Summary by CodeRabbit

  • Documentation
    • Expanded the feature guide with quick analysis, terrain viewsheds, map readouts, spectral profiling, measurement bearings, and startup preferences.
    • Documented elevation controls, coordinate and camera information, terrain-aware measurements, and right-click analysis tools.
    • Added guidance for raster pixel inspection and multiband spectral charts.
    • Updated self-hosting instructions for routing, elevation services, consent, and access controls.
    • Clarified settings, project startup behavior, coordinate formats, and processing shortcuts.

…erence

Seven features shipped over the last several PRs with no user-facing docs, and
one Settings tab documented here no longer exists.

New coverage:

- The right-click **Quick analysis** menu as a whole. It was only ever a ticked
  roadmap line, so buffers, drive/walk-time isochrones, centroids, convex hull
  and bounding box from a click were undiscoverable from the docs.
- The interactive viewshed (#1815), including what it deliberately does not
  model — curvature and refraction — and when to reach for the Whitebox tool
  instead.
- The status bar, rewritten as a table of every readout. Coordinate notation
  (DD/DMS/DDM/UTM, #1814), the pointer elevation readout (#1813) with both its
  sources and its consent gate, and Eye alt (#1816) with its planetary scaling.
- Measure headings (#1817): great-circle initial bearing, the 16-point compass
  label, and why a final-bearing row appears only on long lines.
- The spectral profile now working on any multiband GeoTIFF/COG (#1818), added
  under Raster styling rather than left implicit in the NetCDF text.
- Settings → Startup (#1810), with the two limits that surprise otherwise: only
  local projects are reopened, and a URL always wins.

Corrections and gaps found on the way:

- **Settings → Project Settings no longer exists** — no `settings.project`
  catalog entry and no reference anywhere in the app. Replaced with where the
  project name and path actually live now.
- Settings → Map Preferences was missing Celestial body, Scale bar units and
  Coordinate format; the page also never named Appearance, Interface, Geocoding,
  AI Providers or Updates. Added a section index so every tab is reachable.
- Self-hosting's "Reducing outbound requests" table gained the two services it
  omitted: Valhalla routing (`VITE_ROUTING_ENDPOINT`, previously undocumented
  anywhere) and the Open-Meteo elevation fallback.

The coordinate examples are rendered output from `formatCoordinate`, not
hand-computed, so the DMS seconds and UTM easting/northing are exact.

Verified with `zensical build` (no issues) and a link checker over every
internal link and anchor in the changed pages.
Copilot AI lite review requested due to automatic review settings August 10, 2026 04:34

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@coderabbitai

coderabbitai Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 74784895-25f9-416e-ad79-2654c87b43fd

📥 Commits

Reviewing files that changed from the base of the PR and between be8f11d and 7c8b34e.

📒 Files selected for processing (5)
  • docs/features.md
  • docs/self-hosting.md
  • docs/user-guide/interface.md
  • docs/user-guide/processing.md
  • docs/user-guide/projects.md

📝 Walkthrough

Walkthrough

The pull request updates documentation for map analysis, terrain and elevation readouts, raster spectral profiling, coordinate formats, self-hosting controls, and desktop startup preferences.

Changes

Feature documentation

Layer / File(s) Summary
Map analysis controls
docs/user-guide/map-controls.md, docs/user-guide/processing.md, docs/self-hosting.md
The guides document elevation, bearing measurements, context-menu actions, quick analysis, viewsheds, Processing shortcuts, and routing/elevation service configuration.
Raster spectral profiling
docs/features.md, docs/user-guide/layers.md, docs/user-guide/styling.md
The documentation describes multiband GeoTIFF and COG spectral profiling, raster identification, chart axes, tile fetching, exports, and invalid-click handling.
Status and elevation readouts
docs/features.md, docs/user-guide/interface.md
The status bar documentation covers coordinate formats, camera values, view bounds, celestial-body behavior, pointer elevation, consent, caching, and fallback lookups.
Startup and settings preferences
docs/features.md, docs/user-guide/projects.md, docs/user-guide/settings.md
The guides document startup project modes, URL precedence, missing-project fallback, project details, settings sections, and update checks.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Possibly related PRs

Poem

A rabbit maps the hills at night,
And checks each pixel’s spectral light.
Bearings turn and viewsheds grow,
Startup projects open slow.
“Hop,” says the guide, “the facts all show!”

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the main documentation changes, including map readouts, quick analysis, and startup preferences.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch docs/document-recent-map-features

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@github-actions

Copy link
Copy Markdown
Contributor

Waiting for the background verification agent to complete — I'll be notified automatically when it finishes.

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

🔍 Cloudflare PR preview

Item Value
Site https://a79e2f49.geolibre-preview.pages.dev
Demo app https://a79e2f49.geolibre-preview.pages.dev/demo/
Commit 7c8b34e

@github-actions

github-actions Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

🔍 GitHub Pages PR preview

Item Value
Site https://opengeos.org/pages-preview/GeoLibre/pr-1831/
Demo app https://opengeos.org/pages-preview/GeoLibre/pr-1831/demo/
Commit 7c8b34e

Note

GitHub Pages built this preview successfully, but its serving edge returned HTTP 403 when checked. The links may still be propagating.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@docs/features.md`:
- Line 34: Update the pointer-elevation documentation in docs/features.md:34-34
to say the public elevation API is used when no usable terrain sample is
available, and explicitly state that disabling pointer elevation prevents
outbound requests. Also revise docs/self-hosting.md:371-371 so enabled 3D
terrain is not described as guaranteeing internal-only elevation requests.

In `@docs/user-guide/interface.md`:
- Around line 115-120: Update the elevation documentation describing the 3D
terrain fallback to reflect that an unavailable terrain sample may use the
Open-Meteo API even when 3D terrain is enabled, or modify
createPointerElevationResolver to gate the network fallback on the
terrain-enabled state. Ensure the documented privacy behavior matches the
resolver’s actual behavior.

In `@docs/user-guide/processing.md`:
- Around line 14-15: Update the Quick analysis description in the “Skipping the
dialog” tip to exclude network isochrones from the actions available on each
layer row. Preserve the claim that buffer, centroids, convex hull, and bounding
box are available from layer rows, while keeping drive-time and walk-time
isochrones associated only with clicked-point actions.

In `@docs/user-guide/projects.md`:
- Around line 27-28: Update the startup restoration sentence near the Settings →
Startup link to explicitly state that GeoLibre reopens only local projects,
including both the last-project and specific-project options. Preserve the
existing precedence statement for project URLs in the address bar.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: ca83753f-bd8c-49f4-a77c-e873fe518897

📥 Commits

Reviewing files that changed from the base of the PR and between 99a57d1 and be8f11d.

📒 Files selected for processing (9)
  • docs/features.md
  • docs/self-hosting.md
  • docs/user-guide/interface.md
  • docs/user-guide/layers.md
  • docs/user-guide/map-controls.md
  • docs/user-guide/processing.md
  • docs/user-guide/projects.md
  • docs/user-guide/settings.md
  • docs/user-guide/styling.md

Comment thread docs/features.md Outdated
Comment thread docs/user-guide/interface.md Outdated
Comment thread docs/user-guide/processing.md Outdated
Comment thread docs/user-guide/projects.md Outdated
- Correct the pointer-elevation privacy contract in interface.md, features.md
  and self-hosting.md. CodeRabbit is right: createPointerElevationResolver
  branches on whether `sampleMapTerrainPoint` returned a value, not on whether
  3D terrain is enabled, so a terrain-enabled map with no sample for that point
  still falls through to Open-Meteo. Presenting "3D terrain on" as a guarantee
  of no outbound request was wrong. The real gate is `canUseRemote` — the
  consent prompt — so the docs now name declining consent (or leaving the
  readout off) as what actually keeps it off the network, and describe the
  terrain path as "whenever a usable sample is available" instead.
- Stop implying network isochrones run from a layer row (processing.md). The
  clicked-point menu has buffer and drive/walk time; the layer-row menu has
  buffer, centroids, convex hull and bounding box. The tip conflated the two.
- Say "last local project" in projects.md, matching settings.md and
  features.md — remote share links are deliberately never replayed on launch.
@github-actions

Copy link
Copy Markdown
Contributor

Code review

This is a documentation-only PR (9 files under docs/, no source changes). I cross-checked its specific technical claims against the actual implementation rather than just reading prose in isolation:

  • Coordinate formatting (apps/geolibre-desktop/src/lib/coordinate-format.ts): DMS/DDM/UTM examples and the UTM latitude fallback band (-80° to 84°) match the code exactly.
  • Viewshed (packages/processing/src/terrain-viewshed.ts, run-viewshed.ts): 100 m–50 km radius clamp and 1.8 m observer height match MIN/MAX_VIEWSHED_RADIUS_METERS and DEFAULT_OBSERVER_HEIGHT_METERS.
  • Quick analysis presets (apps/geolibre-desktop/src/lib/quick-analysis.ts): buffer ladder (500 m/1 km/5 km metric, 0.25/1/5 mi imperial) and the 5/10/15-minute isochrone contours match QUICK_BUFFER_PRESETS/QUICK_TRAVEL_CONTOURS.
  • Settings sections table (SettingsDialog.tsx): the nine listed sections (Map, Layout, Appearance, Interface, Geocoding, AI Providers, Environment, Updates, Startup) match SECTION_ITEMS exactly, and the removed "Project Settings" tab is indeed gone from the codebase.
  • Startup preference (startup-project.ts, useStartupProject.ts): remote-vs-local filtering, URL-precedence, and missing-file fallback (drops from recent projects, resets a "specific" preference) all match the doc's description.
  • Spectral profile (packages/plugins/src/plugins/cog-spectral-profile.ts): wavelength-axis use is gated on list.length === bandCount, and coordinates are reprojected via proj4 into the raster's CRS, matching the doc's "ignored if it doesn't match band count" and "reprojected click" claims.
  • Elevation consent gating (elevation-consent.ts): gate is on the remote lookup specifically, persisted per-device, checked at point of use — matches the doc's emphasis that declining is what keeps it off the network.
  • All new/changed internal doc cross-references (map-controls.md#..., settings.md#startup, interface.md#coordinate-format, styling.md#spectral-profile, etc.) resolve to real headings.

No bugs, security issues, performance concerns, or CLAUDE.md violations found. I have no findings to raise on this PR — the documentation is accurate and well-verified against the current implementation.

@giswqs
giswqs merged commit b308b5e into main Aug 10, 2026
45 checks passed
@giswqs
giswqs deleted the docs/document-recent-map-features branch August 10, 2026 04:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants