Base map / tiles:
- Switch the base map to the mapchart city-label world map; re-derive its
Web-Mercator georeferencing (MAP_LON0/1, MAP_IMG_MY0/1) by least-squares
against the pixel-identical graticule export.
- Add a 1.5x LANCZOS supersample LOD and bump tile quality 90->94 so city
labels stay crisp when zoomed in (tools/png_to_tiles.py).
- Fill the map view background with the ocean colour instead of black.
Navigation / clustering:
- Snap the cluster grid to power-of-two zoom octaves so the bubbles stop
jittering during a continuous zoom.
- Replace the loose zoom clamps with named MAP_SCALE_MIN/MAX (whole map fills
the screen .. country/region level).
- Add a toggleable computed lat/lon graticule overlay (TRIANGLE).
Cluster gallery:
- Selecting a bubble now opens all its photos on the same justified grid as
the timeline/search (a g_gallery_active filter). Members not already paged
in are appended as hidden g_asset entries (kept out of the main timeline);
a background metadata worker resolves each one's date/aspect so the grid
reflows into month sections + true aspect ratios.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011uKJQMYDE9Nrq9ECsU3MxH