From 3443c1c65e9f1753e1e656b35d08416c1fa298f2 Mon Sep 17 00:00:00 2001 From: godosa Date: Wed, 7 Oct 2026 00:14:38 +0200 Subject: worldmap-viewer: initial public history --- .gitignore | 22 + CLAUDE.md | 24 + CREDITS.md | 26 + LICENSE | 21 + README.md | 86 + dedupe.py | 75 + deploy.py | 105 + deploy/.containerignore | 13 + deploy/Containerfile | 27 + deploy/README.md | 101 + deploy/requirements.lock | 6 + export.py | 398 + h3par.py | 50 + licenses.md | 23 + mapview.py | 68 + refine.py | 1273 + requirements.txt | 4 + rivers.py | 320 + seafloor.py | 323 + serve.py | 1389 + servecache.py | 167 + tests/__init__.py | 15 + tests/helpers.py | 39 + tests/test_dedupe.py | 95 + tests/test_deploy.py | 102 + tests/test_export.py | 249 + tests/test_refine.py | 805 + tests/test_rivers.py | 266 + tests/test_seafloor.py | 195 + tests/test_serve.py | 1346 + tests/test_servecache.py | 182 + tests/test_tilecap.py | 81 + tests/test_tiles.py | 1383 + tests/test_viewer_fixtures.py | 23 + tilecap.py | 120 + tiles.py | 1160 + viewer/index.html | 103 + viewer/js/app.js | 654 + viewer/js/atmosphere.js | 65 + viewer/js/boot.js | 10 + viewer/js/camera.js | 91 + viewer/js/exportpanel.js | 103 + viewer/js/exports.js | 40 + viewer/js/flatmap.js | 194 + viewer/js/geo.js | 100 + viewer/js/gestures.js | 42 + viewer/js/globe.js | 297 + viewer/js/globecontrols.js | 88 + viewer/js/hover.js | 16 + viewer/js/input.js | 4 + viewer/js/inspector.js | 39 + viewer/js/latest.js | 6 + viewer/js/layers.js | 84 + viewer/js/layout.js | 33 + viewer/js/limits.js | 9 + viewer/js/lines.js | 45 + viewer/js/measure.js | 99 + viewer/js/nav.js | 126 + viewer/js/overlay_geom.js | 106 + viewer/js/overlays.js | 159 + viewer/js/pins.js | 143 + viewer/js/planet.js | 10 + viewer/js/profile.js | 37 + viewer/js/public.js | 13 + viewer/js/regions.js | 58 + viewer/js/regionspanel.js | 125 + viewer/js/riverlod.js | 32 + viewer/js/search.js | 68 + viewer/js/searchbox.js | 59 + viewer/js/shading.js | 59 + viewer/js/sky.js | 41 + viewer/js/skypanel.js | 80 + viewer/js/tilelayer.js | 401 + viewer/js/tiles.js | 162 + viewer/js/ui.js | 33 + viewer/js/units.js | 22 + viewer/js/urlstate.js | 59 + viewer/js/vents.js | 25 + viewer/package.json | 4 + viewer/style.css | 165 + viewer/tests/_planet.mjs | 3 + viewer/tests/atmosphere.test.mjs | 24 + viewer/tests/camera.test.mjs | 139 + viewer/tests/exports.test.mjs | 46 + viewer/tests/fakedom.mjs | 29 + viewer/tests/fixtures/projections.json | 42 + viewer/tests/flatmap.test.mjs | 83 + viewer/tests/geo.test.mjs | 77 + viewer/tests/gestures.test.mjs | 61 + viewer/tests/globe.test.mjs | 377 + viewer/tests/hover.test.mjs | 30 + viewer/tests/importmap-hooks.mjs | 11 + viewer/tests/importmap.mjs | 15 + viewer/tests/inspector.test.mjs | 30 + viewer/tests/latest.test.mjs | 24 + viewer/tests/layers.test.mjs | 50 + viewer/tests/layout.test.mjs | 40 + viewer/tests/measure.test.mjs | 82 + viewer/tests/modules.test.mjs | 23 + viewer/tests/nav.test.mjs | 64 + viewer/tests/overlay_geom.test.mjs | 69 + viewer/tests/overlays.test.mjs | 147 + viewer/tests/pins.test.mjs | 51 + viewer/tests/profile.test.mjs | 36 + viewer/tests/public.test.mjs | 18 + viewer/tests/regions.test.mjs | 82 + viewer/tests/riverlod.test.mjs | 37 + viewer/tests/search.test.mjs | 55 + viewer/tests/searchbox.test.mjs | 65 + viewer/tests/shading.test.mjs | 57 + viewer/tests/sky.test.mjs | 38 + viewer/tests/skypanel.test.mjs | 16 + viewer/tests/tilelayer.test.mjs | 402 + viewer/tests/tiles.test.mjs | 126 + viewer/tests/units.test.mjs | 38 + viewer/tests/urlstate.test.mjs | 77 + viewer/tests/vents.test.mjs | 27 + viewer/tools/bidi.mjs | 83 + viewer/tools/smoke.sh | 45 + viewer/tools/smoke/blend.mjs | 20 + viewer/tools/smoke/core.mjs | 18 + viewer/tools/smoke/coverage.mjs | 17 + viewer/tools/smoke/deepzoom.mjs | 33 + viewer/tools/smoke/era-fallback.mjs | 7 + viewer/tools/smoke/export.mjs | 18 + viewer/tools/smoke/mobile.mjs | 48 + viewer/tools/smoke/nav.mjs | 42 + viewer/tools/smoke/pins.mjs | 21 + viewer/tools/smoke/regions.mjs | 43 + viewer/tools/smoke/search.mjs | 29 + viewer/tools/smoke/sky.mjs | 26 + viewer/tools/smoke/street.mjs | 64 + viewer/tools/smoke/terrain.mjs | 22 + viewer/tools/smoke/touch.mjs | 42 + viewer/vendor/LICENSE | 21 + viewer/vendor/VERSION | 1 + viewer/vendor/addons/controls/OrbitControls.js | 1972 + viewer/vendor/three.core.js | 60586 +++++++++++++++++++++++ viewer/vendor/three.module.js | 19719 ++++++++ worldgen_path.py | 18 + 140 files changed, 100177 insertions(+) create mode 100644 .gitignore create mode 100644 CLAUDE.md create mode 100644 CREDITS.md create mode 100644 LICENSE create mode 100644 README.md create mode 100644 dedupe.py create mode 100644 deploy.py create mode 100644 deploy/.containerignore create mode 100644 deploy/Containerfile create mode 100644 deploy/README.md create mode 100644 deploy/requirements.lock create mode 100644 export.py create mode 100644 h3par.py create mode 100644 licenses.md create mode 100644 mapview.py create mode 100644 refine.py create mode 100644 requirements.txt create mode 100644 rivers.py create mode 100644 seafloor.py create mode 100755 serve.py create mode 100644 servecache.py create mode 100644 tests/__init__.py create mode 100644 tests/helpers.py create mode 100644 tests/test_dedupe.py create mode 100644 tests/test_deploy.py create mode 100644 tests/test_export.py create mode 100644 tests/test_refine.py create mode 100644 tests/test_rivers.py create mode 100644 tests/test_seafloor.py create mode 100644 tests/test_serve.py create mode 100644 tests/test_servecache.py create mode 100644 tests/test_tilecap.py create mode 100644 tests/test_tiles.py create mode 100644 tests/test_viewer_fixtures.py create mode 100644 tilecap.py create mode 100644 tiles.py create mode 100644 viewer/index.html create mode 100644 viewer/js/app.js create mode 100644 viewer/js/atmosphere.js create mode 100644 viewer/js/boot.js create mode 100644 viewer/js/camera.js create mode 100644 viewer/js/exportpanel.js create mode 100644 viewer/js/exports.js create mode 100644 viewer/js/flatmap.js create mode 100644 viewer/js/geo.js create mode 100644 viewer/js/gestures.js create mode 100644 viewer/js/globe.js create mode 100644 viewer/js/globecontrols.js create mode 100644 viewer/js/hover.js create mode 100644 viewer/js/input.js create mode 100644 viewer/js/inspector.js create mode 100644 viewer/js/latest.js create mode 100644 viewer/js/layers.js create mode 100644 viewer/js/layout.js create mode 100644 viewer/js/limits.js create mode 100644 viewer/js/lines.js create mode 100644 viewer/js/measure.js create mode 100644 viewer/js/nav.js create mode 100644 viewer/js/overlay_geom.js create mode 100644 viewer/js/overlays.js create mode 100644 viewer/js/pins.js create mode 100644 viewer/js/planet.js create mode 100644 viewer/js/profile.js create mode 100644 viewer/js/public.js create mode 100644 viewer/js/regions.js create mode 100644 viewer/js/regionspanel.js create mode 100644 viewer/js/riverlod.js create mode 100644 viewer/js/search.js create mode 100644 viewer/js/searchbox.js create mode 100644 viewer/js/shading.js create mode 100644 viewer/js/sky.js create mode 100644 viewer/js/skypanel.js create mode 100644 viewer/js/tilelayer.js create mode 100644 viewer/js/tiles.js create mode 100644 viewer/js/ui.js create mode 100644 viewer/js/units.js create mode 100644 viewer/js/urlstate.js create mode 100644 viewer/js/vents.js create mode 100644 viewer/package.json create mode 100644 viewer/style.css create mode 100644 viewer/tests/_planet.mjs create mode 100644 viewer/tests/atmosphere.test.mjs create mode 100644 viewer/tests/camera.test.mjs create mode 100644 viewer/tests/exports.test.mjs create mode 100644 viewer/tests/fakedom.mjs create mode 100644 viewer/tests/fixtures/projections.json create mode 100644 viewer/tests/flatmap.test.mjs create mode 100644 viewer/tests/geo.test.mjs create mode 100644 viewer/tests/gestures.test.mjs create mode 100644 viewer/tests/globe.test.mjs create mode 100644 viewer/tests/hover.test.mjs create mode 100644 viewer/tests/importmap-hooks.mjs create mode 100644 viewer/tests/importmap.mjs create mode 100644 viewer/tests/inspector.test.mjs create mode 100644 viewer/tests/latest.test.mjs create mode 100644 viewer/tests/layers.test.mjs create mode 100644 viewer/tests/layout.test.mjs create mode 100644 viewer/tests/measure.test.mjs create mode 100644 viewer/tests/modules.test.mjs create mode 100644 viewer/tests/nav.test.mjs create mode 100644 viewer/tests/overlay_geom.test.mjs create mode 100644 viewer/tests/overlays.test.mjs create mode 100644 viewer/tests/pins.test.mjs create mode 100644 viewer/tests/profile.test.mjs create mode 100644 viewer/tests/public.test.mjs create mode 100644 viewer/tests/regions.test.mjs create mode 100644 viewer/tests/riverlod.test.mjs create mode 100644 viewer/tests/search.test.mjs create mode 100644 viewer/tests/searchbox.test.mjs create mode 100644 viewer/tests/shading.test.mjs create mode 100644 viewer/tests/sky.test.mjs create mode 100644 viewer/tests/skypanel.test.mjs create mode 100644 viewer/tests/tilelayer.test.mjs create mode 100644 viewer/tests/tiles.test.mjs create mode 100644 viewer/tests/units.test.mjs create mode 100644 viewer/tests/urlstate.test.mjs create mode 100644 viewer/tests/vents.test.mjs create mode 100644 viewer/tools/bidi.mjs create mode 100755 viewer/tools/smoke.sh create mode 100644 viewer/tools/smoke/blend.mjs create mode 100644 viewer/tools/smoke/core.mjs create mode 100644 viewer/tools/smoke/coverage.mjs create mode 100644 viewer/tools/smoke/deepzoom.mjs create mode 100644 viewer/tools/smoke/era-fallback.mjs create mode 100644 viewer/tools/smoke/export.mjs create mode 100644 viewer/tools/smoke/mobile.mjs create mode 100644 viewer/tools/smoke/nav.mjs create mode 100644 viewer/tools/smoke/pins.mjs create mode 100644 viewer/tools/smoke/regions.mjs create mode 100644 viewer/tools/smoke/search.mjs create mode 100644 viewer/tools/smoke/sky.mjs create mode 100644 viewer/tools/smoke/street.mjs create mode 100644 viewer/tools/smoke/terrain.mjs create mode 100644 viewer/tools/smoke/touch.mjs create mode 100644 viewer/vendor/LICENSE create mode 100644 viewer/vendor/VERSION create mode 100644 viewer/vendor/addons/controls/OrbitControls.js create mode 100644 viewer/vendor/three.core.js create mode 100644 viewer/vendor/three.module.js create mode 100644 worldgen_path.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a7b958e --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +__pycache__/ +*.pyc +.venv +node_modules/ +.worktrees/ +out/ +/worldgen + +# private state (lives in the private project repo) +TASKS.md +tasks/ +workflow.toml +docs/plans/ +docs/specs/ +docs/AREA-NOTES.md +AREA-NOTES.md +USER-NEXT.md +CATALOG.md +publish-denylist.local +archive/ +.wf/ +.superpowers/ diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 0000000..c795ad4 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,24 @@ +# CLAUDE.md — worldmap-viewer + +Map server + browser viewer for worldgen worlds (globe and flat views, tiles, deep zoom, pins, regions, export). +Terse everywhere. Private notes (tasks, specs, area maps) are kept outside this repo; never add them here (see +`.gitignore`). Overview, CLI table and layout: `README.md`. + +## Layout +- Python server: `serve.py` (HTTP API, `env_defaults` = `WORLDMAP_