aboutsummaryrefslogtreecommitdiffziptar.gz
path: root/CLAUDE.md
blob: c795ad4d8e69ba676e8d4042992214b46d7c82aa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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_<OPTION>`), `tiles.py`, `refine.py`, `rivers.py`,
  `seafloor.py`, `servecache.py`, `export.py`, `h3par.py`, `mapview.py` (CLI), `worldgen_path.py` (finds `mapgen`)
- Deploy: `deploy.py`, `dedupe.py`, `tilecap.py`, `deploy/` (Containerfile, server README)
- `viewer/` — browser app (`js/`, `tests/` node unit tests, `tools/smoke/` headless browser smoke, `vendor/` three.js:
  never edit); `tests/` — Python unittest (`tests/helpers.py`: small in-process mapgen grid, no world folder)

## Build / test
- Needs worldgen (the `mapgen` package): `$WORLDGEN`, `../worldgen` or `./worldgen`. Python deps (numpy, scipy, h3,
  pillow) are not in system python: a `.venv` with them (worldgen's works: `ln -sfn ../worldgen/.venv .venv`).
  In a git worktree link the main tree's `.venv` and `worldgen` (`.venv` and `/worldgen` are ignored without
  trailing slash: they may be links).
- Verify: `.venv/bin/python -m unittest discover -s tests -t .` (≈ 4 min; slow: test_tiles, test_serve,
  test_export) and `cd viewer && node --test tests/*.test.mjs` (≈ 3 s).
- Browser smoke: `WORLD=<world dir> PYTHON=.venv/bin/python viewer/tools/smoke.sh viewer/tools/smoke/core.mjs`.

## Git
- Work in a git worktree on a branch (`.worktrees/<topic>`), not in the main tree; ff-merge when green.