OpenCode 1.4.0 moved `UserMessage.variant` from the top-level to `UserMessage.model.variant`. OpenChamber still read the legacy location, so variant selection silently stopped being restored on sessions served by OpenCode 1.4.0+. Read `model.variant` first and fall back to the legacy top-level field so both pre-1.4 and 1.4+ OpenCode servers keep working.