cdfb7675

Author: Michael Lynch <git@mtlynch.io>

Resume player sessions after reconnect

Keep player identity, inventory, and private charcoal across transport loss and
same-tab reloads. Fence stale channels, rebuild the client scene from each
baseline, and cover the lifecycle with unit and browser tests.