F3 opens a tabbed panel (Geology/Climate/Biota/Settlement) for the
selected tile. Every field writes straight into the field the sim
already reads next tick (Planet::setXxx(), PlanetEdit.cpp), so an
unlocked edit is a one-off nudge the simulation keeps evolving
afterward; a per-field lock button sets a new per-cell EditLock
bitmask that exempts it from automatic recompute (tectonics/erosion/
hydrology/drift/biomes skip a locked cell's write; climate/biota-
density/habitability, which have no other persistent storage, pin a
value in a small sparse map instead). Settlement population/
allegiance/culture locks are keyed by the settlement's home cell.
Adds headless test_edit.cpp (nudge vs. lock for every field, save
round-trip, corrupt-stream rejection, pre-v24 compatibility) and
fixes a real bug found while testing: raylib's default ESC-exits-app
behavior collided with edit mode's Escape-to-cancel, so SetExitKey
is now disabled.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TMfyZv91tonDnPJqbaTVJE