Skip to content

Build one continuous virtual worldwide tileset - #26

Merged
Occumed79 merged 13 commits into
mainfrom
agent/virtual-worldwide-tileset
Jul 27, 2026
Merged

Build one continuous virtual worldwide tileset#26
Occumed79 merged 13 commits into
mainfrom
agent/virtual-worldwide-tileset

Conversation

@Occumed79

@Occumed79 Occumed79 commented Jul 27, 2026

Copy link
Copy Markdown
Owner

Summary

  • replaces the browser-side PMTiles shard router with one permanent MapLibre vector source at /tiles/{z}/{x}/{y}.pbf
  • keeps all 754 PMTiles archives server-side, where the gateway indexes, resolves, merges, and caches tiles behind one logical worldwide tileset
  • adds a continuous generalized land, landcover, ice, and bathymetry surface so the globe remains complete when regional or overview detail is absent
  • applies the supplied Mapbox Studio palette as exact P3-to-sRGB hex values, including road, land, water, park, boundary, ferry, building, and transit colors
  • recreates the dark-space globe treatment with a luminous white-blue atmospheric rim
  • prevents missing overview enrichment and oversized MVT attributes from blanking otherwise valid tiles
  • removes OpenFreeMap, source.setUrl(), switchZoom, fallbackUrl, browser-visible regional sources, and dynamically cloned duplicate layers

Architecture

MapLibre sees exactly one basemap source, occumed-open, for every zoom. PMTiles remain storage-only implementation details. The server composes physical surface, overview, and regional vector content into one valid MVT response without exposing source changes to the browser.

Validation

  • npm run build
  • full browser traversal passed in Actions run 13
  • tested globe, North America, US-Mexico border, Europe, Russia/antimeridian, Southeast Asia, Sydney, and Fresno from z2.43 through z14
  • permanent source URL unchanged at every tested zoom
  • external vector requests: 0
  • forbidden requests: 0
  • page, network, and console failures: 0
  • every validation view rendered basemap features with no blank frames

Summary by CodeRabbit

  • New Features

    • Added continuous worldwide vector-map coverage through a single map tile source.
    • Improved low-zoom globe rendering with consolidated overview and physical-surface layers.
    • Added richer bathymetry, landcover, and country-label styling.
    • Added caching and resilient tile delivery for smoother map loading.
  • Bug Fixes

    • Improved handling of antimeridian and regional tile boundaries.
    • Prevented incomplete or invalid map assets from being published.
  • Documentation

    • Updated worldwide map architecture, usage guidance, and validation expectations.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@coderabbitai

coderabbitai Bot commented Jul 27, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 9562cbf1-ad07-4553-b44c-855d188bed26

📥 Commits

Reviewing files that changed from the base of the PR and between 2772dea and dd6c3ab.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (53)
  • .env.example
  • .github/actions/build-pmtiles-shard-final/action.yml
  • .github/workflows/audit-world-release-v2.yml
  • .github/workflows/audit-world-release.yml
  • .github/workflows/build-virtual-world-tileset.yml
  • .github/workflows/clean-world-release.yml
  • .github/workflows/finish-world-pmtiles.yml
  • .github/workflows/inventory-world-release.yml
  • .github/workflows/repair-missing-world-pmtiles.yml
  • .github/workflows/repair-world-pmtiles.yml
  • README.md
  • package.json
  • planetiler/README.md
  • scripts/apply-globe-parity.mjs
  • scripts/apply-photo-reference.mjs
  • scripts/apply-schema-parity.mjs
  • scripts/build-runtime-style.mjs
  • scripts/build-world-manifest.mjs
  • scripts/build-world-overview.mjs
  • scripts/build-world-surface.sh
  • scripts/calibrate-reference-colors.mjs
  • scripts/capture-pmtiles-preview.mjs
  • scripts/capture-world-fresno-preview.mjs
  • scripts/check-exact-exported-swatches.mjs
  • scripts/check-globe-parity.mjs
  • scripts/check-live-world-tiles.mjs
  • scripts/check-low-zoom-relief.mjs
  • scripts/check-photo-reference.mjs
  • scripts/check-pmtiles-integration.mjs
  • scripts/check-render-clarity.mjs
  • scripts/check-runtime.mjs
  • scripts/check-viewer-quality.mjs
  • scripts/check-world-tile-gateway.mjs
  • scripts/lock-exact-exported-swatches.mjs
  • scripts/lock-reference-atmosphere.mjs
  • scripts/pack-mbtiles.py
  • scripts/prepare-world-bathymetry.mjs
  • scripts/prepare-world-landcover.mjs
  • scripts/reference-studio-swatches.mjs
  • scripts/strengthen-low-zoom-relief.mjs
  • scripts/use-custom-pmtiles-source.mjs
  • server.mjs
  • src/occumed-map.js
  • src/server/mvt.js
  • src/server/pmtiles-source.js
  • src/server/world-tile-gateway.js
  • src/server/world-tile-routing.js
  • src/styles.css
  • src/world-pmtiles-router.js
  • visual-validation/fresno-pmtiles/README.md
  • visual-validation/fresno-pmtiles/occumed-fresno.manifest.txt
  • visual-validation/fresno-pmtiles/pmtiles-range.headers.txt
  • visual-validation/fresno-pmtiles/preview-report.json

📝 Walkthrough

Walkthrough

The PR replaces browser-side regional PMTiles routing with a permanent worldwide vector endpoint backed by a server-side PMTiles gateway. It adds virtual overview and surface assets, version 2 manifests, release automation, vector-tile merging and routing, updated runtime styling, and corresponding validation and documentation.

Changes

Virtual Worldwide Tileset

Layer / File(s) Summary
Gateway and worldwide asset pipeline
src/server/*, server.mjs, scripts/build-world-*, scripts/prepare-world-*, scripts/pack-mbtiles.py
Adds server-side tile routing, PMTiles retries, bounded caching, vector-tile merging, overscaling, overview generation, surface generation, and version 2 virtual manifests.
Release assets and publication workflows
.github/workflows/*, .github/actions/*, .env.example
Builds, repairs, publishes, audits, inventories, and cleans canonical and virtual worldwide assets while requiring uploaded, non-empty release files.
Runtime style and cartography contract
scripts/build-runtime-style.mjs, scripts/lock-*, scripts/apply-*, scripts/reference-studio-swatches.mjs, src/occumed-map.js
Uses one permanent vector source, removes raster relief, adds land-surface and water-depth styling, updates label filters, and revises palette and atmosphere metadata.
Validation, visual checks, and documentation
scripts/check-*, scripts/capture-world-fresno-preview.mjs, README.md, planetiler/README.md, package.json
Validates permanent tile routing, vector merging, antimeridian coverage, style invariants, visual output, and the updated worldwide architecture; obsolete PMTiles preview and relief checks are removed.

Estimated code review effort: 5 (Critical) | ~120 minutes

Possibly related issues

Possibly related PRs

  • Occumed79/Map#23 — Implements the earlier worldwide PMTiles delivery and manifest-routing pipeline that this PR replaces with the virtual gateway.
  • Occumed79/Map#21 — Adds the low-zoom relief logic and checks removed by this PR.
  • Occumed79/Map#15 — Modifies overlapping cartography validation and runtime metadata checks.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch agent/virtual-worldwide-tileset

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.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@Occumed79 Occumed79 changed the title Replace browser shard routing with one virtual worldwide tileset Build one continuous virtual worldwide tileset Jul 27, 2026
@Occumed79
Occumed79 marked this pull request as ready for review July 27, 2026 22:09
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@greptile-apps greptile-apps Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Occumed79 has reached the 50-credit limit for trial accounts. To continue receiving code reviews, upgrade your plan.

@Occumed79
Occumed79 merged commit 7497b9d into main Jul 27, 2026
4 of 5 checks passed
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.

1 participant